本文主要是介绍initrd文件的解开与压缩方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
还是我自己比较常用并且很喜欢的方法。呵呵。
linux-d109:/home # mkdir wangtt
linux-d109:/home # cd wangtt/
linux-d109:/home/wangtt # cp /boot/initrd-2.6.27.19-5-default .
linux-d109:/home/wangtt # ls
initrd-2.6.27.19-5-default
linux-d109:/home/wangtt # zcat initrd-2.6.27.19-5-default |cpio -i -d
15973 blocks
linux-d109:/home/wangtt # ls
bin bootsplash dev etc init initrd-2.6.27.19-5-default lib lib64 proc root sbin sys tmp
linux-d109:/home/wangtt # rm initrd-2.6.27.19-5-default
linux-d109:/home/wangtt # ls
bin bootsplash dev etc init lib lib64 proc root sbin sys tmp
linux-d109:/home/wangtt # find .|cpio -c -o>../initrd.img
15973 blocks
linux-d109:/home/wangtt # cd ..
linux-d109:/home # ls
build dead.ko initrd.img source wangtt
linux-d109:/home # gzip initrd.img
linux-d109:/home # ls
build dead.ko initrd.img.gz source wangtt
linux-d109:/home # mv initrd.img.gz initrd-2.6.27.19-5-default
linux-d109:/home # ls
build dead.ko initrd-2.6.27.19-5-default source wangtt
比较好用,呵呵。
下面是在网络找的资料:
使用cpio解压initrd.img
Posted by Michael as 开源笔记| Linux
2.6内核中的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 > ../initrd.new.img
gzip ../initrd.new.img
再将其改名拷贝至/boot目录,重启就可以观察修改后的效果
===========
在OpenSUSE中使用了2.6 kernel所支持的cpio initrd。我们需要手工更新这个initrd时需要一系列的操作。这里记录下来:
解开一个cpio initrd:
> mkdir work
> cp /boot/initrd.img ./initrd.img.gz
> gunzip -c initrd.img.gz
> cpio -i --make-directories < initrd.img
制作一个cpio initrd
> find . | cpio -c -o > ../initrd.img
> gzip ../initrd.img
这篇关于initrd文件的解开与压缩方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!