linux升级内核后反复重启,linux内核升级后重启出现panic解决的一种有效方法

内核升级固然时间很爽的事情,可是当你辛辛苦苦compile了近乎一个小时,满怀期待的reboot后看到panic字段时,是不是有种想屎的感觉。。。

10.gif

以前升级内核,总是拿下代码,make & make modules & make modules_install & make install

然后修改/boot/grub/menu.lst中内容。。。然后reboot.

如果遇到panic,就盲目的去谷歌。。。其实panic的提示就那么几类,但是引起panic的底层原因却是很多的。。因此,盲目去谷歌往往浪费时间,自信心还受到打击。。。

这两天也是遇到类似问题,2.6.18的内核用2.6.18的源码编译,重启reboot,报告错误:

Uncompressing Linux...OK booting the kernel

Red Hat nash version 5.1.19.6 starting

mount: could not find filesystem '/dev/root'

setuproot:moving /dev failed:no such file or directory

setuproot: error mounting /proc: no such file or directory

setuproot: error mounting /sys: no such file or directory

switchroot: mount failedL no such file or directory

Kernel panic - not syncing: Attenpted to kill init !

于是,就在.config文件中一顿瞎改,然后编译,重启时往往还是panic,因为并没找到问题症结在哪。。

今天听同事说肯定是initrd不一样,有问题导致的。。。

于是乎,想花点时间研究下,找了些文章,参考了下,到刚才终于搞定。

可能有人说,为啥不用安装系统时的config文件,个人觉得,对于版本号比较接近的内核升级,可以直接采用原系统的config文件来作为.config文件,但是如果内核版本号相差较大的话,老的config显然是不能替代新的config的,因为有些新特性的CONFIG是老的没有的。。。

因此,我还是建议自己选择config,然后解决panic的方法如下.

/boot/xxx.img往往是内核模块,脚本和诸多目录的压缩文件。通过以下方法能够看到.

解压缩img文件:

内核中的initrd.img采用cpio压缩,不再是2.4内核使用的ext2格式,无法使用mount -o loop 挂载。需要使用gunzip解压缩,然后再使用cpio解包

cp /boot/initrd-***.img initrd.img.gz

gunzip initrd.img.gz

mkdir initrd

mv initrd.img initrd

cd initrd

cpio -ivmd < initrd.img

通过以上命令就将initrd.img解压了,现在就可以对其进行编辑,完成后使用以下命令重新压制

find . | cpio -cv -o > ../initrd.new.img

gzip ../initrd.new.img

我们能够知道,启动时panic往往是内核img问题导致的,而与大多数config中的项是无关的,因此对比config文件比对比img内容要复杂,因此我们选择简易的后者。

加压缩img文件后,生成如下文件和目录列表:

bin  dev  etc  init  lib  proc  sbin  sys  sysroot

一般情况下,我们需要做的就是把新编译内核的img中内容同系统原来的img解压的内容对比,

有哪些不一致,就修改自己的config文件,我刚开始编译时,是把自己觉得重要的模块都build-in进内核了,但是依然panic,后来跟着原装系统的比较,把lib目录下的模块一个个找出来,改成M方式,直到跟老系统一样,然后make reboot,果然OK了。

个人觉得,这种方式,对于解决内核panic是比较高效的,当然还有另外一个方法,就是看内核启动代码。。

附上2.6.20的img解压缩后lib目录类容:

ahci.ko  ehci-hcd.ko  ext3.ko  jbd.ko  libata.ko  ohci-hcd.ko  scsi_mod.ko  sd_mod.ko  uhci-hcd.ko

原来编译的lib内容是:

ehci-hcd.ko  ohci-hcd.ko  uhci-hcd.ko

还有相关帮助帖子地址:

Linux2.6 内核的 Initrd 机制解析

Linux 下压缩和解压.img文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值