文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Centos5.5 内核2.6.18.194编译升级至2.6.37.3步骤

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

时间:2011-04-22  来源:小大大小大

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文件,并修改系统默认的启动为最新版本的内核启动。

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 来查看版本号如下:

 

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载