我在 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“共享文件夹”,我们有两个选择。哪个选项在我们的设置中最有效取决于个人喜好。
要使用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 条目(源)中使用选项。
在 Virtual Box 的最新版本中,我们还可以在创建时自动挂载共享文件夹:

来宾重新启动后,此共享文件夹将挂载/media/<username>/sf_<name_of_share>到所有已成为该组成员的用户都可以访问的来宾目录中vboxsf。
小智 28
编辑 /etc/rc.local
sudo -H gedit /etc/rc.local
Run Code Online (Sandbox Code Playgroud)exit 0打字前:
mount.vboxsf windows_share /media/windows_share vboxsf
Run Code Online (Sandbox Code Playgroud)节省
(可选)创建桌面或主文件夹的快捷方式:
ln -s /media/windows_share /home/freddy/Desktop
Run Code Online (Sandbox Code Playgroud)为了启动而不会出现错误,例如按S跳过挂载或按M手动修复,您可能必须删除您在fstab
对于较新的基于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 的mount和automount指令。为此,在/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 解决方案不起作用),它通过以下方式工作:
从 Virtualbox GUI 的共享文件夹菜单注册所需的目录,但不自动挂载它或从 Virtualbox 永久挂载。否则主机目录是由 root 安装的,即使来自 admin 组的非 root 用户也很难访问。
在 fstab 中添加简单条目:
[VirtuablBoxNameOfMount] /media/[guestOSuser]/[mountSubdir] vboxsf rw, noauto 0 1
Run Code Online (Sandbox Code Playgroud)
注意noauto选项 - 否则引导加载程序将失败,如前所述。
/etc/sudoers在来宾操作系统中使用 visudo 命令将相应的行添加到以下内容中:
ALL ALL = NOPASSWD: /bin/mount /media/[guestOSuser]/[mountSubdir]/
Run Code Online (Sandbox Code Playgroud)这将允许非 root 进程专门挂载它(因为 fstab 无法使用 'user' 选项挂载......)
在用户的 .profile 中添加相应的行:
sudo mount /media/[guestOSuser]/[mountSubdir]/
Run Code Online (Sandbox Code Playgroud)现在,选定的主机子目录已在登录时为选定的用户准备就绪!
| 归档时间: |
|
| 查看次数: |
235562 次 |
| 最近记录: |