
我用binwalk解壓了ubuntu 18.04的initrd但沒有解壓縮包
command used # sudo binwalk initrd
===========
result:
==========
DECIMAL HEX DESCRIPTION
-------------------------------------------------------------------------------------------------------
0 0x0 ASCII cpio archive (SVR4 with no CRC), file name: "."
112 0x70 ASCII cpio archive (SVR4 with no CRC), file name: "kernel"
232 0xE8 ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86"
356 0x164 ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86/microcode"
488 0x1E8 ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86/microcode/AuthenticAMD.bin"
28072 0x6DA8 ASCII cpio archive (SVR4 with no CRC), file name: "TRAILER!!!"
28672 0x7000 ASCII cpio archive (SVR4 with no CRC), file name: "kernel"
28792 0x7078 ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86"
28916 0x70F4 ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86/microcode"
29048 0x7178 ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86/microcode/.enuineIntel.align.0123456789abc"
29212 0x721C ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86/microcode/GenuineIntel.bin"
2440880 0x253EB0 ASCII cpio archive (SVR4 with no CRC), file name: "TRAILER!!!"
===========
它在目標資料夾中沒有給出任何內容
# file initrd
initrd: ASCII cpio archive (SVR4 with no CRC)
我嘗試使用 cpio 命令提取,
build@###
:/source/build/1.0.5.00206/nm-gii/software/CD/build/initrd$ sudo cpio -i -F /source/build/1.0.5.00206/nm-gii/software/CD/build/extract-cd/casper/initrd
56 blocks
build@###:/source/build/1.0.5.00206/nm-gii/software/CD/build/initrd$ ll
total 12
drwxr-xr-x 3 root root 4096 Jan 15 05:36 ./
drwxr-xr-x 5 root root 4096 Jan 15 05:01 ../
drwxr-xr-x 3 root root 4096 Jan 15 05:36 kernel/
build@###:/source/build/1.0.5.00206/nm-gii/software/CD/build/initrd$
所以所有的文件仍然用這個提取。
答案1
對於 Ubuntu,至少是較新的版本,您可以使用命令lsinitramfs <file>
來檢查和unmkinitramfs <file> <target directory>
提取。
答案2
initrd 格式可以是一些內容的串連。即cpio
檔案,也可以是檔案系統映像。看文件。
選項1
對於dracut
創建的initrds,可以使用lsinitrd --unpack
dracut自帶的來提取。
選項2
另一種選擇是使用skipcpio
dracut 附帶的工具。看到這個回答。
/usr/lib/dracut/skipcpio $your-initrd-img | zcat | cpio -id --no-absolute-file-names
選項3
另一個選擇是使用binwalk
cpio 或其他 initrd 部分。看到這個回答。
選項4(可能是你所要求的)
但遍歷initrd、提取並修改的最佳答案是這樣的: https://unix.stackexchange.com/a/607996/14907
有了它,您可以更輕鬆地僅提取要修改的部分,然後以與解包相同的方式重新包裝它們。它不是一個全面的指南,但如果您有動力的話,應該會為您提供大部分內容。