将Mac系统文件共享给VirtualBox中的Ubuntu Server

1. 在Virtualbox的窗口中,设置–存储–控制器(IDE);点击IDE树下的光盘图标;点击【分配光驱】的最右侧光盘图标;选择虚拟光盘VBoxGuestAdditions.iso(通常在Virtualbox的安装目录中);确定。

2. 在Ubuntu Server的终端中,检查VBoxGuestAdditions.iso的路径。

sudo blkid;得到如下信息,知道它在/dev/sr0 中。

/dev/sr0: LABEL="VBOXADDITIONS_4.3.10_93012" TYPE="iso9660"

3. 挂载设备

cd ~
mkdir cdrom 
sudo mount /dev/sr0/  ~/cdrom/ 
cd ~/cdrom/ 
sudo  ./VBoxLinuxAdditions.run

最后看到

Building the VirtualBox Guest Additions kernel modules ...done.

即完成,重启Ubuntu Server,检查是否装好。

lsmod  | grep -io vboxguest
modinfo vboxguest
compgen -g | grep vboxsf

在centos6下面,ISO所在路径为 /dev/scd0,centos7是 /dev/sr0。安装的时候可能报错:

cat /var/log/vboxadd-install.log
/tmp/vbox.0/Makefile.include.header:112: *** Error: unable to find the sources of your current Linux kernel. Specify KERN_DIR=<directory> and run Make again.  Stop.
Creating user for the Guest Additions.
Creating udev rule for the Guest Additions kernel module.

原因是 uname -a 输出的 Linux 内核版本,与 /usr/src/kernels 目录下面的版本号对应不上,需要指定KENR_DIR参数:

# ls /usr/src/kernels
2.6.32-754.2.1.el6.x86_64

# uname -a
Linux kyle-centos6 2.6.32-696.el6.x86_64

# KERN_DIR=/usr/src/kernels/2.6.32-754.2.1.el6.x86_64/ sh VBoxLinuxAdditions.run

接下来又报另一个错误:

# cat /var/log/VBoxGuestAdditions.log

chcon: can't apply partial context to unlabeled file `/usr/lib64/VBoxGuestAdditions/mount.vboxsf'
vboxadd.sh: failed: modprobe vboxguest failed.

还是因为kernels headers文件与uname -a输出的版本不一致。需要卸载当前版本,并安装与内核匹配的版本:

rpm -e kernel-devel-2.6.32-754.2.1.el6.x86_64   # 卸载
wget -c "ftp://mirror.switch.ch/pool/4/mirror/scientificlinux/6.3/x86_64/updates/security/kernel-devel-2.6.32-696.el6.x86_64.rpm"
rpm -ivh kernel-devel-2.6.32-696.el6.x86_64.rpm
yum install gcc
sh VBoxLinuxAdditions.run 

4. 添加用户

将当前登陆的用户添加到 vboxsf 组中去,方便得到挂载后的文件夹读写权限 :

sudo adduser [USER_NAME] vboxsf

5. 在virtualbox中挂载目录

在虚拟机的设置页面中,选择『共享文件夹』页,然后添加一个,勾选上固定分配与自动挂载,下次重启后就会自动挂载。

%e5%b1%8f%e5%b9%95%e5%bf%ab%e7%85%a7-2016-11-19-%e4%b8%8b%e5%8d%889-33-04

可以用mount命令查看挂载后的地址

mount
kyle on /media/sf_kyle type vboxsf (rw,nodev,relatime)

在windows中通过virtualbox安装的linux虚拟机,共享windows目录到linux中去,结果在共享的文件夹下面无法创建软链接,如下解决,在virtualbox安装目录中执行如下命令:

VBoxManage setextradata YOURVMNAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/YOURSHAREFOLDERNAME 1

其中,YOURVMNAME为虚拟机中linux系统的名称,YOURSHAREFOLDERNAME 为共享的目录名称。

6. 设置挂载用户以及文件权限

假如我们想以用户tars挂载,然后文件权限是 755,首先在virtualbox中取消掉文件共享的“自动挂载”选项。然后在虚拟机中设置系统启动时执行的mount命令:

vim /etc/rc.local

sudo mount -t vboxsf SHARE_NAME -o rw,dmode=755,gid=GROUP_ID,uid=USER_ID /path/on/guest

gid与uid可以通过  id username 命令拿到。