web-dev-qa-db-ja.com

ubuntu-20.04-live-server-AMD64.isoからinitrdを抽出する方法

20.04のUbuntu 18.04インストールイメージをリマスターするために使用されるプロセスを更新しようとしていますが、initrdアーカイブの抽出で問題が発生しています。使用するコマンドはcpio -id --no-absolute-filenames。この同じコマンドを使用して20.04イメージからinitrdイメージを抽出すると、kernel/x86/microcode/AuthenticAMD.binと停止します。

Initrdファイルの内容を確認すると、ファイルに複数のアーカイブがあることを示す「TRAILER」セクションが表示されます。 cpioアーカイブに関する他のスレッドで示唆されているように、複合アーカイブをそのように抽出しようとしました:cat initrd | while cpio -id --no-absolute-filenames; do :; done。この場合、最初のエントリは抽出されますが、その後に「0ブロック」の束があり、それ以外は何も抽出しません。

このアーカイブがどのように作成されたか、またはどのように抽出するかを誰か知っていますか?

2
mjb2kmn

ここで同じ問題-解決策は、unmkinitramfsを使用してUbuntuバージョン20.04で解凍しないことでした。

私は起動可能なUSBを作成し、マシンをUbuntu 20で起動しました-unmkinitramfsはinitrdを解凍できました。自動ログインしない(そしてcasper-rwで正しく動作する)新しい起動可能なUSBを構築する方法をまだ見つけています。

Unmkinitramfsの機能について詳しく知りたい場合は、bashスクリプトです。 BionicとFocalの比較では、Bionicはlz4圧縮をサポートしていません。

0
Ed King

/ usr/sbin/update-initramfsは/ usr/sbin/mkinitramfsを呼び出し、

cpio --quiet -R 0:0 --reproducible -o -H newc | lz4 -9 -l

ここで、lz4は/etc/initramfs-tools/initramfs.confから取得されます

それを逆に

cat /boot/initrd.img-5.4.0-26-generic | unlz4 -9 -l | cpio -i -H newc

しかし失敗します。

cat /boot/initrd.img-5.4.0-26-generic | file -
    /dev/stdin: ASCII cpio archive (SVR4 with no CRC)

それはcpioアーカイブであり続けますが、

cat /boot/initrd.img-5.4.0-26-generic | cpio -i -H newc

まだ同じAuthenticAMD.binになります。たぶん他の誰かがこれに基づいて構築できますか?

編集:いいえ。 https://unix.stackexchange.com/a/511224/44864 によると答えは

 unmkinitramfs -v initrd.img-5.4.0-26-generic .
1
JdeHaan