L inux2.6.9.42内核升级
在这里且不说版本的不同与区别,它所支持的功能。相信用过LINUX的人都希望自己所用的系统,内核是最新的了。接下来就来就给大家介绍linux2.6.9-42升级linux2.6.26-42的方法。首先来看下当前系统的版本吧:
接下来就开始吧,把所需文件 “linux-2.6.26.2.tar.bz2 .” 拷贝进 /usr/src目录下来,先进行bzip2–d linux-2.6.26 tar.bz2解压,然后tar一下。看我操作步骤:
按下回车键,解压完毕就可以进行配置了。现在看看目录下是不是多了个linux-2.6.26.2的目录,那么就#cd linux-2.6.26.2命令进到它下面了。执行#make mrproper命令,为的是清除掉以前升级留下的一些不正确文件。
好了,下面要做的就是拷贝/boot/config- 2.6.26.2.EL里的文件到/usr/src/ linux-2.6.26.2/.config下生成.config文件
确认.config文件存在,那么就来配置内核各个选项吧,键入make menuconfig命令:
出现内核配置工具拦,如图;
选择倒数第二项,加载一个已经存在的配置文件,按下select键。弹出保存文件名为.condig选择OK。
进到主菜单下,看到配置比较多就选择“File sysyems”下。
来做个NTFS格式的加载吧。点住这项选select键。
出现下面这个对话框后,点到末尾按下” M ” 键。
出现前面带有<>的两行,按空格键加*号退出并保存。
配置结束了,该是进行编译了,进到下图所示目录,make dep来建立编译时所需要的从属文件,但是以前没进行过升级的话可以省略。
“ make clean ” 来清除下内核编译的目标文件,看到成功,继续输入” make bzImage ” ,注意” I ”大写,这时候真正的编译才算是开始了。(时间比较长,耐心等待吧)
好了,编译终于算是完成了,功夫不负有心人啊。
下面就进行编译可加载模块了,键入“make modules”命令执行,时间相对也要长些。
看到编译完成。
下面就开始安装可加载模块,输入“make_install”命令。
过段时间后,完成了。进行下一步吧,从图中看到输入的是“make install”,这是加载新内核的命令。
在安装过程中,发出个警告,不要去理会它。是scsi盘加载失败,我们用的是虚拟机吗,所以会报错,但这并不影响内核的升级。
好了,经过编译、安装后终于完成了。但如果认为真正意义上的完成那就错了。重启下系统就会发现,起不来。这是因为刚升级完内核,在启动加载配置文件上还是第一个,这时需要做的就是让系统能找到升级完后的新文件。
那就是“cd /boot/grub ”命令,查看下“menu.last”就是它了。
V i 编辑器打开,在下图所示红色标记处添加“enforcing=0”然后保存退出,目的是使其强制加载。
重启下系统,选择“Red Hat Enterprise linux AS (2.6.26.2)”看能否启动得了。
经过段时间,系统正常启动。来查看下内核版本。
已经成功升级为2.6.26.2了,实验成功完成了。回过头来总结一下实验也就是配置内核选项和编译两项比较麻烦一点,其它也没什么。
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
找到这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