私がやりたいのは、PC を端末 DEC vt320 に接続して Linux コンソールを出力し、端末にコマンドを入力して画面に応答を送信できるようにすることです。Telnet から接続したいのですが、シリアル経由で接続する方法がわかりません。シリアル接続は /dev/ttyS0 です。
答え1
Mint 19.3 は を使用しているようなのでsystemd
、Mint がsystemd
親ディストリビューション (Ubuntu および Debian) の構成を変更していない限り、次のコマンドで問題が解決するはずです。
ターミナル形式のログイン アクセス用にシリアル ポートをすぐに起動するには:
sudo systemctl start serial-getty@ttyS0
再起動後も設定を維持するには:
sudo systemctl enable serial-getty@ttyS0
これらのコマンドの最初のものを実行すると、ターミナルにログイン プロンプトが表示されます。表示されない場合は、ターミナルで Enter キーを 1 回または 2 回押します。これにより、ターミナルで動作しているデータ転送速度を検出できます。
(シリアルポートの速度は、ボーレートただし、この用語は、単純なデジタル データ転送ではなく、デジタルからアナログへの変調が関係するモデム接続などにのみ適用されます。
シリアル接続端末のこのデフォルトsystemd
設定には、115200、38400、9600 ビット/秒の速度のシリアル ポート速度自動検出が含まれています。これは、コマンドで確認できますsystemctl cat serial-getty@ttyS0
。このコマンドは、そのシリアル ポート用に自動生成されたユニット ファイルを出力します。とりわけ、端末を管理する実際のプロセスを開始する次の行が含まれている必要があります。
ExecStart=-/sbin/agetty -o '-p -- \\u' --keep-baud 115200,38400,9600 %I $TERM
自動シリアルポート速度検出がうまく機能しない場合、またはデフォルトのリストに含まれていない速度値を指定したい場合は、上書きファイルこの systemd サービスの場合:
sudo systemctl edit [email protected]
このコマンドは、(必要な場合)ファイルを作成し、エディターで開きます。
たとえば、シリアル ポートの速度検出を 57600 bps にロックするには、オーバーライド ファイルに次の 3 行を書き込みます。
[Service]
ExecStart=
ExecStart=-/sbin/agetty -o '-p -- \\u' 57600 %I $TERM
最初の行は、[Service]
自動生成されたサービス ファイルのセクション内の内容を上書きすることを指定します。2 行目は、その行を上書きし、別の行を追加するだけではないことを示します。3 行目は、端末を管理するプロセスに必要なポート速度やその他のオプションを含むExecStart
新しい行です。ExecStart
agetty
Unixの世界では、このようなプロセスの伝統的な名前は でありgetty
、Linuxでは通常、拡張された(1つの代替/1つのシリアル ポート用の utabauding バージョン: agetty
.
答え2
最も簡単な答えは、telcoMの回答にあるように、シリアルデバイス上でターミナルログインサービスを起動することです。LinuxコンソールLinux コンソールをシリアル デバイスに移動すると実行が簡単になりますが、副作用も多くなります。
console=ttyS0
ブートストラップ ローダー (この場合はおそらく GRUB) によってカーネルに提供されるコマンド ラインに記述するだけです。
systemdが提供するジェネレータはそれを認識し、自動的にserial-getty@ttyS0
サービスを有効にします。しかし、さらに、実際のコンソールカーネルからの出力と、 に書き込むプログラムからの出力が/dev/console
、DEC VT320 に送られるようになります。
残念ながら、VT320サポートしていませんカラーです。(VT340 にはカラーがあり、16 台のみです。)
これは残念なことです。なぜなら、今日では多くのプログラムがECMA-48カラー制御シーケンスをハードワイヤードしているからです。これには、メッセージを吐き出すプログラムも含まれます/dev/console
。systemdパッケージに含まれるプログラムはすべて、環境がプロセス#1それを彼らは読み、ではない他のプログラムは、多くの場合、以下TERM=dumb
の基準に基づいて異なる決定を下します。彼ら自身プロセス環境、そしてターミナルに基づいて決定を下さないものもあるタイプなぜなら、作者はプログラムの出力が実際のモノクロ端末を備えたシリアルデバイスになるかもしれないとは考えていなかったからです。
だからあなたはまたカーネルコマンドラインで が指定されていることを確認する必要がありますがTERM=dumb
、これは VT320 の正しい記述ではなく、まったく不十分です。
参考文献
- https://unix.stackexchange.com/a/447098/5132
- https://unix.stackexchange.com/a/475043/5132
- ジョナサン・デ・ボイン・ポラード(2018年)。Linux カーネル仮想端末デバイスのマニュアルページ. 提案。
- ジョナサン・デ・ボイン・ポラード(2018年)。
linux-console
。noshガイド. ソフトウェア。 - ジョナサン・デ・ボイン・ポラード(2018年)。
linux-vt
。noshガイド. ソフトウェア。
- ジョナサン・デ・ボイン・ポラード(2018年)。