cna*_*ize 154 macos virtualbox centos virtual-machine
我正在使用VirtualBox将OS X作为主机,并在来宾VM上使用CentOS.
在OS XI创建的文件夹中myfolder
,将其作为共享文件夹添加到VM,打开VM,在CentOS创建的文件夹中/home/user/myfolder
键入:
sudo mount -t vboxsf myfolder /home/user/myfolder
Run Code Online (Sandbox Code Playgroud)
并有输出:
/sbin/mount.vboxsf: mounting failed with the error: No such device
Run Code Online (Sandbox Code Playgroud)
我做错了什么?
更新:
Guest Additions
安装.
小智 156
我的共享文件夹/剪贴板由于某种原因停止工作(可能是由于我的虚拟机上安装了补丁).
sudo mount -t vboxsf Shared_Folder ~/SF/
给出以下结果:
VirtualBox: mount.vboxsf: mounting failed with the error: No such device
我的解决方案是停止vboxadd并在此之后进行设置:
cd /opt/VBoxGuestAdditions-*/init
sudo ./vboxadd setup
Run Code Online (Sandbox Code Playgroud)
ken*_*orb 66
您正在使用共享文件夹,因此您需要在虚拟机中安装VirtualBox Guest Additions以支持该功能.
如果您正在使用Vagrant(OS X :)brew cask install vagrant
,请运行:
vagrant plugin install vagrant-vbguest
vagrant vbguest
Run Code Online (Sandbox Code Playgroud)
如果失败,请检查日志,例如
vagrant ssh -c "cat /var/log/vboxadd-install.log"
Run Code Online (Sandbox Code Playgroud)
也许你只是缺少内核头文件.
在VM内部,您应该安装Guest Additions,内核头文件并启动服务并仔细检查内核扩展是否正在运行.
这取决于客户操作系统,因此这里有简短的步骤:
安装内核包含头文件(VBoxLinuxAdditions需要).
sudo apt-get update && sudo apt-get install kernel-devel
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文件(例如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 modprobe vboxsf
启动/重启服务:
sudo /opt/VBoxGuestAdditions*/init/vboxadd setup
添加sudo sh -x
到调试)sudo /etc/init.d/vboxadd-service start
sudo /etc/init.d/vboxdrv setup
sudo service VBoxService start
如果上面没有工作,这里有更复杂的步骤来解决它.这假设您已经安装了VBoxGuestAdditions(如上所示).
安装共享文件夹不起作用的最常见原因可能与构建失败的Guest Additions模块有关.如果/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
Run Code Online (Sandbox Code Playgroud)
所以基本上vboxadd
脚本期望你的内核源代码在以下目录中可用:
ls -la /lib/modules/$(uname -r)/build
Run Code Online (Sandbox Code Playgroud)
检查内核目录是否存在(符号链接指向现有文件夹).如果不是,请将它们安装到正确的文件夹(例如/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
Run Code Online (Sandbox Code Playgroud)
如果内核版本与源代码不匹配,那么您可能需要升级Linux内核(如果源代码比内核更新).
CentOS的示例修复步骤:
vagrant plugin install vagrant-vbguest vagrant vbgues
Run Code Online (Sandbox Code Playgroud)
Atu*_*l N 52
我可以通过运行以下命令来解决这个问题
modprobe -a vboxguest vboxsf vboxvideo
Fro*_*giz 21
除了@Mats的回答,我还添加了一些信息(它在Debian 8上帮助了我).
我的共享文件夹/剪贴板由于某种原因停止工作(可能是由于我的虚拟机上安装了补丁).
sudo mount -t vboxsf Shared_Folder ~/SF/
Run Code Online (Sandbox Code Playgroud)
给我以下结果:
VirtualBox: mount.vboxsf: mounting failed with the error: No such device
Run Code Online (Sandbox Code Playgroud)
我的解决方案是停止vboxadd并在此之后进行设置:
cd /opt/VBoxGuestAdditions-*/init
sudo ./vboxadd setup
Run Code Online (Sandbox Code Playgroud)
此时,如果仍然出现以下错误:
无此设备.Guest Additions安装可能已失败.该错误已登录
/var/log/vboxadd-install.log
你需要安装linux头文件:
apt-get install linux-headers-$(uname -r)
Run Code Online (Sandbox Code Playgroud)
然后你可以安装Guest Additions:
sh /media/cdrom/VBoxLinuxAdditions.run --nox11
Run Code Online (Sandbox Code Playgroud)
并通过以下方式重启Linux:
reboot
Run Code Online (Sandbox Code Playgroud)
那么你将能够挂载你的共享文件夹!
mount -t vboxsf Shared_Folder ~/SF/
Run Code Online (Sandbox Code Playgroud)
更多信息(法语),请查看此页面.
xxx*_*nce 12
这是唯一对我有用的解决方案:
安装Vagrant插件:vagrant-vbguest,它可以使您的VirtualBox Guest Additions保持最新.
vagrant plugin install vagrant-vbguest
Run Code Online (Sandbox Code Playgroud)
资料来源:https://github.com/aidanns/vagrant-reload/issues/4#issuecomment-230134083
这解决了:
yum install gcc kernel-devel make
Run Code Online (Sandbox Code Playgroud)
解决方法在这里:https://gist.github.com/larsar/1687725
小智 6
共享文件夹之前为我工作,但突然间它停止工作(Virualbox - 主机是Windows 7,Guest是OpenSuSe)
modprobe -a vboxguest vboxsf vboxvideo
然后
mount -t vboxsf testsf /opt/tsf
(testsf
是在Windows C驱动器中添加到Virtualbox共享文件夹中的文件夹---并且/opt/tsf
是OpenSuse中的文件夹
小智 5
我的主机是Windows10,我的VM来宾是由vagrant构建的ubuntu。这为我工作:
vagrant plugin install vagrant-winnfsd
Run Code Online (Sandbox Code Playgroud)