WSL2 Ubuntu+gnome图形界面的安装血泪史(亲测有效)

2023-11-18

写在最前面(血泪史)

前因
近期遇到一个问题,需要在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图形界面

1.wsl2 安装

必须运行 Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11 才能使用以下命令。
WSL2的安装主要参考官方教程
https://docs.microsoft.com/zh-cn/windows/wsl/install-win10
其他资料网上也比较多一般这一步比较容易这边不展开

2.Ubuntu安装

首先打开windows应用商店,输入ubuntu,这边我下载的是ubuntu 18.04版本的,其他版本的没有尝试过

在这里插入图片描述
ubuntu初始化操作
下载完成后点击打开,需要输入用户名、密码、确认密码。输入密码是不会显示的,直接输入之后回车就可以,出现这个界面即为成功了
在这里插入图片描述

3.VcXsrv安装与启动

连接WSL显示桌面需要用到X Server Windows软件,使用VcXsrv
软件链接:https://sourceforge.net/projects/vcxsrv/
3.1 安装就一路next就好
3.2 启动步骤在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
点下Save configuration保存配置,点击完成,下一次就直接点config文件进入不需要在重新设置一遍,点击进入后应该是黑屏如下:
在这里插入图片描述

4. gnome图形界面的配置

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 version 为1那么需要先将版本转为2

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,这个时候应该能够看到这个界面
在这里插入图片描述
恭喜到这里就完成了

5.显卡驱动的升级

因为我这边需要用到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

这个时候应该会出现
在这里插入图片描述
查看显卡驱动为
在这里插入图片描述
完成!!!

6. wsl2与VMware虚拟机共存

只需要将VMware升级到16以上,开启虚拟机平台,即可解决问题
在这里插入图片描述

本地与WSL文件传输

方法一直接命令启动,缺点每次都要输入

explorer.exe .

