Answers:
为了在启动Ubuntu客户机时始终挂载Virtual Box“共享文件夹”,我们有两个选择。根据个人喜好,哪种选择最适合我们的环境。
要使用Guest Additionsvboxsf随附的文件系统挂载共享文件夹,我们首先需要确保满足先决条件。然后,我们可以将以下行放入文件中:etc/fstab
<name_of_share>   /path/to/mountpoint   vboxsf   <options>  0   0
替换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。
noautofstab选项,然后通常在启动脚本中安装(例如)。配置文件),选项2)的主要问题是vboxsf在fstab运行之前未加载,请追加vboxsf到文件中/etc/modules,要求内核在fstab运行之前加载模块。也许这会帮助别人。
                    编辑 /etc/rc.local
sudo -H gedit /etc/rc.local
exit 0键入前:
mount.vboxsf windows_share /media/windows_share vboxsf
救
(可选)创建桌面或主文件夹的快捷方式:
ln -s /media/windows_share /home/freddy/Desktop
为了启动时没有出现错误,例如按S跳过安装或按M进行手动修复,您可能必须删除其中的条目。fstab
/etc/rc.local对此进行了编辑mount -t vboxsf [-o OPTIONS] sharename mountpoint。
                    sudo mount -t vboxsf -o uid=$UID,gid=$(id -g) windows_share ~/shared/mount_point,最终在/etc/rc.local中放置以下内容以使其起作用:mount -t vboxsf windows_share /home/dev/shared/mount_pointdev是我的用户,FYI / etc / fstab也起作用!
                    mount命令rc.local脚本,包括我的用户ID( )。2000 mount.vboxsf -o rw,uid=1000 /home/mwittie/Dropbox Dropbox vboxsfPS如果有人正在寻找关于如何打开一个教程rc.local在Ubuntu 17.04 这个一直为我工作。PPS我不需要在中包含vboxsf /etc/modules。
                    经过一个筋疲力尽的早晨,尝试在Virtualbox 5.0.20中运行的Ubutntu 16.04中的所有上述操作均未成功(尤其令rc.local解决方案无法正常工作的情况),它的工作方式是:
从Virtualbox GUI的“共享文件夹”菜单注册所需目录,但不能自动挂载该目录,也不能从Virtualbox永久挂载。否则,主机目录是由root挂载的,非root用户甚至从admin组都很难访问。
在fstab中添加简单条目:
[VirtuablBoxNameOfMount] /media/[guestOSuser]/[mountSubdir]    vboxsf   rw, noauto   0     1
注意noauto选项-否则引导加载程序将失败。
/etc/sudoers在来宾操作系统中使用命令visudo 将相应的行添加如下:
ALL ALL = NOPASSWD: /bin/mount /media/[guestOSuser]/[mountSubdir]/
这将允许非root用户进程专门挂载此文件(因为fstab无法使用'user'选项挂载...)
在用户的.profile中添加相应的行:
sudo mount /media/[guestOSuser]/[mountSubdir]/
现在,选定的用户子目录在登录时已为选定的用户准备就绪!
noauto?
                    对于较新的基于systemd的系统,您需要替代方法-最简单的方法是在另一个问题的另一个答案中提到的方法- 基本上说您需要comment在/etc/fstab条目中添加特殊选项:
src     /my_mount/src_host  vboxsf  auto,rw,comment=systemd.automount 0 0
但是,要使上述方法在某些系统上起作用,您需要在VirtualBox的“共享文件夹”->“添加”对话框中选中“自动安装”框,这意味着您可能会在目录中多次重复安装。
对于更干净的安装-没有重复的目录,也不需要“自动安装”-您需要使用systemd的mount和automount指令。为此,/usr/lib/systemd/system/在所需的挂载点之后在named中创建两个条目,例如,与上面的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
和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
然后,他们需要启用:
sudo systemctl enable  my_mount-src_host.automount
sudo systemctl enable  my_mount-src_host.mount
它们现在将在启动时安装。如果要立即安装它们(前提是已创建共享文件夹),可以这样做:
sudo systemctl start  my_mount-src_host.mount
请注意,如果目录中包含奇数名称或破折号(-),请使用systemd-escape该名称查找适当的转义名称。
comment=systemd.automount没有选中自动安装VBox的第一个带选项的解决方案也可以工作。在寻找解决方案之前,我奋斗了几天,谢谢!
                    我尝试了rc.local解决方案,但无法正常工作。
