Im Katalog suchen

Linux - Wegweiser für Netzwerker

Online-Version

Copyright © 2001 by O'Reilly Verlag GmbH & Co.KG

Bitte denken Sie daran: Sie dürfen zwar die Online-Version ausdrucken, aber diesen Druck nicht fotokopieren oder verkaufen. Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

Wünschen Sie mehr Informationen zu der gedruckten Version des Buches Linux - Wegweiser für Netzwerker oder wollen Sie es bestellen, dann klicken Sie bitte hier.


vorheriges Kapitel Inhaltsverzeichnis Stichwortverzeichnis nächstes Kapitel



Serielle Geräte und die Eingabeaufforderung login:

Früher war es üblich, daß eine Unix-Installation aus einem einzigen Server mit vielen zeichenbasierten, “dummen” Terminals oder Dialup-Modems bestand. Solche Konstellationen wählt man heutzutage allerdings kaum noch. Da diese “dummen” Terminals mittlerweile zu Spottpreisen erhältlich sind, macht das die Sache gerade für solche Leute interessant, die sich ein Unix-System in der genannten Konstellation zusammenstellen wollen. Konfigurationen von Dialup-Modems sind heute nicht weniger verbreitet, allerdings werden sie heutzutage eher zum Einloggen in SLIP- oder PPP-Systeme verwendet (siehe Kapitel 7 Serial Line IP, und Kapitel 8 Das Point-to-Point-Protokoll) als für einfache Logins. Nichtsdestotrotz kann man in beiden Konfigurationen ein einfaches getty-Programm verwenden.

Das Wort getty setzt sich vermutlich aus “get tty” zusammen. Ein getty-Programm öffnet ein serielles Gerät, führt an ihm (und am eventuell vorhandenen Modem) eine passende Konfiguration durch und wartet schließlich, bis eine Verbindung zustandekommt. Eine aktive Verbindung am seriellen Gerät wird normalerweise am “Data Carrier Detect Pin” (DCD) erkannt. Unmittelbar nach Verbindungsaufbau gibt das getty-Programm eine login:-Eingabeaufforderung aus, ruft das Login-Programm des Systems auf und übergibt ihm die Kontrolle In Linux ist für jede virtuelle Konsole (z.B. /dev/tty1) jeweils ein eigener getty-Prozeß zuständig.

Es gibt eine ganze Reihe unterschiedlicher Implementierungen von getty. Jede hat gegenüber einer anderen gewisse Vorzüge. Der getty-Befehl, den wir hier näher betrachten, wird mgetty genannt. Er ist relativ populär, da er gerade für Modems eine ganze Menge von Features enthält, z.B. Unterstützung von automatischen Faxprogrammen und Voice-Modems. Wir konzentrieren uns hier nur darauf, wie man mgetty für gewöhnliche Datenabrufe konfiguriert. Die Betrachtung weiterer Details überlassen wir gerne Ihrem Forscherdrang.

Konfiguration des mgetty-Dämons

Der Quellcode des mgetty-Dämons ist unter ftp://alpha.greenie.net/pub/mgetty/source/ erhältlich und auch in den meisten Linux-Distributionen enthalten. Der mgetty-Dämon unterscheidet sich von den meisten anderen getty-Implementierungen dadurch, daß er speziell für Hayes-kompatible Modems ausgelegt ist. Er unterstützt zwar auch direkte Terminal-Verbindungen, ist aber für Dialup-Anwendungen am besten geeignet. Er verwendet zur Erkennung eines eingehenden Anrufs nicht die DCD-Leitung, sondern achtet auf die RING-Nachricht moderner Modems, die bei eingehenden Anrufen ausgelöst wird, sofern sie nicht auf automatische Anrufbeantwortung eingestellt sind.

Das ausführbare Hauptprogramm ist /usr/sbin/mgetty, und seine Konfigurationsdatei ist /etc/mgetty/mgetty.config. Es gibt noch eine Reihe weiterer Programme und Konfigura­tionsdateien für die anderen Features von mgetty.

Um mgetty automatisch zu starten, braucht man in den meisten Installationen für die Konfiguration nur einige Änderungen in der Datei /etc/mgetty/mgetty.config vorzunehmen und einige passende Einträge in der Datei /etc/inittab hinzuzufügen.

Tabelle 4.6 zeigt eine sehr einfache mgetty-Konfigurationsdatei. In diesem Beispiel werden zwei serielle Geräte konfiguriert. Das erste, /dev/ttyS0, unterstützt ein Hayes-kompatibles Modem mit 38.400 bps, das zweite, /dev/ttyS1, ein direkt angeschlossenes Terminal mit 19.200 bps.

Beispiel 4.6: /etc/mgetty/mgetty.config

# 
# mgetty configuration file 
# 
# this is a sample configuration file, see mgetty.info for details 
# 
# comment lines start with a "#", empty lines are ignored 
# 
# ----- global section ----- 
# 
# In this section, you put the global defaults, per-port stuff is below 
# 
# access the modem(s) with 38400 bps speed 38400 
# 
# set the global debug level to "4" (default from policy.h) 
debug 4 
#  

# ----- port specific section ----- 
# 
# Here you can put things that are valid only for one line, not the others 
# 
# 
# Hayes modem connected to ttyS0: don't do fax, less logging 
# 
port ttyS0 
  debug 3 
  data-only y 
# 
# direct connection of a VT100 terminal which doesn't like DTR drops 
# 
port ttyS1 
  direct y 
  speed 19200 
  toggle-dtr n 
