前因
近期遇到一个问题,需要在ubuntu虚拟机上用opengl3.3以上的版本(可编程管线),但是虚拟机上查看版本时发现为opengl2.1,查了各种资料才得知是驱动版本太低。
这边一个大坑请注意: 虚拟机无法升级显卡驱动,虚拟机无法升级显卡驱动,虚拟机无法升级显卡驱动!!! 网上的参考资料基本没说清楚是用真linux还是虚拟机下的ubuntu,这点我绕了很多的弯路,也尝试了大部分比较靠谱的资料最后均无法实现!!!
在虚拟化环境中,虚拟机通常无法直接访问物理显卡,而是使用虚拟显卡来模拟图形输出。因此,虚拟机中的显卡性能通常受到限制,无法达到与物理机相同的水平。
然而,一些虚拟化软件(如 VMware、VirtualBox 等)提供了一些特殊的功能,可以使虚拟机在一定程度上利用物理显卡的性能。这些功能通常被称为“虚拟 GPU”(Virtual GPU)或“显卡透传”(GPU Passthrough)。
后果
后来查看资料得知可以使用window子系统,Windows Subsystem for Linux,即适用于 Linux 的 Windows 子系统 (WSL)。
这边已经升级为WSL2,官方资料说明其可以使用windows下的显卡驱动,嗯就很香~,言归正传,看看如何配置WSL2 Ubuntu+gnome图形界面
必须运行 Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11 才能使用以下命令。
WSL2的安装主要参考官方教程
https://docs.microsoft.com/zh-cn/windows/wsl/install-win10
其他资料网上也比较多一般这一步比较容易这边不展开
首先打开windows应用商店,输入ubuntu,这边我下载的是ubuntu 18.04版本的,其他版本的没有尝试过
ubuntu初始化操作
下载完成后点击打开,需要输入用户名、密码、确认密码。输入密码是不会显示的,直接输入之后回车就可以,出现这个界面即为成功了
连接WSL显示桌面需要用到X Server Windows软件,使用VcXsrv
软件链接:https://sourceforge.net/projects/vcxsrv/
3.1 安装就一路next就好
3.2 启动步骤
点下Save configuration保存配置,点击完成,下一次就直接点config文件进入不需要在重新设置一遍,点击进入后应该是黑屏如下:
WSL 不支持 systemd 而 Gnome 桌面又是基于 systemd,所以先解决这个问题
sudo apt update
sudo apt install git
git clone https://github.com/DamionGans/ubuntu-wsl2-systemd-script.git
cd ubuntu-wsl2-systemd-script/
bash ubuntu-wsl2-systemd-script.sh
安装完systemd之后,退回windows终端(直接叉掉这个终端就行),务必输入
wsl --shutdown
确认你wsl版本为wsl2
wsl -l -v
wsl --set-version Ubuntu-18.04 2
重启ubuntu终端。输入
systemctl
确认systemctl能用,出来一堆log,失败的话会是
System has not been booted with systemd as init system (PID 1). Can't operate.
接下来安装图形界面
sudo apt install ubuntu-desktop
这边可能要多试几次,网络不好容易断掉,确保文件下载并安装完成
安装完毕后
输入以下命令
sudo service dbus restart
输入sudo vi ~/.bashrc
在.bashrc文件中导入(vi的插入用 i,输入完成后按esc 输入:wq保存)
export DISPLAY=$(grep -m 1 nameserver /etc/resolv.conf | awk '{print $2}'):0.0
export XDG_SESSION_TYPE=x11
保存后
执行 source ~/.bashrc
生效
保证VcXsrv启动状态下,输入
gnome-session
这边又有一个大坑,很多人在这边发现屏幕还是黑屏,我来来回回试了30多次吧,均也是这种情况,这时候可以去看看是不是VcXsrv被防火墙给拦截了
设置完成后重启VcXsrv,这个时候应该能够看到这个界面
恭喜到这里就完成了
因为我这边需要用到opengl3.3以上,但是我查看信息时发现还是opengl2.1,在gnome终端输入查看的命令为
glxinfo | grep OpenGL
这时候不要急着升级驱动,因为wsl2用的是windows的驱动,这边先升级opengl
sudo add-apt-repository ppa:kisak/kisak-mesa
sudo apt update && sudo apt upgrade
升级过后重启ubuntu
再次进入后在gnome终端输入:
glxinfo | grep OpenGL
只需要将VMware升级到16以上,开启虚拟机平台,即可解决问题
方法一直接命令启动,缺点每次都要输入
explorer.exe .