挂载 iso -o 循环选择循环设备

挂载 iso -o 循环选择循环设备

我有一个 bash 脚本,可以在其中挂载 ISO 来循环设备:

mount -o loop my.iso /tmp/foo

碰巧同时在我的操作系统 (Linux Mint 19) 中我安装了一个 ISO 映像,使用 GUI 选项执行此操作。

所以我得到了错误

mount: /tmp/foo: /dev/loop0 你可以使用它。

(...loop0 挂载点正忙...)

问题:

我可以选择挂载 ISO 的循环吗,例如:

mount - loop3 my.iso /tmp/foo

所以我不需要卸载以前的ISO?

答案1

该错误并不是因为您已经安装了另一个 ISO 设备;而是因为您已经安装了另一个 ISO 设备。将mount -o loop始终获取第一个未使用的循环设备或创建一个新的。

这并不是因为相同的 ISO 映像/循环设备已安装在另一个目录上 - 相同的设备可以同时安装在不同的安装点上。

您可能想要做的就是在同一个安装点上安装相同的 ISO 两次。该mount(8)实用程序将尝试通过检查备份文件是否已附加到循环设备并重用该设备来防止出现这种情况,而不是将同一文件附加到多个循环设备。

但如果你真的如果想要这样做,您可以通过手动连接循环设备来绕过检查losetup

# mount -o ro a.iso dir/

# mount -o ro a.iso dir/
mount: /tmp/a.iso is already mounted

# losetup --show -f a.iso
/dev/loop1
# mount -o ro /dev/loop1 dir/
# 

两者结合起来:

# dev=$(losetup --show -f a.iso) && { mount -o ro "$dev" dir/ || losetup -d "$dev"; }

然后,您应该显式使用-d选项umount(8),或者随后手动分离循环,使用losetup -d

# umount -d dir/

对于只读文件系统(例如 ISO)来说,这应该是非常安全的。切勿将其与以读写模式挂载的文件系统一起使用。

相关内容