linux编译内核过程:
1:下载内核代码:到www.kernel.org找到下载的链接,我们选择.tar.gz格式的包。例如我们现在下载的内核包名字为:linux-3.3.3.tar.bz2
2: 内核解压, 执行命令:tar jxvf linux-3.3.3.tar.bz2. 解压的代码在新生成的文件目录linux-3.3.3中
3: 安装kernel-package这个包,命令:
sudo apt-get install kernel-package
(要联网进行么?好像要get一些东西)
会有提示”Do You want tocontinue[Y/n]”,输入y,然后回车
4: 第一个步骤“配置内核”还是必不可少的,在这里,我比较建议在发行版默认的config的基础上再进行配置,这样配置出的内核和发行版本身才会有更好的相容性。比如Ubuntu 10.10,可以在运行“make menuconfig”之前执行命令“cp /boot/config-2.6.35-24-generic .config”,或者在menuconfig里先把/boot/config-2.6.35-24-generic load进来。
这个配置的过程也可以放到make-kpkg里,在执行make-kpkg命令时,加入参数“--config menuconfig”即可,但这样做其实并没有带来什么便利之处。
配置完内核之后,
5: 接下来要执行真正的编译过程。通常我们可以这样下命令:
make-kpkg --initrd --revision wwang.001 --append-to-version -20110107 kernel_image
|
1、--initrd选项会让make-kpkg自动帮我们生成initramfs;
2、--revision会给生成的deb文件加上一个版本信息。这个参数只是影响到文件名,如果不指定,默认会是“10.00.Custom”;
3、--append-to-version也是一种版本信息,它不仅出现在deb安装包的文件名里,也会影响到kernel的名称,比如本例中,内核更新完成之后,用“uname -r”察看会得到“2.6.36-20110107”;
4、kernel_image表示生成内核和默认模块的安装包,另外您也可以加上kernel_headers,这样make-kpkg会再生成一个内核头文件的安装包。
如果我们用普通用户来执行make-kpkg,需要加上fakeroot运行。
fakeroot make-kpkg --initrd --revision wwang.001 --append-to-version -20110107 kernel_image
|
编译过程执行完毕之后,会在上层目录里生成一个deb安装包,本例中生成的安装包的文件名是“linux-image-2.6.36-20110107_wwang.001_i386.deb”。
之后我们就可以用dpkg命令或者在文件浏览器中双击安装了,安装完毕之后,直接重启就可以选择进入新的内核。
使用make-kpkg来编译内核,还有其他好处。因为我们是通过包管理器来安装新的内核,当不再需要这个内核时,就可以简单的通过dpkg命令、新立得软件包管理器或者Ubuntu软件中心来完全卸载,而不需要一个个手动删除修改。
对于一般使用来说,知道以上的命令就足够了,如果需要详细了解make-kpkg的用法,可以查阅manual或者参考这篇教程。