解壓Ubuntu的initrd.img的方法


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM