
ファイルはブロックサイズ56を示す。私はUbuntu 16.04を使用しており、カーネルを更新する必要のないソリューションが必要です。
答え1
名前はで指定できますが、initrd
実際にはですinitramfs
。従属複数のcpio
アーカイブ(それぞれは圧縮または圧縮されない可能性があります)おそらく最初の部分だけを抽出した可能性があります。
initramfsファイルを抽出する正しい手順
より具体的には、最初のcpioセクションは通常「Early Microcode Update」であり、Intelプロセッサの場合、パス名はですkernel/x86/microcode/GenuineIntel.bin
。を実行すると、cpio -iv /boot/initrd.img-<kernel version>
抽出される内容はすべてです。 (マイクロコードは暗号化されているため、通常は圧縮しないため、まったく圧縮されません。)
Debian / Ubuntuシステムから最新のinitramfsを完全に抽出するには、このコマンドを使用する必要がありますunmkinitramfs
。
何らかの理由でコマンドを使用できない場合は、次のように手動で実行できます。
mkdir /some/temporary/directory
cd /some/temporary/directory
cat /boot/initrd.img-$(uname -r) | (cpio -iv; zcat | cpio -iv; file -)
initramfsには2つの部分しかないとします。
アイデアは、このcat
コマンドが角かっこ内のコマンドに最初から最後まで内容を出力することです。そのうちの最初はcpio
ファイルの先頭を取得し、最初のマイクロコードアップデートを抽出します。完了すると、最初のコマンドが中断された時点から次のコマンドが続行されます。 2番目の圧縮cpioアーカイブが終了すると、file -
コマンドはより多くのアーカイブがあることを確認します。
抽出された出力の最後の行が次のような場合いいえ
/dev/stdin: empty
...これにより、initramfsファイルにさらに多くのコンテンツがあることがわかり、file
コマンド出力を介してファイルが圧縮されたかどうかがわかります。次に、コマンドの前に括弧内に別のcpio -iv;
要素を追加します。zcat | cpio -iv;
file
たとえば、最初のマイクロコードの更新後に2つの圧縮部分を含む3つの部分で構成されるinitramfsを抽出するには、次のようにします。
cat /boot/initrd.img-$(uname -r) | (cpio -iv; zcat | cpio -iv; zcat | cpio -iv; file -)
initrdサイズが実際に56ブロックの場合
この場合、initrd生成プロセスが失敗する可能性があります。あなたはそれを使用することができます
sudo update-initramfs -u
現在のカーネルとモジュールに基づいて再生成するようにシステムに指示します。これはまた、システム起動の初期(実際のルートファイルシステムがマウントされる前)に発生する必要がある操作に影響を与える可能性がある構成変更後に実行するのに最適なコマンドです。