Win11安装基于WSL2的Ubuntu

1. 概述
趁着还没有完全忘记,详细记录一下在Win11下安装基于WSL2的Ubuntu的详细过程。不得不说WSL2现在被微软开发的比较强大了,还是很值得安装和使用的,笔者就通过WSL2安装的Ubuntu成功搭建了ROS环境。
2. 详论
2.1 子系统安装
在Win11搜索栏中搜索“启用或关闭Windows功能”,在弹出的“Windows功能”对话框中,勾选择 “适用于Linux的Windows子系统”和“虚拟机平台”,如下图1所示:

点击“确定”按钮,等待Windows更改完成。在选择“立即重新启动”,重新进入Win11系统之后,启动Windows PowerShell。注意,为了避免权限问题,后续所有启动Windows PowerShell的方式都可以以管理员身份运行。笔者也不太清楚哪些要管理员权限,哪些不要,干脆就统一以管理员身份运行好了。
在Windows PowerShell中输入如下命令:
wsl --update
之后就会更新wsl,如下图2所示:

注意,如果你是用的比较新的Win11版本,那么应该就会默认安装到WSL2,所以不用进行切换WSL版本。如果安装的还是WSL1,那么就要升级到WSL2,因为WSL1和WSL2的特性是不太一样的。
接下来通过Microsoft Store安装Ubuntu发行版,可以直接在Microsoft Store中搜索Ubuntu,笔者这里安装的是Ubuntu 20.04.6 LTS版本,如下图3所示:

现在Microsoft Store的网络连接应该比较稳定了,下载安装过程还是比较顺利的。安装完成之后,就可以在系统搜索栏搜索到“Ubuntu 20.04.6 LTS”并启动,如下图4所示:

第一次启动Ubuntu终端的时候会让你创建用户名和密码,按照提示进行设置即可。不过笔者在这一步的时候不小心关闭终端了,后果就是每次启动Ubuntu终端的账户的时候都是root账户。
应该来说整个系统的安装过程还是很顺利的,并没有遇到诸如需要切换版本、下载其它终端、迁移地址等问题。
2.2 资源管理
按照惯例,安装好Ubuntu第一件事就是更新和升级包管理器,这是安装依赖库或者软件必须。在终端输入如下指令:
apt-get update
apt-get upgrade
经过笔者的测试,上述指令现在没有遇到网络问题了,不知道是不是因为是WSL的原因。如果无法更新的话,有两种解决方式,一种是设置代理,还有一种是换源,这里就不多作论述了。
使用WSL的Ubuntu的好处就是方便资源管理,比如前面提到的要给包管理器换源,就要编辑/etc/apt/sources.list这个文件。但是这时是没有GUI界面的,只有使用像Vim和nano这样基于终端的文本编辑器,笔者反正是不太想使用的。但是在WSL下,如果你按照之前的步骤顺利安装完成,就可以直接通过Win11自带的文件资源管理器访问到Ubuntu下所有的文件,如下图5所示:

文件资源能访问到当然就可以通过Win11的文本编辑器打开并编辑(需要注意Windows和Ubuntu文本文件的换行问题)。不仅是文本文件,任何文件资源的拷贝和移动都很方便,可以实现常规的复制粘贴操作。其实文件资源不拷贝也行,两个系统之间的文件本身就可以互相访问,当然可能需要解决一些权限问题。
2.3 GUI界面
2.3.1 WSLg
既然都用上Ubuntu了,当然还是想给它装上GUI界面。其实目前最新的WSL2已经集成了WSLg技术,也就是可以支持GUI程序,只需要安装GUI程序,然后运行就可以了。在Ubuntu终端中输入指令:
xeyes
就可以在Win11系统中看到xeyes应用程序窗口,如下图6所示:

如果没有出现xeyes窗口,那么可能是Win11版本、WSL版本太低或者GPU驱动的问题,都进行更新一下即可。如果顺利出现,就说明可以直接打开Ubuntu的GUI程序。例如,可以打开Ubuntu的文件资源管理器:
thunar
如果提示不识别,就安装一下:
sudo apt-get update
sudo apt-get install thunar
启动窗口如下图7所示:

应该来说,双系统资源互通加上这个文件资源管理器,应该能方便解决很多问题了。
2.3.2 VcXsrv
如果还是想获得沉浸式的桌面体验,那么就需要安装桌面环境了。不过这种方案不是安装了包就行了,更类似于远程桌面连接,需要在Win11端安装X服务器VcXsrv,可以在其官方网站上下载。
下载安装完成后会在桌面上生成一个XLaunch的快捷方式。为了以防外一,还是以管理员方式启动XLaunch,首先配置展示设置,如下图8所示:

展示配置用于设置Ubuntu桌面以及GUI程序的窗口方式,其实四种方式其实都可以,这里就以Multiple windows为例。点击下一步,配置如何启动客户端,如下图9所示:

