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ブロック」の束があり、それ以外は何も抽出しません。
このアーカイブがどのように作成されたか、またはどのように抽出するかを誰か知っていますか?
ここで同じ問題-解決策は、unmkinitramfsを使用してUbuntuバージョン20.04で解凍しないことでした。
私は起動可能なUSBを作成し、マシンをUbuntu 20で起動しました-unmkinitramfsはinitrdを解凍できました。自動ログインしない(そしてcasper-rwで正しく動作する)新しい起動可能なUSBを構築する方法をまだ見つけています。
Unmkinitramfsの機能について詳しく知りたい場合は、bashスクリプトです。 BionicとFocalの比較では、Bionicはlz4圧縮をサポートしていません。
/ 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 .