如何设置Windows 11的WSL系统用作备用桌面环境

如何设置Windows 11的WSL系统用作开发环境(含Astrill设置)

如何设置Windows 11的WSL系统用作备用桌面环境

引子:
2023年末,公司突然遭遇网络攻击,调整了防火墙设置,连接VPN用来飞X软件,与原来使用的VPN软件冲突了,因此要么设置双启动系统,要么用虚拟系统;此外,也想设置一个专用系统用于开发环境;那么最小代价是什么,WSL V2似乎是首选?

备注:

  1. 以下设置步骤基本都来自于公开资料,不少步骤都有多种操作方法(CSDN或者知乎相关文章),但是经过检索和尝试之后,本文中提供的方法经验证有效的步骤;
  2. 考虑到不同读者的背景,挑选了图形界面操作和命令行两种操作方式。如果有开发经验或者习惯于使用终端命令的读者会发现,命令行更直接和高效。

安装前准备(参加文献2)

为确保WSL V2版能使用虚拟GPU功能,确保Linux GUI程序的正确运行,推荐安装前确认显卡驱动更新到合适的版本;
特别说明】因为是支持WSL2运行虚拟GPU,因此在相应链接中请下载用于Windows 11(32/64位)对应版本的驱动

  • Intel GPU 驱动程序
  • AMD GPU 驱动程序
  • NVIDIA GPU 驱动程序

第1步:安装WSL V2(参见文献1)

1.1 安装Windows Subsystem for Linux(即WSL)

方法1:开启Windows 功能(Windows 11默认使用WSL 2)

在Windows 11的“搜索”中输入“启用功能”,选择
启用或关闭Windows功能选项
在“Windows功能”对话框中,选择如下3项
在这里插入图片描述
【注意】
Hyper V选项(见下图)不是必须的,如果仅仅使用WSL提供Ubuntu等Linux系统,建议不选择此项,节省资源。
在这里插入图片描述

方法2:直接在Powershell中使用命令

运行该命令时注意Powershell以管理员权限启动(以下无特殊说明都建议使用管理员权限进行安装和设置)

wsl --install

说明: 安装接近尾声的时候,会涉及到用户账号信息设置(名字以及账号密码),类似下方的提示内容,参考提示设置即可。
在这里插入图片描述

第2步:安装Ubuntu系统

方法1:使用 Windows Store提供的Ubuntu

在Windows Store中输入Linux关键词的时候,会出现不少可以选择的版本,截止2024年1月,最新的稳定版本(LTS版本)是22.04.3 LTS,直接选择安装即可。
在这里插入图片描述

方法2:第一步中的命令已经默认安装合适的Ubuntu发行版本,不需要额外操作

【补充说明】使用 WSL 命令安装其他Linux版本
wsl --list --online

将显示可以安装的Linux分发版本如下:
WSL可以安装的Linux版本
然后以如下命令,安装期望的版本。注意尖括号<>中的版本应该输入红色框线那一列的名字,而不是右边的“Friendly Name”

wsl --install -d <Distribution Name>

【注意】
如果运行“wsl --list --online”报错,显示如下内容,请参考此处【安装WSL时遇到“无法解析服务器名称或地址”的错误及解决方法】
在这里插入图片描述

第3步:设置WSL Ubuntu系统的中文本地信息及字体

3.1 安装中文语言包并设置中文为默认语言

1)设定中文区域配置
sudo apt install language-pack-zh-hans
sudo dpkg-reconfigure locales

运行上述第2行命令之后,会出现一个文本模式的菜单设置界面(如下),使用TAB健移动光标位置,空格键选择对应的区域选项(用PageUp/PageDown可以翻页),然后确定退出,即可完成设置。
在这里插入图片描述
说明】上图中是已经完成中文设置的显示效果,读者第一次操作时可能显示的是全英文,仔细阅读文字说明即可,不用紧张。
到这里,重启WSL Ubuntu终端即可显示中文。但是,如果运行Linux GUI软件(譬如火狐或者谷歌浏览器),还是无法正常显示中文。按照接下来步骤安装中文字体,才能解决问题。

