私はこのLinuxカーネルを初めて使用し、USBからボードを起動しようとしていますが、成功しました。
今私の問題は、usbに2つのファイルがあることですa)initramfs.cpio.xz b)linux.img
今私がする必要があるのは、このinitramfsを解凍し、このファイルシステムにいくつかのファイルを追加してから、圧縮して戻すことです。
私は問題に直面していますが、解凍する方法を知っている人は誰でも私に本当に役立ちます
ありがとう
私は同じ問題に直面し、 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がないため、ファイルを直接解凍することはできません(ここでは、解凍プロセスのためにファイルを認識可能な形式に変換する必要があることを意味します)
次のステップは、ファイルの正しい形状を次のように取得することです。
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アーカイブを取得します(ここでは、ファイルは同じ名前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)内のファイル
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
アーカイブには、起動時に必要となるファイルとディレクトリが含まれます。