为什么 mount -o 循环返回“没有这样的设备”?

为什么 mount -o 循环返回“没有这样的设备”?

我想通过循环挂载 iso9600 (CD) 映像的内容来访问其内容。为此,我执行

mount -r -t iso9600 -o loop file.iso mountpoint/

并期望(现有)目录中的内容mountpoint。但是,我明白了mount: mounting /dev/loop0 on mountpoint/ failed: No such device。造成这种情况的可能原因是什么?

答案1

我能想到的原因有很多。可能更常见的情况是循环设备出现问题,例如,已经使用了太多循环设备。您可以通过手动设置循环设备来检查是否存在这种情况:

# losetup --find --show file.iso
/dev/loop0
# mount -o ro /dev/loop0 mountpoint/
...
# losetup --detach /dev/loop0

如果第一个命令不打印合法的循环设备 ( /dev/loop*) 但给出错误消息,则循环设备本身的基础设施在某种程度上就是问题所在。查看是否losetup -a显示任何设备。可能已达到最大数量。在这种情况下,您可以尝试通过模块的max_loop选项(并重新启动)或手动创建更多mknod创建更多内容,如中所述这个答案

但是,系统调用的联机帮助页中简要解释了另一个选项mount

ENODEV     filesystemtype not configured in the kernel.

您的内核可能不支持所需的文件系统。在上面使用 CD 映像的示例中,这将是iso9660.尝试通过加载相应的模块

# modprobe iso9660

并重试。如果你得到了,modprobe: module iso9660 not found那么你有点运气不好,因为你的内核根本不支持该文件系统,并且没有简单的方法来启用它。您可以验证 中列出的支持的文件系统/proc/filesystems。要使其工作,您必须重新编译内核或至少重新编译相应的模块(当然要匹配确切的内核版本)。

PS:该模块在较新的内核中命名isofs,但至少对于modprobe和 朋友来说,存在一个别名iso9660

答案2

我从可启动 USB 驱动器启动 Live 版本的 Linux Mint 时收到此错误消息。事实证明,使用的 ISO 已损坏 - 重新下载 ISO 解决了问题。

相关内容