Linux-Kernel

如何在 systemd 系統的串列控制台上獲取核心消息?

  • February 11, 2020

我正在嘗試將A20-OLinuXino-LIME2 設置為帶有來自Igor Pečovnik’s builds的Debian 8 映像的無標頭檔伺服器。

我希望系統在啟動過程中將其核心消息輸出到串列控制台 (ttyS0),並最終在 ttyS0 上顯示登錄提示。

預設情況下,映像使用以下核心命令行:

console=tty1 root=/dev/mmcblk0p1 rootwait rootfstype=ext4 sunxi_ve_mem_reserve=0 sunxi_g2d_mem_reserve=0 sunxi_no_mali_mem_reserve sunxi_fb_mem_reserve=16 hdmi.audio=EDID:0 disp.screen0_output_mode=1920x1080p60 panic=10 consoleblank=0 enforcing=0 loglevel=1

…當然不會向 ttyS0 輸出任何核心消息——在 U-Boot 的“ Uncompressing Linux... done, booting the kernel.”和 systemd 產生登錄提示之間我沒有得到任何輸出。

我想我只需要替換console=tty1console=ttyS0,115200n8,但隨後 systemd 抓住串列控制台並壓制核心,所以我只得到引導載入程序消息,然後是 systemd 的“ [ OK ] Started foo.”樣式消息,最後是登錄提示。

有沒有辦法[ 0.000000] foo在 ttyS0 上同時獲取核心消息(“”)和 systemd 的輸出?

或者一種至少使 systemd 靜音的方法,以便在我需要調試引導失敗時可以看到核心消息?


我應該補充一點,核心絕對支持記錄到 ttyS0:當我用 替換整個核心命令行時console=ttyS0,115200n8,我得到了[ 0.000000] foo我想要的“”消息,但是核心自然會因為找不到它的 rootfs 而出現恐慌。

systemd 抓取串列控制台並壓制核心,所以我只收到引導載入程序消息

可以?它沒有。核心命令行中的loglevel=1負責告訴核心停止記錄。嘗試刪除該語句(或將其顯式設置為loglevel=7)。

要阻止systemd記錄自己的狀態消息,請使用systemd.show_status=no(ref.: systemd(1) )。


PS:伙計們,請停止將任意軟體錯誤和錯誤配置歸咎於 systemd。

引用自:https://unix.stackexchange.com/questions/211407