Arduinoで愚かな端末を作成していますが、シリアル接続の出力を見ることができます。ログイン/シェルはどのように入手できますか?私はこれを試しましたが、それをscreen /dev/ttyACM0
介してホストコンピュータに入力し、ターミナル画面で結果を見ることができますが、シェルはありません。 screen:exec /bin/sh
コマンドを使用すると、コントロールxtermウィンドウでシェルが起動しますが、シリアルラインに出力されなくなります。agetty -L /dev/ttyACM0 9600
しばらく座って待ってから、画面に何も表示せずに終了するさまざまな方法を試しました。これを試しましたが、cu -l /dev/ttyACM0 -s 9600
画面のやり取りなしで再び停止します。画面のようにミニコムをArduinoに接続しましたが、シェルを入手する方法がわかりません。確かに、私はArduinoベースの端末を介して私のメインコンピュータにアクセスしようとしていますが、私のメインコンピュータはUSBシリアル接続を介してArduinoにシェルセッションを提供する方法を見つけることができません。
答え1
agetty
問題についてはかなり静かなようです。私は試した:
$ strace -e open agetty -I 'hello\012' -L /dev/ttyS0 9600
開かれまし/dev//dev/ttyS0
たが、もちろん失敗しました。その後、数秒間停止してから停止しました。
マニュアルページには相対ファイル名が必要であることが示されているので、次のことを試しました。
$ strace -e open agetty -I 'hello\012' -L ttyS0 9600
今回は正しいデバイスを開いたが再び失敗する。
open("/dev/ttyS0", O_RDWR|O_NOCTTY|O_NONBLOCK) = -1 EACCES (Permission denied)
最後に、これは成功し、ttyに何かを書きました:
$ sudo strace -e open agetty -I 'hello\012' -L ttyS0 9600
setsid
レビューで言及した内容も追加する必要があります。 systemd(使用可能な場合)を使用してログインを開始することもできます。
$ sudo systemctl start serial-getty@ttyACM0
これは、サービスを使用している場合は、デバイスが作成されるたびに自動的に開始できますagetty
。--keep-baud 115200,38400,9600
systemctl enable
ttyACM0