1. 为什么需要WSL2图形界面很多开发者习惯在Windows系统上工作但深度学习、机器学习等任务往往需要在Linux环境下运行。WSL2Windows Subsystem for Linux 2让我们可以在Windows上运行原生的Linux环境但默认只有命令行界面。当我们需要可视化训练过程、查看图片结果或者使用图形化开发工具时就需要为WSL2配置图形界面。我之前在训练图像分割模型时经常需要查看中间结果和最终输出。命令行虽然能完成大部分工作但每次都要把图片保存下来再用Windows图片查看器打开效率实在太低。后来尝试了多种方案发现Xrdp远程桌面是最稳定、最接近原生体验的解决方案。2. 环境准备与基础配置2.1 安装WSL2和Ubuntu如果你还没有安装WSL2可以按照以下步骤操作# 以管理员身份打开PowerShell wsl --install wsl --set-default-version 2安装完成后从Microsoft Store下载Ubuntu发行版。建议选择LTS版本如Ubuntu 20.04或22.04因为它们更稳定且长期支持。2.2 更新系统并安装必要组件启动Ubuntu后首先更新软件包列表并升级现有软件sudo apt update sudo apt upgrade -y接下来安装图形界面环境。我推荐使用Xfce4因为它轻量且稳定sudo apt install -y xfce4 xfce4-goodies这个安装过程大约需要5-10分钟取决于你的网络速度。安装完成后我们还需要一些额外组件sudo apt install -y dbus-x11 x11-apps3. 配置Xrdp远程桌面服务3.1 安装和配置XrdpXrdp是一个开源的远程桌面协议服务器它允许我们使用Windows自带的远程桌面连接工具访问WSL2的图形界面sudo apt install -y xrdp安装完成后需要配置Xrdp使用Xfce4桌面环境echo xfce4-session ~/.xsession3.2 启动Xrdp服务启动Xrdp服务并设置开机自启sudo service xrdp start sudo systemctl enable xrdp默认情况下Xrdp会监听3390端口。我们可以检查服务是否正常运行sudo service xrdp status如果看到active (running)字样说明服务已成功启动。4. 连接远程桌面4.1 从Windows连接在Windows上按WinR输入mstsc打开远程桌面连接然后输入localhost:3390点击连接后会看到Xrdp的登录界面。使用你的WSL2用户名和密码登录即可。4.2 解决常见连接问题有时候连接可能会失败这里分享几个我遇到过的坑端口冲突如果3390端口被占用可以修改Xrdp的监听端口sudo sed -i s/port3390/port3391/g /etc/xrdp/xrdp.ini sudo service xrdp restart认证失败确保你输入的是WSL2的用户名密码不是Windows的。黑屏问题如果连接后看到黑屏尝试重新创建.xsession文件echo xfce4-session ~/.xsession chmod x ~/.xsession5. 可视化训练结果5.1 配置Python可视化环境为了能在远程桌面中显示Matplotlib等库生成的图像需要配置正确的后端sudo apt install -y python3-tk然后在Python代码中设置正确的显示import matplotlib matplotlib.use(TkAgg) # 使用Tkinter作为后端 import matplotlib.pyplot as plt5.2 实际应用示例下面是一个简单的图像处理示例展示如何在远程桌面中查看结果import cv2 import numpy as np import matplotlib.pyplot as plt # 读取图像 img cv2.imread(input.jpg) # 转换为灰度图 gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 边缘检测 edges cv2.Canny(gray, 100, 200) # 显示结果 plt.figure(figsize(12, 4)) plt.subplot(131), plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)) plt.title(Original), plt.axis(off) plt.subplot(132), plt.imshow(gray, cmapgray) plt.title(Grayscale), plt.axis(off) plt.subplot(133), plt.imshow(edges, cmapgray) plt.title(Edge Detection), plt.axis(off) plt.show()运行这段代码后图像会直接在远程桌面中显示就像在本地运行一样。6. 性能优化与高级配置6.1 提高远程桌面响应速度默认设置下远程桌面的响应可能不够流畅。可以通过以下配置优化修改Xrdp配置sudo nano /etc/xrdp/xrdp.ini找到以下参数并修改max_bpp24 use_compressionyes优化Xfce4设置在远程桌面中打开设置管理器选择窗口管理器微调将合成器选项卡中的启用显示合成取消勾选6.2 多用户支持如果需要支持多个用户同时连接可以配置不同的端口sudo cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.bak sudo nano /etc/xrdp/xrdp.ini在文件末尾添加新的端口配置[xrdp1] nameUser2 liblibvnc.so usernameask passwordask ip127.0.0.1 port3391然后重启Xrdp服务sudo service xrdp restart7. 与VcXsrv方案的对比之前常用的VcXsrv方案需要额外安装软件且配置过程较为复杂。相比之下Xrdp方案有几个明显优势无需额外软件使用Windows自带的远程桌面客户端更稳定的连接不会出现VcXsrv常见的断开连接问题更好的性能特别是在高分辨率显示时多会话支持可以同时开启多个远程桌面会话不过Xrdp也有一些局限性比如3D加速支持不如VcXsrv。如果你的应用需要OpenGL加速可能需要考虑其他方案。8. 实际项目中的应用技巧在真实项目中我总结了几个实用技巧使用脚本自动化启动创建一个启动脚本自动配置环境并启动需要的服务#!/bin/bash sudo service xrdp start export DISPLAY:0 # 启动你的应用程序 python3 your_script.py远程调试配合PyCharm等IDE的远程调试功能可以在Windows上编写代码在WSL2中运行并调试结果直接显示在远程桌面中。文件共享虽然WSL2可以直接访问Windows文件系统但在远程桌面环境中建议使用scp或rsync在Windows和WSL2之间传输文件避免权限问题。备份配置定期备份你的.xsession和xrdp配置这样在系统重置或迁移时可以快速恢复。
WSL2结合Xrdp实现Ubuntu远程桌面与训练结果可视化
发布时间:2026/7/7 9:37:19
1. 为什么需要WSL2图形界面很多开发者习惯在Windows系统上工作但深度学习、机器学习等任务往往需要在Linux环境下运行。WSL2Windows Subsystem for Linux 2让我们可以在Windows上运行原生的Linux环境但默认只有命令行界面。当我们需要可视化训练过程、查看图片结果或者使用图形化开发工具时就需要为WSL2配置图形界面。我之前在训练图像分割模型时经常需要查看中间结果和最终输出。命令行虽然能完成大部分工作但每次都要把图片保存下来再用Windows图片查看器打开效率实在太低。后来尝试了多种方案发现Xrdp远程桌面是最稳定、最接近原生体验的解决方案。2. 环境准备与基础配置2.1 安装WSL2和Ubuntu如果你还没有安装WSL2可以按照以下步骤操作# 以管理员身份打开PowerShell wsl --install wsl --set-default-version 2安装完成后从Microsoft Store下载Ubuntu发行版。建议选择LTS版本如Ubuntu 20.04或22.04因为它们更稳定且长期支持。2.2 更新系统并安装必要组件启动Ubuntu后首先更新软件包列表并升级现有软件sudo apt update sudo apt upgrade -y接下来安装图形界面环境。我推荐使用Xfce4因为它轻量且稳定sudo apt install -y xfce4 xfce4-goodies这个安装过程大约需要5-10分钟取决于你的网络速度。安装完成后我们还需要一些额外组件sudo apt install -y dbus-x11 x11-apps3. 配置Xrdp远程桌面服务3.1 安装和配置XrdpXrdp是一个开源的远程桌面协议服务器它允许我们使用Windows自带的远程桌面连接工具访问WSL2的图形界面sudo apt install -y xrdp安装完成后需要配置Xrdp使用Xfce4桌面环境echo xfce4-session ~/.xsession3.2 启动Xrdp服务启动Xrdp服务并设置开机自启sudo service xrdp start sudo systemctl enable xrdp默认情况下Xrdp会监听3390端口。我们可以检查服务是否正常运行sudo service xrdp status如果看到active (running)字样说明服务已成功启动。4. 连接远程桌面4.1 从Windows连接在Windows上按WinR输入mstsc打开远程桌面连接然后输入localhost:3390点击连接后会看到Xrdp的登录界面。使用你的WSL2用户名和密码登录即可。4.2 解决常见连接问题有时候连接可能会失败这里分享几个我遇到过的坑端口冲突如果3390端口被占用可以修改Xrdp的监听端口sudo sed -i s/port3390/port3391/g /etc/xrdp/xrdp.ini sudo service xrdp restart认证失败确保你输入的是WSL2的用户名密码不是Windows的。黑屏问题如果连接后看到黑屏尝试重新创建.xsession文件echo xfce4-session ~/.xsession chmod x ~/.xsession5. 可视化训练结果5.1 配置Python可视化环境为了能在远程桌面中显示Matplotlib等库生成的图像需要配置正确的后端sudo apt install -y python3-tk然后在Python代码中设置正确的显示import matplotlib matplotlib.use(TkAgg) # 使用Tkinter作为后端 import matplotlib.pyplot as plt5.2 实际应用示例下面是一个简单的图像处理示例展示如何在远程桌面中查看结果import cv2 import numpy as np import matplotlib.pyplot as plt # 读取图像 img cv2.imread(input.jpg) # 转换为灰度图 gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 边缘检测 edges cv2.Canny(gray, 100, 200) # 显示结果 plt.figure(figsize(12, 4)) plt.subplot(131), plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)) plt.title(Original), plt.axis(off) plt.subplot(132), plt.imshow(gray, cmapgray) plt.title(Grayscale), plt.axis(off) plt.subplot(133), plt.imshow(edges, cmapgray) plt.title(Edge Detection), plt.axis(off) plt.show()运行这段代码后图像会直接在远程桌面中显示就像在本地运行一样。6. 性能优化与高级配置6.1 提高远程桌面响应速度默认设置下远程桌面的响应可能不够流畅。可以通过以下配置优化修改Xrdp配置sudo nano /etc/xrdp/xrdp.ini找到以下参数并修改max_bpp24 use_compressionyes优化Xfce4设置在远程桌面中打开设置管理器选择窗口管理器微调将合成器选项卡中的启用显示合成取消勾选6.2 多用户支持如果需要支持多个用户同时连接可以配置不同的端口sudo cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.bak sudo nano /etc/xrdp/xrdp.ini在文件末尾添加新的端口配置[xrdp1] nameUser2 liblibvnc.so usernameask passwordask ip127.0.0.1 port3391然后重启Xrdp服务sudo service xrdp restart7. 与VcXsrv方案的对比之前常用的VcXsrv方案需要额外安装软件且配置过程较为复杂。相比之下Xrdp方案有几个明显优势无需额外软件使用Windows自带的远程桌面客户端更稳定的连接不会出现VcXsrv常见的断开连接问题更好的性能特别是在高分辨率显示时多会话支持可以同时开启多个远程桌面会话不过Xrdp也有一些局限性比如3D加速支持不如VcXsrv。如果你的应用需要OpenGL加速可能需要考虑其他方案。8. 实际项目中的应用技巧在真实项目中我总结了几个实用技巧使用脚本自动化启动创建一个启动脚本自动配置环境并启动需要的服务#!/bin/bash sudo service xrdp start export DISPLAY:0 # 启动你的应用程序 python3 your_script.py远程调试配合PyCharm等IDE的远程调试功能可以在Windows上编写代码在WSL2中运行并调试结果直接显示在远程桌面中。文件共享虽然WSL2可以直接访问Windows文件系统但在远程桌面环境中建议使用scp或rsync在Windows和WSL2之间传输文件避免权限问题。备份配置定期备份你的.xsession和xrdp配置这样在系统重置或迁移时可以快速恢复。