2)为系统安装中文字体
 sudo apt install fontconfigsudo cp -r /mnt/c/Windows/Fonts /usr/share/fonts/windowssudo apt-get install --reinstall ttf-mscorefonts-installer   sudo fc-cache -f -v

上述命令中:

  • 第1行:安装字体管理程序
  • 第2行:直接借用宿主操作系(即用来安装WSL的Windows11)自带的字体,复制一份到WSL的字体文件中,避免了满世界找字体的麻烦(:确实有不少文章推荐使用Linux专用字体并进行了详细说明,如果有时间和精力可以自行研究,可参见文献4)。
  • 第3行:安装微软TTF字体转换程序;安装过程中可能会出现如下菜单操作界面,按提示进行操作即可。
  • 第4行:刷新系统字体缓存

如果顺利完成以上步骤,恭喜你!此时应该能顺利使用Linux GUI程序,并且能正确显示中文(参见下图火狐窗口)。
特别说明】读者可以像使用Windows 11内置应用一样使用Linux GUI程序,因此体验很平滑。
在这里插入图片描述
不过,到此为止,仍然有一个问题,就是没有办法直接针对该Linux GUI输入中文。如果需要解决这个问题,可以继续下文的操作。

第4步:设置WSL Ubuntu系统的中文输入法(可选)

sudo locale-gen 
sudo apt install -y fcitx fcitx-googlepinyin
dbus-uuidgen > /var/lib/dbus/machine-id

说明:

  • 第1行:将生成所有本地化的配置的文件(即/usr/lib/locale/locale-archive),如果是WSL,可以直接执行,因为默认就只有如下几种本地配置,加上我们定义的中文区域设置,不会太耗时。
    在这里插入图片描述
  • 第2行:安装fctix输入法框架程序,以及谷歌的拼音输入法(注:为了图省事,直接用推荐的,其实也不错;喜欢折腾的可以再研究一下搜狗的Linux版);
  • 第3行:为防止后续某些浏览器使用出现“无法找到/var/lib/dbus/machine-id”错误,先提前生成一个;

接下来在“/etc/profile.d/”创建fcitx.sh脚本;此步骤对于Linux不熟悉的同学有点麻烦,请参考以下操作命令。

sudo apt install gnome-text-editor
cd /etc/profile.d
sudo gnome-text-editor fcitx.sh

注意:第2行中的“profile.d”是一个目录;
运行第3行之后,会启动GNome文本编辑器(图形界面的软件),编辑fcitx.sh脚本并保存。详细内容如下(可以直接复制):

#!/bin/bash
export QT_IM_MODULE=fcitx
export GTK_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export DefaultIMModule=fcitx#optional
fcitx-autostart &>/dev/null

为方便后续运行,直接设定脚本运行权限并运行;(备注:部分资料用的是source命令,但也有论坛上反馈说刷新无效)。

sudo chmod +x /etc/profile.d/fcitx.sh
/etc/profile.d/fcitx.sh

此时可以运行fcitx配置工具了,输入如下命令:

fcitx-config-gtk3

如果看到如下显示信息,有英文键盘(输入法)以及安装的中文输入法(Google拼音),则说明配置成功。如果看到此处的对话框中没有信息和可选项,建议先关闭终端并使用WSL命令退出Ubuntu,重新启动一次。

wsl --shutdown

在这里插入图片描述

后记

到此为止,按照本篇的各种设置步骤,应该能使用WSL进行日常的上网浏览了。如果需要使用一些特定的Linux GUI软件,则根据需要选择安装即可。

不过,默认情况下,WSL中浏览视频时播放声音无法听见。这个问题也有相关的网友进行了尝试,经过一番波折,也解决了。由于需要处理的步骤挺多,可能要专门写一篇帖子描述。

备注:我上网时用到的Astrill工具(VPN)有Linux客户端(图形界面),因此Linux下用火狐或者谷歌时,不会与公司VPN设置冲突。

