解决VirtualBox增强功能异常
VirtualBox增强功能异常的排查
每次安装完vbox的增强功能总是会有各种异常问题,比如:
- 共享文件不能使用。
- 复制粘贴不能使用。
- 显示器分辨率不能自动调整。
- OpenGL 3D加速不能使用。
排查方法:
- 确认安装的增强功能包的版本与virtualbox的版本匹配。
ps -ef | grep VBoxClient
查看VBoxClient进程是否启动。lsmod | grep vbox
查看驱动是否加载。systemctl status vboxadd.service
查看服务状态是否报错。
版本匹配
一般来说,需要确保增强功能包的版本与virtualbox主程序一致。
也有例外情况,比如我在使用5.2.24版本的时候,测试下来5.2.38版本的功能包是最合适的。
VBoxClient
VBoxClient是启动增强功能的关键程序,桌面启动时通常会加载VBoxClient-all来启动所有需要的功能,这是通过/etc/xdg/autostart/vboxclient.desktop
文件实现的。
如果你使用如i3wm
这样的其他桌面环境,那么VBoxClient可能不会自动加载,这就需要你在对应的启动配置中手动调用VBoxClient-all程序。以i3wm
为例,需要在~/.config/i3/config
中增加exec --no-startup-id VBoxClient-all
。
如果正常,使用ps -ef|grep VBoxClient
命令,你应该能看到类似下面的输出,不同版本会有些许不同。
liyt 1869 1 0 13:46 ? 00:00:00 /usr/bin/VBoxClient --clipboard
liyt 1871 1869 0 13:46 ? 00:00:00 /usr/bin/VBoxClient --clipboard
liyt 1883 1 0 13:46 ? 00:00:00 /usr/bin/VBoxClient --seamless
liyt 1885 1883 0 13:46 ? 00:00:00 /usr/bin/VBoxClient --seamless
liyt 1893 1 0 13:46 ? 00:00:00 /usr/bin/VBoxClient --draganddrop
liyt 1895 1893 0 13:46 ? 00:00:00 /usr/bin/VBoxClient --draganddrop
liyt 1902 1 0 13:46 ? 00:00:00 /usr/bin/VBoxClient --vmsvga
liyt 1903 1902 0 13:46 ? 00:00:00 /usr/bin/VBoxClient --vmsvga
查看VBoxClient的帮助可以了解不同参数的作用,比如-clipboard是与剪贴板有关。如果你的剪贴板功能不正常,那么可以尝试手动执行VBoxClient -clipboard -f -v
命令,查看是否有错误信息。
如果有错误,大概率是版本不匹配造成的。如果版本匹配且看不出错误原因,只能尝试其他版本(没遇到过这种情况)。
查看驱动
使用lsmod | grep vbox
查看驱动是否正常加载。关键的两个是:
- vboxsf:影响共享文件夹是否能工作。
- vboxvideo:影响显卡是否工作。
如果缺少驱动,查看服务的启动日志systemctl status vbox.service
,或者查看系统启动日志journalctl -b
,搜索vbox相关内容,检查是否有报错信息。
OpenGL 3.x
很多程序依赖OpenGL 3.x,通过glxinfo|grep OpenGL
查看opengl的支持信息。如果有以下字段说明支持OpenGL3。
OpenGL core profile version string: 3.3 (Core Profile) Mesa 20.0.4
如果是其他版本,考虑改变设置中的显示设置。我在virtualbox6.1.30版本中选择VboxVGA
且不勾选3D加速
能支持OpenGL3.3,选择vmsvga
只能支持OpenGL2.1。
glxinfo
需要安装mesa-utils
包。
注意事项
不推荐安装发行版预编译好virtualbox-guest-*
的包,很容易出现版本不匹配的问题。尽量使用virtualbox主程序菜单中的“安装增强功能”来安装。
安装的时候有可能会出现莫名其妙的编译错误,最好的办法是更新virtualbox主程序版本,然后重新安装增强功能。如果主程序版本不能变更,那么可以尝试下载主版本号相同而小版本有差异的增强功能包(大概率不兼容)。
解决VirtualBox增强功能异常
VirtualBox增强功能异常的排查
每次安装完vbox的增强功能总是会有各种异常问题,比如:
- 共享文件不能使用。
- 复制粘贴不能使用。
- 显示器分辨率不能自动调整。
- OpenGL 3D加速不能使用。
排查方法:
- 确认安装的增强功能包的版本与virtualbox的版本匹配。
ps -ef | grep VBoxClient
查看VBoxClient进程是否启动。lsmod | grep vbox
查看驱动是否加载。systemctl status vboxadd.service
查看服务状态是否报错。
版本匹配
一般来说,需要确保增强功能包的版本与virtualbox主程序一致。
也有例外情况,比如我在使用5.2.24版本的时候,测试下来5.2.38版本的功能包是最合适的。
VBoxClient
VBoxClient是启动增强功能的关键程序,桌面启动时通常会加载VBoxClient-all来启动所有需要的功能,这是通过/etc/xdg/autostart/vboxclient.desktop
文件实现的。
如果你使用如i3wm
这样的其他桌面环境,那么VBoxClient可能不会自动加载,这就需要你在对应的启动配置中手动调用VBoxClient-all程序。以i3wm
为例,需要在~/.config/i3/config
中增加exec --no-startup-id VBoxClient-all
。
如果正常,使用ps -ef|grep VBoxClient
命令,你应该能看到类似下面的输出,不同版本会有些许不同。
liyt 1869 1 0 13:46 ? 00:00:00 /usr/bin/VBoxClient --clipboard
liyt 1871 1869 0 13:46 ? 00:00:00 /usr/bin/VBoxClient --clipboard
liyt 1883 1 0 13:46 ? 00:00:00 /usr/bin/VBoxClient --seamless
liyt 1885 1883 0 13:46 ? 00:00:00 /usr/bin/VBoxClient --seamless
liyt 1893 1 0 13:46 ? 00:00:00 /usr/bin/VBoxClient --draganddrop
liyt 1895 1893 0 13:46 ? 00:00:00 /usr/bin/VBoxClient --draganddrop
liyt 1902 1 0 13:46 ? 00:00:00 /usr/bin/VBoxClient --vmsvga
liyt 1903 1902 0 13:46 ? 00:00:00 /usr/bin/VBoxClient --vmsvga
查看VBoxClient的帮助可以了解不同参数的作用,比如-clipboard是与剪贴板有关。如果你的剪贴板功能不正常,那么可以尝试手动执行VBoxClient -clipboard -f -v
命令,查看是否有错误信息。
如果有错误,大概率是版本不匹配造成的。如果版本匹配且看不出错误原因,只能尝试其他版本(没遇到过这种情况)。
查看驱动
使用lsmod | grep vbox
查看驱动是否正常加载。关键的两个是:
- vboxsf:影响共享文件夹是否能工作。
- vboxvideo:影响显卡是否工作。
如果缺少驱动,查看服务的启动日志systemctl status vbox.service
,或者查看系统启动日志journalctl -b
,搜索vbox相关内容,检查是否有报错信息。
OpenGL 3.x
很多程序依赖OpenGL 3.x,通过glxinfo|grep OpenGL
查看opengl的支持信息。如果有以下字段说明支持OpenGL3。
OpenGL core profile version string: 3.3 (Core Profile) Mesa 20.0.4
如果是其他版本,考虑改变设置中的显示设置。我在virtualbox6.1.30版本中选择VboxVGA
且不勾选3D加速
能支持OpenGL3.3,选择vmsvga
只能支持OpenGL2.1。
glxinfo
需要安装mesa-utils
包。
注意事项
不推荐安装发行版预编译好virtualbox-guest-*
的包,很容易出现版本不匹配的问题。尽量使用virtualbox主程序菜单中的“安装增强功能”来安装。
安装的时候有可能会出现莫名其妙的编译错误,最好的办法是更新virtualbox主程序版本,然后重新安装增强功能。如果主程序版本不能变更,那么可以尝试下载主版本号相同而小版本有差异的增强功能包(大概率不兼容)。