我想通过循环挂载 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 解决了问题。