我正在尝试建立一个A20-OLinuXino-LIME2作为无头文件服务器Debian 8 镜像从伊戈尔·佩科夫尼克 (Igor Pečovnik) 的作品。
我希望系统在启动过程中将其内核消息输出到串行控制台(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。
答案1
systemd 获取串行控制台并压制内核,因此我只收到引导加载程序消息
可以?事实并非如此。loglevel=1
内核命令行中的 负责告诉内核停止日志记录。尝试删除该语句(或将其显式设置为loglevel=7
)。
停止系统从记录自己的状态消息中,使用systemd.show_status=no
(参考:系统(1))。
PS:各位,请停止将任意软件错误和错误配置归咎于 systemd。