【转载】关于initrd.image的处理

initrd (boot loader initialized RAM disk)

   Linux2.6 内核支持两种格式的 initrd,一种是 linux2.4 内核那种传统格式的文件系统镜像-image-initrd,它的制作方法同 Linux2.4 内核的 initrd 一样,其核心文件就是 /linuxrc.另外一种格式的 initrd 是 cpio 格式的,这种格式的 initrd 从 linux2.5 起开始引入,使用 cpio 工具生成,其核心文件不再是 /linuxrc,而是 /init,本文将这种 initrd 称为 cpio-initrd.尽管 linux2.6 内核对 cpio-initrd和 image-initrd 这两种格式的 initrd 均支持,但对其处理流程有着显著的区别。

第一种:gzip处理initrd.img

   如果initrd.img是经过用gzip -9进行压缩过的ramdisk文件。直接用#mount initrd.img /mnt -o loop会失败,并报告你指定一个文件类型。 要先将其进行解压缩,然后再mount。具体操作如下:

cd /boot
mv initrd.img   initrd.gz
gunzip initrd.gz /tmp/initrd
mv /tmp/initrd /tmp/initrd.img
mount /tmp/initrd.img /mnt/ -o loop

 反过来生成initrd.img过程如下:

mkcramfs /tmp/ /boot/newinitrd
gzip -9 /boot/newinitrd
mv /tmp/newinitrd.gz /tmp/initrd.img

第二种:cpio处理initrd.img

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

cp /boot/initrd-2.6.15-prep.img initrd.img.gz #必须先将initrd重名为initrd.gz,否则gunzip工具无法识别该文件
gunzip initrd.img.gz
mkdir initrd
mv initrd.img initrd
cd initrd
cpio -ivmd < initrd.img  # -v: List the files processed.
              # -i: Run in copy-in mode, cpio copies files out of an archive or list the archive contents.
              # -m: Retain previous file modification times when creating files.
              # -d: Create leading directories where needed.

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

find . | cpio -o -H newc | gzip > /mnt/sda1/boot/initrd-2.6.15-prep.img  # -o: Create the archive.
                                           # -H newc: Use archive format "newc", the "newc" format is The new (SVR4) portable format, which supports file systems having more than 65536 i-nodes.

(注:-H newc 是必须的,否则内核会认为是ramdisk,而不是initramfs)

gzip ../initrd.new.img

 

 

参考文献:

[1] http://blog.csdn.net/jiazhen/article/details/4022800

 

转载于:https://www.cnblogs.com/cnpirate/p/3461156.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值