由于最近在搭建abiCloud云计算环境,所以在node端要安装vbox (当然可以采用vmware等)。由于vbox要编译进内核,所以重新把Ubuntu的内核重新编译了一下。
下面是编译的整个过程:
首先,确认一下内核版本,使用如下命令:( 我node端采用的是Ubuntu 9.10桌面版)
root@hker-laptop:/# # uname -a
返回信息:
Linux hker-laptop 2.6.31-14-generic #48-Ubuntu SMP Fri Oct 16 14:04:26 UTC 2009 i686 GNU/Linux
然后从内核网站:http://www.kernel.org/下载你需要的版本。在这里我阴差阳错的下载了2.6.31-8的版本,呵呵比我自带的版本还低,不过没有关系啦,完成任务要紧阿。就以这个版本来安装吧!
首先解压linux-2.6.31.8.tar.gz到/usr/src/目录
root@hker-laptop:/usr/src/#cd /usr/src/
root@hker-laptop:/usr/src/linux/#tar zxvf linux-2.6.31.8.tar.gz
root@hker-laptop:/usr/src/linux/#mv linux-2.6.31.8 linux (新建linux目录,和通过硬连接的方式建立这个目录,貌似没有差别:))
root@hker-laptop:/usr/src/linux/#make oldconfig
root@hker-laptop:/usr/src/linux/#make prepare
root@hker-laptop:/usr/src/linux/#make modules_prepare
root@hker-laptop:/usr/src/linux/#cd ..
root@hker-laptop:/usr/src/#make -C linux M=/usr/src/linux/net/mac80211/ modules
root@hker-laptop:/usr/src# cp linux/net/mac80211/modules.order linux/
root@hker-laptop:/usr/src# cd linux
root@hker-laptop:/usr/src/linux# make modules_install
root@hker-laptop:/usr/src# cd linux
root@hker-laptop:/usr/src/linux# make all (漫长的时间等待,我的编译了大概2个小时吧 :( )
OK终于编译完了!
root@hker-laptop:/usr/src/linux#make install
通过这一步,将会把编译好的 vmlinux-2.6.31.8拷贝到 /boot目录下,并建立System.map-2.6.31.8映射。但是这里少了个initrd.img-2.6.31.8 !这个要自己设定!
生成initrd.img-2.6.31.8文件可以使用mkinitramfs命令。
root@hker-laptop:/usr/src/linux/#cd /lib/modules
root@hker-laptop:/lib/modules/#mkinitramfs -o /boot/initrd.img-2.6.31.8
OK,生成成功!
root@hker-laptop:/lib/modules/#chmod +w /boot/grub/grub.cfg
root@hker-laptop:/lib/modules/#gedit /boot/grub/grub.cfg
在
### BEGIN /etc/grub.d/10_linux ###
和
### END /etc/grub.d/10_linux ###
之间加入,我们的内核部分。具体如下:
### BEGIN /etc/grub.d/10_linux ###
menuentry “Ubuntu, Linux 2.6.31-14-generic” {
recordfail=1
if [ -n ${have_grubenv} ]; then save_env recordfail; fi
set quiet=1
insmod ext2
set root=(hd0,1)
search –no-floppy –fs-uuid –set 81cd49dd-4c54-4f9c-b915-ed559a3e5c85
linux /boot/vmlinuz-2.6.31-14-generic root=UUID=81cd49dd-4c54-4f9c-b915-ed559a3e5c85 ro quiet splash
initrd /boot/initrd.img-2.6.31-14-generic
}
menuentry “Ubuntu, Linux 2.6.31-14-generic (recovery mode)” {
recordfail=1
if [ -n ${have_grubenv} ]; then save_env recordfail; fi
insmod ext2
set root=(hd0,1)
search –no-floppy –fs-uuid –set 81cd49dd-4c54-4f9c-b915-ed559a3e5c85
linux /boot/vmlinuz-2.6.31-14-generic root=UUID=81cd49dd-4c54-4f9c-b915-ed559a3e5c85 ro single
initrd /boot/initrd.img-2.6.31-14-generic
}
menuentry “Ubuntu, Linux 2.6.31.8” {
recordfail=1
if [ -n ${have_grubenv} ]; then save_env recordfail; fi
set quiet=1
insmod ext2
set root=(hd0,1)
search –no-floppy –fs-uuid –set 81cd49dd-4c54-4f9c-b915-ed559a3e5c85
linux /boot/vmlinuz-2.6.31.8 root=UUID=81cd49dd-4c54-4f9c-b915-ed559a3e5c85 ro quiet splash
initrd /boot/initrd.img-2.6.31.8
}
menuentry “Ubuntu, Linux 2.6.31.8(recovery mode)” {
recordfail=1
if [ -n ${have_grubenv} ]; then save_env recordfail; fi
insmod ext2
set root=(hd0,1)
search –no-floppy –fs-uuid –set 81cd49dd-4c54-4f9c-b915-ed559a3e5c85
linux /boot/vmlinuz-2.6.31.8 root=UUID=81cd49dd-4c54-4f9c-b915-ed559a3e5c85 ro single
initrd /boot/initrd.img-2.6.31.8
}
### END /etc/grub.d/10_linux ###
最后一步,也是关键的一步,就是修改default变量:
set default=”3″
这里是3,因为总共4个选项,以0开始。
到这里也就安装完毕了!重启看看是不是变成2.6.31.8了 🙂
注意:root=UUID=81cd49dd-4c54-4f9c-b915-ed559a3e5c85 要拷贝你原来的版本的值!