ループバックデバイスなしでファイルシステムイメージファイルを操作しますか?

ループバックデバイスなしでファイルシステムイメージファイルを操作しますか?

CIbitbucket-pipelinesなどの一般的なシステムで実行するために、Docker仮想マシンでRaspberry Piイメージの生成を自動化しようとしています。

物理システムでは、「テンプレート」イメージを使用し、それをローカルディレクトリに分割し、スクリプトで埋め、アンマウントします。インストールするには、次のスクリプトを使用します。

loopdevice=`losetup -f --show -P images/template.img`

echo $loopdevice > loopdevice

mkdir -p images/p1
mkdir -p images/p2
mkdir -p images/p3

mount ${loopdevice}p1 images/p1
mount ${loopdevice}p2 images/p2
mount ${loopdevice}p3 images/p3

(画像にはそれぞれ3つのディレクトリにマウントされている3つのパーティションが含まれています。)

残念ながら、Dcokerコンテナ内のループバックデバイスは許可なく使用できず、Bitbucketパイプライン内で権限を付与することもできません。ここでは、行き止まりの路地が見えます。

それでは、問題は、ファイルシステムイメージファイルをループバックデバイスにマウントせずに操作できるLinuxツールがありますか?

答え1

  1. 要件に応じてファイルシステムを操作するツールがあります。その一つはツールボックスFAT ファイルシステムをサポートするパッケージです。もう一つはe2ツール、EXT2、EXT3 ファイルシステムを実装します。どちらもdebian Linuxや他の多くのオペレーティングシステムで利用可能です。
  2. これらのツールはパーティションのイメージを処理できない可能性があります。これは問題ではありません。テンプレートをパーティションテーブルとパーティションコンテンツの別々のファイルに分割し(おそらくあらかじめ)、ファイルシステムイメージにファイルを追加してから、フラグメントをcat正しい順序で集めて最終ディスクイメージを作成するだけです。

答え2

使用してお勧めしますguestfish、これは以下の一部ですlibguestfs、仮想マシンのディスクイメージにアクセスして変更するためのライブラリ

OpenStackドキュメントに、権限が必要ないツールの有用な説明が含まれていることがわかりました。画像の修正 — 仮想マシンの画像ガイドドキュメント

多くの非連続的な変更を行う場合は、guestfishデーモンを実行し、リモートコントロールモードを使用すると利点が得られます。これにより、開始時間を(些細ではありませんが)節約できます。

バラよりguestfishソケットによるリモートコントロールマニュアルの内容guestfish

関連情報