linode-VPS内核升级记录
由于linode默认的内核(ubuntu10.04)缺省将SIP等协议过滤模块编入了内核,而且linode默认没有采用模块化的方式,因此被迫重新编译内核。linode提供了一篇文档指导如何使用自编译的内核,但是在细节上实际还是有不同,导致按照文档的步骤编译后,系统没办法启动。于此记录一下,以备后续需要。
采用linode的文档编译和配置,往往会出现以下一些错误:
i8042 no controller found
udevd[1077]: failed to create queue file: no such file or directory udevadm[1816]: error sending message: connection refused.
第一个错误涉及menu.lst,在这个文件中,不能像文档那样,启动时携带’quiet’参数。
第二个错误与Ubuntu版本可能有关,需要人工指定/dev,需要修改/etc/fstab的配置(后续说明细节)。
基本步骤如下:
下载最新的kernel代码并解压:
wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.7.6.tar.bz2
将系统原有的config导入到kernel源代码的目录下,同时根据自己的需要修改.config文档:
zcat /proc/config.gz > .config
顺序执行以下命令:
make oldconfig
make -j3 bzImage
make -j3 modules
make
make install
make modules_install
如果成功,应该在/boot目录下看到新生成的内核文件,例如vmlinuz-3.7.6等。
创建/boot/grub/menu.lst文件,添加以下内容:
default 0
timeout 5
title Custom Compiled, kernel 3.7.6
root (hd0)
kernel /boot/vmlinuz-3.7.6 root=/dev/xvda ro
注意,Ubuntu版本可能还需要安装grub软件:
apt-get install grub
修改/etc/fstab目录,添加以下内容:
dev /dev devtmpfs 0 0
完成上述步骤后,修改linode中该node的profile,将kernel修改为pv-grub-x86_32,然后重启启动该node即可完成升级。SSH登录系统,使用uname -a命令即可查看新内核版本。
2013-07-19 update:
在编译3.9.x内核时,出现以下错误信息:
/bin/sh: bc not found
此时,安装bc即可:
apt-get install bc