您的位置:首页 > 运维架构 > Linux

Linux内核升级方法详解

2013-03-17 16:43 363 查看
Linux的内核是系统的核心,所以升级内核是Linux系统管理员的一项基本技能,所以我就分享了系统运维实务上的一篇文章,当然我对源文件稍做了一些内容的增加,就是把遇到的问题及解决方案也加上了,希望对各位Linux系统管理员有所帮助!

1.下载内核

cd /usr/src

tar zxvf linux-2.6.38.tar.gz

cd linux-2.6.38

2.生成.config文件

make menuconfig

生成.config

要特别选中:

通过make menuconfig选中以下对应的选项

General setup –>

[*] enable deprecated sysfs features to support old userspace tools

通过以上操作主要是为了修改.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'"这样的错误

3.编译内核

make mrproper(可确保源代码目录下没有不正确的.o文件)

make clean (清除内核编译的目标文件)

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

找到这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.38.img

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: