您正在使用共享文件夹,因此您需要在虚拟机中安装 VirtualBox Guest Additions 以支持该功能。
流浪者
如果您使用的是Vagrant(OS X:brew cask install vagrant),请运行:
vagrant plugin install vagrant-vbguest
vagrant vbguest
如果失败,请检查日志,例如
vagrant ssh -c "cat /var/log/vboxadd-install.log"
也许您只是缺少内核头文件。
虚拟机
在 VM 中,您应该安装 Guest Additions、内核头文件并启动服务并仔细检查内核扩展是否正在运行。
这取决于客户操作系统,所以这里有一些简短的步骤:
-
安装内核包含头文件(VBoxLinuxAdditions 需要)。
- RHEL:
sudo apt-get update && sudo apt-get install kernel-devel
- CentOS:
sudo yum update && sudo yum -y install kernel-headers kernel-devel
-
安装 Guest Additions(这取决于操作系统)。
-
Ubuntu:sudo apt-get -y install dkms build-essential linux-headers-$(uname -r) virtualbox-guest-additions-iso
如果找不到,请通过aptitude search virtualbox查看。
-
Debian:sudo apt-get -y install build-essential module-assistant virtualbox-ose-guest-utils
如果找不到,请通过dpkg -l | grep virtualbox查看。
-
手动下载VM内部的iso file(例如wget)并安装它,例如
wget http://download.virtualbox.org/virtualbox/5.0.16/VBoxGuestAdditions_5.0.16.iso -P /tmp
sudo mount -o loop /tmp/VBoxGuestAdditions_5.0.16.iso /mnt
-
sudo sh -x /mnt/VBoxLinuxAdditions.run # --keep
额外调试:cd ~/install && sh -x ./install.sh /mnt/VBoxLinuxAdditions.run
-
仔细检查内核扩展是否已启动并正在运行:
-
启动/重启服务:
- 手动:
sudo /opt/VBoxGuestAdditions*/init/vboxadd setup(添加sudo sh -x进行调试)
- Debian:
sudo /etc/init.d/vboxadd-service start
- Fedora:
sudo /etc/init.d/vboxdrv setup
- CentOS:
sudo service VBoxService start
构建主要的 Guest Additions 模块
如果上述方法不起作用,这里有更复杂的步骤来解决它。这假设您已经安装了 VBoxGuestAdditions(如上所示)。
挂载共享文件夹不起作用的最常见原因可能与构建失败的访客添加模块有关。如果在/var/log/vboxadd-install.log 中出现以下错误:
没有找到当前运行内核的头文件。
这意味着要么您没有安装内核源代码,要么找不到它们。
如果您已经按照上面的说明安装了它们,请运行以下命令:
$ sudo sh -x /opt/VBoxGuestAdditions-5.0.16/init/vboxadd setup 2>&1 | grep KERN
+ KERN_VER=2.6.32-573.18.1.el6.x86_64
+ KERN_DIR=/lib/modules/2.6.32-573.18.1.el6.x86_64/build
所以基本上vboxadd 脚本期望您的内核源代码在以下目录中可用:
ls -la /lib/modules/$(uname -r)/build
检查内核目录是否存在(符号链接指向现有文件夹)。如果不是,请将它们安装到正确的文件夹中(例如/usr/src/kernels)。
所以vboxadd 脚本可以进入你的内核源目录并运行make kernelrelease,获取值并与你当前的内核版本进行比较。
逻辑如下:
KERN_VER=`uname -r`
KERN_DIR="/lib/modules/$KERN_VER/build"
if [ -d "$KERN_DIR" ]; then
KERN_REL=`make -sC $KERN_DIR --no-print-directory kernelrelease 2>/dev/null || true`
if [ -z "$KERN_REL" -o "x$KERN_REL" = "x$KERN_VER" ]; then
return 0
fi
fi
如果内核版本与源不匹配,也许你必须升级你的 Linux 内核(以防源比你的内核更新)。
CentOS
试试:
vagrant plugin install vagrant-vbguest vagrant vbgues
如果不起作用,请为 CentOS 尝试以下手动步骤:
$ sudo yum update
$ sudo yum install kernel-$(uname -r) kernel-devel kernel-headers # or: reinstall
$ rpm -qf /lib/modules/$(uname -r)/build
kernel-2.6.32-573.18.1.el6.x86_64
$ ls -la /lib/modules/$(uname -r)/build
$ sudo reboot # and re-login
$ sudo ln -sv /usr/src/kernels/$(uname -r) /lib/modules/$(uname -r)/build
$ sudo /opt/VBoxGuestAdditions-*/init/vboxadd setup