参考资料

  1. How to install Linux on Windows with WSL
  2. 在适用于 Linux 的 Windows 子系统上运行 Linux GUI 应用
  3. 如何在基于 Ubuntu 的发行版上安装微软 TrueType 字体 | Linux 中国
  4. 如何在 Linux 中安装新字体 以及Linux安装中文字体

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/632376.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GoZero微服务个人探究之路(零)个人对微服务产生原因的思考,对前三篇的补充

为什么产生了微服务架构--必要性 这里我觉得看GoZero作者写的博文就可以有很好的体会 具体的&#xff0c;他画了这一张图&#xff08;以电商后台系统为例子&#xff09; 所以&#xff0c;我个人产生了如下思考 1.业务逻辑越来越复杂&#xff0c;层层嵌套&#xff0c;分解成微…

渗透测试(14)- HTTP协议解析

HTTP(HyperText Transfer Protocol)即 超文本传输协议 &#xff0c;是一种详细规定了浏览器和 服务器之间互相通信的规则&#xff0c;它是万维网交换信息的基础&#xff0c;它允许将 HTML( 超文本标 记语言 ) 文档从 Web 服务器传送到Web 浏览器&#xff0c;用于客户端和服务器…

十二、Qt 操作PDF文件(2)

一、在《十、Qt 操作PDF文件-CSDN博客》中我们用Poppler类库打开了PDF文件&#xff0c;并显示到窗体上&#xff0c;但只能显示一页&#xff0c;功能还没完善&#xff0c;在本章节中&#xff0c;加入了&#xff1a; 通过选择框选择PDF文件并打开&#xff0c;默认打开第一页。通…

实战 | 奇怪的万能密码

本文由掌控安全学院 - 杳若 投稿 前言 打的站点打多了&#xff0c;什么奇怪的问题都会发生 打点 开局一个登录框 用户枚举到账号爆破 测了一下&#xff0c;没发现admin的弱口令&#xff0c;但是发现存在用户枚举漏洞&#xff0c;因此准备跑一下账号 输入密码为123456 进行…

华清远见作业第三十天——网络编程(第五天)

思维导图&#xff1a; 使用selsect实现TCP客户端的并发 代码 #include<a.h> #define SER_PORT 8888 //服务器端口号 #define SER_IP "192.168.125.50" //服务器ip地址 #define CLI_PORT 6666 //客户端的端口号 #define CLI_I…

阿里云PolarDB开发者大会首度召开,让数据库开发像“搭积木”一样简单

1月17日&#xff0c;首届阿里云PolarDB开发者大会在京举办&#xff0c;中国首款自研云原生数据库PolarDB发布“三层分离”全新版本&#xff0c;基于智能决策实现查询性能10倍提升、节省50%成本。面向开发者&#xff0c;阿里云全新推出数据库场景体验馆、训练营等系列新举措&…

什么是ThreadLocal,有什么用?

文章目录 一、ThreadLocal是什么&#xff1f;二、作用常用应用场景总结 一、ThreadLocal是什么&#xff1f; ThreadLocal 是 Java 中的一个类&#xff0c;用于创建线程局部变量。线程局部变量是一种特殊的变量&#xff0c;每个线程都拥有自己独立的变量副本&#xff0c;互不影…

axios原理

文章目录 axios基本概念axios多种方式调用工具函数axios的拦截器如何实现&#xff1f;用的设计模式是哪种&#xff1f;axios如何实现取消请求&#xff0c;和cancelToken如何使用 axios基本概念 axios是目前比较流行的一个js库&#xff0c;是一个基于promise的网络数据请求库&am…

C++ 并发编程 | 进程与线程

一、进程与线程 1、进程 1.1、定义 操作系统中最核心的概念就是进程&#xff0c;进程是对正在运行中的程序的一个抽象&#xff0c;是系统进行资源分配和调度的基本单位。进程是一种抽象的概念&#xff0c;一般由程序、数据集合和进程控制块三部分组成&#xff0c;如下&#x…

