编辑

编辑

我正在使用 VMware 运行带有 GNOME 桌面的 CentOS 7 虚拟机。

我遇到一个问题,每次关闭虚拟机而不是显示漂亮的关闭屏幕时,我都会看到一个终端窗口,其中包含丑陋的格式不良的消息。

在此输入图像描述

这就是它默认的行为方式(不触及任何配置)。有谁知道这可能是什么原因造成的?

据我了解,启动和关闭屏幕是使用“grub”配置的。我不确定这是否有帮助,但这是我的“/etc/默认/grub“配置文件:

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos00/root 
rd.lvm.lv=centos00/swap rd.lvm.lv=centos01/swap rd.lvm.lv=centos00/usr rhgb 
quiet"
GRUB_DISABLE_RECOVERY="true"

编辑

我尝试遵循 hildred 的建议,并在内核命令行中添加了一个串行控制台。 (由于 VMware 配置串行端口的方式,我必须使用 ttyS1 而不是 S0。)

在此输入图像描述

看起来问题是在 GNOME 显示管理器启动后立即出现的。

我正在研究如何提交错误报告。


更新:

答案1

Grub 是一个引导加载程序,在内核启动后不会使用,因此与关闭或启动日志记录没有关系。此外,虚拟化环境几乎肯定不是一个因素,窗口管理器也可能不是。

那么到底发生了什么?关键线索在屏幕截图中可见,请注意,几乎在每种情况下,每条消息都从前一条消息的下方一行和右侧的一个字符开始。这告诉我们终端的行结束解释处于错误的模式。修复这个问题就是编写重置命令的目的(reset|sudo tee /dev/tty将以用户身份执行此操作,但是当您登录时,所有启动消息都已过去,因此这只会对关闭消息有帮助)。另一方面,最常见的原因是向屏幕发送垃圾或全屏程序崩溃,这两种情况都不应该在启动期间发生。

要排除哪个服务导致此问题,最简单的方法是使用串行控制台,因为串行终端允许在内核崩溃、关闭以及在这种情况下启动期间进行日志记录。第一步:在VmWare中为本机设置串口。 (我不熟悉 VmWare,但类似的工具允许将串行端口定向到文件,这是满足您需要的最简单的方法。其他方法也可能有效。) 第二步:将串行控制台添加到内核命令行。您只需要在一次启动时执行此操作,因此当 grub 菜单出现时,按 e 编辑当前启动选项(在移动到您通常使用的选项之后),查找以 linux 开头的行并将其添加console=ttyS0,115200 console=tty0到该行的末尾。 (115200 是波特率,根据需要更改。8 位无奇偶校验。第一个控制台启用串行端口,第二个控制台启用默认值。) 第三步:查看日志。问题几乎可以肯定是最后一个程序将其启动消息放在正确的位置。第四步:提交错误报告。这不应该发生。不要忘记在错误报告中包含启动日志。

相关内容