![systemd 啟動時顯示奇怪的錯誤編碼](https://rvso.com/image/111973/systemd%20%E5%95%9F%E5%8B%95%E6%99%82%E9%A1%AF%E7%A4%BA%E5%A5%87%E6%80%AA%E7%9A%84%E9%8C%AF%E8%AA%A4%E7%B7%A8%E7%A2%BC.png)
在 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.cfg
或update-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.local
systemd
對於後代,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
為了方便參考:
- Arch Linux Systemd 維基頁面
- 自啟動參考文章尚未提及供審查的項目
- 疑似相關問題以及先前連結的答案的起源被引用為可能的解釋