青 田 酒 店 服 务 小 姐 价 格 186-6531-7773
分类: LINUX
2011-05-27 21:27:04
内核中的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 机制解析
https://www.ibm.com/developerworks/cn/linux/l-k26initrd/
Linux 下压缩和解压.img文件http://mazd1002.blog.163.com/blog/static/6657496520104248223768/