Warum haben einige Linux-Distributionen immer noch / dev / ttyS0, ttyS1 usw., obwohl neuere Computer keine solche serielle Schnittstelle haben?


34

Viele neue Laptops und Desktop-Computer verfügen nicht über serielle 9-Pin- / 25-Pin-Anschlüsse. Warum enthalten viele Linux - Distributionen noch /dev/ttyS0, dev/ttyS1Gerätedateien?

Da udevkann die Gerätedateien dynamisch erstellen, warum /dev/ttyS0, /dev/ttyS1noch statisch erstellt? Jedes Mal, wenn ich hochfahre /dev/ttyS0und drin bin /dev/ttyS1.

Übrigens: Ich benutze Debian 7.0.

Antworten:


41

Diese /devKnoten werden angezeigt, weil der Standardtreiber für den seriellen PC-Port in den von Ihnen verwendeten Kernel kompiliert ist und UARTs findet . Das führt dazu, dass /sys/devices/platform/serial8250(oder etwas Kompatibles) angezeigt wird , und udev erstellt die entsprechenden /devKnoten.

Diese UARTs sind höchstwahrscheinlich eine der vielen Funktionen des Chipsatzes Ihres Motherboards. Serielle UARTs im Chipsatz sind immer noch weit verbreitet, obwohl es immer seltener wird, dass ein DB-9-Stecker an diese IC-UART-Pins angeschlossen wird.

Auf einigen Motherboards gibt es einen Header-Anschluss für jeden seriellen Anschluss. Sie müssen ein Adapterkabel kaufen, wenn Sie diesen Anschluss zur Rückseite des PCs verlegen möchten:

10-poliger Header zum DB-9M-Adapterkabel

Andere Motherboards, die denselben Chipsatz verwenden, legen möglicherweise nicht einmal den Header-Anschluss offen, obwohl die Funktion in Silizium verfügbar ist, um nur ein wenig Leiterplattenplatz und ein paar Cent für den Header-Anschluss zu sparen.

Einige serielle UARTs verursachen nur geringfügige Kosten für einen in Serie gefertigten PC-Chipsatz-IC, wohingegen sich die endgültigen Einzelhandelskosten für ein Motherboard um ein paar Dollar erhöhen, wenn ein DB-9-Steckverbinder an der Platinengrenze herausgeführt wird. Es gibt auch Kosten im PCB-Raum; Platz an der Brettkante ist besonders wertvoll.

Es gibt keine Standardmethode, um festzustellen, ob ein Gerät an eine serielle RS-232-Schnittstelle angeschlossen ist.

Im Gegensatz zu USB, bei dem durch das bloße Vorhandensein eines Anschlusses auf dem Motherboard kein /devKnoten erstellt wird, sondern ein Gerät angeschlossen wird, da eine recht komplexe Aushandlung zwischen dem Gerät und dem Host-Betriebssystem stattfindet. Tatsächlich meldet sich das Gerät beim Betriebssystem an und udevkann so reagieren, indem ein geeigneter /devKnoten für das Gerät erstellt wird.


11
Ich empfehle auch zu erwähnen, dass viele Laptop-Motherboards einen seriellen Controller haben. Sie sind einfach nirgendwo zu finden und können daher nicht verwendet werden, ohne den Laptop auseinanderzunehmen und auf Testpunkte zu löten. Viele Hersteller verwenden diesen, um einige grundlegende Prüfungen an der Produktionslinie durchzuführen um eine grundlegende Funktionsstufe des Motherboards vor dem Versand zu gewährleisten. Für Linux bedeutet dies jedoch, dass eine serielle Schnittstelle vorhanden ist und diese instanziiert, wie es für alle Karten mit einem seriellen Controller zu erwarten ist.
Vality

@Vality, kennen Sie nützliche Informationen dazu? Ich greife auf einen Laptop zu, der morgen als veraltet gilt und daher reif für (a) Linux und (b) Basteln ist.
Chris H

1
@ChrisH Nun, es hängt ein wenig vom Laptop ab. Sie müssen ein Datenblatt oder zumindest eine Hacking-Anleitung für das Motherboard des Laptops finden. Je nach Modell haben einige das richtige Layout, um einen seriellen Header einfach anzulöten, andere jedoch Billigere Boards haben nur einige verstreute Testpunkte über das Board. Wenn Sie Glück haben und je früher es der Fall ist, können Sie einfach einen Header auflöten, ein Kabel daran anschließen und wahrscheinlich ein kleines Loch in Ihren Laptop schneiden, damit die Buchse hineinpasst, dann haben Sie einen Anschluss. Denken Sie daran, dass es 5 oder 3,3 Volt sein werden. Verwenden Sie es also nicht als RS232. Welcher Laptop ist das?
Vality

@Vality ein Acer Netbook - habe nicht das genaue Modell hier - Ich habe mich nur über die allgemeinen Ressourcen gewundert, es wird eine Weile dauern, bis ich mich darum kümmere - danke.
Chris H

Das Problem ist grundlegende, konservative, Abwärtskompatibilität. Deshalb mögen Leute Linux. Sie bewegen sich nicht „schnell und brechen Dinge“ in einem Kernel. Die Dinge müssen sich nur wirklich ändern, wenn es einen gültigen - und ziemlich universellen - Grund gibt, warum der Kernel voranschreitet.
JakeGould

4

Stellen Sie sich vor, Linux läuft unter Virtualisierung. Viele Emulatoren verlassen sich immer noch darauf, die Konsole an den seriellen Port auszugeben. Es ist ein praktischer Standard. Headless-Server verwenden weiterhin den seriellen Anschluss für die Kommunikation.


Keiner dieser Gründe ist jedoch der Grund, warum der Geräteknoten erstellt wird. Es entsteht, weil das Gerät dort ist, was den Kernel betrifft. Wenn Sie den seriellen UART im CMOS deaktivieren, wird dies nicht der Fall sein.
GnP

1
QEMU ist ein Beispiel, das es verwendet, wenn Sie die VM in Ihrem Terminal ausführen
Ciro Santilli Am

0

Erwähnenswert ist, dass viele (die meisten?) Server weiterhin seriellen Zugriff (ttyS0) bieten. Ich muss fast täglich eine Verbindung über eine Serial-over-LAN-Verbindung über iLO / iDRAC herstellen. Wie @Patrick feststellte, verbinde ich mich mit virtuellen Maschinen auch über die serielle Schnittstelle, wenn ich das Netzwerk usw. neu konfiguriere.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.