内核升级方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
内核升级方法:
一、将Linux内核从2.6.9.55直接升级到2.6.18.8
步骤:
1、将linux-2.6.18.8.tar.bz2放置在/usr/src/下然后解压:
cd /usr/src
tar -jxvf linux-2.6.18.8.tar.bz2
2、进入/usr/src目录,依次执行下列命令:
make mrproper(第一次编译内核不需要)
make menuconfig(直接保存退出)
make
make modules_install install
3、修改grub.conf文件
在/boot/grub/grub.conf 里新加enforcing =0
变成:
title Red Hat Enterprise Linux ES (2.6.18.8)
root (hd0,0)
kernel /vmlinuz-2.6.18.8 ro root=LABEL=/ enforcing=0 rhgb quiet
initrd /initrd-2.6.18.8.img
如果不加enfocing=0可能在重起后不能登录新编内核,并出现错误:
Mkrootdev:label /enforcing=0 not found
mount :error 6 mounting ext3
mount:error 2 mounting none
switchroot:mount failed:22
umount /initrd/dev failed:2
kernel panic –not synicncing:Attemped to kill init
分析:root找不到挂载点,所以不能启动。另外需要注意的是enforcing=0和/与rhgb之间需要一个空格,否则错误信息同上。
4、重起,登录新编译的内核。
二、不在/usr/src目录下操作,在另外的目录下用shell脚本升级
我们在/dhcc目录下,建立个自己的目录,比如zhangbing,然后把linux-2.6.18.8.tar.bz2解压到这个目录下linux-2.6.18.8,同时建立一个目录build。
在linux-2.6.18.8目录中建立一个脚本shmake.sh
脚本内容如下:
# !/bin/sh
echo "make O=../build menuconfig"
make O=../build menuconfig
echo "make O=../build"
make O=../build
echo "make O=../build modules_install install"
make O=../build modules_install install
此脚本的目的在于每次编译不对原内核产生任何影响,每次编译的东东都放于build目录中了。
脚本执行完后,同第一种方法一样修改grub.conf文件。
三、自己定制一个系统
在10.10.151.135机器上,目录如下:/dhcc/zhangbing/work/linux-2.6.18.8,依次执行如下操作。
1、make mrproper (第一次编译内核不需要此步)
2、make menuconfig
3、make bzImage
4、make modules
5、make modules_install
然后开始自己定制一个*.img文件,不执行make install那一步
查看/lib/modules 目录下的文件,会发现一个2.6.18.8目录文件,这是刚刚编译过后生成的模块文件目录。
执行命令:mkinitrd /boot/initrd_2.6.18.8 2.6.18.8
cp /dhcc/zhangbing/work/linux-2.6.18.8/arch/i386/boot/bzImage /boot/bzImage.zhangbing cp /dhcc/zhangbing/work/linux-2.6.18.8/System.map /boot /System.map-2.6.18.8 rm -rf System.map
ln -s System.map-2.6.18.8 Systemp.map
注:最后这两步在第一次编译内核的时候不需要。
修改grub.conf文件,修改如下
title Red Hat Linux-zhangbing
root(hd0,0)
kernel /bzImage.zhangbing ro root=LABEL=/ enforcing=0 rhgb quiet
initrd /initrd_2.6.18.8
说明:我在执行mkinitrd /boot/initrd_2.6.18.8 2.6.18.8 这条命令的时候,分别遇到下列警告信息:
No module mptscsi found for kernel 2.6.18,aborting。
No module ata_piix found for kernel 2.6.18,aborting。
从网上查找到原因,是因为2.6.18.8模块目录下没有mptscsi,ata_piix这两个模块,和配置选项有关系。
修改/etc/modprobe.conf文件
把alias scsi_hostadapter1 mptscsi
alias scsi_hostadapter5 ata_piix 注释掉,改为
#alias scsi_hostadapter1 mptscsi
#alias scsi_hostadapter5 ata_piix
问题解决。