[Windows10] WSL2 下让 Ubuntu20.04 安装 Gnome 桌面

By 程序知路 | 2020-09-02
4.5
(29)

本文针对的是 WSL2,如果你的 WSL 版本为 1 的话,那么本文就不适用于你的系统。如果想要配置图形用户界面桌面,必须要将 Linux 发行版所在的 WSL 版本转换为 2。

关于安装 ubuntu 18.04 的文章在这里: WSL2 下 Ubuntu 18.04 安装配置和使用 Gnome 桌面

本人建议使用 XDMCP 替代 VNC 方式来登录 Ubuntu 桌面,原因是使用 VNC 会出现屏幕分辨率问题,不是太大就是太小,很难设置到适配宿主机屏幕的分辨率,然而 XDMCP 正好解决这个问题。在这里两种方式都有介绍。

2020-09-02 更新:可以通过修改 /usr/bin/Xorg 文件来使得 VNC 登录后的图形界面匹配主机分辨率,至于怎样配置,请看本文后面的介绍。

2021-04-08 更新:因为之前 SystemD-Genie 的安装方式失效,现添加新的安装方式。

更新系统

sudo apt-get update
sudo apt-get upgrade -y

安装 Gnome 桌面的必要元素

sudo apt-get install tasksel -y
sudo tasksel
# 选择 “Ubuntu Desktop”
# 然后用 Tab 键选择 “OK”,回车确定
# 接着就是等待,如果突然退出,遇到 “tasksel: apt-get failed (100)”
# 这时要重新运行上面最后一条命令,并且重新选择 “Ubuntu Desktop”
# 安装完成会出现 “xserver-xorg install”

安装 VNC 服务器端软件

sudo apt-get install -y tigervnc-standalone-server

安装 DotNet

wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update
sudo apt-get install -y dotnet-runtime-3.1

安装配置 LightDM

安装 LightDM

sudo apt-get install -y lightdm

选择 GDM,还是 LightDM

这里建议选择 LightDM

sudo dpkg-reconfigure lightdm

配置 XVnc

设置 VNC 登录密码

# 以下都不用设置 “view-only password”,直接选择 “n”

# 为你的一般用户设置
vncpasswd
# 为你的 root 用户设置
sudo vncpasswd
# 如果窗口管理器选择的是 GDM
sudo -u gdm vncpasswd
## 如果选择的是 LightDM
sudo -u lightdm vncpasswd

替换原来的 X Server

sudo mv /usr/bin/Xorg /usr/bin/Xorg_old
sudo vim /usr/bin/Xorg

键入以下内容到 Xorg 文件:

#!/bin/bash
for arg do
  shift
  case $arg in
    # Xvnc doesn't support vtxx argument. So we convert to ttyxx instead
    vt*)
      set -- "$@" "${arg//vt/tty}"
      ;;
    # -keeptty is not supported at all by Xvnc
    -keeptty)
      ;;
    # -novtswitch is not supported at all by Xvnc
    -novtswitch)
      ;;
    # other arguments are kept intact
    *)
      set -- "$@" "$arg"
      ;;
  esac
done

# Here you can change or add options to fit your needs
## command=("/usr/bin/Xvnc" "-geometry" "2736x1824" "-PasswordFile" "${HOME:-/root}/.vnc/passwd" "$@") 
# Because my host monitor resolution matches 1440x860
command=("/usr/bin/Xvnc" "-geometry" "1440x860" "-PasswordFile" "${HOME:-/root}/.vnc/passwd" "$@") 

systemd-cat -t /usr/bin/Xorg echo "Starting Xvnc:" "${command[@]}"

exec "${command[@]}"

更改 Xorg 文件的文件权限属性

sudo chmod 0755 /usr/bin/Xorg

安装 Systemd-Genie

## curl -s https://packagecloud.io/install/repositories/arkane-systems/wsl-translinux/script.deb.sh | sudo bash
## sudo apt-get install -y systemd-genie
# 如果上面的下载地址失效,那么就要到以下的地点获取安装方式:
# 可能要科学上网,如果接下来的方式失效,则以下面这个网址的访问内容为准
# https://gist.github.com/djfdyuruiry/6720faa3f9fc59bfdf6284ee1f41f950

# 依次运行以下命令
cd /tmp
wget --content-disposition "https://gist.githubusercontent.com/djfdyuruiry/6720faa3f9fc59bfdf6284ee1f41f950/raw/46085955818d83b483fd62c65383a7f8dda84f5f/install-sg.sh"
chmod +x /tmp/install-sg.sh
/tmp/install-sg.sh && rm -f /tmp/install-sg.sh
# 进行下一步需要退出 WSL 的命令行(即在 Windows 终端运行)
wsl --shutdown
# 再次进入 Ubuntu 终端