这里保持默认配置就行。继续下一步,进行额外配置,如下图10所示:

注意这里的Disable access control是一定要勾选的,否则可能无法启动GUI桌面。继续下一步,点击“Save configuration”可以将配置保存,便于下一次启动。点击“完成”,VcXsrv就会正式启动,如下图11所示:

一定要注意,通过Multiple windows方式启动的VcXsrv是看不到窗口的,它是在后台启动的,可以在任务管理器中看到。如果因为各种原因需要重启,就在任务管理器中关掉,确保只有一个VcXsrv程序。
以上是在win11端中的操作,接下来就是在Ubuntu终端的操作。同样的,为了避免问题以管理员方式启动Ubuntu终端,并且使用root权限账号。使用如下指令安装xfce4桌面环境:
sudo apt install xfce4
配置远端的展示地址,指令如下:
export DISPLAY=192.168.31.168:0
注意这里使用的192.168.31.168要换成你Win11端的IP地址,localhost或者127.0.0.1是不行的,因为对Ubuntu来说,Win11端其实是远端,一定要用Win11端的IP地址。这一步在每次启动桌面环境的时候都要设置,如果对Ubuntu环境比较熟的话可以配置到.bashrc文件中,可以避免每次都执行这个操作。
通过sudo startxfce4启动xfce4桌面环境,效果如下图12所示:

