查看linux內(nèi)核文件initrd.img

查看壓縮包方法

一、2.6及以后版本

1、解包
2.6及以后內(nèi)核中的initrd.img采用cpio壓縮,不再是2.4內(nèi)核使用的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解壓了,現(xiàn)在就可以對其進(jìn)行編輯,完成后使用以下命令重新壓制。示例如下:

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

再將其改名拷貝至/boot目錄,重啟就可以觀察修改后的效果。重啟后無法成功引導(dǎo)。這是因為生成的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?,F(xiàn)在的Linux內(nèi)核的initramfs/initrd默認(rèn)都是使用SVR4格式。


二、2.6以前版本

initrd.img是一個用gzip壓縮的文件,這主要是為了制作啟動盤,因為啟動盤只有1.44M,這個文件的原始大小是幾個M,壓縮后大概3、4百K。這個文件使用mkinitrd命令產(chǎn)生。

在2.6以前版本中的Initrd.img采用的ext2經(jīng)gzip壓縮而成。要看到其里面的內(nèi)容,首先是解壓該文件,由于gunzip解壓的文件有擴(kuò)展名要求,所以:

    1. 首先把該文件復(fù)制到另一個目錄下。(備份大法好)
    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: 這種操作就是掛載文件系統(tǒng)操作,mount、cp、sync、umount便可完成對包的操作。最后再gzip,就OK了。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容