一、makemenuconfig说明:
make menuconfig(或者其他的配置命令),命令执行完后产生文件.config(隐含的),其中保存着配置信息。下一次再做make menuconfig将产生新的.config文件,原.config被改名为.config.old。
二、make oldconfig优点:
三、 Linux的内核配置文件有两个:
一个是隐含的.config文件,嵌入到主Makefile中;另一个是include/linux/autoconf.h,嵌入到各个c源文件中,它们由make config、make menuconfig、make xconfig这些过程创建。几乎所有的源文件都会通过linux/config.h而嵌入autoconf.h,如果按照通常方法建立文件依赖关系(.depend),只要更新过autoconf.h,就会造成所有源代码的重新编绎。
四、内核编译的一般步骤:
#make dep
#make clean
#make zImage
#make bzImage
#make modules
#make modules_install
#depmod -a
第一个命令make dep实际上读取配置过程生成的配置文件,来创建对应于配置的依赖关系树,从而决定哪些需要编译而那些不需要;
第二命令make clean完成删除前面步骤留下的文件,以避免出现一些错误
第三个命令make zImage和第四个命令make bzImage实现完全编译内核,二者生成的内核都是使用gzip压缩的,只要使用一个就够了,它们的区别在于使用make bzImage可以生成大一点的内核,比如在编译2.4.0版本的内核时如果使用make zImage命令,那么就会出现system too big的错误提示。建议大家使用make bzImage命令。
后面三个命令只有在你进行配置的过程中,在回答Enableloadable module support (CONFIG_MODULES)时选了"Yes"才是必要的,
make modules和makemodules_install分别生成相应的模块和把模块拷贝到需要的目录中。严格说来,第七个命令和编译过程并没有关系,它是生成模块间的依赖关系,这样你启动新内核之后,使用modprobe命令加载模块时就能正确地定位模块。
五、.config配置文件说明:
make menuconfig 的配置界面是与隐含的.config文件一一对应:
1、在make menuconfig配置界面code maturity lever optionsà里选择了
[*] promprt for development and/orincomplete code/drivers
[*] promprt for obsolete code/drivers
两项后.config文件也同步变化,下面的是.config文件的相应部分选项:
#
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y
CONFIG_OBSOLETE=y
2、如果修改了.config文件的内容如下:
#
# Code maturity level options
#
CONFIG_EXPERIMENTAL is not set
CONFIG_OBSOLETE is not set
哪么在make menuconfig配置界面code maturity lever optionsà里的
[*] promprt for development and/or incompletecode/drivers
[*] promprt for obsolete code/drivers
两项也相应的同步变化,注意:CONFIG等的前面不要有空格符号。