Einen Router bauen
arrow.gif Entwicklungsumgebung
arrow.gif Hardware Plattformen
arrow.gif Slackware Router
arrow.gif Downloads
   
Weiterentwicklung
arrow.gif Tasks pending
arrow.gif Bugs
   
Informationen
arrow.gif Security
arrow.gif FAQ
arrow.gif Links
 
Slackware Linux Router
Prev Next

5. Serielle Konsole

5.1 Übersicht

Im «Nomalfall» gibt es keinen Grund, einen Rechner via serielle Konsole zu betreiben. Serielle Konsolen sind langsame, textbasierte Terminals der alten Schule − die allerdings in den folgenden Fällen unverzichtbar sind:

  • Der Computer weist keine Monitor- und Tastaturanschlüsse auf. Embedded Plattformen, die für Router besonders gut geeignet sind, fallen typischerweise in diese Kategorie.
  • Im Normalbetrieb wird der Rechner via SSH gewartet und konfiguriert. Für Diagnosezwecke und bei grösseren Updates ist der Zugang zu einer Konsole jedoch zwingend. In diesen Fällen ist es einfacher, mit einer seriellen Konsole zu arbeiten, als Tastatur und Monitor zum Router zu transportieren (oder umgekehrt).

5.2 Serielle Schnittstellen

Konventionelle serielle Schnittstellen sind weit verbreitete i/O-Ports, die im RS-232 Standard spezifiziert sind. Als Anschlüsse dienen meist 9-Pin Stecker, als Transmitter auf dem Board dient ein UART-Chip (Universal Asynchronous Receiver-Transmitter). Der serielle Port wurde ursprünglich entwickelt, um Modems anzuschliessen, aber er kann auch verwendet werden um Mäuse, Printer und Terminals mit einem Computer zu verbinden.

5.3 Kernelunterstützung

Der Kernel des Routers muss derart konfiguriert werden, dass System-Meldungen an den seriellen Port ausgegeben werden. (In der Beispielkonfiguration wurde der Support für den seriellen Port bereits aktiviert.)

Character devices --->
[*] Support for console on serial port
 

5.4 Benötigte Hardware

Um den Router mit seinem Terminal zu verbinden wird ein Nullmodem-Kabel benötigt. Router und Terminal müssen mit RS-232 Anschlüssen ausgerüstet sein.

5.5 Low Level Konfiguration des Routers

Dem seriellen Port des Routers wird eine I/O-Adresse, ein IRQ und ein Name (z.B. ttyS0) zugewiesen. Diese Werte werden normalerweise vom BIOS gesetzt. Einstellungen mit setserial überprüfen:

# setserial -bg /dev/ttyS*
 

Das obige Kommando gibt die I/O-Port-Adressen der seriellen Ports aus, die zugehörigen IRQs und den Typ des verwendeten UART.

/dev/ttyS0 at 0x03f8 (irq = 4) is a 16550A
/dev/ttyS1 at 0x02f8 (irq = 3) is a 16550A
 

Hinweis: Wenn der serielle Port als Konsole für das System benützt wird, dann kann der Interrupt nicht mit einem anderen Gerät geteilt werden. Falls die Konsole auf Port /dev/ttyS0 arbeitet, muss der Port /dev/ttyS2 mit Hilfe von setserial deaktiviert werden, damit Interrupt 4 nicht mehrfach belegt wird.

# setserial /dev/ttyS2 uart none port 0x0 irq 0
 

5.6 High Level Konfiguration des Routers

Die Datenrate (speed), sowie die Methode zur Kontrolle des Datenflusses müssen definiert und LILO oder GRUB müssen angepasst werden.

Die Konfigurationsdatei /etc/lilo.conf des Routers so editieren, dass LILO einen seriellen Port als Ein- Ausgabegerät benützt. Dazu ist in der «Global Section» der Datei ein Eintrag von der Form serial = <PORT>,<Geschwindigkeit> <Parität><Datenbits> nötig.

## LILO global section
## Send LILO I/O to /dev/ttyS0
## Values: port 0, 9600 Baud, no parity, 8 bits
serial = 0,9600n8
 

