红联Linux门户
Linux帮助

linux内核升级失败处理方法

发布时间:2007-11-21 00:21:46来源:红联作者:Fzzd
为了解决某处linux kernel升级失败而采取的快速方法,不需要无数次的编译测试

主要思想为,根据正常启动的intrd文件制作新kernle的intrd文件,来保证系统正常引导

copy升级后的initrd-2.4.20-28.7smp.img文件,解压mount 后和正常启动的 initrd-2.4.18-3.img 文件内容进行比较,发现了问题。

1.查看正常情况下的磁盘驱动情况

grep scsi_mod /proc/modules | tr '[]' " " | cut -c33-

2.对initrd文件做解压成image文件,然后mount后进行对比

RD=/boot/initrd-2.4.18-3smp.img

cp ${RD} ${RD}.Original

gunzip < $RD > /tmp/initrd.img

mkdir /tmp/initrd.mnt

mount -o loop /tmp/initrd.img /tmp/initrd.mnt

同样操作对升级后的initrd文件,mont到另外一个位置,然后对比文件核心驱动模块加载文件linuxrc发现有一下不同

< echo "Loading aic7xxx module"

< insmod /lib/aic7xxx.o

---

> echo "Loading aacraid module"

> insmod /lib/aacraid.o

对7.3 kernel的升级(土法秘制高汤。谨慎使用)分2种情况

1.有raid的机器

A.直接从以前正常的机器copy /boot 下面需要升级的kernel文件,initrd等文件 /lib/modules//lib/modules/2.4.20-28.7

B.修改lilo 或者grub即可

2.没有raid的机器,先按照有raid的机器做好上面A,B 两步然后

A. 解开升级后的initrd驱动文件

RD=/boot/ /boot/initrd-2.4.20-28.7smp.img

cp ${RD} ${RD}.Original

gunzip < $RD > /tmp/initrd.img

mkdir /tmp/initrd.mnt

mount -o loop /tmp/initrd.img /tmp/initrd.mnt

B.修改/tmp/initrd.mnt/linuxrc 文件中的

echo "Loading aacraid module"

insmod /lib/aacraid.o

2行为

echo "Loading aic7xxx module"

insmod /lib/aic7xxx.o

C.copy /lib/modules/2.4.20-28.7smp/kernel/drivers/scsi/aic7xxx/aic7xxx.o 文件到 /tmp/initrd.mnt/lib/

D.对修改好的initrd文件打包,替换/boot下有问题的initrd img文件

Sync

Umount /mnt/initrd.img

Cd /tmp ; Gzip < initrd.img > initrd-2.4.20-28.7smp.img

Cp initrd-2.4.20-28.7smp.img /boot/

至此完成自制的驱动的修改,由于 /lib/modules/ 下面的驱动文件非常丰富,这样就比较省事的替换了驱动,驱动和kernel版本要严格一直。
文章评论

共有 0 条评论