跳到主要内容
Windows 下使用 WSL2 创建 Ubuntu 子系统并配置图形桌面 | 极客日志
Shell / Bash
Windows 下使用 WSL2 创建 Ubuntu 子系统并配置图形桌面 在 Windows 环境下利用 WSL2 创建 Ubuntu 子系统的完整流程。主要步骤包括开启 Windows 虚拟化功能、安装 WSL2 及 Ubuntu 发行版、将系统镜像迁移至指定磁盘路径、配置 Xfce4 图形桌面并通过 Xrdp 进行远程连接。此外还涵盖了中文语言包与输入法设置、解决黑屏及弹窗授权问题、禁用冲突服务(WSLg/colord),以及使用 tmux 保持后台会话运行的方法。
Windows 下使用 WSL2 创建 Ubuntu 子系统(更改安装位置与启动图形桌面)
本文介绍如何使用 WSL2 创建 Ubuntu 子系统,并更改安装位置到其他磁盘,并启动图形桌面 Xfce4。
一、打开 Windows 的三个虚拟化基础功能
控制面板 - 程序和功能 - 启动或关闭 Windows 功能,勾选Hyper-v 、适用于 Linux 的 Windows 子系统 、虚拟机平台 完成后等待启动后根据提示重启电脑。
二、安装 WSL2 和 Ubuntu
1. 安装 WSL2
打开 PowerShell 输入 wsl --install,完成后显示 适用于 Linux 的 Windows 子系统已安装。,其他错误信息可以忽略。
输入 wsl.exe --update,进度条完成后即可。
wsl --install wsl.exe --update
可以直接下载 wsl 的离线安装包。
2. 安装 Ubuntu
打开 Microsoft Store 搜索 Ubuntu,选择合适的版本获取并安装。这里以 Ubuntu 22.04 LTS 为例。
安装完成后可以在开始菜单打开 Ubuntu,会弹出下列终端界面以及 wsl 的帮助界面。
第一次启动 Ubuntu 会提示输入用户名和密码,输入后显示下列界面,此时即可通过终端进行操作。
三、更改 Ubuntu 安装位置
1. 关闭 Ubuntu 系统
运行 PowerShell,输入 wsl --shutdown。再输入 wsl -l -v 查看 Ubuntu-22.04 的运行状态,STATE 为 Stopped 即说明已关闭。
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
在 powershell 中输入 ubuntu2204.exe config --default-user [YourUesrName],将新的 Ubuntu 系统默认用户设置为 [YourUesrName]。
ubuntu2204.exe config --default-user tdc
在开始菜单中搜索 Ubuntu 并运行,出现终端界面即为成功。
删除导出的镜像文件 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
sudo apt install ubuntu-desktop gnome -y
我这里出现 Setup 界面后会出现如下错误,无法启动。
方案 2:使用 xUbuntu-desktop(xfce4) 在 Ubuntu 终端中运行下列命令,等待安装完成。
sudo apt purge -y acpid acpi-support modemmanager
sudo apt-mark hold acpid acpi-support modemmanager
sudo 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 显示管理器。
在 Ubuntu 终端中运行下列命令,等待安装完成。
sudo adduser xrdp ssl-cert
配置端口号。编辑 /etc/xrdp/xrdp.ini 文件:
sudo nano /etc/xrdp/xrdp.ini
该文件内容如下,; 开头的为注释;将 port=3389 修改为需要的端口,并保存。
配置防火墙,此处的 3389 端口号与 /etc/xrdp/xrdp.ini 文件中的端口号保持一致。
编辑 /etc/xrdp/startwm.sh 文件
sudo nano /etc/xrdp/startwm.sh
#!/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
完成配置后重新启动 Xrdp,在 Ubuntu 终端中运行下列命令,等待启动完成。
sudo systemctl restart xrdp
安装 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/
sudo systemctl restart 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
2. 设置中文输入法 在 Ubuntu 终端中运行下列命令安装 fcitx 输入法与中文输入法包。
sudo apt install fcitx fcitx-googlepinyin
安装完成后,在启动项中添加 fcitx,并设置默认输入法为 fcitx。
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
一些问题 每次启动 Ubuntu 系统,都会弹出提示:需要授权来创建色彩管理设备。
在 Ubuntu 终端中运行下列命令,禁用 colord。
systemctl status colord
sudo systemctl stop colord
sudo systemctl disable colord
sudo systemctl mask colord
2. 部分 GUI 软件在 Windows 中打开
新版 WSL2 默认启用 WSLg,WSLg 允许在 Windows 中运行 GUI 软件,我们使用了 RDP 访问 Ubuntu 系统,因此不再需要 WSLg,因此需要禁用 WSLg。
在 PowerShell 中运行下列命令,修改 WSL 的配置文件。
wsl --shutdown notepad "$env:USERPROFILE\.wslconfig"
[wsl2]
guiApplications =false
运行 WSL 需要开启一个 Ubuntu 终端,一旦终端关闭,WSL 就会停止运行,RDP 也会断开连接。
可以使用 tmux 终端复用工具在单个终端窗口中创建持久化的会话,即使关闭终端,会话仍能在后台运行。
创建 tmux 会话:可以创建匿名会话或命名会话。命名会话可以方便管理会话,例如,可以创建多个会话,并分别运行不同的任务。
tmux
tmux new -s <会话名># 创建命名会话(推荐)
此时会进入名为 daemon 的会话,将该会话后台运行:先按 Ctrl+B,松开后再按 D。
此时关闭终端,会话 daemon 依然在后台运行,并且 WSL 仍然正常运行。
tmux attach -t <会话名># 重新连接指定会话
tmux ls # 查看所有会话列表
关闭会话:在会话内按 Ctrl+D;或者输入 exit。
一键部署脚本 (未经验证,谨慎使用)
1. Windows 端操作 以管理员权限打开 PowerShell,运行下列命令:(自行修改安装目录路径)
# 启用必要功能并重启
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 端操作 启动 wsl,在 Ubuntu 终端中运行下列命令:(自行修改使用的桌面环境 xubuntu-desktop/xfce4)
#!/bin/bash
sudo apt update && sudo apt upgrade -y
sudo apt install -y xfce4 xfce4-goodies
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'
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
sudo systemctl mask colord --now
sudo apt install -y tmux
tmux new -s xrdp-daemon -d "sudo /usr/sbin/xrdp"
其他相关参考 相关免费在线工具 Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
Base64 文件转换器 将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
Markdown转HTML 将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
HTML转Markdown 将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
JSON 压缩 通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
JSON美化和格式化 将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online