mount 和 mount -o loop 有什么区别

Yve*_*ves 38 mount loop-device

我有一个名为 .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

所以我看不出之间的差异mountmount -o loop

Ste*_*itt 55

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

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

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

  • 不是 * 很久以前,mount 中也没有“-o loop”选项,您必须使用 Lostup 命令手动创建循环设备。 (2认同)
  • @rackandboneman 我进一步挖掘了一点,结果发现在 `util-linux` 2.4 和 2.5j 之间的某个时间添加了对 `-o loop` 的支持;Debian 1.1 [有后者](http://archive.debian.org/debian/dists/Debian-1.1/main/binary-i386/base/) 并于 1996 年 6 月发布。因此此选项已在发行版中可用二十多年来。 (2认同)

sch*_*eik 11

loop设备主要由losteup命令控制。Solosetup -a为您提供有关使用的循环设备和附加文件的概述。该mount命令只能挂载块设备。循环设备可以从文件(字符设备)创建虚拟块设备。

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

mount disk_image.raw /mntpoint/ -o loop,offset=${OFFSET_of_PARTITION}
Run Code Online (Sandbox Code Playgroud)

在这句法loop设备没有指定是,它是假定该系统选择第一个免费的(/dev/loop0/dev/loop1等)在mount命令的其他新功能是,你不需要指定的安装块设备的文件系统类型(在你的情况-t iso9660)如果安装了文件系统支持。


Emm*_*osa 7

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

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