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

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

sudo mount -t vboxsf windows_share /media/windows_share 

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

要在启动Ubuntu guest虚拟机时始终安装Virtual Box“共享文件夹”,我们有两个选项。 个人偏好取决于我们的设置中哪个选项效果最佳。

1.用fstab安装

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

  /path/to/mountpoint vboxsf  0 0 

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

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

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

2.使用Virtual Box“自动安装”安装:

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

在此处输入图像描述

重新启动guest /media//sf_后,此共享文件夹将挂载到guest /media//sf_目录/media//sf_ ,这些用户可以访问已成为vboxsf组成员的所有用户。

  1. 编辑/etc/rc.local

     sudo -H gedit /etc/rc.local 
  2. exit 0之前输入:

     mount.vboxsf windows_share /media/windows_share vboxsf 
  3. 保存

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

     ln -s /media/windows_share /home/freddy/Desktop 

为了启动没有错误,如按S跳过安装或按M手动修复您可能必须删除您在fstab的条目

经过一个疲惫的早晨,尝试在Uboxntu 16.04中运行Virtualbox 5.0.20的所有内容都失败了(特别感到失望的是rc.local解决方案无效),它的工作原理是:

  1. 从Virtualbox GUI的“共享文件夹”菜单注册所需的目录,但不自动挂载或从Virtualbox永久挂载。 否则,主机目录是以root身份挂载的,即使是来自管理员组的非root用户也很难访问。

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

     [VirtuablBoxNameOfMount] /media/[guestOSuser]/[mountSubdir] vboxsf rw, noauto 0 1 

    注意noauto选项 – 否则引导加载程序会失败,如上所述。

  3. 通过在来宾操作系统中使用命令visudo,将相应的行添加到/etc/sudoers ,如下所示:

     ALL ALL = NOPASSWD: /bin/mount /media/[guestOSuser]/[mountSubdir]/ 

这将允许非root进程专门安装它(因为fstab无法使用’user’选项安装…)

  1. 将相应的行添加到用户的.profile:

     sudo mount /media/[guestOSuser]/[mountSubdir]/ 

现在,所选主机子目录在登录时已为所选用户准备好安装!

我尝试了rc.local解决方案,但无法让它工作。
但是我发现问题似乎与您运行命令的文件夹有关(不知道为什么)。 所以我在mount命令之前添加了一行来将目录更改为我的主文件夹,现在它可以工作了。

所以,我的Windows共享名为Dropbox ,我的挂载点是/home/jamie/Dropbox ,我的用户名是jamie ,这是我放在rc.local中的:

 cd /home/jamie mount.vboxsf /home/jamie/Dropbox Dropbox vboxsf exit 0 

我在上面提出了一个非常类似的模式,但这些脚本创建了所需的,并使用以下脚本装载或卸载共享文件夹:

 #!/bin/bash # # Mount automatically even shared folder on startup and unmount it at shutdown. # # VirtualBox (c) 2015 by Oracle Systems Inc. # #### # Check user privileges. if [[ $EUID -ne 0 ]]; then echo -e "This script must run at ROOT user!" \ "\nPlease, use 'sudo', 'visudo' or any other to run it." exit 1 fi # Check paramas from caller. if [[ $# -eq 0 ]]; then echo -e "Auto-Mount selected shared folder of VirtualBox machine." \ "\nUsage:" \ "\n VBoxShared   <...>" exit 2 fi declare EVENT= # This set the ACTION: -m OR -u declare -a DRIVES=() # Processing each param: for arg in "$@"; do case "$arg" in "-m"|"--mount") if [[ -z ${EVENT} ]]; then EVENT=-m else exit 318 # parameters at conflict! fi ;; "-u"|"--umount") if [[ -z ${EVENT} ]]; then EVENT=-u else exit 318 # parameters at conflict! fi ;; *) DRIVES=("${DRIVES[@]}" "${arg}") ;; esac done unset arg [[ -z ${EVENT} ]] && exit 1 # ERROR: No se ha establecido la acción a realizar. [[ "${#DRIVES[@]}" -gt 0 ]] || exit 1 # ERROR: No se han indicado las unidades a manejar. # Process each shared folder stored on '${DRIVES}' array for drive in "${DRIVES[@]}"; do DEST="/media/sf_${drive}" case "${EVENT}" in "-m") [[ -d ${DEST} ]] || (mkdir ${DEST} && chown root:vboxsf ${DEST} && chmod 770 ${DEST}) mount -t vboxsf ${drive} ${DEST} ;; "-u") if [[ `df --output=target | grep "${DEST}"` > /dev/null ]]; then umount -f ${DEST} rm -rf "${DEST}" fi ;; esac unset DEST done unset drive unset EVENT unset DRIVES exit 0 

将其另存为/opt/.scripts/VBoxShared.sh

确保可以运行此function。 在shell类型上:

 sudo chmod a+x /opt/.scripts/VBoxShared.sh 

现在,我们在rc.local上添加一行运行此脚本:

 sudo nano /etc/rc.local 

然后我们在最后一行( exit 0 )之前添加这些行:

 . /opt/.scripts/VBoxShared.sh --mount  [  ...] 

保存( Ctrl O )并关闭它( Ctrl X

此时,我们会在启动时自动挂载上列出的所有共享文件夹。

要卸载它,我们只需要输入:

sudo nano /etc/rc6.d/K99-vboxsf-umount.sh

 #!/bin/bash . /opt/.scripts/VBoxShared --umount  [  ...] exit 0 

保存( Ctrl O )并关闭( Ctrl X

 sudo chmod a+x /etc/rc6.d/K99-vboxsf-auto.sh 

就这样!

这是一个有效的解决方案。

作为root(IE sudo su)转到主文件夹(cd~)并创建一个cron文件:
vi cronjobs
添加以下内容
@reboot sleep 15; mount -t vboxsf app / mnt / app

保存存档

注意:将app替换为您要共享的共享文件夹名称和/ mnt / app。 在这种情况下,我首先在mount(mkdir app)下创建了文件夹app。

以root身份启用cron(对于上面的文件名)
crontab cronjobs

确保cron处于活动状态:
crontab -l

重启,它将被挂载。 15秒睡眠允许足够的时间让一切准备就绪。

我最近在更新到Ubuntu LTS-18之后遇到了这个线程(并且没有对VirtualBox进行任何更改,并且在重新安装扩展和blah-de-blah之后),自动挂载停止工作。 sf_xxx目录存在于/media/但实际上并未安装它们。

尝试将它们安装在/etc/fstab (如VirtualBox自己的文档所示)不起作用:启动失败进入“紧急模式”,即使我修改了/etc/modules文件。

最终工作的是什么 – 虽然我认为它是一个臭名昭着的黑客 – 是上面描述的crontab技巧。

直到今天,我还不知道“什么破了”。

我遇到了一个问题,我可以看到共享文件夹,但其中没有文件。 所以我做了类似于上面显示的hack:

我确保我的用户位于正确的组中,并且fstab中有一个用于挂载共享的条目,并且权限设置正确,并且在VirtualBox设置中启用了自动挂载,但仍然没有要看的文件。
所以我在Ubuntu 18.04 GUI中打开了启动应用程序应用程序并创建了一个在启动时只运行“sudo mount -a”的任务。 无论出于何种原因,在启动时自动解析fstab时,共享文件夹未正确安装,因此重新安装所有内容似乎可以解决问题。 现在我可以看到共享中的文件。