Windows下使用WSL2创建Ubuntu子系统(更改安装位置与启动图形桌面)

本文介绍如何使用WSL2创建Ubuntu子系统,并更改安装位置到其他磁盘,并启动图形桌面Xfce4。

WSL 版本: 2.5.7.0
系统版本: Windows11 23H2
相关工具:MobaXterm 25.1
首次编辑:2025年6月19日

  • 一、打开Windows的三个虚拟化基础功能
  • 二、安装WSL2和Ubuntu
    • 1. 安装WSL2
    • 2. 安装Ubuntu
  • 三、更改Ubuntu安装位置
  • 四、配置图形桌面
    • 方案1:使用Ubuntu-desktop(失败)
    • 方案2:使用xUbuntu-desktop(xfce4)
  • 五、配置Xfce4桌面
    • 1.设置中文
    • 2.设置中文输入法
    • 一些问题
  • 一键部署脚本(未经验证,谨慎使用)
    • 1. Windows端操作
    • 2. Ubuntu端操作
  • 其他相关参考

一、打开Windows的三个虚拟化基础功能

控制面板-程序和功能-启动或关闭Windows功能,勾选Hyper-v适用于Linux的Windows子系统虚拟机平台完成后等待启动后根据提示重启电脑。

在这里插入图片描述
在这里插入图片描述

二、安装WSL2和Ubuntu

1. 安装WSL2

  1. 打开PowerShell输入wsl --install,完成后显示适用于 Linux 的 Windows 子系统已安装。,其他错误信息可以忽略。
  2. 输入wsl.exe --update,进度条完成后即可。
wsl --install
wsl.exe --update

可以直接下载wsl的离线安装包,地址如下https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

2. 安装Ubuntu

  1. 打开Microsoft Store搜索Ubuntu,选择合适的版本获取并安装。我这里安装的是Ubuntu 22.04 LTS

在这里插入图片描述
2. 安装完成后可以在开始菜单打开Ubuntu,会弹出下列终端界面以及wsl的帮助界面
在这里插入图片描述
在这里插入图片描述

  1. 第一次启动Ubuntu会提示输入用户名和密码,输入后显示下列界面,此时即可通过终端进行操作。
    在这里插入图片描述

三、更改Ubuntu安装位置

1. 关闭Ubuntu系统

运行PowerShell,输入wsl --shutdown。再输入wsl -l -v查看Ubuntu-22.04的运行状态,STATEStopped即说明已关闭。

wsl --shutdown
wsl -l -v

2. 创建目录。

在合适的磁盘上创建一个目录,例如E盘的E:\Ubuntu2204

3. 导出镜像。

在PowerShell中输入下列命令,将Ubuntu导出到指定目录,并等待操作完成。

wsl --export Ubuntu-22.04 E:\Ubuntu2204.tar

4. 注销原系统。

在wsl中注销原有的Ubuntu系统,powershell中输入wsl --unregister Ubuntu-22.04。完成后输入wsl -l -v查看,提示适用于 Linux 的 Windows 子系统没有已安装的分发。即为卸载成功。

wsl --unregister Ubuntu-22.04
wsl -l -v

5. 导入镜像。

在powershell中输入wsl --import Ubuntu-22.04 E:\Ubuntu2204 E:\Ubuntu2204.tar,将之前导出的镜像导入到新的Ubuntu系统。在powershell中输入wsl -l -v查看,出现Ubuntu-22.04的NAME即为导入成功。

wsl --import Ubuntu-22.04 E:\Ubuntu2204 E:\Ubuntu2204.tar
wsl -l -v

6. 更改默认用户。

在powershell中输入ubuntu2204.exe config --default-user [YourUesrName],将新的Ubuntu系统默认用户设置为[YourUesrName]

如更改默认用户为tdc,则输入下列命令:

ubuntu2204.exe config --default-user tdc

7. 启动Ubuntu子系统。

在开始菜单中搜索Ubuntu并运行,出现终端界面即为成功。