方法二:添加网络位置,设置完成后,之后直接打开即可
在这里插入图片描述
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WSL2 Ubuntu+gnome图形界面的安装血泪史(亲测有效) 的相关文章

  • 我可以从命令行打印 html 文件(带有图像、css)吗?

    我想从脚本中打印带有图像的样式化 html 页面 谁能建议一个开源解决方案 我使用的是 Linux Ubuntu 8 04 但也对其他操作系统的解决方案感兴趣 你可以给html2ps http user it uu se jan html2
  • 如何在 Ubuntu VirtualBox 中运行 Meteor 应用程序并使用 Windows 主机上的编辑器进行编辑?

    我希望在运行 Ubuntu 的 virtualbox 来宾中运行一个用于开发目的的流星服务器 该项目将位于主机上的一个文件夹内 该文件夹将共享给来宾 该文件夹本身位于 Dropbox 文件夹内 这样我可以在多个虚拟机和工作站之间共享开发 但
  • 无法从 jenkins 作为后台进程运行 nohup 命令

    更新 根据下面的讨论 我编辑了我的答案以获得更准确的描述 我正在尝试从詹金斯运行 nohup 命令 完整的命令是 nohup java jar home jar server process 0 35 jar prod gt gt var
  • pip:需要将包名称tensorflow-gpu更改为tensorflow

    我正在尝试将具有 GPU 支持的张量流安装到 conda 环境中 我使用命令 pip install ignore installed upgrade https storage googleapis com tensorflow linu
  • Linux中的定时器类

    我需要一个计时器来以相对较低的分辨率执行回调 在 Linux 中实现此类 C 计时器类的最佳方法是什么 有我可以使用的库吗 如果您在框架 Glib Qt Wx 内编写 那么您已经拥有一个具有定时回调功能的事件循环 我认为情况并非如此 如果您
  • fopen 不返回

    我在 C 程序中使用 fopen 以只读模式 r 打开文件 但就我而言 我观察到 fopen 调用没有返回 它不返回 NULL 或有效指针 执行在 fopen 调用时被阻止 文件补丁绝对正确 我已经验证过 并且不存在与权限相关的问题 任何人
  • 域套接字“sendto”遇到“errno 111,连接被拒绝”

    我正在使用域套接字从另一个进程获取值 就像 A 从 B 获取值一样 它可以运行几个月 但最近 A 向 B 发送消息时偶尔会失败 出现 errno 111 连接被拒绝 我检查了B域套接字绑定文件 它是存在的 我也在另一台机器上做了一些测试 效
  • 如何使用GDB修改内存内容?

    我知道我们可以使用几个命令来访问和读取内存 例如 print p x 但是如何更改任何特定位置的内存内容 在 GDB 中调试时 最简单的是设置程序变量 参见GDB 分配 http sourceware org gdb current onl
  • linux perf:如何解释和查找热点

    我尝试了linux perf https perf wiki kernel org index php Main Page今天很实用 但在解释其结果时遇到了困难 我习惯了 valgrind 的 callgrind 这当然是与基于采样的 pe
  • nslookup 报告“无法解析 '(null)': 名称无法解析”,尽管它成功解析了 DNS 名称

    我在 ubuntu 上 并且正在运行 docker 默认桥接网络 我有 Zookeeper kafka 的容器化版本 以及我编写的与 kafka 对话的应用程序 I do a docker exec it
  • 添加要在给定命令中运行的 .env 变量

    我有一个 env 文件 其中包含如下变量 HELLO world SOMETHING nothing 前几天我发现了这个很棒的脚本 它将这些变量放入当前会话中 所以当我运行这样的东西时 cat env grep v xargs node t
  • 两种情况或 if 哪个更快? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我必须制作一个 非常 轻的脚本 它将接受用户的选项并调用脚本中的函数来执行一些任务 现在我可以使用 IF 和 CASE 选项 但我想知道两
  • Linux:在文件保存时触发 Shell 命令

    我想在修改文件时自动触发 shell 命令 我认为这可以通过注册 inotify 挂钩并调用来在代码中完成system 但是是否有更高级别的 bash 命令可以完成此任务 尝试 inotify 工具 我在复制链接时遇到问题 抱歉 但 Git
  • 使用 sh 运行 bash 脚本

    我有 bash 脚本 它需要 bash 另一个人尝试运行它 sh script name sh 它失败了 因为 sh 是他的发行版中 dash 的符号链接 ls la bin sh lrwxrwxrwx 1 root root 4 Aug
  • iptables通过注释删除特定规则

    我需要删除一些具有相同评论的规则 例如 我有带有 comment test it 的规则 所以我可以像这样获得它们的列表 sudo iptables t nat L grep test it 但是我怎样才能删除所有带有注释 测试它 的 PR
  • jpegtran 优化而不更改文件名

    我需要优化一些图像 但不更改它们的名称 jpegtran copy none optimize image jpg gt image jpg 但是 这似乎创建了 0 的文件大小 当我对不同的文件名执行此操作时 大小仍然完全相同 怎么样 jp
  • PHP 无法打开流:是一个目录

    非常简单的 PHP 脚本 我在我亲自设置的 Ubuntu Web 服务器上的 EE 模板中运行 我知道这与权限有关 并且我已经将我尝试写入的目录的所有者更改为 Apache 用户 我得到的错误是 遇到 PHP 错误 严重性 警告 消息 fi
  • 无法使用maven编译java项目

    我正在尝试在 java 16 0 1 上使用 maven 构建 IntelliJ 项目 但它无法编译我的项目 尽管 IntelliJ 能够成功完成 在此之前 我使用maven编译了一个java 15项目 但我决定将所有内容更新到16 0 1
  • 查找哪个程序运行另一个程序

    我有一个 NAS 运行在 Redhat Linux 的有限版本上 我按照指示破解了它 这样我就可以访问 shell 这很有帮助 我还做了一些修改 其他人也做过修改 除了一个问题之外 它们似乎都工作得很好 不知何故 每隔 22 天 系统就会关
  • 如何更改 Apache 服务器的根目录? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何更改 Apache 服务器的文档根目录 我基本上想要localhost从 来 users spencer projects目录而不是

随机推荐