centos 5.5 x86_64 初始安装的使用的内核是2.6.18 版本
root 登录(默认为 /root);
#wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.35.9.tar.bz2
#tar -xjvf linux-2.6.35.9.tar.bz2
#mv linux-2.6.35.9 /usr/src/kernels
为了方便编译配置 将 boot 目录下的 配置文件 复制到 /usr/src/kernels/linux-2.6.35.9
#cp /boot/config-2.6.18-194.17.4.el5 /usr/src/kernels/linux-2.6.35.9/.config
#make menuconfig
*** Unable to find the ncurses libraries or the
*** required header files.
*** 'make menuconfig' requires the ncurses libraries.
***
*** Install ncurses (ncurses-devel) and try again.
***
make[1]: *** [scripts/kconfig/dochecklxdialog] Error 1
make: *** [menuconfig] Error 2
这里我遇到以上的问题,网上讲是由于apt-get install libncurses* 没有安装导致的,但是我apt没有执行到,没有深入找问题,接着我查到了
执行
yum install ncurses-devel
把问题解决了。 在之前我还
yum groupinstall "Development Tools"
yum install gcc 安装了gcc,网上也有朋友讲是gcc的版本问题。
接着可以继续安装
#make menuconfig 选择 Load an Alternate Configuration 回车确认载入
根据需要再选择编译选项;
#这里很多选择,我果断不明白把它跳过了
#make
如果没有错误,执行模块编译安装
#make modules_install
编译内核安装
#make install
sh /usr/src/kernels/linux-2.6.35.9/arch/x86/boot/install.sh 2.6.35.9 arch/x86/boot/bzImage \
System.map "/boot"
看到如上提示表示编译成功,
如果没有看到错误,可以修改启动项 让 centos 启动时加载 新内核, (如有编译错误请勿修改启动配置,否则启动失败)
vi /boot/grub/grub.conf
default=0 (修改为0 即可)
千万要确认了可以正常启动,再把可能不需要的内核给删除。
我按照网上的安装安装到这里,后面的 这样写的:
在线虚拟机上 升级 centos 5.5 到 2.6.3X 启动时会提示如下错误:
mount: could not find filesystem ‘/dev/root’
setuproot: moving /dev failed: No such file or directory
setuproot: error mounting /proc: No such file or directory
setuproot: error mounting /sys: No such file or directory
switchroot: mount failed: No such file or directory
Kernel panic – not syncing: Attempted to kill init!
解决方法:(我看这步要提前完成,要不会杯具)
执行完make menuconfig后,修改/usr/src/kernels/linux-2.6.35.9/.config
将#CONFIG_SYSFS_DEPRECATED_V2 is not set
默认被注释掉的,将其改为y。即修改为
CONFIG_SYSFS_DEPRECATED_V2=y
最后结果: 还是没登陆上去 哈~~杯具 ,,在看~
另外 centos 作为服务器操作系统, 在编译配置选项中, 我想 声卡之类的 东西是不需要编译进去的, 这样可以加快编译速度,减少内核大小 (声卡我也编译了,估计浪费了不少时间)
解压修改内核:
cp /boot/initrd-2.6.35.1.img /tmp/
cd /tmp/
mkdir newinitrd
cd newinitrd/
zcat ../initrd-2.6.35.1.img |cpio -i
rm -fr /tmp/initrd-2.6.35.1.imgvim init
找到这2段一样的,去掉其中1段重复的:
echo “Loading dm-region-hash.ko module”
insmod /lib/dm-region-hash.ko
echo “Loading dm-region-hash.ko module”
insmod /lib/dm-region-hash.ko
5、从新打包新内核:
find .|cpio -c -o > ../initrd
cd ../
gzip -9 < initrd > initrd-2.6.35.1.img
rm -fr /boot/initrd-2.6.35.1.img
cp initrd-2.6.35.1.img /boot
将#CONFIG_SYSFS_DEPRECATED_V2 is not set
默认被注释掉的,将其改为y。即修改为
CONFIG_SYSFS_DEPRECATED_V2=y
我按照这里的,
执行完make menuconfig后就改了 重新来一次,就可以了,这次等待时间短了,这个写文档果断要顺序,给折腾我一会了,回头整理文档。