8. 删除文件。

删除导出的镜像文件E:\Ubuntu2204.tar

Tips: 可以通过上述方法备份和恢复Ubuntu系统

Tips: 在Windows的资源管理器中,按住Shift键,右键空白处或者文件夹,即可选择在此处打开 Linux shell,从而实现快速启动Ubuntu子系统并切换终端目录。

Tips: 在Windows的资源管理器中,输入 \\wsl$ 即可访问Ubuntu的文件系统,该系统是通过网络接口访问的,可右键该文件夹并选择 映射网络驱动器 将其映射为带有盘符的目录,从而实现快速访问Ubuntu文件

四、配置图形桌面

更新软件

在Ubuntu终端中运行sudo apt update && sudo apt upgrade -y,等待更新完成。

方案1:使用Ubuntu-desktop(失败)

在Ubuntu终端中运行下列命令,等待安装完成。

sudo apt purge -y acpid acpi-support modemmanager
sudo apt-mark hold acpid acpi-support modemmanager
sudp apt install ubuntu-desktop gnome -y

我这里出现Setup界面后会出现如下错误,无法启动。

在这里插入图片描述
在这里插入图片描述

方案2:使用xUbuntu-desktop(xfce4)

1. 安装Xubuntu-desktop

在Ubuntu终端中运行下列命令,等待安装完成。

sudo apt purge -y acpid acpi-support modemmanager
sudo apt-mark hold acpid acpi-support modemmanager
sudo apt install -y xubuntu-desktop

也可以安装更为精简的xfce4xfce4-goodies

sudo apt install -y xfce4 xfce4-goodies

xubuntu-desktop相比于xfce4,xubuntu-desktop会安装更多的软件,如Firefox(浏览器)、gmusicbrowser(音频)、Parole(视频)、Ristretto(照片管理)、Abiword/Gnumeric(办公)等。

在开始安装时,会弹出下列设置,这里选择轻量化的Lightdm显示管理器。
在这里插入图片描述

2. 安装Xrdp

在Ubuntu终端中运行下列命令,等待安装完成。

sudo apt install -y xrdp

3. 配置Xrdp

添加xrdp用户

sudo adduser xrdp ssl-cert

配置端口号。编辑/etc/xrdp/xrdp.ini文件:

sudo nano /etc/xrdp/xrdp.ini

该文件内容如下,;开头的为注释;将port=3389修改为需要的端口,并保存。

; Examples:
;   port=3389
;   port=unix://./tmp/xrdp.socket
;   port=tcp://.:3389                           127.0.0.1:3389
;   port=tcp://:3389                            *:3389
;   port=tcp://<any ipv4 format addr>:3389      192.168.1.1:3389
;   port=tcp6://.:3389                          ::1:3389
;   port=tcp6://:3389                           *:3389
;   port=tcp6://{<any ipv6 format addr>}:3389   {FC00:0:0:0:0:0:0:1}:3389
;   port=vsock://<cid>:<port>
port=3389; 'port' above should be connected to with vsock instead of tcp
; use this only with number alone in port above

配置防火墙,此处的3389端口号与/etc/xrdp/xrdp.ini文件中的端口号保持一致。

sudo ufw allow 3389

编辑/etc/xrdp/startwm.sh文件

sudo nano /etc/xrdp/startwm.sh

将其内容替换为下列内容:

#!/bin/sh
unset DBUS_SESSION_BESSION_ADDRESS
unset XDG_RUNTIME_DIR
export XDG_CACHE_HOME="$HOME/.cache"
export XDG_CONFIG_HOME="$HOME/.config"
mkdir -p "$XDG_CACHE_HOME" "$XDG_CONFIG_HOME"
xfce4-session

完成配置后重新启动Xrdp,在Ubuntu终端中运行下列命令,等待启动完成。

sudo systemctl restart xrdp

4.黑屏问题

安装mesa并将其添加到Xrdp的启动脚本/etc/xrdp/startwm.sh中。

