gettyを使用してbashプロセスを_without_ ttyにリンクする方法

gettyを使用してbashプロセスを_without_ ttyにリンクする方法

2つのシリアルUSBデバイスを互いに接続し、一方の/dev/ttyUSB1端を実行して/dev/ttyUSB2picocom/bin/bashを使用してもう一方の端に接続し、picocompicocomをローカル端末エミュレータとして使用できるように接続したいと思います。

私はこれを試しました

setsid /bin/bash </dev/ttyUSB2 >/dev/ttyUSB2 2>&1

その後、ピココムで反対側に接続したのですが、画面に横説説(:~$ 0m:~$ 0m:~$ 0m:~$ 0m:~$ 0m:~$ 0m:~$ 0m:~$ 0m:~$ 0m:~$ 0m:~$ 0m:~$ 0m:~$ 0m:~$ 0m:~$)だけが出ますね。

しかし、私は何をしているのかわかりませんでした。誰でも私にこの秘密を教えてもらえますか?


修正/更新:

他のコンピュータでは、以前に受け取った横説説はもう受けられません。上記のようにbashをttyに接続し、picocomを使用してもう一方の端に接続すると、プロンプトが表示され、コマンドを実行できますが、コマンドは私にエコーされません(結果のみが表示されます)。 「ジョブ制御」はありません(Ctrl + Cでテストしましたが、スリーププロセスは停止しません)。


背景:

私は2つの異なる方法でpicocomをローカル端末エミュレータとして正常に使用しました。

  1. ゲッティと一緒に:

    sudo systemctl start [email protected]
    

    picocomに正常に接続できますが、/dev/ttyUSB1ログインする必要があります。 (この回答ありがとうございます。https://unix.stackexchange.com/a/772040/158192前の質問に進む)

  2. ソカートと

    $ socat -d -d PTY,raw,echo=0 EXEC:"/bin/bash",pty,stderr,setsid,sane
    2024/04/01 18:32:13 socat[40547] N PTY is /dev/pts/4
    ...
    

    これにより、ピココムをこのようなローカル端末として使用することができます。picocom /dev/pts/4


はい、私は直接USB ttyに/ bin / bashを接続できるはずですか?しかし、私の実験はすべて間違っていました。

ベストアンサー1

最初の例は正確に見えます(ただし、下の私のコメントも参照してください)。

私の机の上にコンピュータがあり、シリアルポートを介して接続されています。ターゲットシステムでは、シリアルポートはです/dev/ttyS0。私のデスクトップでは、ポートは/dev/ttyUSB0

次の通信ツールを使用してホストから接続する場合picocom:

$ picocom -b 115200 /dev/ttyUSB0

gettyその後、通常、シリアルポートで実行されているプログラムを停止し、次を実行します。

# systemctl stop serial-getty@ttyS0
# setsid bash > /dev/ttyS0 < /dev/ttyS0 2>&1

すべてが期待どおりに動作します。にはpicocom以下が表示されます。

root@radio0:/boot/firmware# tty
/dev/ttyS0

誰ですか確かにどちらの場合も転送速度が一致していますか?stty次のコマンドを使用して転送速度を明示的に設定できます。

# stty 115200 < /dev/ttyS0

ログインを必要としない bash シェルを自動的に起動することが目標である場合は、次もご覧ください。この記事(免責事項:自分で作成)正確なサービスを提供するためにgettyとpamを設定する方法について説明します。

おすすめ記事