Weiterführende Literatur

Weiterführende Literatur

Ich möchte meinen PC an mein Terminal, einen DEC vt320, anschließen und die Linux-Konsole darauf ausgeben können. Außerdem möchte ich Befehle in das Terminal eingeben und eine Antwort auf dem Bildschirm erhalten. Ich wollte mich über Telnet mit Sachen verbinden, weiß aber nicht, wie das über die serielle Schnittstelle geht. Meine serielle Verbindung ist /dev/ttyS0.

Antwort1

Es sieht so aus, als ob Mint 19.3 verwendet systemd. Sofern Mint die Konfiguration also nicht gegenüber den übergeordneten Distributionen (Ubuntu und letztendlich Debian) geändert hat systemd, sollten die folgenden Befehle funktionieren.

So starten Sie sofort einen seriellen Port für den Anmeldezugriff im Terminalstil:

sudo systemctl start serial-getty@ttyS0 

So bleibt die Konfiguration auch nach einem Neustart erhalten:

sudo systemctl enable serial-getty@ttyS0

Nach dem Ausführen des ersten dieser Befehle sollte auf dem Terminal eine Anmeldeaufforderung angezeigt werden. Wenn dies nicht der Fall ist, drücken Sie auf dem Terminal ein- oder zweimal die Eingabetaste. Dies kann dabei helfen, die Datenübertragungsgeschwindigkeit des Terminals zu ermitteln.

(Die Geschwindigkeit der seriellen Schnittstelle wird manchmal auchBaudrate, obwohl dieser Begriff eigentlich nur auf Modemverbindungen und ähnliche Verbindungen zutrifft, bei denen eine Digital-Analog-Modulation stattfindet, nicht aber auf die einfache digitale Datenübertragung.)

Diese Standardkonfiguration systemdfür seriell angeschlossene Terminals beinhaltet eine automatische Erkennung der seriellen Portgeschwindigkeit für Geschwindigkeiten von 115200, 38400 und 9600 Bits pro Sekunde. Sie können dies mit dem Befehl bestätigen systemctl cat serial-getty@ttyS0. Dadurch wird die automatisch generierte Unit-Datei für diesen seriellen Port ausgegeben. Unter anderem sollte sie diese Zeile enthalten, die den eigentlichen Prozess startet, der das Terminal verwaltet:

ExecStart=-/sbin/agetty -o '-p -- \\u' --keep-baud 115200,38400,9600 %I $TERM

Wenn die automatische Geschwindigkeitserkennung der seriellen Schnittstelle bei Ihnen nicht gut funktioniert oder Sie einen Geschwindigkeitswert angeben möchten, der nicht in der Standardliste enthalten ist, sollten Sie eineOverride-Dateifür diesen systemd-Dienst:

sudo systemctl edit [email protected]

Dieser Befehl erstellt die Datei (falls erforderlich) und öffnet sie in einem Editor.

Um beispielsweise die Geschwindigkeitserkennung der seriellen Schnittstelle auf 57600 bps zu begrenzen, würden Sie die folgenden drei Zeilen in die Override-Datei schreiben:

[Service]
ExecStart=
ExecStart=-/sbin/agetty -o '-p -- \\u' 57600 %I $TERM

Die erste Zeile gibt an, dass wir Dinge im [Service]Abschnitt der automatisch generierten Servicedatei überschreiben möchten, die zweite gibt an, dass wir ihre ExecStartZeile überschreiben und nicht einfach eine weitere hinzufügen möchten, und die dritte Zeile ist die neue ExecStartZeile mit der gewünschten Portgeschwindigkeit und/oder anderen Optionen für den agettyProzess, der das Terminal verwaltet.

Der traditionelle Name für einen solchen Prozess in der Unix-Welt ist getty, und Linux verwendet normalerweise eine erweiterte (AAlternative/ADie autobauding-Version davon für serielle Schnittstellen: agetty.

Antwort2

Die einfachste Lösung besteht darin, einfach einen Terminal-Login-Dienst auf dem seriellen Gerät zu starten, wie in der Antwort von telcoM. Das ändert nichts an derLinux-Konsole. Das Verschieben der Linux-Konsole auf das serielle Gerät ist einfacher durchzuführen, bringt aber mehr Nebenwirkungen mit sich.

Geben Sie dazu einfach console=ttyS0die Befehlszeile des Kernels ein, wie sie ihm von einem Bootstrap-Loader (in Ihrem Fall wahrscheinlich GRUB) bereitgestellt wird.

Der von systemd bereitgestellte Generator erkennt dies und aktiviert automatisch einen serial-getty@ttyS0Dienst. Aber darüber hinaus alle tatsächlichenKonsoleDie Ausgabe vom Kernel und von Programmen, die dorthin schreiben /dev/console, wird jetzt an Ihren DEC VT320 gesendet.

Leider ein VT320unterstützt nichtFarbe. (Ein VT340 hat welche, und zwar nur 16 Stück davon.)

Das ist unglücklich, da viele Programme heutzutage nur noch ECMA-48-Farbsteuerungssequenzen fest verdrahten, darunter auch solche, die Nachrichten an ausgeben /dev/console. Die Programme, die im systemd-Paket enthalten sind, tun dies alle, solange die Umgebungvon Prozess Nr. 1, die sie lesen,nichtenthalten TERM=dumb. Andere Programme treffen andere Entscheidungen, oft basierend aufihre eigenenProzessumgebungen, und einige treffen keine Entscheidungen auf der Grundlage von TerminalTypüberhaupt nicht, weil der Autor nie daran gedacht hat, dass die Ausgabe des Programms ein serielles Gerät mit einem echten monochromen Terminal sein könnte.

Also duAuchmüssen sicherstellen, dass die Kernel-Befehlszeile angibt TERM=dumb, was keine korrekte Beschreibung eines VT320 ist und völlig unzureichend.

Weiterführende Literatur

verwandte Informationen