01signal.com

在 Microsoft Windows 电脑上使用 Linux 桌面

本页面属于一个小项目系列,这些项目用于探索 Smart Zynq 开发板的各种功能。

这个项目也发布在 HelloFPGA 网站,推荐中文读者阅读。另有一段短视频演示了本页介绍的方法。

简介

在 Linux 电脑上,图形软件可以在另一台电脑上打开窗口。也就是说,软件(例如 Google Chrome)可以在某一台电脑上运行,而使用者坐在另一台电脑前面。Microsoft Windows 也有类似的解决方案,但这些方案的用户体验往往很差。Linux 要适合远程工作得多。

这个功能用得不多,因为人们通常使用自己的电脑或笔记本电脑工作。但当某台电脑没有连接显示器时,这个功能就非常有用。

本教程介绍如何让 Xillinux 上运行的图形软件,把图形界面显示在连接了鼠标、键盘和显示器的 Microsoft Windows 电脑上。

X 服务器

Linux 桌面的基础是 X Window(常被写作 X-Windows)。这套软件虽然历史悠久,但直到今天依然工作得很好。与 Microsoft Windows 电脑不同,Linux 的图形界面基于 X 服务器(X server)。X 服务器是一个普通的计算机程序(运行在用户空间),实现了一个 TCP/IP 服务器。这个服务器通常监听 6000 端口。任何想在电脑屏幕上显示窗口的程序,都会通过 TCP/IP 连接到这个服务器。所有图形信息都通过这条 TCP/IP 连接传输。用户的按键和鼠标移动也通过这条连接传递。

控制窗口的程序可以运行在同一台电脑上,也可以运行在另一台电脑上。这并不重要,因为连接本身基于 TCP/IP。

如今大多数 Linux 电脑都不允许其他电脑直接通过 TCP/IP 连接到 X 服务器。出于安全考虑,这个功能被关闭了。此外,在两台 Linux 电脑之间进行这种连接有一种安全的替代方案:ssh -X。不过无论如何,运行在 Linux 电脑上的图形程序通常都能连接到另一台电脑的显示终端。

因此,在 Microsoft Windows 电脑上运行一个 X 服务器是很有用的。这个 X 服务器允许在另一台电脑上运行的程序,把它们的图形界面呈现在 Microsoft Windows 电脑上。下面介绍两种方式:第一种是让完整的 Linux 桌面出现在 Microsoft Windows 电脑上;第二种是只显示运行在 Linux 电脑上的某一个程序的窗口。

准备工作

首先,下载并安装 vcxsrv。安装步骤与任何 Microsoft Windows 应用程序相同。

下一步是找出运行 Microsoft Windows 的那台电脑的 IP 地址:在命令提示符中使用 ipconfig,方法如下:

> ipconfig

Windows IP Configuration


Ethernet adapter Ethernet:

   Connection-specific DNS Suffix  . :
   IPv4 Address. . . . . . . . . . . : 192.168.1.11
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 192.168.1.3

下一步是关闭 Microsoft Windows Defender 防火墙。否则,运行在 Xillinux 上的程序将无法连接到 X 服务器。实际上,从 Xillinux 发出的 ping 也会失败。

显然,关闭防火墙会让电脑更容易受到来自网络的攻击。因此,建议你先确认所在网络是否已经有外部防火墙保护,再执行这一步。

进入“启用或关闭 Windows Defender 防火墙”页面。

Turning off Windows Defender Firewall, stage 1

然后关闭防火墙:

Turning off Windows Defender Firewall, stage 2

关闭防火墙后,验证 Xillinux 开发板能否与 Microsoft Windows 电脑通信。例如,在 Xillinux 上尝试 ping:

root@localhost:~# ping 192.168.1.11
PING 192.168.1.11 (192.168.1.11) 56(84) bytes of data.
64 bytes from 192.168.1.11: icmp_seq=1 ttl=128 time=0.797 ms
64 bytes from 192.168.1.11: icmp_seq=2 ttl=128 time=0.790 ms
64 bytes from 192.168.1.11: icmp_seq=3 ttl=128 time=0.782 ms
^C
--- 192.168.1.11 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 0.782/0.789/0.797/0.033 ms

