USB-RS232アダプタを介してNAS(Debian Stretchを実行))にリモート端末でアクセスしたい。このマシンはヘッドレスであるはずなので、ブートも見たい。シリアルラインで処理します。
(それでも、この問題を評価するために、現在、HDMIポートに接続されている画面があります。)
カーネル引数リストに_console=ttyUSB0
_を追加しました。起動時に、これによりシステムがフリーズします。
ブート出力の最後の行は次のとおりです:(ブートローダーはextlinuxです)
_Loading /vmlinuz... ok
Loading /initrd.img...ok
Probing EDD (edd=off to disable)... ok
_
上記のカーネルパラメータを使用しない場合、マシンは問題なく起動しています。そこから、実行することで簡単にシリアル端末アクセスを実現できました
_systemctl enable [email protected]
systemctl start [email protected]
_
リモートサーバー上、および
_screen -F /dev/ttyUSB0 9600
_
私のローカルマシンで。したがって、USB-RS232アダプタは正しく機能しています。サーバーは Intel NUC 5CPYH with Braswellチップセットで、_Linux 4.9.0-4-AMD64
_ debianカーネルを実行します。
それを機能させるには、どのアクションを実行する必要がありますか?
ブートパラメータとして_console=tty0 console=ttyUSB0,9600n8
_を指定すると、マシンは正常にブートしますが、それでもシリアルポートに接続できません。また、_systemctl status [email protected]
_は、サービスがloaded
およびinactive (dead)
であることを示しています。その時は稼働していると思っていたでしょう。
少し調べてみたところ、私のinitramfsに関連するカーネルモジュールが不足していることがわかりました。カーネルパラメーターとして_break=init
_を指定することで、なんとかinitramfsシェルに入ることができ、_/dev/ttyUSB0
_デバイスがないことがわかりました。
_cp210x
_、_pl2303
_、および_ftdi_sio
_を_/etc/initramfs-tools/modules
_に追加し、initramfsを再作成した後、initramfsシェルに_/dev/ttyUSB0
_デバイスがあることを確認しました。
それでも、他のマシンから接続できませんでした。だから私はそのデバイスで手動でgettyを開始しようとしました:
_# /sbin/getty -L 9600 /dev/ttyUSB0 vt100
getty: setsid: Operation not permitted
# su root -c "/sbin/getty -L 9600 /dev/ttyUSB0 vt100"
sh: su: not found
_
だから私は今ここにいます。
システムがフリーズしていません。 [〜#〜] all [〜#〜]出力をシリアルコンソールに送信しました。
コンソール引数をカーネルに渡すには、ローカルコンソールとシリアルインターフェイスの両方を含める必要があります。
TLDP-リモートシリアルコンソールHOWTO-第5章Linuxカーネルの構成 を参照してください。
図5-2。推奨されるカーネルパラメータ、ビデオカード付きPC
console=tty0 console=ttyS0,9600n8
カーネルメッセージは、最初の仮想端末とシリアルポートの両方に表示されます。 initシステムとシステムロガーからのメッセージは、最初のシリアルポートにのみ表示されます。これは、接続されているモニターを見ると少し混乱する可能性があります。マシンが起動してからハングしているように見えます。慌てる必要はありません。initシステムは起動しましたが、シリアルポートにメッセージを出力していますが、画面には何も出力していません。 gettyが構成されている場合、ログイン:プロンプトが最終的に接続されたモニターに表示されます。
ビデオカードのないPCの場合、このHOWTOはカーネルパラメータを提案します。
図5-3。推奨されるカーネルパラメータ、ビデオカードのないPC
console=ttyS0,9600n8
これらのパラメータは、ブートローダーによってブートカーネルに渡されます。次に、Linuxインストールで使用されるブートローダーを構成して、コンソールパラメーターをカーネルに渡します。