sudo apt install libgl1-mesa-glx
sudo nano /etc/xrdp/startwm.sh

添加以下内容:

export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/mesa/

重新启动Xrdp:

sudo systemctl restart xrdp

6. 连接Xrdp

使用Windows的远程桌面连接连接到Ubuntu系统,设置目标为localhost:33893389为上述设置的端口号。

在这里插入图片描述

输入用户名和密码即可登录到桌面:

在这里插入图片描述

五、配置Xfce4桌面

1.设置中文

在Ubuntu终端中运行下列命令选择语音和编码。

sudo dpkg-reconfigure locales

第一个界面划到最下面按下Space勾选zh_CN.UTF-8 UTF-8,按Enter确定,第二个界面选择zh_CN.UTF-8,按Enter确定。

在这里插入图片描述
在这里插入图片描述

在Ubuntu终端中运行下列命令安装语言字体包。

sudo apt-get install fonts-arphic-bsmi00lp fonts-arphic-gbsn00lp

安装完成后,重启Ubuntu系统。

在这里插入图片描述

2.设置中文输入法

在Ubuntu终端中运行下列命令安装fcitx输入法与中文输入法包。

sudo apt install fcitx fcitx-googlepinyin

安装完成后,在启动项中添加fcitx,并设置默认输入法为fcitx

在这里插入图片描述
配置.bashrc文件

sudo nano ~/.bashrc 

添加以下内容:

export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx

启动输入法

fcitx

一些问题

1.弹出提示:需要授权来创建色彩管理设备

每次启动Ubuntu系统,都会弹出提示:需要授权来创建色彩管理设备。
在Ubuntu终端中运行下列命令,禁用colord

systemctl status colord          # 检查是否仍在运行
sudo systemctl stop colord       # 强制停止
sudo systemctl disable colord    # 禁用开机自启
sudo systemctl mask colord       # 彻底屏蔽(防止被其他服务依赖启动):cite[2]

在这里插入图片描述

2.部分GUI软件在Windows中打开

新版WSL2默认启用WSLg,WSLg允许在Windows中运行GUI软件,我们使用了RDP访问Ubuntu系统,因此不再需要WSLg,因此需要禁用WSLg。

在这里插入图片描述

在PowerShell中运行下列命令,修改WSL的配置文件。

wsl --shutdown
notepad "$env:USERPROFILE\.wslconfig"

添加下列内容并保存:

[wsl2]
guiApplications=false

随后重启几次WSL即可正常。

3.后台运行WSL

运行WSL需要开启一个Ubuntu终端,一旦终端关闭,WSL就会停止运行,RDP也会断开连接。

可以使用tmux终端复用工具在单个终端窗口中创建持久化的会话,即使关闭终端,会话仍能在后台运行。

安装tmux终端复用工具:

sudo apt install tmux

创建tmux会话:可以创建匿名会话或命名会话。命名会话可以方便管理会话,例如,可以创建多个会话,并分别运行不同的任务。

tmux                     # 创建匿名会话
tmux new -s <会话名>      # 创建命名会话(推荐)

如:创建命名会话daemon:

tmux new -s daemon

在这里插入图片描述

此时会进入名为daemon的会话,将该会话后台运行:先按Ctrl+B,松开后再按D

此时关闭终端,会话daemon依然在后台运行,并且WSL仍然正常运行。

重新连接会话:

tmux attach -t <会话名>   # 重新连接指定会话
tmux ls                  # 查看所有会话列表

如:重新连接会话daemon

tmux attach -t daemon

关闭会话:在会话内按Ctrl+D;或者输入exit

一键部署脚本(未经验证,谨慎使用)

1. Windows端操作

下列脚本由 AI 自动生成,未经测试,请谨慎使用!

以管理员权限打开PowerShell,运行下列命令:(自行修改安装目录路径)


