如何在 systemd 系统上的串行控制台上获取内核消息?

n.s*_*.st 5 systemd serial-console linux-kernel

我正在尝试使用来自Igor Pe\xc4\x8dovnik\'s builds的Debian 8 映像将A20-OLinuXino-LIME2设置为无头文件服务器。

\n\n

我希望系统在启动过程中将其内核消息输出到串行控制台(ttyS0),并最终在 ttyS0 上显示登录提示。

\n\n

默认情况下,该映像使用以下内核命令行:

\n\n
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\n
Run Code Online (Sandbox Code Playgroud)\n\n

\xe2\x80\xa6 当然不会向 ttyS0 \xe2\x80\x94 输出任何内核消息 \xe2\x80\x94 我在 U-Boot\ 的“ ”Uncompressing Linux... done, booting the kernel.和产生登录提示的 systemd 之间没有得到任何输出。

\n\n

我想我只需要替换console=tty1console=ttyS0,115200n8,但随后 systemd 抓住串行控制台并压制内核,所以我只收到引导加载程序消息,然后是 systemd 的“ [ OK ] Started foo.”样式消息,最后是登录提示。

\n\n

有没有办法[ 0.000000] foo在 ttyS0 上同时获取内核消息(“”)和 systemd 的输出?
\n或者至少有一种方法可以使 systemd 静音,以便在需要调试启动失败时可以看到内核消息?

\n\n
\n\n

我应该补充一点,内核肯定支持记录到 ttyS0:当我用 替换整个内核命令行时console=ttyS0,115200n8,我得到了[ 0.000000] foo我想要的“”消息,但内核自然会出现恐慌,因为它找不到它的 rootfs。

\n

int*_*lfx 3

systemd 获取串行控制台并压制内核,因此我只收到引导加载程序消息

可以?事实并非如此。内核命令行loglevel=1中的 负责告诉内核停止日志记录。尝试删除该语句(或将其显式设置为loglevel=7)。

要阻止systemd记录其自己的状态消息,请使用systemd.show_status=no(参考:systemd(1))。


PS:各位,请停止将任意软件错误和错误配置归咎于 systemd。