如何获取正确的.config文件来编译特定于我的硬件的Linux内核源代码?

gja*_*ain 5 linux kernel makefile linux-kernel

我尝试使用make defconfig编译内核,但正如预期的那样,它无法启动.我想知道什么.config文件做内核供应商喜欢Canonical for Ubuntu使用,内核能够开箱即用启动.当然,我仍然是一个初学者并配置各种参数,目前有点超出我的联盟.

具体来说,我希望加载一个基本的"你好,世界!" 模块到我运行的内核2.6.32.41.为此,我需要针对用于运行内核的相同.config文件编译内核源代码.

Gnu*_*rou 14

如果使用该CONFIG_IKCONFIG_PROC选项编译正在运行的内核,则可以在/proc/config.gz以下位置获取配置:

$ zcat /proc/config.gz >my_config
Run Code Online (Sandbox Code Playgroud)

复制my_config到内核​​构建目录中.config并运行make config以提示您的配置文件中没有的配置选项(只有在使用比运行内核更新的内核源时才会出现这种情况).然后,您应该能够编译具有与当前内核相同功能的新内核.

发行版通常使用自己的内核配置,其中大多数驱动程序被编译为模块,以便在请求相应的硬件时动态加载.此外,内核需要使用相关的引导选项(如指定根文件系统的引导选项)引导.您的defconfig内核可能因此无法启动.


Jef*_*ing 5

我不知道如何获得"正确的硬件",但你可以通过查找以/boot/名称开头的文件来使用Ubuntu为您提供的配置config.可能有多个,在这种情况下使用命令uname -r来告诉您当前正在运行的内核,然后您可以使用适当的配置.


ash*_*ish 5

选项1:

启动系统的源代码

cd /usr/src/linux-headers-3.2.0-29;
Run Code Online (Sandbox Code Playgroud)

这将生成.config

sudo make oldconfig; 
vi .config
Run Code Online (Sandbox Code Playgroud)

选项2:

zcat /proc/config.gz > my_config
Run Code Online (Sandbox Code Playgroud)

2选项:

echo /boot/config* > my_config
Run Code Online (Sandbox Code Playgroud)