一位同事请我帮忙使用 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
. 来执行)