美文网首页
查看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