我有一个名为 的 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
。
第一个被透明地处理,就像您使用了第二个一样。