Windows下使用WSL2创建Ubuntu子系统(更改安装位置与启动图形桌面)_wsl ubuntu安装桌面
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
- 打开PowerShell输入
wsl --install
,完成后显示适用于 Linux 的 Windows 子系统已安装。
,其他错误信息可以忽略。 - 输入
wsl.exe --update
,进度条完成后即可。
wsl --installwsl.exe --update
可以直接下载wsl的离线安装包,地址如下https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
2. 安装Ubuntu
- 打开Microsoft Store搜索Ubuntu,选择合适的版本获取并安装。我这里安装的是Ubuntu 22.04 LTS
2. 安装完成后可以在开始菜单打开Ubuntu,会弹出下列终端界面以及wsl的帮助界面
- 第一次启动Ubuntu会提示输入用户名和密码,输入后显示下列界面,此时即可通过终端进行操作。
三、更改Ubuntu安装位置
1. 关闭Ubuntu系统
运行PowerShell,输入wsl --shutdown
。再输入wsl -l -v
查看Ubuntu-22.04
的运行状态,STATE
为Stopped
即说明已关闭。
wsl --shutdownwsl -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.04wsl -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.tarwsl -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 modemmanagersudo apt-mark hold acpid acpi-support modemmanagersudp apt install ubuntu-desktop gnome -y
我这里出现Setup界面后会出现如下错误,无法启动。
方案2:使用xUbuntu-desktop(xfce4)
1. 安装Xubuntu-desktop
在Ubuntu终端中运行下列命令,等待安装完成。
sudo apt purge -y acpid acpi-support modemmanagersudo apt-mark hold acpid acpi-support modemmanagersudo apt install -y xubuntu-desktop
也可以安装更为精简的xfce4
和xfce4-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/shunset DBUS_SESSION_BESSION_ADDRESSunset XDG_RUNTIME_DIRexport 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-glxsudo 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:3389
,3389
为上述设置的端口号。
输入用户名和密码即可登录到桌面:
五、配置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=fcitxexport QT_IM_MODULE=fcitxexport 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 --shutdownnotepad \"$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 -NoRestartwsl --installwsl --set-default-version 2Restart-Computer -Force# 重启后继续执行$ubuntuDir = \"E:\\Ubuntu2204\"mkdir $ubuntuDirwsl --install -d Ubuntu-22.04wsl --shutdownwsl --export Ubuntu-22.04 \"$ubuntuDir\\Ubuntu2204.tar\"wsl --unregister Ubuntu-22.04wsl --import Ubuntu-22.04 $ubuntuDir \"$ubuntuDir\\Ubuntu2204.tar\" --version 2ubuntu2204.exe config --default-user $env:USERNAMERemove-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 + xrdpsudo 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# 使用xfce4sudo apt install -y xfce4 xfce4-goodies# 安装配置 xrdpsudo apt install -y xrdpsudo adduser xrdp ssl-certsudo sed -i \'s/port=3389/port=3390/g\' /etc/xrdp/xrdp.inisudo ufw allow 3390# 修复黑屏问题sudo apt install -y libgl1-mesa-glxecho \"export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/mesa/\" | sudo tee -a /etc/xrdp/startwm.shsudo tee /etc/xrdp/startwm.sh > /dev/null <<\'EOF\'#!/bin/shunset DBUS_SESSION_BUS_ADDRESSunset XDG_RUNTIME_DIRexport XDG_CACHE_HOME=\"$HOME/.cache\"export XDG_CONFIG_HOME=\"$HOME/.config\"mkdir -p \"$XDG_CACHE_HOME\" \"$XDG_CONFIG_HOME\"xfce4-sessionEOFsudo chmod +x /etc/xrdp/startwm.shsudo systemctl restart xrdp# 设置中文环境sudo apt install -y locales fonts-arphic-* sudo locale-gen zh_CN.UTF-8sudo update-locale LANG=zh_CN.UTF-8# 安装中文输入法sudo apt install -y fcitx fcitx-googlepinyinecho \"export GTK_IM_MODULE=fcitx\" >> ~/.bashrcecho \"export QT_IM_MODULE=fcitx\" >> ~/.bashrcecho \"export XMODIFIERS=@im=fcitx\" >> ~/.bashrc# 禁用 colord 服务sudo systemctl mask colord --now# 安装 tmux 保持后台运行sudo apt install -y tmuxtmux new -s xrdp-daemon -d \"sudo /usr/sbin/xrdp\"
其他相关参考
-
WSL2中使用USB设备
-
WSL2中使用VSCode