# 该脚本由 AI 自动生成,未经测试,请谨慎使用!# 启用必要功能并重启
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux, VirtualMachinePlatform -NoRestart
wsl --install
wsl --set-default-version 2
Restart-Computer -Force# 重启后继续执行
$ubuntuDir = "E:\Ubuntu2204"
mkdir $ubuntuDir
wsl --install -d Ubuntu-22.04
wsl --shutdown
wsl --export Ubuntu-22.04 "$ubuntuDir\Ubuntu2204.tar"
wsl --unregister Ubuntu-22.04
wsl --import Ubuntu-22.04 $ubuntuDir "$ubuntuDir\Ubuntu2204.tar" --version 2
ubuntu2204.exe config --default-user $env:USERNAME
Remove-Item "$ubuntuDir\Ubuntu2204.tar"# 禁用 WSLg 避免 GUI 冲突
echo "[wsl2]`nguiApplications=false" | Out-File "$env:USERPROFILE\.wslconfig" -Encoding ASCII

2. Ubuntu端操作

下列脚本由 AI 自动生成,未经测试,请谨慎使用!

启动wsl,在Ubuntu终端中运行下列命令:(自行修改使用的桌面环境xubuntu-desktop/xfce4)

#!/bin/bash# 该脚本由 AI 自动生成,未经测试,请谨慎使用!# 更新系统并安装 Xfce4 + xrdp
sudo apt update && sudo apt upgrade -y# 使用xubuntu-desktop:
# sudo apt purge -y acpid acpi-support modemmanager
# sudo apt-mark hold acpid acpi-support modemmanager
# sudo apt install -y xubuntu-desktop# 使用xfce4
sudo apt install -y xfce4 xfce4-goodies# 安装配置 xrdp
sudo apt install -y xrdp
sudo adduser xrdp ssl-cert
sudo sed -i 's/port=3389/port=3390/g' /etc/xrdp/xrdp.ini
sudo ufw allow 3390# 修复黑屏问题
sudo apt install -y libgl1-mesa-glx
echo "export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/mesa/" | sudo tee -a /etc/xrdp/startwm.sh
sudo tee /etc/xrdp/startwm.sh > /dev/null <<'EOF'
#!/bin/sh
unset DBUS_SESSION_BUS_ADDRESS
unset XDG_RUNTIME_DIR
export XDG_CACHE_HOME="$HOME/.cache"
export XDG_CONFIG_HOME="$HOME/.config"
mkdir -p "$XDG_CACHE_HOME" "$XDG_CONFIG_HOME"
xfce4-session
EOF
sudo chmod +x /etc/xrdp/startwm.sh
sudo systemctl restart xrdp# 设置中文环境
sudo apt install -y locales fonts-arphic-* 
sudo locale-gen zh_CN.UTF-8
sudo update-locale LANG=zh_CN.UTF-8# 安装中文输入法
sudo apt install -y fcitx fcitx-googlepinyin
echo "export GTK_IM_MODULE=fcitx" >> ~/.bashrc
echo "export QT_IM_MODULE=fcitx" >> ~/.bashrc
echo "export XMODIFIERS=@im=fcitx" >> ~/.bashrc# 禁用 colord 服务
sudo systemctl mask colord --now# 安装 tmux 保持后台运行
sudo apt install -y tmux
tmux new -s xrdp-daemon -d "sudo /usr/sbin/xrdp"

其他相关参考

  1. WSL2中使用USB设备

  2. WSL2中使用VSCode

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

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

相关文章

时间泄漏 TemporalLeakage

时间泄漏 TemporalLeakage: 就是后续有事件发生&#xff0c;然后才有了这个结果&#xff0c;但是在该事件发生之前&#xff0c;不应该预测该结果。 Temporal Leakage 问题是往往导致纵向Planning不“果断”。 解决方案&#xff1a;人工标注出时间发生的时刻 真值只监督时间发生…

独立书店数字化转型:绝版书修复档案系统与读者阅读行为分析营销平台

