mount 如何使用 fstab 挂载目录?

mount 如何使用 fstab 挂载目录?

一位同事请我帮忙使用 VirtualBox 在 Arch Linux 客户机中安装共享的 Windows 10 文件夹。该系统是由另一位出去吃午饭的同事设置的。

要共享的文件夹是E:\virtual_shared\。已安装并启用了 Guest Additions。我可以看到 中的共享文件夹,/media/sf_virtual_shared/并且 处有一个挂载点/mnt/share/。Anls -al /mnt/share/显示目标目录为空。用户是该vboxsf组的一部分。主机和客户机上的所有权限似乎都已检查。一切似乎都正常。但是,我仍然无法挂载它!

为了安装它,我使用

# mount -t vboxsf /media/sf_virtual_shared/ /mnt/share/

并得到错误

"/sbin/mount.vboxsf: mounting failed with the error: Protocol error"

我尝试安装到一个新文件夹(~/test/)但收到同样的错误。

最后,设置系统的人吃完午饭回来了。他只是运行

# mount /mnt/share

事实证明,其中fstab包含以下内容:

#
# /etc/fstab :static file system information
#
# <file system> <dir>   <type>  <options>       <dump>  <pass>
# UUID=5392b506-dde2-4a21-9c7e-86a6f9f94907
/dev/sda2               /               ext4             rw,relatime,data=ordered              0 1

# UUID=d6236258-9bea-446a-b38b-0244c048bb1
/dev/sda1               /boot           ext2             rw,relatime     0 2
virtual_shared                 /mnt/share       vboxsf        defaults               0 0

我的问题是,为什么使用绝对路径的调用不会mount挂载目录? 如何mount使用fstab

我知道这mount是在启动时调用的,并按顺序执行fstab。尽管/mnt/share/被列为空,但某物是否已挂载到此处,从而阻止绝对路径调用挂载?为什么我仍然无法将共享文件夹挂载到~/test/

答案1

vboxsf 文件系统才不是将本地目录挂载到其他目录——其源参数既不是相对路径也不是绝对路径;它根本就不是一条路。它是一个仅对 vboxsf 和 VirtualBox 应用程序有意义的字符串。(更具体地说,它是您在 VirtualBox VM 设置中配置的“共享名称”。)

因此 fstab 与此无关。这两个 mount 调用指定的源在任何方面都不相同。

(如果有帮助的话,想象一下 vboxsf 是一个像 cifs/smbfs 一样工作的远程文件系统 - 因为它确实如此。就像 cifs 需要远程“共享名”而不是本地路径一样,vboxsf 也是如此。)

那么在 中可见的共享文件夹呢/media/sf_virtual_shared?嗯,这个路径本身就是一个挂载点。如果您查看findmnt,您可能会看到 vboxsf 实例已安装到该位置 - 大概是 vbox 客户端服务自动为您安装了它。因此它不是您可以使用的源;它是已经使用过的目标。

(如果你真的想要将本地目录挂载到另一个目录上,根本不使用任何文件系统类型 - 使用mount --bind. 来执行)

相关内容