01signal.com

在 Windows 计算机上使用 Linux desktop

该网页属于一组探索 Smart Zynq 板功能的小项目

该项目也发表在 HelloFPGA上,推荐给中国读者。还有一个简短的视频演示了本页描述的方法。

介绍

在 Linux 计算机上,图形软件可以在另一台计算机上打开 window 。换句话说,该软件(例如 Google Chrome)可以在一台计算机上运行,但该软件的用户坐在另一台计算机前。 Windows 也有类似的解决方案,但这些解决方案通常会提供糟糕的用户体验。 Linux 更适合远程工作。

此功能并不经常使用,因为人们通常在自己的计算机或笔记本电脑上工作。但当计算机没有连接显示器时,此功能可能会很有用。

本教程介绍如何在 Xillinux 上运行图形软件,以便将鼠标、键盘和显示器连接到 Windows 计算机。

X server

Linux desktop 的基础是 X-windows。这是一个非常古老的软件,但至今仍然运行良好。与 Windows 计算机不同,图形界面基于 X server。这是一个实现 TCP/IP server的常规计算机程序(在 user space中运行)。该服务器通常监听 port 6000。任何想要在计算机屏幕上显示 window 的程序都通过 TCP/IP连接到该服务器。所有图形信息均通过此 TCP/IP 连接发送。用户的键盘敲击和鼠标移动也通过该连接传输。

控制 window 的程序可以在同一台计算机上运行,也可以在不同的计算机上运行。这并不重要,因为连接是基于 TCP/IP的。

在当今的大多数 Linux 计算机上,无法从另一台计算机通过 TCP/IP 直接连接到 X server 。出于安全考虑,此功能已关闭。此外,还有一个安全的替代方案可以在两台 Linux 计算机之间建立这种连接: “ssh -X”。然而,在 Linux 计算机上运行的图形程序通常能够连接到另一台计算机的显示器。

因此,在 Windows 计算机上运行 X server 非常有用。该 X server 允许在不同计算机上运行的程序在 Windows 计算机上呈现其 GUI 界面。我将提出两个选择: 首先,完整的 Linux desktop 将出现在 Windows 计算机上。下一步是只展示一个属于 Linux 计算机上运行的计算机程序的 window 。

准备工作

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

下一步是找到运行 Windows的计算机的 IP address : 在 Command Prompt 中使用 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

下一步是关闭 Windows Defender Firewall。否则,在 Xillinux 上运行的计算机程序将无法连接到 X server。事实上,即使是 Xillinux 的 ping 也会失败。

显然,关闭 firewall 会使计算机容易受到来自网络的攻击。因此,建议在执行此操作之前考虑计算机网络是否受到外部 firewall 的保护。

转到“Turn Windows Defender Firewall on and off”。

Turning off Windows Defender Firewall, stage 1

然后关闭防火墙:

Turning off Windows Defender Firewall, stage 2

firewall 关闭后,验证 Xillinux board 是否可以与 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

在 Windows上运行 Linux desktop

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

在第一个 pop-up window上:

vcxsrv's first popup window

在第二个 pop-up window上: 选择“Start no client”。

vcxsrv's second popup window

在第三个 pop-up window上: 选择“disable access control”。这使得可以从 Xillinux board进行连接。

vcxsrv's third popup window

在这三台 pop-up windows之后, vcxsrv 又开了一个又大又空的 window。 window 的一切都是黑色的。

现在我们要用 Xillinux的 desktop来填充这个大的 window 。在 shell 上的 Xillinux board上键入以下内容:

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

执行此命令几秒钟后,图形桌面将出现在 Windows 计算机上。

也可以使用 ssh 来启动 desktop。例如,假设 Xillinux board的 IP address 是 192.168.1.123。该命令可在 Command Prompt window ( Windows 计算机上)中使用。

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

使用 ssh之前需要设置 root user 的密码。

请注意,可以在 vcxsrv的 window 内使用 Copy ,然后在常规 Windows 窗口上使用 Paste 。反之亦然。

“/etc/X11/Xsession”是启动 desktop的命令。 “DISPLAY=192.168.1.11:0”为 environment variable赋值。这告诉程序连接到远程计算机。

DISPLAY 分配由两部分组成。第一部分是 IP address (本例中为192.168.1.11 )。第二部分是 Display Number。回想一下,当您启动 vcxsrv时, Display Number 被选择为 0。这就是为什么 DISPLAY 的第二部分是“:0”。这告诉 TCP client 连接到 port 6000。如果我们选择不同的 Display Number,我们需要相应地改变 DISPLAY 。例如,如果 Display Number 为 5,则 DISPLAY 应改为“192.168.1.11:5”。在这种情况下, TCP client 将尝试连接到 port 6005 。

在 Windows上打开单个 Linux window

我现在将展示如何在 Xillinux上运行图形计算机程序,以便 window 在 Windows 计算机上打开。

像以前一样启动 vcxsrv ,但有一点不同: 不要选择 One Large Window,而是选择 Multiple Windows。除了这个差异之外,做出与以前相同的选择。

vcxsrv's first popup window, multiple windows

与之前不同的是,三台 pop-up windows之后就不会再开新的 window 了。配置完成后看起来好像什么也没发生。但这是一种误导。 X server 正在运行并正在等待请求。

例如,在 Xillinux上尝试:

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

这将在 Windows 计算机上启动文本编辑器。也可以启动 terminal window:

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

以这种方式打开 terminal windows 有一个优点: 不再需要添加“DISPLAY=192.168.1.11:0”部分: 这是在此 terminal上启动的所有命令的默认设置。

如前所述,可以通过 ssh发送命令: 在 Windows的 Command Prompt 上键入以下命令以启动 terminal window:

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

与之前一样,此示例假设 Xillinux board的 IP address 是 192.168.1.123。

不幸的是,似乎没有一种简单的方法可以关闭 X server。当 X server 运行在该模式下时,没有代表程序的 window 。因此,停止 server 的方法是使用 Task Manager: 找到名为“VcXsrv windows xserver”的任务,然后单击“End Task”。

此页面由英文自动翻译。 如果有不清楚的地方,请参考原始页面
Copyright © 2021-2024. All rights reserved. (6f913017)