在电商冲击与阅读习惯变迁的双重压力下&#xff0c;独立书店正遭遇 “旧书修复难、新书卖不动” 的生存困境。传统模式中&#xff0c;绝版书修复依赖老师傅经验&#xff0c;单本修复周期长达 2 周&#xff0c;损耗率超 30%&#xff1b;营销缺乏数据支撑&#xff0c;导致客流年均…

const修饰指针用法详解

目录 一、const修饰变量 绕过const限制的问题 二、const修饰指针变量 1、无const修饰的指针 2、const放在*左边 3、const放在*右边 4、*两边都有const 三、使用建议 四、记忆技巧 一、const修饰变量 在C语言中&#xff0c;变量默认是可修改的。如果我们希望某个变量不能…

pcl法线估计的踩坑

1&#xff0c;normalestimation对点云法线的评估&#xff0c;只输出法线向量&#xff0c;并不输出xyz值。如果输出类型是pointnormal&#xff0c;那么这点云的法向量有值&#xff0c;xyz值都是02&#xff0c;添加点云xyz数据。可以使用 pcl::concatenatefields(*a,*b,*c)函数p…

利用Minicsv库解析csv文件的c程序及读入测试

上午的c程序写入xlsx较快但不正确&#xff0c;python程序虽正确但过慢。所以找了一个全部源程序加起来不到4K字节的C语言csv解析库Minicsv&#xff0c;来改写&#xff0c;改写结果如下&#xff1a; #include <stdio.h> #include <stdlib.h> #include <string.h…

企微用户部门同步HRS系统

企微用户导入HR系统流程说明 概述 本文档详细说明了WechatUserImportServiceImpl.importWechatUsersToHrs()方法的业务流程和实现逻辑。该方法负责将企业微信用户数据同步导入到HR管理系统中&#xff0c;包括员工信息、工作信息和任职记录的创建与更新。 主要功能 数据同步…

告别传统SEO!拥抱下一代流量密码:生成式引擎优化(GEO)实战指南

前言&#xff1a;为什么你的“最佳实践”SEO正在失效&#xff1f;你是否发现&#xff0c;即使严格遵循了谷歌自2019年以来的所有“最佳实践”&#xff0c;你的技术博客或产品文档的流量依旧增长乏力&#xff0c;甚至不升反降&#xff1f;你不是一个人。问题在于&#xff0c;游戏…

week1-[一维数组]传送

week1-[一维数组]传送 题目描述 有 nnn 个传送门&#xff0c;从第 iii 个传送门进去后会被传送到第 aia_iai​ 个传送门&#xff0c;进而被传送到第 aaia_{a_i}aai​​ 个传送门&#xff0c;如此一直下去……小 A 想知道从第 kkk 个传送门进去后&#xff0c;能不能回到第 kkk 个…

【18】目心智能——目心智能 嵌入式一面 ,校招,面试问答记录

目心智能——目心智能 嵌入式一面 &#xff0c;校招&#xff0c;面试问答记录 1 简单自我介绍2 你做了这么多算法&#xff0c;为什么不找算法的&#xff1f;3 我们主要还是软件开发&#xff0c;不做结构设计4 模电知识6 CSDN应该附链接在简历上&#xff0c;稍后发给我&#xff…

C++第二十课:快递运费计算器 / 黑白配+石头剪刀布小游戏

快递运费计算器帮一家快递站点开发一个快递运费计算器&#xff0c;快递站点人员只需要输入包裹重量和地点编号即可计算出对应的运费。假设快递费计算规则如下&#xff1a;首重&#xff1a;3公斤 3公斤以内&#xff1a;1.东三省/宁夏/青海/海南&#xff1a;12元&#xff0c;2.新…

网络安全蓝队常用工具全景与实战指南

摘要 在现代信息系统的安全防护中&#xff0c;蓝队承担着防御、检测、响应和持续改进的核心职责。要实现高效、可持续的防御能力&#xff0c;蓝队需要一整套成熟、可靠的工具集来进行威胁情报收集、日志分析、入侵检测、漏洞评估、端点防护、网络流量监控、事件响应与取证等工作…

