ZSystems/GraphicalApplicationsLinuxONE
在 LinuxONE 实例上使用图形应用程序
原因:例如,验证通常针对大端架构或具体针对 s390x 报告的问题/错误。 但是:至少在我看来,VNC 如何处理端序尚不清楚,当 VNC 客户端在小端 (x86_64) 系统上运行时,VNC 服务器在大端系统上运行时。在支持双端序的架构/系统(ARM64;aarch64 或 POWER;powerpc64)上如何处理?(推测:小端<->网络字节序(大端)<->大端;如果原始作者的推测正确,则无法帮助验证错误 - 因为这将假定 VNC 客户端上有一个大端系统。尽管如此,该信息仍然有用,这就是为什么它被提供的理由。)
假设:您在笔记本电脑/本地 PC 上运行 Linux 作为操作系统(当然,Windows 和 macOS 也存在 VNC 和 SSH 客户端。关于 OpenSSH 命令行客户端,可以放心地假设它适用于任何符合 POSIX 标准的操作系统。)
所需组件
- 一个 X 服务器 (
Xvfb,因为它非常容易设置(无需进一步配置)) - 一个 VNC 服务器(例如
x11vnc) - 一个标准的 OpenSSH 命令行客户端(用于设置 SSH 隧道;在您的笔记本电脑/本地 PC 上)
- 一个 VNC 客户端(例如
xtightvnc;在您的笔记本电脑/本地 PC 上)
先决条件
- OpenSSH 已安装在客户端和 LinuxONE 实例上。此外,必须为 BOTH SSH 客户端 (
ssh; 通过包含ForwardX11 yes在$HOME/.ssh/config中的片段) AND 服务器 (sshd; 通过X11Forwarding yes在/etc/ssh/sshd_config中) 启用 X11 转发!
本指南未涵盖的内容(超出范围)
- 常规 X11/窗口管理器/桌面环境设置任务(例如,专门为
Xvfb定制的xinitrc(标准的xinitrc“假定”一个“正常”的 X 服务器 - 即使用显卡的服务器,而不是“仅仅”一个帧缓冲设备) - Wayland
设置/安装步骤
- LinuxONE 实例:安装以下软件包并启动虚拟帧缓冲 X 服务器,然后启动 VNC 服务器
sudo zypper in xorg-x11-server-Xvfb x11vnc xauth xeyes
- LinuxONE 实例:启动
Xvfb服务器
Xvfb -shmem -fbdir /var/tmp &
- LinuxONE 实例:设置您的 VNC 密码(仅在使用
x11vnc第一次时或删除 VNC 密码文件时才需要)
x11vnc -storepasswd
- LinuxONE 实例:可选,如果您使用了下面替代步骤中提到的“一体化”命令
x11vnc -localhost -usepw -auth ~/.Xauthority
- 本地系统:替代上一步:一个更简单的“一体化”命令是(在
x11vnc手册页中提到;应该在本地系统上执行,并且在 LinuxONE 实例上启动Xvfb之后)
ssh -i ~/.ssh/keys/<path-to-pem-file> ‐t ‐L 5900:localhost:5900 linux1@<linux-one-instance-ip> ’x11vnc ‐localhost -usepw -auth ~/.Xauthority ‐display :0’
如果将访问 LinuxONE 实例的片段添加到您的 ~/.ssh/config 文件中,则可以进一步简化该命令
Host <some-name>
User linux1
Hostname <ip-of-your-linuxone-instance>
ForwardX11 yes
IdentityFile ~/.ssh/keys/<key-file-name-without-suffix>.pem
然后,可以将之前的 ssh 命令缩短为
ssh ‐t ‐L 5900:localhost:5900 <some-name> ’x11vnc ‐localhost -usepw -auth ~/.Xauthority ‐display :0’
(省略的值将从您的 ssh 配置文件中获取)
需要注意的重要日志消息(x11vnc 已故意在前景中启动,以便更好地进行调试)
*** XOpenDisplay of ":0" successful. 30/01/2024 12:29:53 30/01/2024 12:29:53 Using X display :0 30/01/2024 12:29:53 rootwin: 0x50d reswin: 0x100001 dpy: 0x6d57710 [...] 30/01/2024 12:29:53 Default visual ID: 0x21 30/01/2024 12:29:53 Read initial data from X display into framebuffer. 30/01/2024 12:29:53 initialize_screen: fb_depth/fb_bpp/fb_Bpl 24/32/5120 30/01/2024 12:29:53 30/01/2024 12:29:53 X display :0 is 32bpp depth=24 true color 30/01/2024 12:29:53 30/01/2024 12:29:53 Autoprobing TCP port 30/01/2024 12:29:53 Autoprobing selected TCP port 5900 [...] 30/01/2024 12:29:53 screen setup finished. 30/01/2024 12:29:53
The VNC desktop is: opensuseholger:0 PORT=5900
- 本地系统:安装以下软件包:
xtightvncviewer(确切的软件包名称可能因您的操作系统而异)
- 本地系统:(仅在之前提到的“一体化”命令未被使用的情况下) 启动 SSH 隧道(请记住用真实值替换占位符)
ssh -i ~/.ssh/keys/<file-name>.pem -t -L 5900:localhost:5900 linux1@<linuxone-instance-ip-addr>
上面给出的关于本地 ssh 配置文件的提示也适用于此 ssh 命令
- 本地系统:使用例如 xtightvncviewer(或其他 VNC 客户端)连接到
localhost:5900并使用您的 VNC(即 NOT 您的常规!)密码登录
> 应该出现一个带有“纯”X11 根窗口的 VNC 会话窗口
本地系统:xtightvncviewer 的日志消息应如下所示
Connected to RFB server, using protocol version 3.8 Performing standard VNC authentication Authentication successful Desktop name "opensuseholger:0" VNC server default format: 32 bits per pixel. Most significant byte first in each pixel. True colour: max red 255 green 255 blue 255, shift red 16 green 8 blue 0 Using default colormap which is TrueColor. Pixel format: 32 bits per pixel. Least significant byte first in each pixel. True colour: max red 255 green 255 blue 255, shift red 16 green 8 blue 0 Same machine: preferring raw encoding
LinuxONE 实例 AFTER 成功 VNC 登录:日志消息(来自 x11vnc)应如下所示
30/01/2024 12:31:31 Got connection from client ::1 30/01/2024 12:31:31 0 other clients 30/01/2024 12:31:31 Normal socket connection [...] 30/01/2024 12:31:31 incr accepted_client=1 for ::1:37504 sock=10 30/01/2024 12:31:31 Client Protocol Version 3.8 30/01/2024 12:31:31 Protocol version sent 3.8, using 3.8
- LinuxONE 实例:将 DISPLAY 变量设置为默认显示
export DISPLAY=:0
- LinuxONE 实例:启动您选择的图形应用程序
baobab &
> 应该出现在根窗口中。由于缺少窗口管理器装饰(标题栏等),无法在(VNC 客户端)屏幕上移动窗口(实际上,一个窗口;但该窗口充当真实显示器的替代品)
注意:由于既没有配置 xinitrc 也没有窗口管理器,因此没有窗口装饰(因此,窗口无法移动/调整大小等)!因此,如果您启动多个图形应用程序,它们将简单地重叠,因此可能不可见(因此也无法使用)!
(baobab 是一个基于 GTK4 的应用程序,旨在提供 SSD/硬盘上不同(子)目录的空间分布的图形概述。)
(或者,您可以尝试一些非常简单的应用程序,例如 xeyes(经典的 X11 应用程序,用于跟踪鼠标光标。))