2.3.3 问题
如果是使用WSLg还是VcXsrv连接的方式,都还是有一些问题的。WSLg的问题是启动GUI程序是不支持高分屏的,这样GUI上的文字特别小,看起来非常伤眼睛。VcXsrv的问题是只有以Multiple windows方式启动的桌面环境才能支持GPU/OpenGL,但是这种方式启动的桌面环境中打开的GUI程序有点问题,具体表现为点击标题栏的关闭按钮无法生效,或者无法通过标题栏拖动窗口的位置。图8所示的其他方式如Fullscreen、One large window等就没这个问题,但是又不支持GPU/OpenGL。
不过话说回来,对使用GPU的GUI程序来说,基于WSL的Ubuntu确实不是最优解,笔者这里使用glxinfo | grep "OpenGL"显示的OpenGL只能支持到OpenGL 3.1,更不谈其他显卡的驱动了。以后有机会的话还是试试双系统的Ubuntu,体验一下满血Ubuntu的感觉。
3. 参考
- Win11安装WSL2 子系统以及不同分发版Ubuntu系统
- WS2 安装ubuntu +迁移+vscode
- 通过 VcXsrv 在 WSL2 上使用图形化界面
- wsl最丝滑的图形桌面设置方式是什么?
相关文章:
Win11安装基于WSL2的Ubuntu
1. 概述 趁着还没有完全忘记,详细记录一下在Win11下安装基于WSL2的Ubuntu的详细过程。不得不说WSL2现在被微软开发的比较强大了,还是很值得安装和使用的,笔者就通过WSL2安装的Ubuntu成功搭建了ROS环境。 2. 详论 2.1 子系统安装 在Win11搜…...
如何对pdf文件进行加密?pdf文件加密全攻略与深度解析(5个方法)
如何对pdf文件进行加密? 只见,在深夜的情报局里,特工小李将一份绝密PDF文件放在保险箱内,以为这样就天衣无缝了。 细细推敲,漏洞百出: 如果钥匙被盗呢?如果被神匠破解出密码呢?如果…...
c++面向对象三大特性之一-----多态
前言:本文将介绍在32位平台下,c的多态,通过本篇文章的学习你讲了解多态的原理,多态的底层还有一些不常见的关键字的介绍(final,override). 文章内容如下: 1:多态的概念 2:多态的定义与实现 3:多态的原理 4:抽象类 文章正式开始 1:多态的概念 多…...
8.Linux按键驱动-中断下半部
1.编程思路 1.1在gpio结构体中添加tasklet_struct结构体 1.2在probe函数中初始化tasklet结构体 1.3在中断服务程序中调度tasklet 1.4在这个函数中执行其它任务 2.代码: 应用程序和Makefile和上节一致 https://blog.csdn.net/weixin_40933496/article/details/1…...
Redis 线程控制 总结
前言 相关系列 《Redis & 目录》(持续更新)《Redis & 线程控制 & 源码》(学习过程/多有漏误/仅作参考/不再更新)《Redis & 线程控制 & 总结》(学习总结/最新最准/持续更新)《Redis &a…...
Scrapy框架原理与使用流程
一.Scrapy框架特点 框架(Framework)是一种软件设计方法,它提供了一套预先定义的组件和约定,帮助开发者快速构建应用程序。框架通常包括一组库、工具和约定,它们共同工作以简化开发过程。scrapy框架是python写的 为了爬…...
【C语言】字符型在计算机中的存储方式
ASCII对照表:https://www.jyshare.com/front-end/6318/ ASCII(American Standard Code for Information Interchange,美国信息互换标准代码,ASCII)是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语和其他西…...
python:ADB通过包名打开应用
一、依赖库 os 二、命令 1.这是查看设备中所有应用包名的最简单方法。只需在命令行中输入以下命令: adb shell pm list packages 2.打印启动的程序包名 adb shell am monitor回车,然后启动你想要获取包名的那个应用,即可获得 3.查看正在运…...
机器翻译技术:AI 如何跨越语言障碍
大家好,我是Shelly,一个专注于输出AI工具和科技前沿内容的AI应用教练,体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具,拥抱AI时代的到来。 AI工具集1:大厂AI工具【共23款…...
单调栈应用介绍
单调栈应用介绍 定义应用场景实现模板具体示例下一个最大元素I问题描述问题分析代码实现柱状图中最大的矩形问题描述问题分析代码实现接雨水问题描述问题分析代码实现最大宽度坡问题描述问题分析代码实现132模式问题描述问题分析代码实现定义 栈(Stack)是另一种操作受限的线性…...
部署前后端分离若依项目--CentOS7Docker版
一、准备 centos7虚拟机或服务器一台 若依前后端分离项目:可在下面拉取 RuoYi-Vue: 🎉 基于SpringBoot,Spring Security,JWT,Vue & Element 的前后端分离权限管理系统,同时提供了 Vue3 的版本 二、环…...
PH47代码框架功能速查
1. PH47框架逻辑层全局引用对象 全局引用 功能简介 快速访问 bus 数据总线系统功能实现,如对总线数据项读写操作等 数据总线bus drv 驱动层功能实现,如飞控板相关的各种硬件传感器设备进行操作等 驱动层drv mcu 对mcu的片内接口及设备进行操作…...
UVM寄存器模型:uvm_reg_adapter
文章目录 一、什么是uvm_reg_adapter1、what2、Example2.1、代码详解 二、如何使用uvm_reg_adapter三、为什么要引入uvm_reg_adapter 一、什么是uvm_reg_adapter 1、what uvm_reg_adapter继承于uvm_object,定义了用于在 uvm_reg_bus_op 和特定总线事务之间进行转换…...
总结OpenGL和pyrender安装和使用过程中的坑
目录 报错一:AttributeError: NoneType object has no attribute glGetError 报错二:ImportError: (Unable to load OpenGL library, OSMesa: cannot open shared object file: No such file or directory, OSMesa, None) 报错三:raise ImportError("Unable to load…...
温湿传感器(学习笔记下)
接着我们温湿传感器上半部分的学习,现在我们学习接下来的部分,编写GXHTC3驱动程序,也就是给gxhtc3.c文件添加代码,我们要判断gxhtc3芯片是否存在和正常,就要先读取gxhtc3的ID号,根据gxhtc3的数据手册,读取命…...
期刊论文写作之word模板
一、zotero参考文献使用 下载zotero软件,请搜索相关帖子或者小破站即可; 把pdf拖到zotero软件里面,直接拉进去; 下面建立一个word演示: 1.导入pdf点击红框部分,根据期刊要求选择参考文献样式࿰…...
雷池社区版OPEN API使用教程
OPEN API使用教程 新版本接口支持API Token鉴权 接口文档官方没有提供,有需要可以自行爬取,爬了几个,其实也很方便 使用条件 需要使用默认的 admin 用户登录才可见此功能版本需要 > 6.6.0 使用方法 1.在系统管理创建API TOKEN 2.发…...
LSTM(Long Short-Term Memory,长短期记忆网络)在高端局效果如何
lstm 杂乱数据分析 LSTM(Long Short-Term Memory,长短期记忆网络)在高端局,即复杂的机器学习和深度学习应用中,展现出了其独特的优势和广泛的应用价值。以下是对LSTM在高端局中的详细解析: 一、LSTM的优势…...
模组操作宝典:4种关机重启技巧,让你的设备运行无忧
今天我说的是关于关机重启技巧。 给4G模组VBAT断电关机,模组关机前未能及时退出当前基站,会有什么影响呢? 基站会误以为设备还在线,下次开机仍会拿着上次驻网信息去连基站。基站一看,上次链接还在——认为你是非法设…...
利用API接口实现旺店通和金蝶系统的无缝数据对接
旺店通销售出库对接金蝶销售订单(线下)的技术实现 在企业日常运营中,数据的高效流转和准确对接是确保业务顺畅运行的关键。本文将聚焦于一个具体案例:如何通过轻易云数据集成平台,实现旺店通企业奇门的数据无缝对接到金蝶云星空系统。我们将…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
