少し間接的ですが、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
losetup
画像kpartx -av
結果として得られるループバックデバイス/dev/mapper/...
物理ディスクと同じように、作成されたパーティションを使用します。
実行可能な automount-map を使用して、これらすべてのタスクを実行できます。
A はchdir
上記のすべてのアクションをトリガーできます。または、セットアップ/削除スクリプトに sudo を使用します。または...
答え4
guestmount
libguestfs には、仮想マシンを起動してユーザー空間に任意のパーティションをマウントできるようにするコマンドが追加されました。