Centos5.5 内核2.6.18.194编译升级至2.6.37.3步骤

本文详细介绍了从下载稳定内核版本、解压源码、配置编译选项,到安装内核模块、生成映像文件、修改GRUB配置直至系统重启的全过程。在遇到问题时,通过安装ncurses库、修改配置文件和环境变量等方法解决了多个典型问题,最终实现了新内核的成功加载。

1. 首先到www.kernel.org网站上发现最新稳定的内核版本为2.6.37.3,大小为70.2M,下载保存至硬盘。

2. 运行解压命令tar -jxvf linux-2.6.37.3tar.bz2 –C /usr/src,将源代码解压至当前文件夹下,然后将该源码文件夹移动到 /usr/src目录下,待安装使用。

3. 进入/usr/src下的内核源码文件夹,运行make menuconfig,进入内核编译选项配置。

期间提示

[root@localhost linux-2.6.37.3]# 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] 错误 1

make: *** [menuconfig] 错误 2

这里提示说需要安装ncurses库文件,此时去网上搜索安装该库文件,运行yum install ncurses-devel命令后,自动去服务器上下载安装,成功后,进入配置界面。

4. 配置完成后,利用make modules 和 make modules_install编译和安装内核模块,期间等待很长时间。等模块编译安装完成后,make install 安装内核。

5. 完成后,利用mkinitrd /boot/initrd_2.6.37.3img 2.6.37.3命令生成该版本内核的映像文件。期间出现错误,找不到mkinitrd命令。分析其原因是bash的环境变量没有包含mkinitrd命令的目录。利用命令PATH=$PATH:/sbin/ 修改命令的环境变量,问题解决。

6. 查看系统/boot文件夹下是否生成了相应版本的内核文件。若没有,将编译目录文件夹下/arch/x86/boot/bzImage文件重命名为vmlinuz-2.6.37.3然后移至系统boot文件夹下。

7. 修改grub启动配置grub.conf文件,并修改系统默认的启动为最新版本的内核启动。

clip_image001

8. reboot系统,看是否成功。

期间遇到很多问题,将比较典型的问题总结如下:

其一,在重启系统时,提示错误:

mount: could not find filesystem '/dev/root'

Setting up other filesystems.

Setting up new root fs

setuproot: moving /dev failed: No such file or directory

no fstab.sys, mounting internal defaults

setuproot: error mounting /proc: No such file or directory

setuproot: error mounting /sys: No such file or directory

Switching to new root and running init.

unmounting old /dev

unmounting old /proc

unmounting old /sys

switchroot: mount failed: No such file or directory

Kernel panic - not syncing: Attempted to kill init!

去网上找相应的原因,其中有两个,第一个是新内核名字空间不兼容问题。解决方法是在make menuconfig配置内核编译选项时,应该在general setup里选择兼容老版本程序的名字空间编译选项(具体名字当时没有记下来)还有一个是,在内核源码包里的配置文件 ./config文件中有个选项是CONFIG_SYSFS_DEPRECATED_V2 将其标志位设置为真。这两项配置修改过以后,重新编译内核文件,问题解决。

其二,在insmod命令加载内核模块时,提示insmod: error inserting ‘/lib/dm-region-hash.ko’: –1 File exits错误。

为了解决这个问题,首先把内核文件复制到用户文件夹下,然后利用命令zcat ../initrd-2.6.37.3.img |cpio -i 解压内核镜像。在解压出的加载配置菜单init中,会发现

echo "Loading dm-region-hash.ko module"

insmod /lib/dm-region-hash.ko

配置参数前后加载了两次,将其中的一段这个代码删除,然后重新打包内核镜像文件,然后将修改过启动配置的内核镜像覆盖掉/boot下的原镜像,问题解决。(这个问题不知道出现在哪一个步骤,但是很常见,但愿在下一版本的内核编译时会有所修改。)

最后将系统reboot后,新内核成功加载起来。由于我是在virtualbox虚拟机下完成的这一系列步骤(目的是利用增量备份功能来挽回一些错误),在以前内核下安装的virtualbox虚拟机的增强工具VBOXADDITIONS启动失效。重新安装以后问题已经解决。在进入shell后运行 uname –r 来查看版本号如下:

clip_image002

转载于:https://www.cnblogs.com/xuelllang/archive/2011/04/22/2025290.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值