乐观锁与悲观锁:高并发场景下的选择

&#x1f604; 19年之后由于某些原因断更了三年&#xff0c;23年重新扬帆起航&#xff0c;推出更多优质博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Mi…

实战纪实 | 记一次攻防演练

看到一处登录后台&#xff0c;各种操作都尝试过无果&#xff0c;翻了一下js,看到一处文件上传接口泄露&#xff08;没图了&#xff0c;已经整改了&#xff09; 构造上传数据包&#xff0c;很nice,上传成功 直接连接webshell&#xff0c;搭建隧道进行内网穿透 翻看配置文件&…

python两数之和

给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回…

笙默考试管理系统---countop

笙默考试管理系统---countop 目录 笙默考试管理系统---countop 一、 笙默考试管理系统-MyExamTest----countop 二、 笙默考试管理系统-MyExamTest----countop 三、 笙默考试管理系统-MyExamTest----countop 四、 笙默考试管理系统-MyExamTest----countop 五、 笙默…

TCP 拥塞控制对数据延迟的影响

哈喽大家好&#xff0c;我是咸鱼 今天分享一篇文章&#xff0c;是关于 TCP 拥塞控制对数据延迟产生的影响的。作者在服务延迟变高之后进行抓包分析&#xff0c;结果发现时间花在了 TCP 本身的机制上面&#xff1a;客户端并不是将请求一股脑发送给服务端&#xff0c;而是只发送…

【开源】基于JAVA语言的河南软件客服系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统管理人员2.2 业务操作人员 三、系统展示四、核心代码4.1 查询客户4.2 新增客户跟进情况4.3 查询客户历史4.4 新增服务派单4.5 新增客户服务费 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的河…

字符串不可变性以及StringBuilder和StringBuffer在字符串拼接中的作用和扩容机制

java字符串的不可变性 在jdk1.8及以前&#xff0c;字符串底层存储用的是一个字符&#xff08;char&#xff09;类型的数组&#xff0c;jdk1.9之后用的是整型中的字节型&#xff08;byte&#xff09;数组来存储字符串。以下下主要以jdk1.8为例子展开。 private final char value…

新能源汽车出海业务之报关

引言 在做中国新能源汽车出海业务的信息化建设过程&#xff0c;秉承着深入了解业务的原则&#xff0c;对业务全链路进行学习了解总结&#xff0c;本文是针对出口报关业务环节的一些个人积累总结&#xff0c;供与诸位交流学习。 业务概述 报关是指在国际贸易中&#xff0c;出口…

Day34 贪心算法 part03 1005. K 次取反后最大化的数组和 134. 加油站 135. 分发糖果

贪心算法 part03 1005. K 次取反后最大化的数组和 134. 加油站 135. 分发糖果 1005. K 次取反后最大化的数组和 思路 第一步&#xff0c;从前向后遍历&#xff0c;遇到负数将其变为正数&#xff0c;同时K–第二步&#xff1a;如果K还大于0&#xff0c;那么反复转变数值最小的…

Marin说PCB之关于1000 BASE-T1--ESD的处理知多少?

对于板子上的ESD器件想必大家做硬件或者是layout应该的不陌生吧&#xff0c;我们几乎遇到大部分板子上面的接口部分都会添加这个ESD器件&#xff0c;例如那些USB,MIPI接口&#xff0c;百兆/千兆-T1以太网连接器等。 其中T1连接器用的是罗森博格家的&#xff0c;在这个链路中有一…

腾讯云轻量化应用服务器_轻量化应用服务器_轻量化私有云

腾讯云轻量应用服务器开箱即用、运维简单的轻量级云服务器&#xff0c;CPU内存带宽配置高并且价格特别便宜&#xff0c;大带宽&#xff0c;但是限制月流量&#xff0c;轻量2核2G3M带宽62元一年、2核2G4M优惠价118元一年&#xff0c;540元三年、2核4G5M带宽218元一年&#xff0c…