fuse を使用して、完全なディスク イメージ (つまり、パーティション テーブルを含むイメージ) 内のパーティションをマウントするにはどうすればよいですか?

fuse を使用して、完全なディスク イメージ (つまり、パーティション テーブルを含むイメージ) 内のパーティションをマウントするにはどうすればよいですか?

少し間接的ですが、mountまたはlosetupの「オフセット」パラメータを使用して、ディスク イメージを含むパーティションをマウントすることが可能です。

同じことをユーザー空間で実行するために、Fuseを使用できるようにしたいと考えています。

使用事例

私のユースケースは、ビルド ジョブにルート権限が許可されておらず、サーバーが特定のビルド ジョブに対してカスタム設定を必要としない自動ビルド サーバー上でディスク イメージを構築することです。

答え1

fuse で実行することも可能ですが、カスタム ツールを使用するとよりきれいになるでしょう。

解決

apt-get 対応ツールを使用すると、次の kludge が可能になります。

mkdir mnt
xmount --in dd --out vdi disk.img mnt

mkdir mnt2
vdfuse -f mnt/disk.vdi 

mkdir mnt3
fuseext2 -o "rw" mnt2/Partition1 mnt3

説明

基本的な考え方は、fuse を使用して、完全なディスク イメージをそのパーティションを指すファイルに分割できるというものです。vdfuse はこれを実行しますが、VirtualBox ツールであり、動作するには VDI または VMDK ファイルが必要です。xmount は、fuse を使用して、生のディスク イメージを VDI ファイルとして表示します。

最後に、パーティション ファイルが vdfuse 経由で利用可能になると、ext2/3/4 ツール fuseext2 経由でマウントできるようになります。

見た目は悪いですが、ユーザー空間で完全に動作します。

アップデート

vdfuse は xmount の助けを借りずに RAW イメージをマウントできるはずですが、RAW オプションを無視するバグがあります。

私はバグを追跡し、次のパッチで修正しました:

https://bugs.launchpad.net/ubuntu/+source/virtualbox-ose/+bug/1019075

答え2

があるマウント標準のマウント プログラムをラッパーにしたユーティリティで、通常のユーザーが一致する /etc/fstab エントリなしでリムーバブル デバイスをマウントできるようにします。

plugdevユーザーがこれを使用できるようにするために必要なのは、ユーザーをグループに追加することだけです。

答え3

  1. losetup画像
  2. kpartx -av結果として得られるループバックデバイス
  3. /dev/mapper/...物理ディスクと同じように、作成されたパーティションを使用します。

実行可能な automount-map を使用して、これらすべてのタスクを実行できます。

A はchdir上記のすべてのアクションをトリガーできます。または、セットアップ/削除スクリプトに sudo を使用します。または...

答え4

guestmountlibguestfs には、仮想マシンを起動してユーザー空間に任意のパーティションをマウントできるようにするコマンドが追加されました。

関連情報