当前位置: 首页 > news >正文

Win11安装基于WSL2的Ubuntu

1024程序员节征文

1. 概述

趁着还没有完全忘记,详细记录一下在Win11下安装基于WSL2的Ubuntu的详细过程。不得不说WSL2现在被微软开发的比较强大了,还是很值得安装和使用的,笔者就通过WSL2安装的Ubuntu成功搭建了ROS环境。

2. 详论

2.1 子系统安装

在Win11搜索栏中搜索“启用或关闭Windows功能”,在弹出的“Windows功能”对话框中,勾选择 “适用于Linux的Windows子系统”和“虚拟机平台”,如下图1所示:

图1 启用适用于Linux的Windows子系统

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

在Windows PowerShell中输入如下命令:

wsl --update

之后就会更新wsl,如下图2所示:

图2 更新wsl

注意,如果你是用的比较新的Win11版本,那么应该就会默认安装到WSL2,所以不用进行切换WSL版本。如果安装的还是WSL1,那么就要升级到WSL2,因为WSL1和WSL2的特性是不太一样的。

接下来通过Microsoft Store安装Ubuntu发行版,可以直接在Microsoft Store中搜索Ubuntu,笔者这里安装的是Ubuntu 20.04.6 LTS版本,如下图3所示:

图3 Microsoft Store安装Ubuntu

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

图4 启动Ubuntu子系统

第一次启动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所示:

图5 Win11文件资源管理器访问到Ubuntu资源

文件资源能访问到当然就可以通过Win11的文本编辑器打开并编辑(需要注意Windows和Ubuntu文本文件的换行问题)。不仅是文本文件,任何文件资源的拷贝和移动都很方便,可以实现常规的复制粘贴操作。其实文件资源不拷贝也行,两个系统之间的文件本身就可以互相访问,当然可能需要解决一些权限问题。

2.3 GUI界面

2.3.1 WSLg

既然都用上Ubuntu了,当然还是想给它装上GUI界面。其实目前最新的WSL2已经集成了WSLg技术,也就是可以支持GUI程序,只需要安装GUI程序,然后运行就可以了。在Ubuntu终端中输入指令:

xeyes

就可以在Win11系统中看到xeyes应用程序窗口,如下图6所示:

图6 Win11系统启动Ubuntu GUI程序xeyes

如果没有出现xeyes窗口,那么可能是Win11版本、WSL版本太低或者GPU驱动的问题,都进行更新一下即可。如果顺利出现,就说明可以直接打开Ubuntu的GUI程序。例如,可以打开Ubuntu的文件资源管理器:

thunar

如果提示不识别,就安装一下:

sudo apt-get update
sudo apt-get install thunar

启动窗口如下图7所示:

图7 Ubuntu文件资源管理器

应该来说,双系统资源互通加上这个文件资源管理器,应该能方便解决很多问题了。

2.3.2 VcXsrv

如果还是想获得沉浸式的桌面体验,那么就需要安装桌面环境了。不过这种方案不是安装了包就行了,更类似于远程桌面连接,需要在Win11端安装X服务器VcXsrv,可以在其官方网站上下载。

下载安装完成后会在桌面上生成一个XLaunch的快捷方式。为了以防外一,还是以管理员方式启动XLaunch,首先配置展示设置,如下图8所示:

图8 VcXsrv配置展示设置

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

图9 VcXsrv配置如何启动客户端

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

图10 VcXsrv额外配置

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

图11 VcXsrv配置完成

一定要注意,通过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所示:

图12 启动Ubuntu桌面环境

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. 参考

  1. Win11安装WSL2 子系统以及不同分发版Ubuntu系统
  2. WS2 安装ubuntu +迁移+vscode
  3. 通过 VcXsrv 在 WSL2 上使用图形化界面
  4. 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点击红框部分,根据期刊要求选择参考文献样式&#xff0…...

雷池社区版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接口实现旺店通和金蝶系统的无缝数据对接

旺店通销售出库对接金蝶销售订单(线下)的技术实现 在企业日常运营中,数据的高效流转和准确对接是确保业务顺畅运行的关键。本文将聚焦于一个具体案例:如何通过轻易云数据集成平台,实现旺店通企业奇门的数据无缝对接到金蝶云星空系统。我们将…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...

docker详细操作--未完待续

docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode&#xff1a; 2.利用 authorizationCode 获取 accessToken&#xff1a;文档中心 3.获取手机&#xff1a;文档中心 4.获取昵称头像&#xff1a;文档中心 首先创建 request 若要获取手机号&#xff0c;scope必填 phone&#xff0c;permissions 必填 …...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析&#xff08;Parser&#xff09; 2.4、执行sql 1. 预处理&#xff08;Preprocessor&#xff09; 2. 查询优化器&#xff08;Optimizer&#xff09; 3. 执行器…...