基于 Flink 的淘宝实时数据管道设计:商品详情流式处理与异构存储

引言在电子商务领域&#xff0c;实时数据处理能力已成为企业核心竞争力的重要组成部分。淘宝作为中国领先的电商平台&#xff0c;每天产生海量的商品数据&#xff0c;这些数据需要被实时处理、分析并分发到各种存储系统中&#xff0c;以支持搜索、推荐、库存管理等关键业务。本…

面试题:【多线程问题,三个线程A,B,C;C线程依赖B线程的结果执行,怎么控制】

在 Java 中&#xff0c;若需要控制线程间的依赖关系&#xff08;如 C 线程依赖 B 线程的结果&#xff09;&#xff0c;可以通过以下几种方式实现&#xff1a; 方案 1&#xff1a;使用 CountDownLatch CountDownLatch 是一个同步工具类&#xff0c;允许一个或多个线程等待其他线…

React useMemo 深度指南:原理、误区、实战与 2025 最佳实践

把“为什么用、怎么用、用错了怎么办”一次讲透&#xff0c;附 React 19 自动优化前瞻。一、useMemo 是什么&#xff1f; 一句话&#xff1a; useMemo 记住&#xff08;缓存&#xff09;昂贵计算结果&#xff0c;只在依赖变化时重新计算。 const memoValue useMemo(() > {…

[ HTML 前端 ] 语法介绍和HBuilderX安装

目录 一. HTML 1.概述 2. 安装前端开发工具 (1)HBuilderX下载 (2)创建html项目和使用 3. HTML基础 1.标签 (1).标签定义: (2).标签结构: (3).标签属性: 2.常用标签: 3.特殊符号: 4.表格(table) (1)基本标签: (2)基本结构: (3)表格属性: 5.表单(form) (1). 表单概述…

Spring Cloud系列—Alibaba Sentinel熔断降级

上篇文章&#xff1a; Spring Cloud系列— Alibaba Sentinel限流https://blog.csdn.net/sniper_fandc/article/details/149944260?fromshareblogdetail&sharetypeblogdetail&sharerId149944260&sharereferPC&sharesourcesniper_fandc&sharefromfrom_link…

Spring Boot 使用 @NotBlank + @Validated 优雅校验参数

在日常开发中&#xff0c;我们常用 if (isBlank(...)) 来判断参数是否为空&#xff0c;但这种方式不仅繁琐&#xff0c;而且容易遗漏。 Spring 生态中推荐使用 JSR-303 校验注解&#xff08;NotBlank、NotNull 等&#xff09;配合 Validated 实现自动校验&#xff0c;大幅减少手…

网络安全(Java语言)简单脚本汇总 (一)

文章目录敏感信息探测脚本源代码思路URL批量存活探测器源代码思路端口扫描器源代码思路 敏感信息探测脚本 源代码/*** description 该脚本通过分析HTTP响应头&#xff0c;来检测可能暴露服务器信息的安全隐患*/import java.io.IOException; import java.net.HttpURLConnection;…

buuctf_NSBlogin_http_upload(极客2019+ACTF2020新生赛)

今天做三1个web 题目&#xff1a;NSB_login用户名有admin&#xff0c;看源码&#xff1a;I like rockyou&#xff01;今天学习到&#xff0c;kali里面有密码爆破的文件叫rockyou.txt&#xff08;/usr/share/wordlists/&#xff09;&#xff08;没kali也可以去https://gitcode.c…

IDEA如何引用brew安装的openjdk

因为 brew 安装的 openjdk@21 目录结构和 IDEA 期望的 JDK 目录不一样。所以默认brew安装的jdk,在IDEA中是无法识别到的。 一、创建软连接 sudo mkdir -p /Library/Java/JavaVirtualMachines sudo ln -sfn /usr/local/opt/openjdk@21/libexec/openjdk.jdk /Library/Java/Java…