アーカイブされたrootfs:initramfsで使用するためにtarをcpioに変換する

アーカイブされたrootfs:initramfsで使用するためにtarをcpioに変換する

TarファイルとしてDebian rootfsがあります。 Kconfig(PetaLinuxを使用)でinitramfsソースとして指定したいが、ソースはcpioアーカイブでなければなりません。

.tarを.cpioに変換し、構造、権限などを維持する方法は?

答え1

bsd tarを試してみてください(GNU tarではない) -魔法@tarballファイル名の前に以下を追加してください。

bsdtar --format=cpio -cf - @root.tar.gz > root.cpio

ただし、bsdtartarファイル内のハードリンクは現在正しく処理されておらず、そのリンクの破損したエントリが自動的に生成されます(既知のエラー計画された修正はなく、起動されたinitramfsには表示されません。

答え2

bsdtarどのプログラムもこれらの変換(ハードリンクを含むエラー処理アーカイブ)を安定した方法で提供しないため、以下を使用してtarアーカイブを解凍する必要があります。

tar xpf archive.tar

rootとして実行し、抽出されたディレクトリツリーからcpioアーカイブを作成します。

解凍/再梱包操作を実行すると、root権限は必要ありません。近さセッション例:

fakeroot sh -c "cd '$ROOTFS' &&
                tar -xf input.tar.gz &&
                find . | cpio -o -H newc" > output.cpio

関連情報