web-dev-qa-db-ja.com

FUSE経由でext4パーティションイメージをマウントすることは可能ですか?

Ext4パーティションイメージをユーザースペースにマウントしようとしています。 (Sudoなし、/ dev/loop0または/ etc/fstabなどへの特別なconfig/permissions変更なし)。だから、ヒューズが助けになってくれることを期待しています。

ただし、Fuseシステムを介してマウントされた各ファイルシステムには特別なFuseドライバーが必要であるようで、Linux用のLinux読み取り/書き込みext4Fuseドライバーを見つけることができませんでした。

Fuseを介してext4イメージをマウントする方法はありますか(書き込み権限付き)?

4
Catskul

fuseext2 どうやら ext4をマウントします パーティションの読み取り/書き込み。

警告:ext4サポートはドキュメントで宣伝されておらず、マウントしようとすると警告が表示されます:

This is experimental code, opening rw a real file system could be
dangerous for your data. Please add "-o ro" if you want to open the file
system image in read-only mode, or "-o rw+" if you accept the risk to test
this module
3
Catskul

guestmount libguestfsトリック

Sudo apt-get install libguestfs-tools

# Workarounds for Ubuntu 18.04 bugs.
# https://serverfault.com/questions/246835/convert-directory-to-qemu-kvm-virtual-disk-image/916697#916697
Sudo rm -rf /var/cache/.guestfs-*
echo dash | Sudo tee /usr/lib/x86_64-linux-gnu/guestfs/supermin.d/zz-dash-packages
Sudo chmod +r /boot/vmlinuz-*

# Create a test image.
mkdir sysroot
dd if=/dev/urandom of=sysroot/myfile bs=1024 count=1024
virt-make-fs --format=raw --type=ext2 sysroot sysroot.ext2

# Mount it, have fun, unmount!
mkdir -p mnt
# /dev/sda becuase we have a raw filesystem.
guestmount -a sysroot.ext2.qcow2 -m /dev/sda mnt
cmp sysroot/myfile mnt/myfile
guestunmount mnt

依存している:

  • ファイルシステムのユーザーランド実装
  • ヒューズ

ドキュメント: http://libguestfs.org/guestmount.1.html

Ubuntu 18.04、libguestfs-tools 1:1.36.13-1ubuntu3でテスト済み。

Fuseの目的はファイルシステムコードをユーザーランド内で実行することなので、ファイルシステムタイプごとに特定のFuseドライバーが必要です。したがって、kernel-land(ext2、ext3、ext4、xfs ...)を実行している既存のカーネルドライバーコードは、Fuseでは「そのまま」使用できません。

開発者が対応するカーネルドライバーのコードの一部を再利用してユーザーランドのFuseドライバーを実装することを妨げるものはありません。しかしとにかく、あなたは常にファイルシステムタイプごとにFuseの新しいドライバーを作成するためにを持っています。カーネルCコードとユーザーランドCコードはまったく異なる(カーネルに標準libcがない、ドライバーのエントリポイントに同じ署名がないなど。 ..)

1

たぶん this のようなものです。 Googleでの最初の検索結果。

0
rchhe