但是我发现问题似乎与您从中运行命令的文件夹有关(不知道为什么)。所以我在挂载命令之前添加了一行更改目录到我的主文件夹,现在它可以工作了。
因此,我的Windows共享名为Dropbox,我的挂载点为/home/jamie/Dropbox,我的用户名为jamie,这是我在rc.local中输入的内容:
cd /home/jamie
mount.vboxsf /home/jamie/Dropbox Dropbox vboxsf
exit 0
              sleep 2安装设备之前,我必须添加一个。
                    我在上面建议的模式下执行了非常类似的操作,但是这些脚本创建了所需的脚本,并使用以下脚本安装或卸载共享文件夹:
#!/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 <drive_one> <drive_two> <...>"
    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。
确保可以运行该程序。在外壳上输入:
sudo chmod a+x /opt/.scripts/VBoxShared.sh
现在,我们添加一行在以下位置运行此脚本rc.local:
sudo nano /etc/rc.local
并将这些行添加到最后一行(exit 0)之前:
. /opt/.scripts/VBoxShared.sh --mount <SharedFolder1> [<SharedFolder2> <SharedFolder3> ...]
保存(CtrlO)并关闭(CtrlX)
此时,我们将<SharedFolder>在启动时自动挂载列出的所有共享文件夹。
要卸载它,我们只需要输入:
sudo nano /etc/rc6.d/K99-vboxsf-umount.sh
#!/bin/bash
. /opt/.scripts/VBoxShared --umount <SharedFolder1> [<SharedFolder2> <SharedFolder3> ...]
exit 0
保存(CtrlO),然后关闭(CtrlX)
sudo chmod a+x /etc/rc6.d/K99-vboxsf-auto.sh
就这样!
这是一个可行的解决方案。
以root用户身份(IE sudo su)转到主文件夹(
cd〜)并创建一个cron文件:vi cronjobs 
添加以下
@reboot sleep 15; 挂载-t vboxsf应用程序/ mnt / app
保存存档
注意:将应用替换为共享文件夹名称,并将/ mnt / app替换为您要挂载的位置。在这种情况下,我首先在mount下创建了文件夹应用程序(mkdir app)。
要将cron作为root启用(对于上述文件名),
crontab cronjobs
确保cron处于活动状态:
crontab -l
重新启动,它将被安装。15秒的睡眠时间足以让一切准备就绪。
我在这里尝试了所有解决方案,但都没有成功。
起作用的是安装主管并运行python脚本。
apt-get install supervisor
import subprocess
import os
import time
shared_folder = '/home/ubuntu/shared'
file_count = len(os.listdir(shared_folder))
mnt_command = 'mount -t vboxsf -o rw,uid=1000,gid=1000 shared-folder ' + shared_folder
if file_count == 0:
        # mount
        subprocess.Popen(mnt_command, shell=True)
time.sleep(3600)
nano /etc/supervisor/conf.d/sharedfolders.conf
[program:shared_folders]
command=python shared_folders.py
directory=/home/ubuntu
process_name=%(program_name)s_%(process_num)s
numprocs=1
numprocs_start=0
autostart=true
autorestart=true
startsecs=1
startretries=3
exitcodes=0,2
stopsignal=TERM
stopwaitsecs=10
;user=pavelp
redirect_stderr=true
stdout_logfile=/var/log/supervisor/qlistener-stdout.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=10
stdout_capture_maxbytes=0
stdout_events_enabled=false
stderr_logfile=/var/log/supervisor/qlistener-stderr.log
stderr_logfile_maxbytes=50MB
stderr_logfile_backups=10
stderr_capture_maxbytes=0
stderr_events_enabled=false
environment=APPLICATION_ENV=development
serverurl=AUTO
sudo supervisorctl
reread
add shared_folders
(就我而言,我的主机操作系统是Mac OS X,而来宾操作系统是ubuntu)
以上解决方案都没有,这里和这里提到的解决方案都对我有用。他们所有人都有问题。
这是我最终为解决此问题所做的事情:
1-我在VirtualBox UI中创建了一个共享文件夹,指向VMShares我的Mac OS中命名的文件夹,并将其命名wd 
2-然后我安装了Ubuntu Guest Addition工具(需要重新启动)
3-然后我在来宾操作系统中创建了一个文件夹作为挂载点(在我的情况下,名称为/home/fashid/host)
4-然后我跑了:
sudo VBoxControl sharedfolder list
这是要确保该共享对来宾OS可用的命令,同时您仍需要将其安装在来宾OS中以使其实际可用。
它将显示如下内容:
Shared Folder mappings (1):
01 - VMShares
这是把戏!它显示了您需要在下面的命令中放入的实际名称,以实际安装它并使它在来宾操作系统中可用:
sudo mount -t vboxsf VMShares /home/farshid/myshares
您知道这一点了吗?我以后没有在任何地方使用wd。在第3步中,我需要提取实际的(主机)文件夹名称,而不是我在GUI对话框中分配的任意名称。
通过上述步骤,我的问题得以解决。