私の組み込みシステムでは、Linuxカーネル4.19.102とsystemd240を使用しています。すべてがbuildroot2019.02.9を使用して生成されます。
デバイスのシリアルポートを使用してコンソールを出力します。
bootargs = "console=ttyS0,115200";
私が使用した以前のバージョンでは、コンソール側(buildroot 2018.05、kernel 4.16.y、systemd 237)ですべて問題ありませんでした。私は次のファイルを持っていました:/etc/systemd/system/getty.target.wants/[email protected]
起動していた/sbin/getty -L ttyS0 115200 vt100
これで、コンソールは通常の開始メッセージを出力してから、ログメッセージを2回出力します。
Welcome to MyDevice
MyDevice login:
Welcome to MyDevice
MyDevice login:
そして、「r」で始まる長いパスワードでログを記録しようとすると、次のようになります。
Welcome to MyDevice
MyDevice login:
Welcome to MyDevice
MyDevice login: root
Password: r
Login incorrect
MyDevice login:
うまくいけばSSHでログインできます。このバージョンでは、「getty」サービスが2回開始されていることを確認しました。
# ps | grep getty
988 root /sbin/getty -L ttyS0 115200 vt100
1002 root /sbin/getty -L console 115200 vt100
1117 root grep getty
/ etcファイルは次のようになりました:/etc/systemd/system/getty.target.wants/console-getty.service
起動していた/sbin/getty -L console 115200 vt100
しかし /sbin/getty -L ttyS0 115200 vt100
はまだ開始されています。
'console'サービスを強制終了すると(以前のバージョンと同じ状態になるため)、ログインでき、コンソールは最終的に正常になります。
コンソールサービスが開始されないようにbuildrootまたはsystemdを構成するにはどうすればよいですか?
問題は、BR2_TARGET_GENERIC_GETTY_PORTがbuildroot2018.05の「コンソール」に設定されていたことです。 buildroot2019.02.9で「ttyS0」によって変更する必要があります。