systemd 启动时显示奇怪的错误编码

systemd 启动时显示奇怪的错误编码

在 GRUB 加载 linux 映像linux-vmdisk或类似映像并加载 systemd 后,我发现屏幕显示 systemd 引导过程步骤,并且编码错误且奇怪。但几秒钟后,一些 systemd 服务加载完毕,屏幕刷新,显示就正确了。

我的系统是带有最新更新的“Arch Linux”。 systemd 版本是:

systemd 232
+PAM -AUDIT -SELINUX -IMA -APPARMOR +SMACK -SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN

编辑:这是我的 dmesg 日志https://gist.github.com/stardiviner/dfbeb58a7afb2a10dab1e9d51ff34686

我想知道有相关的bug吗?如果我找不到原因,那么告诉我如何调试这个问题?

答案1

引导时出现奇怪的字符可能是由于 GRUB 配置错误造成的。尝试这些涉及更改的解决方案/etc/default/grub。每次更改后,请记住更新 GRUB(grub-mkconfig -o /boot/grub/grub.cfgupdate-grub),然后重新启动以测试更改。

1)添加这些行:

GRUB_GFXMODE=<mode>,1024x768x32,auto
GRUB_GFXPAYLOAD_LINUX=keep

其中<mode>是屏幕的分辨率<width>x<height>x<depth>,请参阅上面的行作为示例。
注意该模式必须你的显卡支持;要获取支持的模式列表,请运行

sudo hwinfo --framebuffer

更多信息请点击这里。

2)如果这仍然不起作用,请尝试vga=向该行添加一个参数(注意:已弃用)GRUB_CMDLINE_LINUX_DEFAULT

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash vga=792"

3)如果这些解决方案仍然不起作用,请尝试这个(取自之前的这个答案):

注释掉带有 的行GRUB_CMDLINE_LINUX_DEFAULT

添加行

GRUB_GFXMODE=<width>x<height>
GRUB_TERMINAL=console

其中<width>x<height>是显示器的原始分辨率。

答案2

如果通过错误或奇怪的编码,您的意思是这样的:

终端中的文本看起来像符号

那么它可能是一些启动脚本或命令将二进制数据输出到控制台的结果,并且......

在这种情况下,某些特定的字节序列可能会被终端仿真器解释为控制序列等,它们将影响其后续行为。

如上所述这里

由于问题听起来像是可以自行解决,因此如果仍然希望尝试确定可能导致问题的原因,除了检查之外,您可能还需要检查已设置的任何启动配置(即在cron或 中)rc.localsystemd

对于后代,systemd可以使用(使用 sudo)检查相关流程评论

systemctl status


# or alternatively
systemctl --failed

# or to check all  the services available
systemctl list-unit-files --type=service

而可能相关的目录可能包括(作为 Arch 和非 Arch 用户的参考):

  • /usr/lib/systemd/system/
  • /etc/systemd/system/
  • /etc/rc.local/
  • (如前面提到的 cron)运行crontab -e
  • /etc/profile
  • ~/.bash_profile
  • ~/.bash_login
  • ~/.profile

为了方便参考:

相关内容