时间:2023-06-02 16:16:41 来源: 人气:
Linux的内核是系统的核心,所以升级内核是Linux系统管理员的一项基本技能,所以我就分享了系统运维实务上的一篇文章,当然我对源文件稍做了一些内容的增加,就是把遇到的问题及解决方案也加上了,希望对各位Linux系统管理员有所帮助!, 1.下载内核, 代码如下:, cd /usr/src,wget linux/kernel/v2.6/linux-2.6.38.tar.gz">http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.38.tar.gz,tar zxvf linux-2.6.38.tar.gz,cd linux-2.6.38, 2.下载热点内核标准配置文件, 代码如下:, wget http://vbets.googlecode.com/files/config,mv config .config, 3.编译内核, 代码如下:, make menuconfig, 选中Load an Alternate Configuration File ,然后选择刚下载的。config, 另外,要特别选中:, 1)、通过make menuconfig选中以下对应的选项, 代码如下:, General setup –>,[*] enable deprecated sysfs features to support old userspace tools, 2)、修改。config文件, 修改。config文件中CONFIG_SYSFS_DEPRECATED_V2,将原本被注释掉的, 代码如下:, CONFIG_SYSFS_DEPRECATED_V2 改成CONFIG_SYSFS_DEPRECATED_V2=y, 注: 修改这项是因为旧版的mkinitrd及其nash在内核没有CONFIG_SYSFS_DEPRECATED_V2参数时默认使用旧版sysfs路径格式,从而在新内核下无法正确访问/sys内的硬盘信息节点。, 主要是解决"mount:could not find filesystem /dev/root"这样的错误, 代码如下:, make bzImage,make modules,make modules_install,make install, 4.解压修改内核, 代码如下:, cp /boot/initrd-2.6.38.img /tmp,cd /tmp/,mkdir newinitrd,cd newinitrd/, zcat /initrd-2.6.38.img |cpio -i, rm -rf /tmp/initrd-2.6.38.img, vi init[/code], 找到这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, 这主要是解决:"insmod: error inserting /lib/dm-region-hash.ko: -1 File exists"这样的错误, 5.从新打包内核, 代码如下:, find .|cpio -c -o > /initrd,cd /,gzip -9 < initrd > initrd-2.6.38img,rm -rf /boot/initrd-2.6.38.img,cp initrd-2.6.38.img /boot,rm -rf /cd /usr/src/linux-2.6.38.tar.gz,rm -rf /cd /usr/src/linux-2.6.38, 6.设置从新内核启动, 代码如下:, vi /boot/grub/grub.conf, 把default=1改为default=0, 7.重新启动系统, 代码如下:, reboot,