前题:
在前几个月的时候,写了一篇笔记,说的是kernel compile的事情,当时经验不足,虽说编译过了,但有些地方写的有错误--因为当时的理解是有错误的。今天一一更正,记录如下:
前文笔记链接: ubuntu 12.04编译安装linux-3.6.10内核笔记
NO 1:
内核清洁工作。
一般的清洁可能会立刻想到make clean.但这个确实不完整,make clean只能清楚一部分东西。而有一个命令是做的非常彻底的,那就是make mrproper。对于这两个的差别,可以在进入kernel source 目录的时候,make help.
xxx@linux-3.6.:%make help
Cleaning targets:
clean - Remove most generated files but keep the config and
enough build support to build external modules
mrproper - Remove all generated files + config + various backup files
distclean - mrproper + remove editor backup and patch files
make clean: 会清除大部分以前留下来的东西,但是不会清楚配置文件,也就是那个 .config文件;
make mrproper:是会连配置文件都清除的。
而我前文的操作步骤就是,先把配置文件从/boot目录下导入到/usr/src/linux-3.6.10/ 然后再次执行make mrproper。这样,就把导入的配置文件给删除了嘛,根本就没保持系统原来的配置文件了。但是为啥能成功呢? 因为linux kernel source 默认的是x86的配置吧。---这其实是很危险的,所以纠正这一步这么做:先make mrproper,然后再导入系统原来的配置文件。
NO 2:
配置文件。
配置文件有三个大的来源:一个是自己按照自己的硬件平台,自行的配置编写---这个要求有点高,对于新手不是很合适;一个来源于别人成熟的配置文件--在别人成熟的配置基础上,做一些小动作的修改;第三个是使用kernel source自带的一个配置文件,如果需要使用的话,使用如下:
make defconfig
而借助别人的配置文件,有两种方式添加到现有的kernel source目录下--第一,直接cp命令,比如将/boot/config-3.5这个文件copy到现在将要编译的这个内核中,那么就这个样子:
sudo cp /boot/config-3.5 /usr/src/linux-3.6./.config
这里注意,要编译的配置文件是 .config,而非其他格式。
第二种方法就是 make menuconfig 后,在第一个界面有一个 Load选项:
Load an Alternate Configuration File
在这里写入/boot/config-3.5,然后保存为.config文件。
这两种方法适合于:第一种,是完全不做修改了,直接拿来用;第二种是自己还想做一些修改---其实也不啦,第一种直接再make menuconfig后,一样的可以修改。
再次说明的是:
make mrproper会删除配置文件的,所以配置文件一定要在make mrproper进行之后进行。
以此修正。