1:前奏
请容许我说一些废话,呵呵,很久以来都说要自己手动更新一下linux的kernel,这个情节现在总算是了了。
如果操作过程中提示缺少什么东西,请自行用apt-get install 安装,该安装问题不在本文范围内,请问google即可。
2:步骤
A: get kernel from
这里我选了linux-2.6.36.2.tar.bz2
B: 解压 :
C: 编译
pwd
/usr/src/linux-2.6.36.2 #该行是pwd的输出,不是命令哦,下划线输出的均是命令的输出,下同
linux-2.6.36.2linux-headers-2.6.32-25linux-headers-2.6.32-25-genericlinux-headers-2.6.32-27linux-headers-2.6.32-27-generic
D: 安装kernel
ls/lib/modules
2.6.32-21-generic 2.6.32-25-generic 2.6.32-27-generic 2.6.36.2
ls/boot/
abi-2.6.32-25-generic memtest86+.binabi-2.6.32-27-generic System.map-2.6.32-25-genericconfig-2.6.32-25-generic System.map-2.6.32-27-genericconfig-2.6.32-27-generic vmcoreinfo-2.6.32-25-genericgrub vmcoreinfo-2.6.32-27-genericinitrd.img-2.6.32-25-generic vmlinuz-2.6.32-25-genericinitrd.img-2.6.32-27-generic vmlinuz-2.6.32-27-generic
makeinstall
sh /usr/src/linux-2.6.36.2/arch/x86/boot/install.sh 2.6.36.2 arch/x86/boot/bzImage System.map “/boot”
ls/boot/
abi-2.6.32-25-generic System.map-2.6.32-25-genericabi-2.6.32-27-generic System.map-2.6.32-27-genericconfig-2.6.32-25-generic System.map-2.6.36.2config-2.6.32-27-generic vmcoreinfo-2.6.32-25-genericconfig-2.6.36.2 vmcoreinfo-2.6.32-27-genericgrub vmlinuz-2.6.32-25-genericinitrd.img-2.6.32-25-generic vmlinuz-2.6.32-27-genericinitrd.img-2.6.32-27-generic vmlinuz-2.6.36.2memtest86+.bin
如果不进行这一步可能不能成功引导kernel,原因是:在grub引导kernel的时候无法识别kernel所在的位置,即没有驱动程序来加载硬盘的分区,而initrd恰好是干这件事的。
ls/boot/
abi-2.6.32-21-generic config-2.6.36.2 memtest86+.bin vmcoreinfo-2.6.32-25-genericabi-2.6.32-25-generic grub System.map-2.6.32-21-generic vmcoreinfo-2.6.32-27-genericabi-2.6.32-27-generic initrd.img-2.6.32-21-generic System.map-2.6.32-25-generic vmlinuz-2.6.32-21-genericconfig-2.6.32-21-generic initrd.img-2.6.32-25-generic System.map-2.6.32-27-generic vmlinuz-2.6.32-25-genericconfig-2.6.32-25-generic initrd.img-2.6.32-27-generic System.map-2.6.36.2 vmlinuz-2.6.32-27-genericconfig-2.6.32-27-generic initrd.img-2.6.36.2 vmcoreinfo-2.6.32-21-generic vmlinuz-2.6.36.2
Generating grub.cfg …Found linux image: /boot/vmlinuz-2.6.36.2Found initrd image: /boot/initrd.img-2.6.36.2Found linux image: /boot/vmlinuz-2.6.32-27-genericFound initrd image: /boot/initrd.img-2.6.32-27-genericFound linux image: /boot/vmlinuz-2.6.32-25-genericFound initrd image: /boot/initrd.img-2.6.32-25-genericFound linux image: /boot/vmlinuz-2.6.32-21-genericFound initrd image: /boot/initrd.img-2.6.32-21-genericFound memtest86+ image: /boot/memtest86+.bindone
执行上面的命令后,可以在中发现我们的新kernel被添加进去了,见下面的vi部分输出,自动为我们添加了两项哦
vi/boot/grub/grub.cfg
### BEGIN /etc/grub.d/10_linux ### menuentry ‘Ubuntu,Linux 2.6.36.2′ –class ubuntu –class gnu-linux –class gnu –class os { recordfail insmod ext2 set root='(hd0,1)’ search –no-floppy –fs-uuid –set 62a097ef-4767-4b5e-8494-ef5fa3298037 linux /boot/vmlinuz-2.6.36.2 root=UUID=62a097ef-4767-4b5e-8494-ef5fa3298037 ro quiet splash initrd /boot/initrd.img-2.6.36.2}menuentry ‘Ubuntu,Linux 2.6.36.2 (恢复模式)’ –class ubuntu –class gnu-linux –class gnu –class os { recordfail insmod ext2 set root='(hd0,1)’ search –no-floppy –fs-uuid –set 62a097ef-4767-4b5e-8494-ef5fa3298037 echo ‘载入 Linux …’ linux /boot/vmlinuz-2.6.36.2 root=UUID=62a097ef-4767-4b5e-8494-ef5fa3298037 rosingle echo ‘载入引导虚拟磁盘 …’ initrd /boot/initrd.img-2.6.36.2}menuentry ‘Ubuntu,Linux 2.6.32-27-generic’ –class ubuntu –class gnu-linux –class gnu –class os { recordfail insmod ext2 set root='(hd0,1)’ search –no-floppy –fs-uuid –set 62a097ef-4767-4b5e-8494-ef5fa3298037 linux /boot/vmlinuz-2.6.32-27-generic root=UUID=62a097ef-4767-4b5e-8494-ef5fa3298037 ro quiet splash initrd /boot/initrd.img-2.6.32-27-generic
}
E: 重启验证
为了以防万一,在重启验证前我们修改一个地方,显示启动菜单,默认可能不会显示的:
的这一半更多地赢取上帝掌握的那一半。