web-dev-qa-db-ja.com

systemdシステムのシリアルコンソールでカーネルメッセージを取得するにはどうすればよいですか?

A20-OLinuXino-Lime2 をヘッドレスファイルサーバーとして設定しようとしています Debian 8イメージ from IgorPeč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=tty1console=ttyS0,115200n8に置き換える必要があると思ったのですが、systemdがシリアルコンソールを取得してカーネルをスケルチするため、ブートローダーメッセージのみが表示され、systemdの「[ OK ] Started foo.」スタイルが表示されます。メッセージ、そして最後にログインプロンプト。

カーネルメッセージ( "[ 0.000000] foo")とsystemdの出力の両方をttyS0で取得する方法はありますか?
または、ブートの失敗をデバッグする必要がある場合にカーネルメッセージを表示できるように、少なくともsystemdをミュートする方法はありますか?


カーネルがttyS0へのロギングを確実にサポートしていることを追加する必要があります。カーネルコマンドライン全体をconsole=ttyS0,115200n8に置き換えると、必要な「[ 0.000000] foo」メッセージが表示されますが、カーネルはパニックに陥ります。そのrootfsを見つけます。

4
n.st

systemdはシリアルコンソールを取得してカーネルをスケルチするので、ブートローダーメッセージのみが表示されます

そうですか?そうではありません。カーネルコマンドラインのloglevel=1は、カーネルにロギングを停止するように指示する役割を果たします。そのステートメントを削除してみてください(または明示的にloglevel=7に設定してください)。

systemdが自身のステータスメッセージをログに記録しないようにするには、systemd.show_status=noを使用します(参照: systemd(1) ) 。


P. S。:皆さん、systemdに任意のソフトウェアのバグや設定ミスを起因させるのはやめてください。

3
intelfx