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

设置/安装步骤

  1. LinuxONE 实例:安装以下软件包并启动虚拟帧缓冲 X 服务器,然后启动 VNC 服务器
sudo zypper in xorg-x11-server-Xvfb x11vnc xauth xeyes
  1. LinuxONE 实例:启动 Xvfb 服务器
Xvfb -shmem -fbdir /var/tmp &
  1. LinuxONE 实例:设置您的 VNC 密码(仅在使用 x11vnc 第一次时或删除 VNC 密码文件时才需要)
 x11vnc -storepasswd
  1. LinuxONE 实例:可选,如果您使用了下面替代步骤中提到的“一体化”命令
x11vnc -localhost -usepw -auth ~/.Xauthority
  1. 本地系统:替代上一步:一个更简单的“一体化”命令是(在 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
  1. 本地系统:安装以下软件包:xtightvncviewer(确切的软件包名称可能因您的操作系统而异)
  1. 本地系统:(仅在之前提到的“一体化”命令未被使用的情况下) 启动 SSH 隧道(请记住用真实值替换占位符)
ssh -i ~/.ssh/keys/<file-name>.pem -t -L 5900:localhost:5900 linux1@<linuxone-instance-ip-addr>

上面给出的关于本地 ssh 配置文件的提示也适用于此 ssh 命令

  1. 本地系统:使用例如 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
  1. LinuxONE 实例:将 DISPLAY 变量设置为默认显示
export DISPLAY=:0
  1. LinuxONE 实例:启动您选择的图形应用程序
baobab &

> 应该出现在根窗口中。由于缺少窗口管理器装饰(标题栏等),无法在(VNC 客户端)屏幕上移动窗口(实际上,一个窗口;但该窗口充当真实显示器的替代品)

VNC 会话到 LinuxONE 实例

注意:由于既没有配置 xinitrc 也没有窗口管理器,因此没有窗口装饰(因此,窗口无法移动/调整大小等)!因此,如果您启动多个图形应用程序,它们将简单地重叠,因此可能不可见(因此也无法使用)!

(baobab 是一个基于 GTK4 的应用程序,旨在提供 SSD/硬盘上不同(子)目录的空间分布的图形概述。)

(或者,您可以尝试一些非常简单的应用程序,例如 xeyes(经典的 X11 应用程序,用于跟踪鼠标光标。))