如何在openEuler WSL中体验完整的桌面环境

openEuler WSL

WSL(Windows Subsystem For Linux) 是微软发布的让用户能够在windows上使用Linux环境的技术

而通过使用openEuler发布的WSL应用,则可以让大家在Windows中体验原汁原味的openEuler开发环境

目前openEuler已经将 openEuler 20.03-LTS,22.03-LTS,22.03,23.03等版本相继上架到了微软应用商店,欢迎大家下载试用

如果无法访问应用商店,还可以参考之前的文章,使用sideload

openEuler User Repo

为了丰富openEuler的软件包生态,社区也推出了openEuler用户软件仓系统(EUR),关于EUR更详细的介绍和使用指南可以参考这篇博文或者官方博客1官方博客2

当您在使用openEuler时发现缺少某些软件包或已有包不满足需要,EUR就是您最好的帮手

WSL + EUR

笔者自己是重度Linux桌面用户,在使用openEuler WSL的过程中,也一直期望能够用上原生的DE(Desktop Environment)

当前WSL社区主流的桌面解决方案是kex,而kex又是kali linux独家的软件包,但kexSeamless Mode其实是借助了xrdp来实现的

可惜openEuler社区暂时没有引入xrdp这个软件包

不过在EUR和WSL的加持下,我们是不是也可尝试为openEuler添加xrdp并在WSL下使用xrdp体验桌面环境呢?

Talk is cheap,借助EUR和WSL的一番折腾,最后终于实现了在Windows中完全使用openEuler 桌面环境进行开发的小目标 😄


下面是个人折腾的步骤,最终结果是在openEuler 23.03的WSL中使用Gnome桌面环境:

  1. 在windows server中安装WSL:

    1. 本文步骤均在openEuler 23.03版本上执行,如果无法访问windows store,可以下载最新发布的openEuler 22.03-LTS-SP2的WSL sideload安装包,下面的步骤通过应用商店途径安装的可以跳过

    2. 下载后首先安装证书:双击压缩包中的DistroLauncher-Appx_2203.1.164.0_x64_ARM64.cer,依次选择安装证书->本地计算机->将所有的证书都放入下列存储->受信任的人

    3. 安装sideload应用:以管理员权限开启一个powershell终端,并执行压缩包中的Add-AppDevPackage.ps1脚本

    4. 初始化WSL环境:安装完成后,在开始菜单即可找到openEuler 22.03的应用图标,双击即可启动,启动后跟随引导初始化账号密码即可开始体验WSL环境

  2. 安装桌面环境:本文采用xrdp的方式来实现WSL中的桌面环境,由于xrdp包还不存在于openEuler官方仓库,笔者在EUR中引入了最新的0.9.22.1版本:

    1. 首先获取23.03版本EUR仓库配置,其他版本可以到这里获取

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      $ sudo curl -o /etc/yum.repos.d/xrdp.repo -L https://eur.openeuler.openatom.cn/coprs/mywaaagh_admin/xrdp/repo/openeuler-22.03/mywaaagh_admin-xrdp-openeuler-22.03.repo

      We trust you have received the usual lecture from the local System
      Administrator. It usually boils down to these three things:

      #1) Respect the privacy of others.
      #2) Think before you type.
      #3) With great power comes great responsibility.

      [sudo] password for lcr:
      % Total % Received % Xferd Average Speed Time Time Time Current
      Dload Upload Total Spent Left Speed
      100 379 100 379 0 0 1237 0 --:--:-- --:--:-- --:--:-- 1238
    2. 接着,安装xrdpgnome相关的软件包

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      $ sudo dnf in xrdp gnome-terminal gdm neofetch
      ...
      Total 1.2 MB/s | 358 MB 05:05
      Copr repo for xrdp owned by mywaaagh_admin 7.0 kB/s | 1.0 kB 00:00
      Importing GPG key 0xA893D75B:
      Userid : "mywaaagh_admin_xrdp (None) <mywaaagh_admin#xrdp@copr.osinfra.cn>"
      Fingerprint: 945E 21A6 D982 49A7 A61A E62A 026A 219C A893 D75B
      From : https://eur.openeuler.openatom.cn/results/mywaaagh_admin/xrdp/pubkey.gpg
      Is this ok [y/N]: y
      ...

      Complete!
    3. 随后,启动xrdpgdm服务

      1
      2
      sudo systemctl start xrdp
      sudo systemctl restart gdm
  3. 最后,通过windows的mstsc.exe命令即可访问刚刚启动的xrdp服务,WSL的IP可以通过ip a命令获取

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $ ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
    valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:15:5d:1a:3f:30 brd ff:ff:ff:ff:ff:ff
    inet 172.29.191.92/20 brd 172.29.191.255 scope global eth0
    valid_lft forever preferred_lft forever
    inet6 fe80::215:5dff:fe1a:3f30/64 scope link
    valid_lft forever preferred_lft forever
    (base) [lcr@lcrpc cascadia-code-nerd-fonts-mono]$


  4. 在远程桌面连接后,选择Xvnc,在填入WSL首次启动是创建的用户名和密码,即可进入openEuler的gnome桌面


注意事项

  • 由于多个WSL实例是共享网络的,因此在其中一个实例开启xrdp后,再另外一个WSL中启动服务会失败,此时可以通过修改/etc/xrdp/xrdp.ini/etc/xrdp/sesman.ini中的监听端口实现开启多个实例的远程桌面
  • 有时连接远程桌面成功后会出现窗口闪退,可能是系统中残留了一些X-session,这种情况可以尝试重启gdm服务
    1
    sudo systemctl restart gdm
  • 截图的gnome-termial中使用的字体是自己打包的cascadia-code-nerd-fonts-mono,也托管在EUR的xrdp仓库中上,可以通过dnf in cascadia-code-nerd-fonts-mono来进行安装