在 Microsoft Windows 上运行 Linux 桌面

要启动 vcxsrv,请点击名为 XLaunch 的图标。

在第一个弹出窗口中:

vcxsrv's first popup window

在第二个弹出窗口中:选择 Start no client(不启动客户端)。

vcxsrv's second popup window

在第三个弹出窗口中:选择 disable access control(禁用访问控制)。这样才能允许从 Xillinux 开发板连接过来。

vcxsrv's third popup window

经过这三个弹出窗口后,vcxsrv 会打开一个大而空的窗口。窗口里完全是一片黑色。

现在,我们要让 Xillinux 的桌面填满这个大窗口。在 Xillinux 开发板的 shell 中输入下面这条命令:

root@localhost:~# DISPLAY=192.168.1.11:0 /etc/X11/Xsession

这条命令执行几秒钟后,图形桌面就会出现在 Microsoft Windows 电脑上。

也可以使用 ssh 来启动桌面。例如,假设 Xillinux 开发板的 IP 地址是 192.168.1.123,那么可以在(Microsoft Windows 电脑上的)命令提示符窗口中使用下面的命令:

> ssh root@192.168.1.123 "DISPLAY=192.168.1.11:0 /etc/X11/Xsession"

使用 ssh 之前,需要先为 root 用户设置密码。

注意,可以在 vcxsrv 的窗口内使用“复制”,然后粘贴到 Microsoft Windows 里的普通窗口。反过来也同样可以。

“/etc/X11/Xsession” 是启动桌面的命令。“DISPLAY=192.168.1.11:0” 则是给一个环境变量赋值。这个赋值告诉程序去连接一台远程电脑。

DISPLAY 的赋值由两部分组成。第一部分是 IP 地址(本例中为 192.168.1.11)。第二部分是 Display number(显示编号)。还记得启动 vcxsrv 时,显示编号选了 0,所以 DISPLAY 的第二部分是 “:0”。这告诉 TCP 客户端连接 6000 端口。如果你选择了不同的显示编号,那么 DISPLAY 也要相应改变。例如,如果显示编号为 5,DISPLAY 就应该是 “192.168.1.11:5”。这种情况下,TCP 客户端会尝试连接 6005 端口。

在 Microsoft Windows 上打开单个 Linux 窗口

下面演示如何让 Xillinux 上运行的一个图形程序,把窗口显示在 Microsoft Windows 电脑上。

像之前一样启动 vcxsrv,但有一点不同:不要选择 One Large Window(一个大窗口),而是选择 Multiple Windows(多个窗口)。除了这一点不同,其他选项都和之前一样。

vcxsrv's first popup window, multiple windows

与之前不同,这次三个弹出窗口之后不会再打开任何新窗口。配置完成后,看起来就像什么都没发生一样。但这是一种假象。实际上,X 服务器正在运行,并等待请求。

例如,在 Xillinux 上尝试这条命令:

root@localhost:~# DISPLAY=192.168.1.11:0 gnome-text-editor &

这会在 Microsoft Windows 电脑上启动一个文本编辑器。也可以启动一个终端窗口:

root@localhost:~# DISPLAY=192.168.1.11:0 lxterminal &

以这种方式打开终端窗口有一个好处:以后不再需要输入 “DISPLAY=192.168.1.11:0” 了。对于在这个终端中启动的所有命令,它都已经是默认值。

如前所述,也可以通过 ssh 发送命令:在 Microsoft Windows 的命令提示符下输入下面这一行,即可启动一个终端窗口:

> ssh root@192.168.1.123 "DISPLAY=192.168.1.11:0 lxterminal"

同上,这个示例假设 Xillinux 开发板的 IP 地址是 192.168.1.123。

遗憾的是,似乎没有简单的方法可以关闭 X 服务器。当 X 服务器以这种模式运行时,界面上并没有一个窗口代表这个程序。因此,停止该服务器的方法是使用任务管理器:找到名为 “VcXsrv windows xserver” 的任务,然后点击 “结束任务”。

本页由机器从英文翻译而来。如有疑问,请参阅原文
Copyright © 2021-2026. All rights reserved. (dcc38493)