查看壓縮包方法
一、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ò)展名要求,所以:
- 首先把該文件復(fù)制到另一個目錄下。(備份大法好)
- 重命名
$ mv initrd-2.4.21.img initrd-2.4.21.img.gz
- 解壓
$ gunzip initrd-2.4.21.img
- 查看文件屬性
$ file initrd-2.4.21.img
$ initrd-2.4.21.img: Linux rev 1.0 ext2 filesystem data
- 然后mount該文件:
$ mount -o loop initrd-2.4.21.img /mnt/floppy/
- 查看文件:
$ cd /mnt/floppy/
$ ls
Note: 這種操作就是掛載文件系統(tǒng)操作,mount、cp、sync、umount便可完成對包的操作。最后再gzip,就OK了。