使用Windows的wsl功能实现Linux图形化界面

👝前言

WSL(Windows Subsystem for Linux)是一个为Windows用户设计的兼容层,它允许用户在Windows 10和Windows 11操作系统上直接运行GNU/Linux环境。WSL提供了一个微软开发的Linux兼容内核接口,使得用户可以在不启动虚拟机或使用双重启动设置的情况下,在Windows上运行大多数命令行工具、实用程序、应用程序以及服务。

本教程将实现在windows11环境下,使用wsl2实现linux的图形化界面,用到的工具包括xfce4图形化程序ubuntu24.04发行版VcXsrv服务器

wsl仅是基于Windows内核的对于Linux核心轻量虚拟,相比较于vmware需要整个系统镜像文件来说,开发调试、图形化界面(GUI)等功能相对受限,在某些场景下差强人意。但是相对的,通过这种形式虚拟出来的Linux系统也同样有性能高,资源占用少的优点,作为LInux轻量化入门学习使用再合适不过,搭配上GUI可谓也是一种高性价比选择。


💻安装教程

1.在windows中打开控制控制找到程序和功能,点击左上角的启用或者关闭Windows功能

2.开启win虚拟机相关的服务,确保对于wsl的程序驱动支持

3.以管理员身份打开powershell,依次执行以下命令安装wsl2

 wsl --install                   # 为windows安装wsl
 wsl --set-default-version 2     # 设置wsl版本为2

4.安装Linux发行版,我这里选择发行版的是Ubuntu,对应的社区支持的比较好定位问题。当然你这一步也可以选择去MicroSoft Store下载安装,都是一样的效果,我这里就直接使用命令行了

 wsl --list --online     # 查看可安装版本的linux发行版
 wsl --install -d        # 选择需要安装的版本

5.因为服务器不在国内,这里可能会遇到网络问题,建议换用国内镜像源,修改/etc/apt/sources.list为国内镜像地址即可(可选)

 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak             # 先备份是个好习惯
 sudo cp -r /etc/apt/sources.list.d /etc/apt/sources.list.d.bak
 
 # 换apt源为阿里云镜像地址
 sudo tee /etc/apt/sources.list << EOF
 deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
 deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
 deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
 deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
 EOF

6.在cmd终端或者powershell中输入wsl命令进入Ubuntu,第一次开机需要设置用户名和密码,并且手动初始化一下root用户的密码方便使用sudo超级管理员命令。更新环境后,安装 Xfce4 桌面环境

 wsl             # 进入虚拟机设置账户
 sudo passwd     # 修改root密码,建议和普通用户使用一样的密码简单方便
 sudo apt update && sudo apt upgrade -y  # 更新系统环境
 sudo apt install xfce4 xfce4-goodies    # 安装图形化桌面环境
7.windows下安装VcXsrv X Server服务器

选择一个地址安装即可

打开VcXsrv,如图所示配置后点击完成开启VcXsrv服务

8.在 Ubuntu 终端中设置 DISPLAY 环境变量,并开机,在Ubuntu终端执行以下命令

 echo 'export DISPLAY=127.0.0.1:0' >> ~/.bashrc  # 设置xfce4转发至x server的环境变量
 source ~/.bashrc
 xeyes                           # 测试是否有图形输出
 sudo startxfce4                 # 开启桌面

9.到这一步就算大功告成了,以后打开只需在win中启动VcXsrv和终端中执行sudo startxfce4,可以看到效果还是不错的


🖊️问题和部分原理

下面列出我在安装时后所遇到过的一些问题

1.代理网络不管用

如果设备具有科学上网环境,那么可以选择不更换国内源,让虚拟机使用本机代理上网也能解决网络问题,在windows的用户目录C:\Users\你的用户名下,添加.wslconfig文件,并且写入以下内容

 [experimental]
 autoMemoryReclaim=gradual  
 networkingMode=mirrored
 dnsTunneling=true
 firewall=true
 autoProxy=true

