本文资料采自网络,本人仅收集整理
以下是以ubuntu 9.04桌面作为编译环境,新内核版本为2.6.31.6为示范例子:
预备工作:
下载新内核源代码,地址:www.kernel.org
本地操作:
- 解压源代码
把linux源代码包(tar.bz2包)解压到/usr/src下。常用方法就是使用命令(参考 tar --help)
解压完毕后可以在/usr/src目录下看到一个linux-2.6.31.6的文件夹tar -xjf *.tar.bz2 /usr/src
- 切换到工作目录
cd /usr/src/linux-2.6.31.6
- 配置内核
可以根据自己要求进行配置,但是一般无需做出什么修改,采用默认设置,直接选择最后一项,保存退出即可。make menuconfig
- 开始编译
漫长等待~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~这个开始要花一个小时甚至更多的时间。make
- 加入模块
make modules_install
- 生成可执行的内核引导文件
make bzImage
- 把新内核引导文件放入引导环境
简单的说就是将bzImage复制至/boot下
cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.31.6 //2.6.32内核的bzImage目录为arch/x86/boot/bzImage
- 清除现场
//这一步最好还是留到最后来做(现在可以先不跳过这一步),这样的话,即使你后面操作失误也可以回到这里重做,而不需要重新编译make clean
- 将System.map放入引导环境
也就是把它复制至/boot下
cp System.map /boot/System.map-2.6.31.6
- 生成initrd.img
//2.6.32可以为sudo update-initramfs -c - k 2.6.32cd /lib/modules/2.6.31.6 sudo mkinitramfs -o /boot/initrd.img-2.6.31.6
- 更新grub引导
它就会自动找到新的内核,并建立引导项。这个过程也可以手动完成,方法是根据grub的版本更改/boot/grub目录下menu.lst(grub旧版引导菜单,Ubuntu 9.04之前使用)或grub.cfg(grub2引导配置,Ubuntu9.10后使用)文件。内容如下:sudo update-grub
menu.lst:
grub.cfg:title Ubuntu 9.04, kernel 2.6.31 uuid 753efade-04e8-4e2c-8bbb-965e9792b2f5 kernel /boot/vmlinuz-2.6.31.6 root=UUID=753efade-04e8-4e2c-8bbb-965e9792b2f5 ro quiet splash initrd /boot/initrd.img-2.6.31.6
menuentry "Ubuntu, Linux 2.6.32" { recordfail=1 if [ -n ${have_grubenv} ]; then save_env recordfail; fi set quiet=1 insmod ext2 set root=(hd0,3) search --no-floppy --fs-uuid --set 3c611c5f-f941-4970-956f-fe4c7bf75714 linux /boot/vmlinuz-2.6.32 root=UUID=3c611c5f-f941-4970-956f-fe4c7bf75714 ro quiet splash initrd /boot/initrd.img-2.6.32 }
- 重启电脑:reboot