WSL(Windows Subsystem for Linux)是一个为Windows用户设计的兼容层,它允许用户在Windows10和Windows11操作系统上直接运行GNU/Linux环境。WSL提供了一个微软开发的Linux兼容内核接口,使得用户可以在不启动虚拟机或使用双重启动设置的情况下,在Windows上运行大多数命令行工具、实用程序、应用程序以及服务。
尽管WSL2并不提供图形用户界面(GUI)支持,但可以通过一些方法间接实现图形界面的使用。例如,可以使用[远程桌面协议]RDP工具如[xrdp]在Windows上显示WSL的图形界面。用户可以在WSL中安装远程桌面服务器,然后在Windows上通过远程桌面客户端连接,从而在Windows桌面上显示WSL的图形界面
本文演示在Windows 11上使用WSL2安装Ubuntu 24.04并配置图形界面
1、前置条件
WSL2需要虚拟化支持,需要开启虚拟机平台。
前置条件: 1、确保windows机器是支持虚拟化并且在BIOS中开启虚拟化技术
2、确保Windows版本支持WSL2,并已启用WSL功能。
在BIOS中开启虚拟化
如果您的机器支持虚拟化,但未在系统中启用,则需要在BIOS中开启。以下步骤可能因不同主板和制造商而异:
重启计算机: 在计算机启动时,通常会显示一个提示,告诉你按哪个键进入BIOS或设置(常见的按键有 F2、F10、Del 或 Esc)。 进入BIOS/UEFI设置: 使用上述提示中的按键进入BIOS或UEFI设置界面。 查找虚拟化设置: 在BIOS/UEFI设置中,查找与虚拟化相关的设置。这通常位于“高级”、“处理器设置”或“芯片组”部分,并且可能被命名为“Intel Virtualization Technology”(Intel VT)、“AMD-V”或“Virtualization”。 启用虚拟化: 确保虚拟化选项设置为“Enabled”或“On”。 保存并退出: 保存更改并退出BIOS/UEFI设置。通常需要按 F10 并确认保存。 重启计算机: 计算机将重启,以使更改生效。请注意,BIOS/UEFI界面和选项可能会根据您的硬件和制造商而有所不同。如果在BIOS中找不到这些选项,可能是因为您的系统已经默认启用了虚拟化,或者您的系统不支持虚拟化。如果不确定如何操作,建议参考您主板或计算机的官方手册。
检查是否支持虚拟化
使用系统信息工具:
按下Windows
键,输入 msinfo32
,然后按 Enter
。在“系统摘要”中,查找“处理器”部分,看是否有“虚拟化”这一项,并且其状态为“已启用”。 使用命令提示符:
打开命令提示符(cmd)。
输入以下命令 systeminfo
并按Enter
查找“虚拟化”相关的信息。如果“虚拟化:已启用”表示您的CPU支持虚拟化。
2、开启windows虚拟化功能并启用WSL2
方法1:窗口操作
打开控制面板-程序-启用或关闭windows功能,勾选下面两项。
方法2:命令操作
以管理员身份打开 PowerShell 或 Windows 命令提示符(cmd)
在Windows上启用WSL功能,输入以下命令并按回车键:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
在Windows上启用虚拟化机平台功能,输入以下命令并按回车键:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
打开 CMD(管理员)并运行以下命令来启用WSL 功能:
#安装wsl,默认是安装好的wsl --install#查看支持内核版本 wsl版本是2.xwsl -vWSL 版本: 2.1.5.0内核版本: 5.15.146.1-2WSLg 版本: 1.0.60MSRDC 版本: 1.2.5105Direct3D 版本: 1.611.1-81528511DXCore 版本: 10.0.25131.1002-220531-1700.rs-onecore-base2-hypWindows 版本: 10.0.22631.3958#升级下子系统wsl --update正在检查更新。正在将适用于 Linux 的 Windows 子系统更新到版本: 2.2.4。#查看支持内核版本 wsl版本是2.xwsl -vWSL 版本: 2.2.4.0内核版本: 5.15.153.1-2WSLg 版本: 1.0.61MSRDC 版本: 1.2.5326Direct3D 版本: 1.611.1-81528511DXCore 版本: 10.0.26091.1-240325-1447.ge-releaseWindows 版本: 10.0.22631.3958#如果wsl不是2.x, 将WSL2设置为默认版本wsl --set-default-version 2
3、安装Ubuntu24.04
如果你通过windows商店安装Ubuntu,那么安装的版本是22.04版本,下面我们通过命令行来安装。
#查看可安装的linux版本
wsl --list --online
以下是可安装的有效分发的列表。
使用 ‘wsl.exe --install ’ 安装。
NAME FRIENDLY NAME
Ubuntu Ubuntu
Debian Debian GNU/Linux
kali-linux Kali Linux Rolling
Ubuntu-18.04 Ubuntu 18.04 LTS
Ubuntu-20.04 Ubuntu 20.04 LTS
Ubuntu-22.04 Ubuntu 22.04 LTS
Ubuntu-24.04 Ubuntu 24.04 LTS
OracleLinux_7_9 Oracle Linux 7.9
OracleLinux_8_7 Oracle Linux 8.7
OracleLinux_9_1 Oracle Linux 9.1
openSUSE-Leap-15.6 openSUSE Leap 15.6
SUSE-Linux-Enterprise-15-SP5 SUSE Linux Enterprise 15 SP5
SUSE-Linux-Enterprise-15-SP6 SUSE Linux Enterprise 15 SP6
openSUSE-Tumbleweed openSUSE Tumbleweed
#安装Ubuntu-24.04 发行版本
wsl --install -d ubuntu-24.04
4、更换国内软件源
由于Ubuntu默认的软件源在国外有时候后可能会造成下载软件卡顿这里我们更换为国内的阿里云源其他国内源亦可。Ubuntu24.04源地址配置文件发生改变,同时格式改变,现在为DEB822
格式,不再使用以前的sources.list,而是使用文件 /etc/apt/sources.list.d/ubuntu.sources
# 备份原来的软件源sudo cp /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bak# 编辑软件源sudo nano /etc/apt/sources.list.d/ubuntu.sources
cat /etc/apt/sources.list.d/ubuntu.sources#可以看到源配置文件内容如下:## See the sources.list(5) manual page for further settings.Types: debURIs: http://archive.ubuntu.com/ubuntuSuites: noble noble-updates noble-backportsComponents: main universe restricted multiverseSigned-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg## Ubuntu security updates. Aside from URIs and Suites,## this should mirror your choices in the previous section.Types: debURIs: http://security.ubuntu.com/ubuntuSuites: noble-securityComponents: main universe restricted multiverseSigned-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
更新源地址,可以用下面国内的源(tsinghua源或aliyun源等)
清华源 mirrors.tuna.tsinghua.edu.cn
阿里云 mirrors.aliyun.com
腾讯云 mirrors.cloud.tencent.com
华为云 mirrors.huaweicloud.com
中科大源 mirrors.ustc.edu.cn
sources.list.d
文件夹中,所有.sources
拓展名结尾的文件均会被作为一个可选的源
我们先将原始文件备份:
sudo mv /etc/apt/sources.list.d/ubuntu.sources /etc/apt/backup-sources.list.d-ubuntu.sources
然后创建一个新的文件,以.sources
结尾,例如
sudo nano /etc/apt/sources.list.d/tuna.sources
把下里的内容(Ctrl+V)粘贴进去
Types: debURIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu/#如果使用其他镜像站,上面这行可以改成其他镜像站的网址(如:https://mirrors.aliyun.com/ubuntu/)Suites: noble noble-updates noble-backportsComponents: main universe restricted multiverseSigned-By: /usr/share/keyrings/ubuntu-archive-keyring.gpgTypes: debURIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu/#如果安全更新需要使用镜像站,上面这行可以改成其他镜像站的网址Suites: noble-securityComponents: main universe restricted multiverseSigned-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
然后按Ctrl + O保存,ENTER确认,并按Ctrl + X退出编辑模式。
之后运行
# 更新源列表$ sudo apt update# 更新系统软件包$ sudo apt upgrade -y
5、图形化界面
1)安装Ubuntu桌面版
默认情况下,WSL2安装的是服务器版Ubuntu,没有图形界面。要安装桌面环境,可以根据自己的喜好安装 KDE、Gnome、xfce、lxde 等桌面环境。Gnome是 Ubuntu 的默认桌面上环境,也是多数发行版的默认桌面环境,这里以Gnome为例进行安装:
WSL Ubuntu命令行输入:
# 安装 Ubuntu 桌面版sudo apt install ubuntu-desktop
安装其他桌面:
#KDEsudo apt install kubuntu-desktop #Xfce sudo apt install xubuntu-desktop
2)安装XRDP
在使用xrdp进行远程桌面连接时,默认情况下,xrdp使用/etc/ssl/private/ssl-cert-snakeoil.key
证书,该证书仅对ssl-cert
用户组可读。因此,需要将xrdp用户添加到ssl-cert
用户组,以确保xrdp服务能够正常访问和验证SSL证书。
具体操作步骤如下:
安装xrdp服务并启动:使用命令sudo apt-get install xrdp
安装xrdp,并使用sudo systemctl start xrdp
启动服务。将xrdp用户添加到ssl-cert
用户组:使用命令sudo adduser xrdp ssl-cert
将xrdp用户添加到ssl-cert
用户组。重启xrdp服务:使用命令sudo systemctl restart xrdp
重启xrdp服务,以确保更改生效。 通过这些步骤,可以确保xrdp服务能够正确访问和验证SSL证书,从而解决连接时的安全问题。
3)连接远程桌面
先在子系统上运行以下命令,查看下虚拟机的IP地址
ip addr | grep eth0
上面选中的部分就是子系统虚拟机的 IP 地址,复制下来。
win+R,运行mstsc:
输入刚刚复制的ip地址
点击连接后如果出现错误提示弹窗,参见文末的问题排查1进行解决。
输入登录的用户名密码:
注意:wsl2暂时还不支持硬件加速绘图,所以你是在用cpu跑gnome图形界面,可能会比较卡。cpu不太给力的机器,甚至有可能进去后一片漆黑。
问题排查
一些常见问题给出相关解决办法:
远程桌面点击连接后显示连接失败:
如果弹窗说你正在运行一个控制台会话,说明xrdp默认的3389端口已经被其他(控制台)应用占用了,尝试修改xrdp监听的端口 sudo vim /etc/xrdp/xrdp.ini
,修改文件中的port。
如果弹窗说无法连接到远程计算机,WSL命令窗口关闭,IP地址不对或者xrdp没有正常运行。使用 ip addr | grep eth0
命令重新看下IP地址。尝试 sudo systemctl restart xrdp
重启 xrdp 服务。
可以连接,但是进去后桌面一片漆黑:
第一次进入桌面会比较卡,稍等一会看看
尝试重启wsl(cmd管理员运行:net stop LxssManager 和 net start LxssManager)
尝试sudo apt install ubuntu-desktop重新安装下桌面
闪退
应该是权限的问题,不要用root登录。
关于xrdp
xrdp 配置文件在/etc/xrdp目录。一般不需要对配置文件进行修改。
使用sudo vim /etc/xrdp/xrdp.ini对配置文件进行修改。
默认的端口号是3389。
xrdp 使用startwm.sh文件启动 X 会话,可以通过编辑 /etc/xrdp/startwm.sh来使用其他X Window 桌面。
更多查看微软官方教程:适用于 Linux 的 Windows 子系统文档 | Microsoft Learn