再在cmd终端将虚拟机重启一下即可

 wsl --shutdown  # 关机
 wsl             # 开机

2.虚拟机安装失败

错误代码

 Installing, this may take a few minutes...
 WslRegisterDistribution failed with error: 0x800701bc
 Error: 0x800701bc WSL 2 ????????????? https://aka.ms/wsl2kernel
 Press any key to continue...

解决,在cmd终端执行一下命令

wsl --set-default-version 2
wsl --update
wsl --version

一些知识补充

1.wsl2现在也支持一些应用程序直接从底层调用win的图形窗口,支持直接运行Linux GUI应用,实现图形化界面。例如下载扫雷的gnome版本,从终端启动它,可以实现windows窗口打开,看起来效果也很不错

2.在 Linux 系统中,DISPLAY 是一个环境变量,用于指定 X Window 系统(X11)的显示设备。它告诉图形程序应该将输出发送到哪个显示设备上。

DISPLAY 的值通常是一个字符串,格式为:

主机名:显示器屏幕号
  • 主机名:运行 X Server 的机器的主机名或 IP 地址。如果是本地机器,可以省略。

  • 显示器屏幕号:通常是一个数字,表示 X Server 的显示设备(默认是 0)。

常见的 DISPLAY 值示例:

    • :0:表示本地机器的默认显示设备。

    • localhost:0:与 :0 类似,明确指定了主机名。

    • 192.168.1.100:0:表示远程机器的显示设备。

3.Linux 下的图形化界面生态系统涉及多个层次,包括桌面环境、窗口管理器、显示协议和开发工具。

  • 主流桌面环境

    桌面环境(Desktop Environment, DE)是用户与系统交互的核心,包含窗口管理器、面板、文件管理器等组件。

    桌面环境 开发语言/工具 窗口管理器 特点
    GNOME GTK (C语言) Mutter 简洁现代,强调触摸友好,基于 Gnome Shell,使用 Wayland 为主协议。
    KDE C++ + Qt KWin 高度可定制,功能丰富,默认支持 X11 和 Wayland,社区驱动。
    XFCE C (GTK) Xfwm4 轻量级,适合低配置设备,模块化设计。
    LXQt C++ (Qt) Openbox 轻量化分支,整合 LXDE 和 Razor-qt。
    MATE C (GTK) Marco GNOME 2 的延续,传统桌面风格。
    Cinnamon C# (Mono) Muffin 基于 GNOME 3,保留传统菜单布局,适合从 Windows 过渡的用户。
  • 显示服务器协议

    显示协议负责图形渲染、输入事件传递等底层通信。

    协议 特点 典型实现
    X11/X.Org 历史悠久的协议,支持网络透明性,但存在安全性和性能问题。 Xorg 服务器(如 Xorg、Xephyr)
    Wayland 现代协议,直接渲染到帧缓冲,减少延迟,增强安全性,逐步取代 X11。 Weston(参考实现)、Mutter(GNOME)、KWin(KDE)
    XWayland 兼容层,允许 X11 应用在 Wayland 环境下运行。 所有 Wayland 合成器均内置
  • 应用程序开发框架(工具链)

    用于构建 GUI 应用的工具库,通常与桌面环境和协议适配。

    框架/工具 编程语言 图形库/协议支持 典型应用案例
    Qt C++ 自有绘图引擎,支持 X11/Wayland KDE Plasma、VLC、Adobe Photoshop Elements
    GTK C GTK+,依赖 X11/Wayland GNOME、Firefox、GIMP
    Electron JavaScript Chromium + Node.js,基于 X11/Wayland VS Code、Slack、Discord
    Flutter Dart Skia 渲染,通过 GTK 或 Wayland 部分 Linux 应用(如 Google Chrome 的实验性支持)
    JavaFX Java 依赖本地窗口系统(如 GTK) 开源 IDE(如 IntelliJ IDEA)
    SDL C/C++ 低级图形库,跨平台 游戏(如 Steam 客户端)
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