web-dev-qa-db-ja.com

initramfsファイルを解凍する必要があります

私はこのLinuxカーネルを初めて使用し、USBからボードを起動しようとしていますが、成功しました。

今私の問題は、usbに2つのファイルがあることですa)initramfs.cpio.xz b)linux.img

今私がする必要があるのは、このinitramfsを解凍し、このファイルシステムにいくつかのファイルを追加してから、圧縮して戻すことです。

私は問題に直面していますが、解凍する方法を知っている人は誰でも私に本当に役立ちます

ありがとう

1
Raj

私は同じ問題に直面し、 Linux initrd.imgファイルを表示、変更、再作成する方法 に基づいて解決しました。

まず、バージョン2.6以降( ここ を参照)以降、initrdイメージは単にinitramfsです(名前だけが保持されています)。その場合、カーネルイメージはcpioアーカイブを含む単純なgzipファイルです(少なくともdebianの場合)。

ファイル形式

/ boot内のイメージ(initrd.img.other_infoのようになります。例:initrd.img-4.9.0-8-686-pae)はgzipファイルです

file initrd.img-4.9.0-8-686-pae
>> initrd.img-4.9.0-8-686-pae: gzip compressed data, was "newinitrd", last modified: Sat Apr 27 10:03:57 2019, from Unix

拡張子がgzipであっても、ファイルの最後に。gzがないため、ファイルを直接解凍することはできません(ここでは、解凍プロセスのためにファイルを認識可能な形式に変換する必要があることを意味します)

解凍

GZIPパーツ

次のステップは、ファイルの正しい形状を次のように取得することです。

mv initrd.img-4.9.0-8-686-pae initrd.img-4.9.0-8-686-pae.gz

ファイルの名前をinitrd.img-4.9.0-8-686-paeからinitrd.img-4.9.0-8-686に変更するだけであることに注意してください。 -pae.gzは効果がありません。

次に、適切なコマンド(ここではgzipファイル)を使用してファイルを解凍します。

gunzip initrd.img-4.9.0-8-686-pae.gz

CPIOパーツ

Cpioアーカイブを取得します(ここでは、ファイルは同じ名前initrd.img-4.9.0-8-686-paeを保持します)

file initrd.img-4.9.0-8-686-pae
>> initrd.img-4.9.0-8-686-pae: ASCII cpio archive (SVR4 with no CRC)

次に、すべてのファイルをアーカイブに入れるには、新しいフォルダーを使用します。

cpio -id < ../initrd.img-4.9.0-8-686-pae 

解凍部分は以上です

圧縮

画像を編集した後、もう一度圧縮する必要があります。まず、これらすべてのファイルのcpioアーカイブを作成します(まだcpioアーカイブを開くために使用されるディレクトリにあります)

find . | cpio --create --format='newc' > ../newInitrd

次に、(親ディレクトリ内の)アーカイブを次のように圧縮します。

gzip newInitrd

そして最後に :

mv newInitrd.gz newInitrd.img

(次に、名前をnewInitrd.imgからinitrd.img-4.9.0-8-686-paeに変更して、 / boot)内のファイル

1
Ben W

initramfsは、オプションでgzip、xz、またはbzip2形式で圧縮できるcpioアーカイブファイルです。

あなたの場合、どの種類の圧縮が行われているかを確認してください。圧縮は主にgzipになります。

  $ file /boot/initrd.img-3.2.0-4-686-pae 
  /boot/initrd.img-3.2.0-4-686-pae: gzip compressed data, from Unix

Gzip圧縮の場合は、gunzipユーティリティまたはその他の圧縮形式に適したユーティリティを使用して解凍します。圧縮を解除したら、cpioユーティリティを使用してアーカイブを抽出します。

$ cpio -id < initrd.img-3.2.0-4-686-pae 
48843 blocks

アーカイブには、起動時に必要となるファイルとディレクトリが含まれます。

1
Kannan Mohan