Ubuntu 18.04 の initrd を解凍して、再度パックするにはどうすればいいですか?

Ubuntu 18.04 の initrd を解凍して、再度パックするにはどうすればいいですか?

Ubuntu 18.04のinitrdを解凍するためにbinwalkを使用しましたが、パッケージが解凍されませんでした

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

作成された initrd を抽出するにはdracutlsinitrd --unpackdracut に付属の を使用できます。

オプション2

もう一つの選択肢は、skipcpiodracutに付属のツールを使うことです。こちらを参照してください答え

/usr/lib/dracut/skipcpio $your-initrd-img | zcat | cpio -id --no-absolute-file-names

オプション3

もう一つの選択肢は、binwalkcpio または initrd 部分を使用する方法です。こちらを参照してください。答え

オプション4(おそらくあなたが求めていたものでしょう)

しかし、initrd を走査して抽出および変更するための最善の答えは次のとおりです。 https://unix.stackexchange.com/a/607996/14907

これを使用すると、変更したい部分だけをより簡単に抽出し、解凍したのと同じ方法で再パックすることができます。これは包括的なガイドではありませんが、やる気があればほとんどの部分を紹介できるはずです。

関連情報