linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘建议留言网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > article > Linux开发区 > 内核研究 >
栏目导栏
资料搜索
热门文章
·linux-2.6内核升级文档
·Linux源代码的注释
·linux2.6内核编译方法详述
·Linux操作系统内核编译详解
·Linux内核结构详解
·Linux配置与编译内核
·定时器
·Linux内核升级全攻略
·FC5(Fedora Core5)下编译内核总
·Ubuntu 6.06 dapper 内核编译初
·Linux 内核编译详解
·Linux内核管理基础知识概述
·Linux2.4升级到2.6内核升级指南
·第八章 设备驱动
·如何编译linux内核
最新文章
·Linux内核bootsplash功能的实现
·Linux内核2.6.25全新发布加入众
·Debian Linux系统编译内核标准
·Linux2.4内核和2.6内核对Initr
·2.6.24内核编译 initrd-2.6.24
·Qtopia应用程序与Linux内核数据
·Linux 2.6内核中sysfs文件系统
·Linux2.6内核驱动移植参考
·Andrew Morton:Linux内核的执法
·Fedora 8 Linux系统的内核配置
·Kernel中的irq.c函数
·Linux核心出现权限扩张及记忆体
·Linux 2.6本地权限提升漏洞
·结合Linux系统内核源码理解SYN
·关于Linux 内核中五个主要子系
Google
 
linux 内核升级失败处理方法
[ 作者:  加入时间:2007-11-21 11:45:00  来自:Linux联盟收集整理 ]

为了解决某处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> 下面的驱动文件非常丰富,这样就比较省事的替换了驱动,驱动和kernel版本要严格一直。tKiLinux联盟

Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·Linux联盟网站用户协会成立!QQ群40132165  (2007-11-21 11:22:32)
 ·Linux操作系统下C语言编程的注意事项  (2007-11-21 10:58:08)
 ·Linux新手学堂:CC与GCC的区别概括介绍  (2007-11-21 10:57:05)
 ·Linux操作系统下DHCP的安装方法详细介绍  (2007-11-21 10:56:26)
 ·Linux开机后不能自行启动服务的问题  (2007-11-21 10:48:06)
 ·Ubuntu Linux下16款新手必备的超酷软件  (2007-11-21 10:47:11)
 ·Windows下用Colinux来boot硬盘上的Linux  (2007-11-21 10:45:56)
 ·谈一谈怎样走入Linux大门  (2007-11-21 10:45:24)
 ·Linux与Win2000操作系统的可靠性比较  (2007-11-21 10:44:35)
 ·在Linux操作系统下用CDMA无线上网的方法  (2007-11-21 10:44:01)