mount 和 mount -o 循环有什么区别

mount 和 mount -o 循环有什么区别

我有一个名为 的 iso 文件ubuntu.iso

我可以mount用命令:mount ubuntu.iso /mnt。安装后,我可以从命令的输出中看到它df -h/dev/loop0 825M 825M 0 100% /mnt

但是,如果我执行命令mount -o loop ubuntu.iso /mnt,我会得到相同的结果。

据我所知,循环设备允许我们将iso文件作为设备来访问,我想这就是我们添加选项的原因-o loop。但即使我只执行 .iso 文件,我也可以访问我的 iso 文件mount ubuntu.iso /mnt

所以我看不出mount和之间的区别mount -o loop

答案1

两个版本都使用循环设备,并产生相同的结果;简短的版本依赖于mount近年来添加的“聪明”。明确mount -o loop告诉mount使用循环设备;它将循环设备本身留给mount,它将寻找可用的设备,设置它并使用它。 (您也可以指定设备例如 mount -o loop=/dev/loop1.)

聪明之处在于,当给定一个要挂载的文件时,mount会在必要时自动使用循环设备来挂载它 -IE,未指定文件系统,或libblkid确定文件系统仅在块设备上受支持(因此需要循环设备将文件转换为块设备)。

mount手册页的循环设备部分有更多详细信息。

答案2

loop设备主要通过命令进行控制losteup。因此,losetup -a您可以概述所使用的循环设备和附加文件。该mount命令可以挂载仅块设备。循环设备可以从文件(字符设备)创建虚拟块设备。

事实上,这些命令之间有很大的区别,因为在较旧的 Linux 系统上,它们mount无法识别文件作为要挂载的正确设备,但在挂载命令完成期间具有很多功能,因此它现在可以自行决定尝试调用 losetup 命令并挂载结果。但是,如果您获得的整个磁盘映像不是 iso 格式,而是例如开头带有 MBR,则 mount 命令无法识别它,您必须自己找到可用分区(例如使用该parted disk_image.raw unit B print命令),然后使用完整选项 mount 命令挂载它作为 :

mount disk_image.raw /mntpoint/ -o loop,offset=${OFFSET_of_PARTITION}

在此语法中,未指定循环设备,并且假定系统选择第一个空闲(/dev/loop0/dev/loop1)mount命令的其他新功能是您无需指定已安装块设备的文件系统类型(在您的情况下-t iso9660)是否安装了文件系统支持。

答案3

mount ubuntu.iso /mnt和之间没有区别mount -o loop ubuntu.iso /mnt

第一个被透明地处理,就像您使用了第二个一样。

相关内容