主要有以下几个部分:
1.下载代码
我用的是linux-2.6.39.2.tar.bz2代码。(第一个数为主版本数;第二个为辅版本数,偶数为稳定版本,奇数为开发版本;第三个数为修订号)
准备工作:
将代码下载完后,进入root账户下。放到/usr/src目录下待编译。
首次进root账户需要设置一下,$sudo passwd root
进root账户$su 然后输入密码,哦了!
哦,还必须要把这个文件解压才行(必须是root账户)$tar -xvf linux-2.6.39.2.tar.bz2(名字长的话用万能的Tab键),进入解压的
文件夹后进行下一步。
2.内核编译
2.1 编译准备
清理以前编译留下的残余文件如果是刚刚解开的包这步可以跳过,如果不是第一会编译,那就必须执行这个
$sudo make mrproper
网上很多教程上说把现在使用的内核的config拷贝过来参考,据实验,是不需要的,ubuntu还有
debian会自动做这步。不过这条命令倒是可以学习一下。当然你可以将以前的配置拷贝过来。
命令:
代码:cp /boot/config-`uname -r` ./.config
2.2修改配置信息
$sudo make menuconfig
如果这一步显示出错,什么乱七八糟的错误号为162的,是权限问题,要去查一下编译目录是不是在/usr/src下,哦对了要用这个命令必须要有ncurses的环境,没有的话装一下$sudo apt-get install ncurses,
配置通过后就进入下一步编译
2.3 编译
ubuntu的工具是make-kpkg,和其他的发行版相比,步骤相对简单。
$make -kpkg clean
$fakeroot make -kpkg --initrd --append-to-version=-custom kernel_image
$fakeroot make -kpkg --initrd --append-to-version=-custom kernel_headers
这将是个漫长的过程,take a break。
3安装
在成功构建内核后, 你在/usr/src目录能发现两个.deb软件包.
cd /usr/src
ls -l
在我的测试系统上, 他们分别名为 linux-image-2.6.18.1-custom_2.6.18.1-custom-10.00.Custom_i386.deb (包含了实际的内核) 和 linux-headers-2.6.18.1-custom_2.6.18.1-custom-10.00.Custom_i386.deb (包含了需要的文件, 用于以后需要编译额外的内核模块). 我是这样安装的:
dpkg -i linux-image-2.6.18.1-custom_2.6.18.1-custom-10.00.Custom_i386.deb
dpkg -i linux-headers-2.6.18.1-custom_2.6.18.1-custom-10.00.Custom_i386.deb
(现在你甚至能够拷贝这两个.deb文件到其它的Ubuntu系统, 通过上面的方式安装. 你将不再需要编译内核.)
然后检查 /boot/grub/menu.lst文件, 现在你将能发现新内核使用的两个引导配置块:
vi /boot/grub/menu.lst
在我测试系统上已经添加好的引导配置块是这样的:
title Ubuntu, kernel 2.6.18.1-custom
root (hd0,0)
kernel /boot/vmlinuz-2.6.18.1-custom root=/dev/sda1 ro quiet splash
initrd /boot/initrd.img-2.6.18.1-custom
savedefault
boot
title Ubuntu, kernel 2.6.18.1-custom (recovery mode)
root (hd0,0)
kernel /boot/vmlinuz-2.6.18.1-custom root=/dev/sda1 ro single
initrd /boot/initrd.img-2.6.18.1-custom
boot
弄好后:q!退出。
现在重启系统:
shutdown -r now
到这一步就算大工告成了。参考文档http://linux.chinaunix.net/docs/2006-11-21/3260.shtml