Linux
為什麼我的 initrd 只有一個目錄,即“核心”?
我正在使用 debian live-build 在可啟動系統上工作。在這個過程結束時,我得到了用於引導實時系統的典型文件:一個 squashfs 文件、一些 GRUB 模組和配置文件,以及一個 initrd.img 文件。
我可以使用這些文件很好地啟動,通過將 initrd 傳遞給核心
initrd=/path/to/my/initrd.img
在引導載入程序命令行上。但是當我嘗試檢查我的 initrd 圖像的內容時,如下所示:
$file initrd.img initrd.img: ASCII cpio archive (SVR4 with no CRC) $mkdir initTree && cd initTree $cpio -idv < ../initrd.img
我得到的文件樹如下所示:
$tree --charset=ASCII . `-- kernel `-- x86 `-- microcode `-- GenuineIntel.bin
實際的文件系統樹在哪裡,典型的 /bin , /etc, /sbin …包含引導期間使用的實際文件?
給出的 cpio 塊跳過方法不能可靠地工作。那是因為我自己獲得的 initrd 圖像沒有在 512 字節邊界上連接兩個檔案。
相反,請執行以下操作:
apt-get install binwalk legolas [mc]# binwalk initrd.img DECIMAL HEXADECIMAL DESCRIPTION -------------------------------------------------------------------------------- 0 0x0 ASCII cpio archive (SVR4 with no CRC), file name: "kernel", file name length: "0x00000007", file size: "0x00000000" 120 0x78 ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86", file name length: "0x0000000B", file size: "0x00000000" 244 0xF4 ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86/microcode", file name length: "0x00000015", file size: "0x00000000" 376 0x178 ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86/microcode/GenuineIntel.bin", file name length: "0x00000026", file size: "0x00005000" 21004 0x520C ASCII cpio archive (SVR4 with no CRC), file name: "TRAILER!!!", file name length: "0x0000000B", file size: "0x00000000" 21136 0x5290 gzip compressed data, from Unix, last modified: Sat Feb 28 09:46:24 2015
對我來說使用不在 512 字節邊界上的最後一個數字 (21136):
legolas [mc]# dd if=initrd.img bs=21136 skip=1 | gunzip | cpio -tdv | head drwxr-xr-x 1 root root 0 Feb 28 09:46 . drwxr-xr-x 1 root root 0 Feb 28 09:46 bin -rwxr-xr-x 1 root root 554424 Dec 17 2011 bin/busybox lrwxrwxrwx 1 root root 7 Feb 28 09:46 bin/sh -> busybox -rwxr-xr-x 1 root root 111288 Sep 23 2011 bin/loadkeys -rwxr-xr-x 1 root root 2800 Aug 19 2013 bin/cat -rwxr-xr-x 1 root root 856 Aug 19 2013 bin/chroot -rwxr-xr-x 1 root root 5224 Aug 19 2013 bin/cpio -rwxr-xr-x 1 root root 3936 Aug 19 2013 bin/dd -rwxr-xr-x 1 root root 984 Aug 19 2013 bin/dmesg