#

Die Konfigurationsdatei unterstützt sowohl globale als auch portspezifische Optionen. In unserem Beispiel verwenden wir eine globale Option, um die Übertragungsgeschwindigkeit auf 38.400 bps einzustellen. Dieser Wert wird an das Gerät ttyS0 “vererbt”. Alle Ports, auf die mgetty angewendet wird, verwenden diese Geschwindigkeit, wenn für sie nicht ausdrücklich eine andere portspezifische Geschwindigkeit angegeben ist — in etwa so, wie wir es bei der Konfiguration von ttyS1 getan haben.

Das Schlüsselwort debug stellt die “Gesprächigkeit” der mgetty-Protokollausgaben ein. Das Schlüsselwort data-only in der ttyS0-Konfiguration veranlaßt mgetty, alle Faxmodem-Features zu ignorieren, so daß das Modem sich wie ein gewöhnliches Datenmodem verhält. Das Schlüsselwort direct in der ttyS1-Konfiguration weist mgetty an, das Modem am Port nicht zu initialisieren. Schließlich bewirkt das Schlüsselwort toggle-dtr, daß mgetty keinen Versuch unternimmt, die laufende Verbindung durch Absenken des DTR-Signals (Data Terminal Ready) an der seriellen Schnittstelle abzubrechen; manche Terminals mögen das einfach nicht.

Wenn Sie wollen, können Sie die Datei mgetty.config auch leer lassen und dafür Kommandozeilenparameter verwenden, um die meisten der genannten Konfigurationsoptionen einzustellen. Die dem Programm beiliegende Dokumentation enthält eine vollständige Beschreibung der mgetty-Konfigurationsparameter und Kommandozeilenargumente. Siehe das folgende Beispiel.

Um diese Konfiguration zu aktivieren, fügen wir zwei Einträge in die Datei /etc/inittab ein. Bei dieser Datei handelt es sich um die Konfigurationsdatei des init-Kommandos in Unix System V. Dieser Befehl ist verantwortlich für die Systeminitialisierung und enthält eine ganze Reihe von Anweisungen zum automatischen Start von Programmen während des Boot-Vorgangs bzw. zum Neustart von Programmen, die im laufenden Systembetrieb beendet werden. Das ist ideal für die Aufgaben, die ein getty-Programm erfüllen soll.

T0:23:respawn:/sbin/mgetty ttyS0 
T1:23:respawn:/sbin/mgetty ttyS1

Jede Zeile der Datei /etc/inittab besteht aus vier Feldern, die durch Doppelpunkte voneinander getrennt sind. Das erste Feld enthält eine eindeutige Kurzbezeichnung und besteht traditionell aus zwei Zeichen, in modernen Systemen aus bis zu vier Zeichen. Das zweite Feld enthält eine Liste von Runleveln, in denen dieser Eintrag aktiv sein soll. Runlevel stellen gewissermaßen verschiedene Maschinenkonfigurationen dar. Sie werden in Form hierarchischer Baumstrukturen aus Startskripten implementiert, die in den Verzeichnissen /etc/rc1.d, /etc/rc2.d usw. abgelegt sind. Dieses Feature ist meistens sehr einfach implementiert. Sie sollten Ihre eigenen Einträge nach dem Vorbild der anderen Dateieinträge gestalten und für weitere Informationen auf Ihre Systemdokumentation zurückgreifen. Das dritte Feld beschreibt, wann eine Aktion ausgelöst werden soll. Für die Anwendung von getty sollte in dieses Feld ein respawn eingetragen werden, was bedeutet, daß das Programm automatisch neu gestartet wird, sobald es aus irgendeinem Grund endet. Es gibt noch viele andere Optionen, sie sind aber für unsere Zwecke hier nicht weiter interessant. Das vierte Feld zeigt an, welcher Befehl ausgeführt werden soll. Dies ist der Ort, an dem wir das mgetty-Kommando mit den gewünschten Argumenten angeben. In unserem einfachen Beispiel starten wir mgetty immer dann (neu), wenn das System im Runlevel 2 oder 3 operiert. Als Argument geben wir nur das serielle Gerät an, das wir benutzen wollen. mgetty geht automatisch vom Verzeichnis /dev/ aus, so daß wir es nicht einzugeben brauchen.

So, das war eine schnelle Einführung in die Anwendung von mgetty und wie man seriellen Geräten Login-Eingabeaufforderungen zur Verfügung stellt. Weiterführende Informationen finden Sie im Serial-HOWTO.

Nachdem Sie die Konfigurationsdateien geändert haben, müssen Sie dafür sorgen, daß init die geänderte Konfiguration neu einliest, damit die Änderungen wirksam werden. Senden Sie dazu einfach nur ein Hangup-Signal (HUP) an den init-Prozeß. Er hat grundsätzlich eine Prozeß-ID von 1, so daß Sie bedenkenlos immer folgenden Befehl ausführen können:

# kill -HUP 1




vorheriges Kapitel Inhaltsverzeichnis Stichwortverzeichnis nächstes Kapitel


Weitere Informationen zum Linux - Wegweiser für Netzwerker

Weitere Online-Bücher & Probekapitel finden Sie in unserem Online Book Center


O'Reilly Home|O'Reilly-Partnerbuchhandlungen|Bestellinformationen
Kontakt|Über O'Reilly|Datenschutz

© 2001, O'Reilly Verlag