如何在 systemd 系統的串列控制台上獲取核心消息?
我正在嘗試將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=tty1
為console=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。