1. 程式人生 > >解壓Ubuntu的initrd.img的方法

解壓Ubuntu的initrd.img的方法

init 解壓 是把 高級壓縮 initrd zip 行修改 什麽 The

  Ubuntu的initrd.img可以在/boot中找到,通常文件名後面還跟有很長的一串版本號。

  為了保險起見,不直接操作原文件,而是把它復制到自己的家目(home)錄中。如果你是用root帳號登錄的,家目錄就在/root中,如果是用wsxx登錄的,家目錄一般就在/home/wsxx中,通常登錄之後自動就到了家目中。我們把initrd.img復制但家目中進行解壓:   cp /boot/initrd.img-2.6.15-ubuntu-r6 ./initrd.img.gz   上面這個命令把/boot區中的文件復制到當前目錄,並更名為initrd.img.gz。一方面改成短文件名好一點好操作,另一方面加上gz的後綴更清楚表明它原本就是一個gzip壓縮出來的文件。http://www.ccthere.com/article/825480   然後解壓:   gunzip initrd.img.gz   也可以:http://www.ccthere.com/article/825480   gzip -d initrd.img.gz   兩者結果是相同的,都是在當前目錄得到一個解壓後的initrd.img,原來的initrd.img.gz被刪除掉了(這也許是linux整潔的優點)。   現在這個更大的initrd.img要用cpio解開,成為一系列目錄和文件。為了不與當前目錄中現有的文件搞混,我們有必要新建一個目錄,把initrd.img解壓到新目錄中去。將來把裏面的文件修改好之後,還要把所有的目錄文件再打包起來:http://www.ccthere.com/article/825480   mkdir initrd #建立目錄   cd initrd  #進入目錄   cpio -i -d < ../initrd.img #解開上層目錄中的initrd.img http://www.ccthere.com/article/825480   因為已經進入到initrd中,../initrd.img表示上層目錄中的initrd.img。   現在就可以看到initrd中各目錄中有很多新的目錄和文件了。在這裏我們可以窺視到ubuntu是如何裝配起來的。可以對其中的內容進行修改了。   http://www.ccthere.com/article/825480   修改文本文件沒有什麽好多說的了。   修改之後,就是壓縮回去,用它來啟動,檢驗是否可以正常啟動,是否達到預期的修改目的。先用cpio打包:   http://www.ccthere.com/article/825480   find . | cpio -o -H newc > ../myinitrd.img #打包當前目錄中的所有目錄和文件,到上層目錄中的myinitrd.img   cd .. #回到上層目錄   gzip -9 myinitrd.img #gzip的最高級壓縮http://www.ccthere.com/article/825480   得到的myinitrd.img.gz就是新的Ubuntu啟動文件了。   做到這裏,要有必要停下來看看一看,比較一下重新壓縮之後的文件,是否和原來的initrd.img.gz差不多大小?都應該是4M多的文件。如果文件大小相差太多,可能就有問題。我用Ubuntu文件解壓後在壓縮回來,用不同的文件名,最後比較,大小完全一致,心裏就踏實了。   http://www.ccthere.com/article/825480   再用Gentoo的initramfs文件進行同樣方法的操作,2M多的文件解壓再壓縮回來,只剩下不到1K了。

解壓Ubuntu的initrd.img的方法