root@huang-VirtualBox:/usr/src/linux-3.4.6# cp /boot/config-3.0.0-22-generic ./.config
root@huang-VirtualBox:/usr/src/linux-3.4.6#make-kpkg --initrd kernel-image
###编译的过程,挺久的
###make-kpkg命令的简单使用介绍
###通常我们会看到这样的命令
###make-kpkg --initrd --revision huang.001 --append-to-version -20110107 kernel_image
###--initrd选项会让make-kpkg自动帮我们生成initramfs;
###--revision会给生成的deb文件加上一个版本信息。这个参数只是影响到文件名,如果不指定,默认会是“10.00.Custom”;
###--append-to-version也是一种版本信息,它不仅出现在deb安装包的文件名里,也会影响到kernel的名称,比如本例中,内核更新完成之后,用“uname -r”察看会得到“3.4.6-20110107”,不指定的话,默认内核版本号;
###kernel_image表示生成内核和默认模块的安装包,另外您也可以加上kernel_headers,这样make-kpkg会再生成一个内核头文件的安装包。
###本例中make-kpkg --initrd kernel-image
###产生的deb包为linux-image-3.4.6_3.4.6-10.00.Custom_i386.deb
root@huang-VirtualBox:/usr/src# ls
linux-3.4.6 linux-headers-3.0.0-22 linux-image-3.4.6_3.4.6-10.00.Custom_i386.deb
linux-3.4.6.tar.bz2 linux-headers-3.0.0-22-generic
###是不是就这样直接安装deb就好了,完成内核的安装替换了呢
###这里我碰到了一个问题,/boot目录下没有生成initrd.image文件,只有vmlinuz文件,怎么回事呢,有问题就得解决么,继续谷歌,百度么
###google了一把,找到资料说ubuntu10.04开始,用上面命令生成deb包,安装后不会生成initrd,说kernel-package作者是故意这样做的,现在是要通过hook来完成initrd的生成,没办法我刚好是ubuntu10.04之后,继续解决
###需要copy一个initramfs脚本到你要安装的rootfs的/etc/kernel/postinst.d/ 目录里,然后在安装kernel的时候post-install脚本会通过hook来完成initrd 的生成
root@huang-VirtualBox:/usr/src#cp /usr/share/kernel-package/examples/etc/kernel/postinst.d/initramfs /etc/kernel/postinst.d/
###拷贝过来,保持此目录下只有此脚本,下面对deb进行安装
###直接dpkg -i linux-image-3.4.6_3.4.6-10.00.Custom_i386.deb
###安装完去看一下?
root@huang-VirtualBox:/boot# ls
initrd.img-3.4.6 System.map-3.4.6 vmlinuz-3.4.6config-3.4.6
###看到没!!!!!!这里省略了其他信息,再看看grub信息??
root@huang-VirtualBox:/boot#cat grub/grub.cfg
menuentry 'Ubuntu, with Linux 3.4.6' --class ubuntu --class gnu-linux --class gnu-
-class os {
recordfail
set gfxpayload=$linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root be22009d-e2b0-40c5-b179-7f19a900c758
linux /boot/vmlinuz-3.4.6 root=UUID=be22009d-e2b0-40c5-b179-7f19a900c758 ro quiet splash vt.handoff=7
initrd /boot/initrd.img-3.4.6
}
menuentry 'Ubuntu, with Linux 3.4.6 (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod gzio
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root be22009d-e2b0-40c5-b179-7f19a900c758
echo 'Loading Linux 3.4.6 ...'
linux /boot/vmlinuz-3.4.6 root=UUID=be22009d-e2b0-40c5-b179-7f19a900c758 ro recovery nomodeset
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-3.4.6
}
###有木有!!!!成功了,有木有,呵呵,省略了其他信息