Ausserdem muss dem Kernel des Routers mitgeteilt werden, dass er eine serielle Schnittstelle als Konsole benützen soll. Der Bootparameter dafür lautet console= <device>. Beim image, das gebootet werden soll, den entsprechenden Eintrag vornehmen:

## For plattforms without video card use
## append = "console=ttyS0,9600n8r"
## To enable virtual terminal and serial port use
append="console=tty0 console=ttyS0,9600n8r"
 

Hinweis: Mit der Konfiguration append="console=tty0 console=ttyS0,9600n8r" werden die Kernel-Messages auf der virtuellen Konsole /dev/tty0 und auf der seriellen Konsole /dev/ttyS0 ausgegeben. Die Meldungen, die init beim Booten ausgibt, erscheinen aber nur auf /dev/ttyS0.

LILO updaten

# lilo
 

Damit das Login auf dem Router auch via serielle Schnittstelle erfolgen kann, muss ein getty gestartet werden das auf /dev/ttyS0 hört und einen Bootprompt zur Verfügung stellt. Für Rechner, die via Nullmodem-Kabel miteinander verbunden werden, muss /etc/inittab wie folgt editiert werden. (Ein entsprechender Eintrag ist vorhanden, er muss lediglich aktiviert und angepasst werden.)

s1 = ID
123 = Terminal wird im Runlevel 1, 2, 3 betrieben
respawn = getty nach dem Logout neu starten
/sbin/agetty = agetty starten
-L = Carrier Detect Leitung ignorieren
ttyS0 = Bezeichnung des seriellen Ports
9600 = Baudrate
vt100 = Terminal Emulation

s1:123:respawn:/sbin/agetty -L ttyS0 9600 vt100
 

/sbin/getty wird mit dem folgenden Kommando gestartet:

s1:123:respawn:/sbin/getty ttyS0 9600 vt100
 

Die Grussbotschaft von /sbin/getty «Welcome to Linux 2.6.x (ttyS0)» wird durch den folgenden Eintrag in /etc/issue erzeugt:

Welcome to @O @R (@L)
 

Nach der Änderungen /etc/inittab neu einlesen.

# kill -HUP 1
 

Überprüfen, ob /dev/modem nicht auf den seriellen Port zeigt, den die Konsole verwendet. Den Link gegebenenfalls löschen.

# ls -l /dev | grep modem
 

5.7 Security

Standardmässig sollte ein remote-Zugriff von root nicht zugelassen werden. Die entsprechenden Einträge in /etc/securetty überprüfen. (Selbstverständlich muss der root-Zugriff via ttyS0 zugelassen werden. Es wird vorausgesetzt, dass Personen, die in der Lage sind, ein Nullmodem-Kabel an den Router anzuschliessen, dazu auch berechtigt sind.)

5.8 Konfiguration des Terminals

Mit setserial die Hardware-Konfiguration des Terminal-Rechners überprüfen. (Vergl. «Low Level Konfiguration des Routers».)

Auf dem PC, der als Terminal dient, muss ein Terminalprogramm wie Minicom (Linux) oder Hyperterminal (hypertrm Windows) zur Verfügung stehen. Im Folgenden wird die Konfiguration von Minicom beschrieben. Minicom im Konfigurarionsmodus starten:

# minicom -s
 

Serial port setup auswählen und die folgenden Werte eintragen:

  
A - Serial Device         : /dev/ttyS0  
B - Lockfile Location     : /var/lock  
C - Callin Program        :  
D - Callout Program       :  
E - Bps/Par/Bits          : 9600 8N1  
F - Hardware Flow Control : Yes  
G - Software Flow Control : No  
 

ENTER drücken. Save setup as serial0 erzeugt das Konfigurationsfile /etc/minirc.serial0.

minicom starten.

# minicom serial0
 

Falls der Router und der Terminal-Rechner mit einem Nullmodemkabel verbunden sind, erscheint im Terminalfenster des remote-Rechners der Bootprompt des Routers.


Prev Home Next
Kernel kompilieren Content Apache installieren