如何挂载没有根目录的映像文件?


8

我有一个包含ext4文件系统的文件,并希望每次不使用sudo挂载它(脚本应以用户权限运行)。我要挂载的文件和我也想挂载的文件夹都在我的主目录中,该目录已加密,因此无法将文件位置放入/etc/fstab

我尝试过,fusermount但总是收到错误消息,例如“ fusermount:安装点之后的额外参数”。



@muru谢谢,很不幸,这是关于ext2的。即使可以进行写访问,但因为ext2没有日志,所以我不会有日志。我需要日记。
UTF-8

1
然后,您将不得不以某种方式扎根。
大师

unix.stackexchange.com/a/32157/10805 什么是fusermount你尝试过的命令?
EarthmeL19年

Answers:


2

您可以在/ etc / fstab中找到它。我的主目录已加密,但是:

$ dd if=/dev/zero of=ext4_file bs=1024 count=1024
1024+0 records in
1024+0 records out
1048576 bytes (1,0 MB) copied, 0,0341311 s, 30,7 MB/s
$ /sbin/mkfs.ext4 -F ext4_file
mke2fs 1.42.12 (29-Aug-2014)

Filesystem too small for a journal
Discarding device blocks: done                            
Creating filesystem with 1024 1k blocks and 128 inodes

Allocating group tables: done                            
Writing inode tables: done                            
Writing superblocks and filesystem accounting information: done

$ grep ext4_directory /etc/fstab
/home/alessandro/ext4_file /home/alessandro/ext4_directory ext4 noauto,user 0 0
$ mount ext4_directory
$ mount | grep ext4_directory
/home/alessandro/ext4_file on /home/alessandro/ext4_directory type ext4 (rw,nosuid,nodev,noexec,relatime,user=alessandro)

如果他说是因为它是加密的,则不能将其放在/ etc / fstab中,这是正确的。那并没有完全安装它。
大卫

嗯,没有什么可以阻止我将其写入/etc/fstab,因此我在发布此任务之前尝试了它。我知道它可能不会挂载它,但假设它可能会失败而不会产生后果,并且它位于其中的事实/etc/fstab使我无需root也可以挂载它。不幸的是,这导致我的系统无法启动,因此我必须删除该行才能再次使用我的计算机。
UTF-

David,我写的所有内容都是在PC上执行的,该PC上的/ home安装在加密分区上。它确实起作用。而且我不明白为什么不能。
亚历山德罗(Alessandro)2015年

UTF-8,要使其正常工作,必须在文件之前挂载/ home。或者您将文件设置为不自动挂载,就像我将文件设置为我给您的指示那样,它们是真实情况。
亚历山德罗(Alessandro)2015年

谁把ext4_file文件放在fstab?? 你没跳什么吗
Mohammad Kholghi

2

您可以使用udiskctl

$ udisksctl loop-setup --file your_file.iso
Mapped file your_file.iso as /dev/loop6.

现在,您的文件已映射到block device,您可以将其挂载为:

$ udisksctl mount -b /dev/loop6
Mounted /dev/loop6 at /media/user/your_file.

完成后,unmount正在使用:

$ udisksctl unmount -b /dev/loop6
Unmounted /dev/loop6.

最后,通过以下方式将其删除:

$ udisksctl loop-delete -b /dev/loop6

玩得开心!


我尝试挂载一些(kali-linux-2019.1a-amd64.iso)周围的Linux映像,但是我总是得到:(Object /org/freedesktop/UDisks2/block_devices/loop5 is not a mountable filesystem.当然,随着设备编号的变化。)即使我尝试以只读方式挂载它,也会发生这种情况。通过只读方式将其挂载sudo mount就可以了。
UTF-8

udisksctl loop-setup --file your_file.iso再次使用,因此它为您提供了一个新的循环设备,并安装了该设备(例如/dev/loop8)。在我的操作系统中,它无法使用loop6,也不知道为什么。@ UTF-8
Mohammad Kholghi

2

GNOME磁盘映像安装程序

udisksctlguestmountlibguestfs-tools)旁边,您可以:

gnome-disk-image-mounter ~/ISOs/file.iso

从手册

接受常规文件和GVfs URI(例如smb://filer/media/file.iso)”)

默认情况下,磁盘映像以只读方式附加,请使用选项--writable进行更改。


1

guestmount libguestfs的诡计

sudo apt-get install libguestfs-tools

# Workarounds for Ubuntu 18.04 bugs.
# /server/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。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.