Tuesday, February 22, 2011

Ubuntu initrd.img 解壓縮和打包的步驟

每次要用到時候就要去網路爬文, 所以還是自己記錄一下,
年紀大了, 如果不是每天在用的話真的沒幾天就忘光光了

以 Ubuntu 10.10 為例
通常 initrd.img 可以在 /boot 下面找到,
為了測試先 copy 一份到一個暫時的目錄


cp /boot/initrd.img-2.6.35-25-generic /xxx/initrd.img.gz

到暫時的目錄去解壓縮

cd /xxx/
gzip -d initrd.img.gz

解壓縮後檔案為 initrd.img, 這個檔案需要用 cpio 解開成為一堆目錄和檔案

mkdir initrd
cd initrd
cpio -i -d < ../initrd.img

看一下裡面的檔案

到這邊解開的動作已經完成
現在就可以對 initrd 裡面的檔案或者 scripts 作修改, 修改完接下來我們要打包出新的 initrd.img,
下面將打包出 newinitrd.img

find . | cpio -o -H newc > ../newinitrd.img


離開 initrd 目錄, 用 gzip 將 newinitrd.img 壓縮

cd ..
gzip -9 newinitrd.img
(gzip 的最高級壓縮)

newinitrd.img.gz 就是 Ubuntu 的 initrd.img 了

註: 注意一下 newinitrd.img.gz 的檔案大小, 如果檔案太小, 可能是步驟有錯

No comments: