Я пытаюсь смонтировать образ раздела ext4 в пользовательском пространстве. (нет sudo, нет специальной модификации конфигурации / разрешений для / dev / loop0 или / etc / fstab и т. д.). Так что я надеюсь, что FUSE придет на помощь.
Однако кажется, что каждая файловая система, смонтированная через систему FUSE, должна иметь специальный драйвер FUSE, и мне не удалось найти драйвер Linux для чтения-записи ext4 FUSE для Linux.
Есть ли способ смонтировать образы ext4 через FUSE (с разрешением на запись)?
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
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.
Вам нужен определенный драйвер предохранителя для каждого типа файловой системы, так как точка предохранителя заключается в запуске кода файловой системы. в землепользовании. Таким образом, любой ранее существовавший код драйвера ядра, работающий в ядре (ext2, ext3, ext4, xfs ...) не могут использоваться предохранителем "как есть".
Ничто не мешает разработчикам повторно использовать часть кода из соответствующего драйвера ядра для реализации драйвера плавкого предохранителя пользовательского уровня. Но в любом случае у тебя всегда есть для создания нового драйвера fuse для каждого типа файловой системы. Код ядра C и код пользователя C достаточно разный (в ядре нет стандартной библиотеки libc, точки входа драйвера не имеют одинаковой подписи и т. д.)