美文网首页
查看linux内核文件initrd.img

查看linux内核文件initrd.img

作者: Jason416 | 来源:发表于2018-12-12 19:38 被阅读0次

查看压缩包方法

一、2.6及以后版本

1、解包
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
  $ cd initrd
  $ cpio -ivmd < ../initrd.img

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

  $ find . | cpio -o > ../initrd.new.img
  $ gzip ../initrd.new.img

再将其改名拷贝至/boot目录,重启就可以观察修改后的效果。重启后无法成功引导。这是因为生成的initrd.img不对。解决如下:

3、重新生成initrd

  $ find . | cpio -o -H newc > ../initrd.new.img
  $ gzip ../initrd.new.img

Note-H newc 是必须的。-H Use given archive FORMAT,newc The new (SVR4) portable format, which supports file systems having more than 65536 i-nodes。现在的Linux内核的initramfs/initrd默认都是使用SVR4格式。


二、2.6以前版本

initrd.img是一个用gzip压缩的文件,这主要是为了制作启动盘,因为启动盘只有1.44M,这个文件的原始大小是几个M,压缩后大概3、4百K。这个文件使用mkinitrd命令产生。

在2.6以前版本中的Initrd.img采用的ext2经gzip压缩而成。要看到其里面的内容,首先是解压该文件,由于gunzip解压的文件有扩展名要求,所以:

    1. 首先把该文件复制到另一个目录下。(备份大法好)
    1. 重命名
   $ mv initrd-2.4.21.img  initrd-2.4.21.img.gz
    1. 解压
 $ gunzip initrd-2.4.21.img
    1. 查看文件属性
  $ file initrd-2.4.21.img
  $ initrd-2.4.21.img: Linux rev 1.0 ext2 filesystem data
    1. 然后mount该文件:
  $ mount -o loop initrd-2.4.21.img /mnt/floppy/
    1. 查看文件:
  $ cd /mnt/floppy/
  $ ls

Note: 这种操作就是挂载文件系统操作,mount、cp、sync、umount便可完成对包的操作。最后再gzip,就OK了。


相关文章

网友评论

      本文标题:查看linux内核文件initrd.img

      本文链接:https://www.haomeiwen.com/subject/nqwphqtx.html