我需要查看通过 SSH 连接到的 Linux 系统的监视器。我知道我可以将控制台的内容转储为 ASCII 字符,但这不会向我展示字符的准确呈现方式。我希望收到 PNG 或类似图片,这样我就可以看到监视器的真实内容。
内核不使用帧缓冲控制台,而是使用标准控制台。
重要的:因为我的另一个问题被某人关闭了:控制台上没有运行 X!我想对您通过按 Alt-F1 或向内核发送 chvt 1 获得的控制台进行快照。这通常是一个纯文本控制台,我想截取该控制台的屏幕截图,而不是某个地方正在运行的某个 X 会话。
当然,我知道我无法在 SSH 中显示该屏幕截图。这就是为什么我需要一个包含该控制台像素的 PNG 或其他原始格式。
答案1
您提到没有帧缓冲区,只有 BIOS 文本模式。
在 BIOS 80x25 文本模式下,没有像素 - 内核只是直接将文本和属性放入 VGA 内存中,然后显示适配器以某种方式呈现它。(因此称为“文本模式”。)制作文本模式 tty 屏幕截图的唯一方法是从 VGA/HDMI/DP 输出进行物理捕获,但这超出了操作系统的范围。
(操作系统可以将自定义字体加载到 VGA 内存中,例如 Linux 允许使用任意 .psf 格式的字体,但您实际上并不知道当前加载了哪种字体。)
如果文本控制台有一直在帧缓冲模式下运行(使用 Linux 的 FBCON),您可以使用 /dev/fb0 截取屏幕截图fbgrab
。
此外,如果远程系统是内置有 BMC(基板管理控制器,例如 DRAC 或 iLO)的服务器,那么该 BMC 通常会提供“远程控制台”或“vKVM”功能,该功能能够显示屏幕内容,无论模式如何,通过让 BMC 在渲染文本后直接访问显示适配器的内存。一些“商务”台式机也可能通过 Intel AMT 提供此功能,但需要预先配置。