如何在启动时挂载 VirtualBox 共享文件夹?

ton*_*nga 99 virtualbox mount

我在 Virtualbox 中安装了 Ubuntu。我想在登录 Ubuntu 时自动在 Ubuntu 中挂载我的 VirtualBox 共享文件夹。我将以下行放在 ~./bashrc 和 ~/.bash_profile 中:

sudo mount -t vboxsf windows_share /media/windows_share
Run Code Online (Sandbox Code Playgroud)

其中 windows_share 是我用 Virtualbox 创建的名称。但是每次我启动我的 Ubuntu 时,它都会要求我输入密码,因为它需要 sudo。无论如何,每次登录时都可以在不输入密码的情况下自动挂载 Windows 共享吗?

Tak*_*kat 123

要在启动 Ubuntu 来宾时始终挂载 Virtual Box“共享文件夹”,我们有两个选择。哪个选项在我们的设置中最有效取决于个人喜好。

1.用fstab挂载

要使用Guest Additionsvboxsf提供的文件系统挂载共享文件夹,我们首先需要确保满足先决条件。然后我们可以在我们的文件中添加以下行:etc/fstab

<name_of_share>   /path/to/mountpoint   vboxsf   <options>  0   0
Run Code Online (Sandbox Code Playgroud)

替换name_of_share/path/to/mountpoint使用您的个人设置(必须首先创建挂载点的目录)。请参阅 mount 的联机帮助页<options>。一种可能性是使用 安装defaults,或者提供特定的安装选项(例如rw, suid, exec, auto, users)。

在某些系统上,vboxsf内核模块fstab在启动时读取时尚未加载。然后将vboxsf内核模块附加到/etc/modules.

某些系统可能需要comment=systemd.automount在其 fstab 条目()中使用选项。

2.用Virtual Box“自动挂载”挂载:

在 Virtual Box 的最新版本中,我们还可以在创建时自动挂载共享文件夹:

在此处输入图片说明

来宾重新启动后,此共享文件夹将挂载/media/<username>/sf_<name_of_share>到所有已成为该组成员的用户都可以访问的来宾目录中vboxsf

  • 此功能要求“virtualbox-guest-utils”服务已启动,并且在 Ubuntu 14.04 上,此服务启动晚于文件系统安装。这是通过 fstab 挂载共享时出现“找不到设备”错误的原因 (13认同)
  • 请记住将您的用户添加到 vboxsf 组。你可以参考 http://askubuntu.com/questions/79565/add-user-to-existing-group (6认同)
  • @kolypto,感谢您回复我。我实际上找到了两个相互竞争的解决方案,其中只有一个对我有用:选项 1)(对我有用),正如您所说,将 `noauto` 放在 fstab 选项中,然后通常在启动脚本中安装(例如.profile),选项2)主要问题是在fstab运行之前没有加载vboxsf,将`vboxsf`附加到文件`/etc/modules`,要求内核在运行fstab之前加载模块. 也许这会帮助别人。 (5认同)
  • @garromark,我唯一的想法是创建一个新贵脚本,这非常简单。另一种选择是放置相同的 fstab 条目,但添加“noauto”,这样您只需手动安装它。 (2认同)

小智 28

  1. 编辑 /etc/rc.local

    sudo -H gedit /etc/rc.local
    
    Run Code Online (Sandbox Code Playgroud)
  2. exit 0打字前:

    mount.vboxsf windows_share /media/windows_share vboxsf
    
    Run Code Online (Sandbox Code Playgroud)
  3. 节省

  4. (可选)创建桌面或主文件夹的快捷方式:

    ln -s /media/windows_share /home/freddy/Desktop
    
    Run Code Online (Sandbox Code Playgroud)

为了启动而不会出现错误,例如按S跳过挂载或按M手动修复,您可能必须删除您在fstab

  • 这是我发现的唯一工作方式,尝试了使用常规挂载命令的 RC.Local,尝试了 FSTAB,尝试了带有脚本的 Crontab。非常感谢!! (4认同)
  • 为我工作。我用这个 `mount -t vboxsf [-o OPTIONS] sharename mountpoint` 编辑了 `/etc/rc.local`。 (4认同)
  • 这对我也有用(与接受的答案相反,不太确定为什么)。非常感谢我!:) (2认同)

Pie*_*erz 8

对于较新的基于systemd的系统,您需要其他方法 - 最简单的方法是在另一个问题的另一个答案中提到的- 基本上是说您需要向条目添加一个特殊comment选项/etc/fstab

src     /my_mount/src_host  vboxsf  auto,rw,comment=systemd.automount 0 0
Run Code Online (Sandbox Code Playgroud)

但是,要使上述内容在某些系统上运行,您需要选中 VirtualBox 的共享文件夹->添加对话框中的“自动挂载”框,这意味着您最终可能会得到目录的一些重复挂载。

为了更干净的挂载——没有重复的目录,也不需要“自动挂载”——你需要使用 systemd 的mountautomount指令。为此,在/usr/lib/systemd/system/以您想要的挂载点命名的情况下创建两个条目,例如匹配上面的 fstab 挂载点,它们将被命名my_mount-src_host.mount并包含:

[Unit]
Description=VirtualBox shared "src" folder

[Mount]
What=src
Where=/my_mount/src_host 
Type=vboxsf
Options=defaults,noauto,uid=1000,gid=1000
Run Code Online (Sandbox Code Playgroud)

my_mount-src_host.automount

[Unit]
Description=Auto mount shared "src" folder

[Automount]
Where=/my_mount/src_host
DirectoryMode=0775

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

然后他们需要启用:

sudo systemctl enable  my_mount-src_host.automount
sudo systemctl enable  my_mount-src_host.mount
Run Code Online (Sandbox Code Playgroud)

它们现在将在启动时挂载。如果您想立即安装它们(前提是已创建共享文件夹),您可以这样做:

sudo systemctl start  my_mount-src_host.mount
Run Code Online (Sandbox Code Playgroud)

请注意,如果您的目录中包含奇数名称或破折号 (-),则使用它systemd-escape来查找适当的转义名称。


小智 6

经过一个疲惫的早晨,在 Virtualbox 5.0.20 中运行的 Ubutntu 16.04 中尝试了上述所有操作失败(特别失望的是 rc.local 解决方案不起作用),它通过以下方式工作:

  1. 从 Virtualbox GUI 的共享文件夹菜单注册所需的目录,但不自动挂载它或从 Virtualbox 永久挂载。否则主机目录是由 root 安装的,即使来自 admin 组的非 root 用户也很难访问。

  2. 在 fstab 中添加简单条目:

    [VirtuablBoxNameOfMount] /media/[guestOSuser]/[mountSubdir]    vboxsf   rw, noauto   0     1
    
    Run Code Online (Sandbox Code Playgroud)

    注意noauto选项 - 否则引导加载程序将失败,如前所述。

  3. /etc/sudoers在来宾操作系统中使用 visudo 命令将相应的行添加到以下内容中:

    ALL ALL = NOPASSWD: /bin/mount /media/[guestOSuser]/[mountSubdir]/
    
    Run Code Online (Sandbox Code Playgroud)

这将允许非 root 进程专门挂载它(因为 fstab 无法使用 'user' 选项挂载......)

  1. 在用户的 .profile 中添加相应的行:

    sudo mount /media/[guestOSuser]/[mountSubdir]/
    
    Run Code Online (Sandbox Code Playgroud)

现在,选定的主机子目录已在登录时为选定的用户准备就绪!