调整 SystemD-Genie for Ubuntu

sudo mkdir /usr/lib/genie/
sudo vim /usr/lib/genie/deviated-preverts.conf

键入以下内容:

{
  "daemonize": "/usr/bin/daemonize"
}

启动 SystemD-Genie

启动 SystemD-Genie 只需要一行命令

genie -s
# 证明 SystemD-Genie 正常运行
sudo systemctl status time-sync.target

现在就可以通过 VNC 客户端软件访问 Ubuntu 20.04 图形界面了。

在 WSL Ubuntu 中可以通过 hostname -I | awk '{print $1}' 命令获取 Ubuntu 的 IP 地址。

Windows 下的免费 VNC 软件:https://www.uvnc.com/downloads/ultravnc.html 。用迅雷下载会快很多。

安装好 UltraVNC 后,在 “开始” 菜单启动 “UltraVNC Viewer”,然后输入 WSL Ubuntu 的 IP 地址,连接成功后输入上面 “vncpasswd” 命令所设置的密码,即可登录 上 VNC 。

通过 Windows 的 X-Windows 服务端软件登录 WSL Ubuntu

配置 LightDM,使之使用 XDMCP 替代 VNC 方式登录图形界面

sudo vim /etc/lightdm/lightdm.conf

文件不存在会创建新文件。输入以下内容:

[LightDM]
start-default-seat=false

[XDMCPServer]
enabled=true
port=177

重启 LightDM,此步骤只在运行 genie -s 时有效。。

sudo service lightdm restart

如果没有运行 genie -s ,那么就要重启 WSL Ubuntu 20.04 ,从而使配置生效:

如果想要重新启用 VNC,只须把 /etc/lightdm/lightdm.conf 文件中的下面两行注释掉,然后重启 LightDM 。

#[LightDM]
#start-default-seat=false

在 Windows 的终端上运行 wsl.exe -t Ubuntu-20.04,然后运行 ubuntu2004.exe

下载并安装基于 Windows 的 X-server 服务端软件 “VcXsrv Windows X Server”

到 https://sourceforge.net/projects/vcxsrv/ 这里下载,建议用迅雷下载。

VcXsrv 的使用

VcXsrv 连接 Ubuntu 之前

在 WSL Ubuntu 命令行下运行 genie -s

连接

打开 “开始” 菜单,然后选择 “XLaunch”。

  1. 步骤一,运行 “XLaunch” ,得到一个窗口界面,选择右下角,也就是 “One window without titlebar” ,然后点击 “下一步”。
  2. 步骤二,选择 “Open session via XDMCP” , 然后点击 “下一步”。

  3. 步骤三,在 “Connect to host” 输入框中输入 WSL Ubuntu 的 IP 地址,然后点击 “下一步”。

  4. 步骤四,选择 “Clipboard” 和 “Disable access control” ,同时取消选择 “Native opengl”。然后点击 “下一步”。

  5. 步骤五,点击 “完成”。

  6. 步骤六,如果 “VcXsrv” 是第一次连网,那么就会弹出 Windows 防火墙选择,通常需要既选择 “专用网络” (private),也要选择 “公用网络” (public) 。然后点击 “允许访问” 。

然后就可以见到 Ubuntu 20.04 的登录界面了。输入系统用户密码便可登录系统。

退出 WSL 的图形用户界面

从 Ubuntu 20.04 注销,然后直接关闭退出 “XLaunch“ 。

完成。

本文是基于 https://most-useful.com/ubuntu-20-04-desktop-gui-on-wsl-2-on-surface-pro-4/ 这篇文章作为参考而成,如果有侵权冒犯,在此表示歉意,还请作者联系本人。联系方式: admin@chengxuzhilu.com 。

This post references to https://most-useful.com/ubuntu-20-04-desktop-gui-on-wsl-2-on-surface-pro-4/ , If there is infringement offense, I will apologies for it, please contact me: admin@chengxuzhilu.com .

Created On: 2020-08-30

相关文章:

喜欢就请您给我评一下分吧!(从左到右为低分到高分)

Click on a star to rate it!

Average rating 4.5 / 5. Vote count: 29

No votes so far! Be the first to rate this post.


鉴于本人的相关知识储备以及能力有限,本博客的观点和描述如有错漏或是有考虑不周到的地方还请多多包涵,欢迎互相探讨,一起学习,共同进步。

本文章可以转载,但是需要说明来源出处!

本文使用的部分图片来源于网上,若是侵权,请与本文作者联系删除: admin@chengxuzhilu.com