Index: head/de_DE.ISO8859-1/books/handbook/geom/chapter.xml
===================================================================
--- head/de_DE.ISO8859-1/books/handbook/geom/chapter.xml (revision 54337)
+++ head/de_DE.ISO8859-1/books/handbook/geom/chapter.xml (revision 54338)
@@ -1,1842 +1,1842 @@
GEOM: Modulares Framework zur
PlattentransformationTomRhodesGeschrieben von DanielSeuffertÜbersetzt von JohannKoisÜbersichtGEOMGEOM Disk FrameworkGEOMGEOM erlaubt den Zugriff und die
Kontrolle von Klassen, wie beispielsweise Master Boot Records
und BSD-Label, durch die Nutzung von
Datenträgern (Providern) oder den besonderen Dateien in
/dev. Verschiedene Software
RAID-Konfigurationen unterstützend, gewährt
GEOM transparenten Zugriff auf das
Betriebssystem und die System-Dienstprogramme.Dieses Kapitel behandelt den Einsatz von Laufwerken mit
dem GEOM-Framework in &os;. Dies beinhaltet
auch die wichtigen
RAID-Überwachungswerkzeuge, welche das
Framework zur Konfiguration nutzen. Dieses Kapitel ist kein
ausführlicher Leitfaden für
RAID-Konfigurationen. Nur die von
GEOM unterstützten
RAID-Klassen werden erörtert.Nach Lesen dieses Kapitels werden Sie folgendes
wissen:Welche Art von
RAID-Unterstützung durch
GEOM verfügbar ist.Wie man die Basis-Dienstprogramme nutzt, um
verschiedene RAID-Stufen zu
konfigurieren, zu manipulieren und zu warten.Wie man mittels GEOM spiegelt,
striped, verschlüsselt und entfernte Laufwerke
verbindet.Wie man an Laufwerken, welche an das
GEOM-Framework angeschlossen sind, Fehler
behebt.Bevor Sie dieses Kapitel lesen, sollten Sie:Verstehen, wie &os; Laufwerke behandelt
().Wissen wie man einen neuen &os;-Kernel konfiguriert
und installiert ().RAID0 - StripingTomRhodesGeschrieben von MurrayStokelyGEOMStripingStriping (stripe = Streifen) fasst verschiedene Laufwerke in
einem einzigen Datenträger zusammen. Dies wird durch die
Nutzung von Hardware-Controllern bewerkstelligt. Das
GEOM-Subsystem unterstützt
Software-RAID0, welches auch als Striping
bekannt ist. Bei dieser Technik wird kein
RAID-Controller benötigt.In einem RAID0-System werden die Daten
in einzelne Blöcke aufgeteilt, welche über alle
angeschlossenen Laufwerke in einem Datenfeld (Array) geschrieben
werden. Anstatt darauf warten zu müssen, dass 256K auf
ein einzelnes Laufwerk geschrieben werden, kann ein
RAID0-System gleichzeitig 64K auf jedes von
vier Laufwerken schreiben mit entsprechend besserer
I/O-Leistung. Dieser Durchsatz kann durch
die Verwendung mehrerer Controller noch zusätzlich gesteigert
werden.Disk Striping IllustrationJedes Laufwerk in einem RAID0-Stripe
muss die gleiche Größe haben, da
I/O-Anforderungen für das Lesen und Schreiben
abwechselnd auf mehrere Laufwerke parallel erfolgen.RAID0 bietet keine Redundanz. Das
bedeutet, dass wenn eine Platte im Array ausfällt, die
gesamten Daten auf den Platten verloren gehen. Wenn es sich
um wichtige Daten handelt, sollten Sie eine Backup-Strategie
entwickeln, die regelmäßig Sicherungen auf einem entferntem
System speichert.Die Erstellung eines GEOM-basierten
RAID0 auf einem &os;-System wird im folgenden
beschrieben. Nachdem das Stripe erzeugt wurde, finden Sie in
&man.gstripe.8; weitere Informationen zur Verwaltung der
vorhandenen Stripes.Ein Stripe aus unformatierten
ATA-Platten erzeugenLaden Sie das
geom_stripe.ko-Modul:&prompt.root; kldload geom_stripeStellen Sie sicher, dass ein geeigneter Mountpunkt
existiert. Falls dieser Datenträger eine Root-Partition
werden soll, dann nutzen Sie zeitweise einen anderen
Mountpunkt, beispielsweise
/mnt.Bestimmen Sie die Gerätenamen derjenigen Platten,
welche gestriped werden sollen, und erzeugen Sie ein neues
Stripe-Gerät. Das folgende Beispiel verwendet zwei
unbenutzte und unpartitionierte
ATA-Platten, die gestriped werden sollen.
Die Gerätenamen lauten /dev/ad2 und
/dev/ad3:&prompt.root; gstripe label -v st0 /dev/ad2 /dev/ad3
Metadata value stored on /dev/ad2.
Metadata value stored on /dev/ad3.
Done.Schreiben Sie einen Standard-Label (auch als
Partitions-Tabelle bekannt) auf den neuen Datenträger
und installieren Sie den normalen Bootstrap-Code:&prompt.root; bsdlabel -wB /dev/stripe/st0Dieser Prozess sollte zwei weitere Geräte im
Verzeichnis /dev/stripe (zusätzlich zum
Gerät st0) erzeugt haben. Diese
schliessen st0a und
st0c ein. Nun kann mit
newfs ein
UFS-Dateisystem auf dem Gerät
st0a erzeugt werden:&prompt.root; newfs -U /dev/stripe/st0aViele Zahlen rauschen nun über den Bildschirm
und nach ein paar Sekunden wird der Prozess abgeschlossen
sein. Der Datenträger wurde erzeugt und kann in den
Verzeichnisbaum eingehängt werden.Um das erzeugte Stripe manuell zu mounten:&prompt.root; mount /dev/stripe/st0a /mntUm das erzeugte Dateisystem automatisch während des
Startvorgangs zu mounten, muss die Datenträgerinformation
in /etc/fstab eingetragen werden. In
diesem Beispiel wird ein permanenter Mountpunkt namens
stripe erstellt:&prompt.root; mkdir /stripe
&prompt.root; echo "/dev/stripe/st0a /stripe ufs rw 2 2" \>> /etc/fstabDas geom_stripe.ko-Modul muss
ebenfalls automatisch beim Systemstart geladen werden (durch
die Aufnahme der folgenden Zeile in die Datei
/boot/loader.conf):&prompt.root; echo 'geom_stripe_load="YES"' >> /boot/loader.confRAID1 - SpiegelungGEOMDisk MirroringRAID1Spiegelung (RAID1 /
Mirroring) ist eine
Technik, bei der identische Daten auf mehr als ein Laufwerk
geschrieben werden. Spiegel werden in der Regel zum Schutz vor
Datenverlust aufgrund von Festplattenausfällen verwendet. Jedes
Laufwerk in einem Spiegel enthält eine identische Kopie der
Daten. Wenn ein einzelnes Laufwerk ausfällt, funktioniert der
Spiegel weiterhin und die Daten werden von den restlichen
Festplatten bereit gestellt. Der Rechner läuft einfach weiter
und der Administrator hat die Gelegentheit, das defekte Laufwerk
auszutauschen.Zwei häufige Situationen werden in diesem Beispiel
erläutert. Im ersten Beispiel wird ein Spiegel aus zwei
neuen Laufwerken erstellt, der die existierende Platte ersetzt.
Das zweite Beispiel erzeugt ein Spiegel mit einem einzigen
Laufwerk, kopiert dann die Daten von der alten Platte und fügt
die alte Platte zum Spiegel hinzu. Obwohl dieses Verfahren
etwas komplizierter ist, wird nur ein neues Laufwerk
benötigt.Traditionell sind die Laufwerke in einem Spiegel vom
gleichen Modell und besitzen die gleiche Kapazität. Dies ist
jedoch keine Voraussetzung für &man.gmirror.8;. Hier können
Spiegel mit unterschiedlichen Kapazitäten verwendet werden. Die
Kapazität richtet sich dann nach dem kleinsten Laufwerk im
Spiegel. Zusätzlicher Speicherplatz auf größeren Laufwerken
bleibt dann ungenutzt. Werden später weitere Laufwerke zum
Spiegel hinzugefügt, müssen diese mindestens so viel Kapazität
haben wie das kleinste Laufwerk im Spiegel.Die hier gezeigten Verfahren löschen keine Daten. Dennoch
sollte, wie bei jeder größeren Operation, zuerst eine
vollständige Sicherung erstellt werden.Obwohl in diesem Abschnitt &man.dump.8; zum Kopieren der
Dateisysteme verwendet wird, funktioniert es nicht auf
Dateisystemen mit aktiviertem Soft-Updates Journaling. In
&man.tunefs.8; finden Sie Informationen, wie Sie Soft-Updates
Journaling erkennen und deaktivieren.Probleme mit MetadatenViele Plattensysteme speichern Metadaten am Ende der
Platte. Alte Metadaten sollten vor der Wiederverwendung in
einem Spiegel gelöscht werden, da die meisten Probleme aus
zwei Arten von übrig gebliebenen Metadaten resultieren:
GPT-Partitionstabellen und alte Metadaten
aus einem vorherigen Spiegel.GPT-Metadaten können mit &man.gpart.8;
gelöscht werden. Dieses Beispiel löscht sowohl die primären,
als auch die GPT-Partitionstabelle von der
Festplatte ada8:&prompt.root; gpart destroy -F ada8Mit &man.gmirror.8; kann eine Platte aus einem aktiven
Spiegel entfernt und gleichzeitig die Metadaten gelöscht
werden. In diesem Beispiel wird die Platte
ada8 aus dem aktiven Spiegel
gm4 entfernt:&prompt.root; gmirror remove gm4 ada8Wenn der Spiegel nicht aktiv ist, sich jedoch noch alte
Metadaten auf der Festplatte befinden, benutzen Sie
gmirror clear, um die Metadaten zu
entfernen:&prompt.root; gmirror clear ada8&man.gmirror.8; speichert einen Datenblock an Metadaten am
Ende der Festplatte. Da das
GPT-Partitionschema die Metadaten auch am
Ende der Platte speichert, wird es nicht empfohlen, mit
&man.gmirror.8; einen Spiegel aus einem gesamten
GPT-Datenträger zu erstellen. In diesen
Fällen sollte eine MBR-Partitionierung
benutzt werden, weil hier nur eine Partitionstabelle am Anfang
der Platte gespeichert wird und somit nicht mit den Metadaten
des Spiegels im Konflikt steht.Einen Spiegel mit zwei neuen Festplatten
erstellenIn diesem Beispiel wurde &os; bereits auf der vorhandenen
Festplatte ada0 installiert. Zwei neue
Platten, ada1 und
ada2, wurden bereits mit dem System
verbunden. Ein neuer Spiegel soll mit diesen beiden Platten
erzeugt und verwendet werden, um die alte vorhandene Platte zu
ersetzen.Das Kernelmodul geom_mirror.ko muss
entweder in den Kernel eingebaut, oder zur Laufzeit geladen
werden. Sie können das Modul manuell laden:&prompt.root; gmirror loadErstellen Sie den Spiegel mit den beiden neuen
Festplatten:&prompt.root; gmirror label -v gm0 /dev/ada1 /dev/ada2gm0 ist ein vom Benutzer gewählter
Name, der dem neuen Spiegel zugeordnet wird. Nachdem der
Spiegel gestartet wurde, erscheint dieser Gerätename in
/dev/mirror/.MBR- und
bsdlabel-Partitionstabellen können
jetzt auf dem neuen Spiegel erzeugt werden. Dieses Beispiel
verwendet das herkömmliche Dateisystem-Layout für
/, swap, /var,
/tmp und /usr. Eine
einzelne Root- und Swap-Partition würde ebenfalls
funktionieren.Die Partitionen auf dem Spiegel müssen nicht zwingend die
gleiche Größe wie die auf der Festplatte haben, aber sie
müssen groß genug sein, um alle Daten aufnehmen zu können, die
bereits auf ada0 gespeichert sind.&prompt.root; gpart create -s MBR mirror/gm0
&prompt.root; gpart add -t freebsd -a 4k mirror/gm0
&prompt.root; gpart show mirror/gm0
=> 63 156301423 mirror/gm0 MBR (74G)
63 63 - free - (31k)
126 156301299 1 freebsd (74G)
156301425 61 - free - (30k)&prompt.root; gpart create -s BSD mirror/gm0s1
&prompt.root; gpart add -t freebsd-ufs -a 4k -s 2g mirror/gm0s1
&prompt.root; gpart add -t freebsd-swap -a 4k -s 4g mirror/gm0s1
&prompt.root; gpart add -t freebsd-ufs -a 4k -s 2g mirror/gm0s1
&prompt.root; gpart add -t freebsd-ufs -a 4k -s 1g mirror/gm0s1
&prompt.root; gpart add -t freebsd-ufs -a 4k mirror/gm0s1
&prompt.root; gpart show mirror/gm0s1
=> 0 156301299 mirror/gm0s1 BSD (74G)
0 2 - free - (1.0k)
2 4194304 1 freebsd-ufs (2.0G)
4194306 8388608 2 freebsd-swap (4.0G)
12582914 4194304 4 freebsd-ufs (2.0G)
16777218 2097152 5 freebsd-ufs (1.0G)
18874370 137426928 6 freebsd-ufs (65G)
156301298 1 - free - (512B)Damit von dem Spiegel gebootet werden kann, muss der
Bootcode in den MBR installiert, ein
bsdlabel erstellt und die aktive Partition gesetzt
werden:&prompt.root; gpart bootcode -b /boot/mbr mirror/gm0
&prompt.root; gpart set -a active -i 1 mirror/gm0
&prompt.root; gpart bootcode -b /boot/boot mirror/gm0s1Erstellen Sie die Dateisysteme auf dem neuen Spiegel und
aktivieren Sie Soft-Updates:&prompt.root; newfs -U /dev/mirror/gm0s1a
&prompt.root; newfs -U /dev/mirror/gm0s1d
&prompt.root; newfs -U /dev/mirror/gm0s1e
&prompt.root; newfs -U /dev/mirror/gm0s1fDie Dateisysteme der vorhandenen Platte
ada0 können jetzt mit &man.dump.8; und
&man.restore.8; auf den Spiegel kopiert werden.&prompt.root; mount /dev/mirror/gm0s1a /mnt
&prompt.root; dump -C16 -b64 -0aL -f - / | (cd /mnt && restore -rf -)
&prompt.root; mount /dev/mirror/gm0s1d /mnt/var
&prompt.root; mount /dev/mirror/gm0s1e /mnt/tmp
&prompt.root; mount /dev/mirror/gm0s1f /mnt/usr
&prompt.root; dump -C16 -b64 -0aL -f - /var | (cd /mnt/var && restore -rf -)
&prompt.root; dump -C16 -b64 -0aL -f - /tmp | (cd /mnt/tmp && restore -rf -)
&prompt.root; dump -C16 -b64 -0aL -f - /usr | (cd /mnt/usr && restore -rf -)Fügen Sie die Dateisysteme für den Spiegel in
/etc/rc.conf hinzu:# Device Mountpoint FStype Options Dump Pass#
/dev/mirror/gm0s1a / ufs rw 1 1
/dev/mirror/gm0s1b none swap sw 0 0
/dev/mirror/gm0s1d /var ufs rw 2 2
/dev/mirror/gm0s1e /tmp ufs rw 2 2
/dev/mirror/gm0s1f /usr ufs rw 2 2Wenn das Modul geom_mirror.ko nicht
im Kernel enthalten ist, können Sie
/mnt/boot/loader.conf bearbeiten, damit
das Modul beim Systemstart geladen wird:geom_mirror_load="YES"Starten Sie das System neu und überprüfen Sie, ob
alle Daten erfolgreich kopiert wurden. Das
BIOS wird den Spiegel vermutlich als
zwei einzelne Laufwerke erkennen. Da beide Laufwerke
jedoch identisch sind, spielt es keine Rolle, welches
Laufwerk zum Booten ausgewählt wird.Falls es Probleme beim Booten gibt, lesen Sie den
. Die alte
Festplatte ada0 kann vom System
getrennt und als Offline-Sicherung aufbewahrt werden.Im laufenden Betrieb verhält sich der Spiegel genau
wie ein einzelnes Laufwerk.Einen Spiegel mit einem vorhandenen Laufwerk
erstellenIn diesem Beispiel wurde &os; bereits auf der
Festplatte ada0 installiert und eine
weitere Platte, ada1, wurde an
das System angeschlossen. Zunächst wird ein Spiegel mit
einer Festplatte erstellt, dann das vorhandene System auf
den Spiegel kopiert. Zuletzt wird die alte Festplatte in den
Spiegel eingefügt. Diese etwas komplexere Vorgehensweise ist
erforderlich, da gmirror 512 Byte an
Metadaten am Ende der Festplatte speichert, und die bestehende
Platte, ada0, in der Regel den Platz
bereits belegt hat.Laden Sie das Kernelmodul
geom_mirror.ko:&prompt.root; gmirror loadPrüfen Sie mit diskinfo die Mediengröße
der vorhandenen Festplatte:&prompt.root; diskinfo -v ada0 | head -n3
/dev/ada0
512 # sectorsize
1000204821504 # mediasize in bytes (931G)Jetzt können Sie den Spiegel auf der neuen Festplatte
erzeugen. Um sicherzustellen, dass die Kapazität nicht größer
ist, als die Kapazität der vorhandenen Platte
ada0, benutzen Sie &man.gnop.8; um eine
Platte mit der exakt gleichen Größe zu imitieren. Diese
Platte speichert keine Daten und wird nur verwendet, um die
Größe des Spiegels zu begrenzen. &man.gmirror.8; wird die
Kapazität des Spiegels auf die Größe von
gzero.nop beschränken, auch wenn die neue
Festplatte ada1 mehr Platz zur Verfügung
hätte. Beachten Sie, dass
1000204821504 in der zweiten Zeile
der ermittelten Mediengröße von diskinfo
entspricht.&prompt.root; geom zero load
&prompt.root; gnop create -s 1000204821504 gzero
&prompt.root; gmirror label -v gm0 gzero.nop ada1
&prompt.root; gmirror forget gm0Da gzero.nop keine Daten speichert,
sieht der Spiegel sie als nicht verbunden an. Der Spiegel ist
so konfiguriert, dass er nicht verbundene Komponenten einfach
vergisst. Das Ergebnis ist ein Spiegel mit nur
einer einzigen Platte, ada1.Sehen Sie sich nach der Erstellung von
gm0 die Partitionstabelle von
ada0 an. Diese Ausgabe stammt von einer
1 TB Festplatte. Falls am Ende der Platte noch freier
Speicherplatz ist, kann der Inhalt von
ada0 direkt auf den Spiegel kopiert
werden.Falls jedoch der gesamte Speicherplatz auf der Platte
zugeordnet ist, dann gibt es keinen Platz mehr für die 512
Byte Metadaten für den Spiegel am Ende der Platte, wie in
dieser Auflistung zu sehen.&prompt.root; gpart show ada0
=> 63 1953525105 ada0 MBR (931G)
63 1953525105 1 freebsd [active] (931G)In diesem Fall muss die Partitionstabelle bearbeitet
werden, um die Kapazität von mirror/gm0
um einen Sektor zu reduzieren. Dieses Verfahren wird später
erläutert.In beiden Fällen sollte die Partitionstabelle der primären
Platte mit gpart backup gesichert
werden.&prompt.root; gpart backup ada0 > table.ada0
&prompt.root; gpart backup ada0s1 > table.ada0s1Diese Kommandos erstellen zwei Dateien,
table.ada0 und
table.ada0s1. Das Beispiel verwendet
eine 1 TB Festplatte:&prompt.root; cat table.ada0
MBR 4
1 freebsd 63 1953525105 [active]&prompt.root; cat table.ada0s1
BSD 8
1 freebsd-ufs 0 4194304
2 freebsd-swap 4194304 33554432
4 freebsd-ufs 37748736 50331648
5 freebsd-ufs 88080384 41943040
6 freebsd-ufs 130023424 838860800
7 freebsd-ufs 968884224 984640881Wenn am Ende der Platte kein Platz vorhanden ist, muss
die Größe des Slice und der letzten Partition verringert
werden. Bearbeiten Sie die beiden Dateien, und verringern
Sie die Größe der Slice und der Partition jeweils um eins.
Dies bezieht sich auf die letzten Zahlen in der Liste.&prompt.root; cat table.ada0
MBR 4
1 freebsd 63 1953525104 [active]&prompt.root; cat table.ada0s1
BSD 8
1 freebsd-ufs 0 4194304
2 freebsd-swap 4194304 33554432
4 freebsd-ufs 37748736 50331648
5 freebsd-ufs 88080384 41943040
6 freebsd-ufs 130023424 838860800
7 freebsd-ufs 968884224 984640880Wenn mindestens ein Sektor der Platte nicht zugewiesen
wurde, kann die Platte ohne Modifikation verwendet
werden.Jetzt kann die Partitionstabelle auf
mirror/gm0 wiederhergestellt
werden:&prompt.root; gpart restore mirror/gm0 < table.ada0
&prompt.root; gpart restore mirror/gm0s1 < table.ada0s1Prüfen Sie die Partitionstabellen mit
gpart show. Dieses Beispiel nutzt
gm0s1a für /,
gm0s1d für /var,
gm0s1e für /usr,
gm0s1f für /data1
und gm0s1g für
/data2.&prompt.root; gpart show mirror/gm0
=> 63 1953525104 mirror/gm0 MBR (931G)
63 1953525042 1 freebsd [active] (931G)
1953525105 62 - free - (31k)
&prompt.root; gpart show mirror/gm0s1
=> 0 1953525042 mirror/gm0s1 BSD (931G)
0 2097152 1 freebsd-ufs (1.0G)
2097152 16777216 2 freebsd-swap (8.0G)
18874368 41943040 4 freebsd-ufs (20G)
60817408 20971520 5 freebsd-ufs (10G)
81788928 629145600 6 freebsd-ufs (300G)
710934528 1242590514 7 freebsd-ufs (592G)
1953525042 63 - free - (31k)Sowohl die Slice, als auch die letzte Partition, muss
mindestens einen freien Block am Ende der Platte haben.Erstellen Sie Dateisysteme auf diesen neuen
Partitionen:&prompt.root; newfs -U /dev/mirror/gm0s1a
&prompt.root; newfs -U /dev/mirror/gm0s1d
&prompt.root; newfs -U /dev/mirror/gm0s1e
&prompt.root; newfs -U /dev/mirror/gm0s1f
&prompt.root; newfs -U /dev/mirror/gm0s1gDamit Sie von dem Spiegel booten können, müssen Sie den
Bootcode in den MBR installieren, ein
bsdlabel anlegen und das aktive Slice setzen:&prompt.root; gpart bootcode -b /boot/mbr mirror/gm0
&prompt.root; gpart set -a active -i 1 mirror/gm0
&prompt.root; gpart bootcode -b /boot/boot mirror/gm0s1Bearbeiten Sie /etc/fstab, um die
neuen Partitionen auf dem Spiegel nutzen zu können. Speichern
Sie zunächst eine Kopie der Datei unter
/etc/fstab.orig:&prompt.root; cp /etc/fstab /etc/fstab.origErsetzen Sie in /etc/fstab/dev/ada0 durch
mirror/gm0.# Device Mountpoint FStype Options Dump Pass#
/dev/mirror/gm0s1a / ufs rw 1 1
/dev/mirror/gm0s1b none swap sw 0 0
/dev/mirror/gm0s1d /var ufs rw 2 2
/dev/mirror/gm0s1e /usr ufs rw 2 2
/dev/mirror/gm0s1f /data1 ufs rw 2 2
/dev/mirror/gm0s1g /data2 ufs rw 2 2Wenn das Modul geom_mirror.ko nicht
im Kernel enthalten ist, können Sie
/boot/loader.conf bearbeiten, damit
das Modul beim Systemstart geladen wird:geom_mirror_load="YES"Die Dateisysteme der ursprünglichen Platte können jetzt
mit &man.dump.8; und &man.restore.8; auf den Spiegel kopiert
werden. Wenn Sie das Dateisystem mit
dump -L sichern, wird zunächst ein Snapshot
des Dateisystems erstellt, was einige Zeit dauern kann.&prompt.root; mount /dev/mirror/gm0s1a /mnt
&prompt.root; dump -C16 -b64 -0aL -f - / | (cd /mnt && restore -rf -)
&prompt.root; mount /dev/mirror/gm0s1d /mnt/var
&prompt.root; mount /dev/mirror/gm0s1e /mnt/usr
&prompt.root; mount /dev/mirror/gm0s1f /mnt/data1
&prompt.root; mount /dev/mirror/gm0s1g /mnt/data2
&prompt.root; dump -C16 -b64 -0aL -f - /usr | (cd /mnt/usr && restore -rf -)
&prompt.root; dump -C16 -b64 -0aL -f - /var | (cd /mnt/var && restore -rf -)
&prompt.root; dump -C16 -b64 -0aL -f - /data1 | (cd /mnt/data1 && restore -rf -)
&prompt.root; dump -C16 -b64 -0aL -f - /data2 | (cd /mnt/data2 && restore -rf -)Starten Sie das System neu und booten Sie von
ada1. Wenn alles funktioniert, wird
das System von mirror/gm0 booten,
welches jetzt die gleichen Daten enthält wie
ada0. Lesen Sie , falls es Probleme beim
Booten gibt.An dieser Stelle besteht der Spiegel immer noch aus der
einzelnen Platte ada1.Nachdem erfolgreich von mirror/gm0
gebootet wurde, besteht der letzte Schritt darin,
ada0 in den Spiegel einzufügen.Wenn Sie ada0 in den Spiegel
einfügen, wird der Inhalt der Platte mit den Daten aus
dem Spiegel überschrieben. Sie müssen sicherstellen, das
mirror/gm0 den gleichen Inhalt wie
ada0 hat, bevor Sie
ada0 zum Spiegel hinzufügen. Falls der
zuvor mit &man.dump.8; und &man.restore.8; kopierte Inhalt
nicht mit dem von ada0 identisch ist,
machen Sie die Änderungen an /etc/fstab
rückgängig, starten Sie das System neu und beginnen Sie die
Prozedur von vorn.&prompt.root; gmirror insert gm0 ada0
GEOM_MIRROR: Device gm0: rebuilding provider ada0Die Synchronisation zwischen den beiden Platten wird
direkt gestartet. Verwenden Sie gmirror
status um den Fortschritt zu beobachten.&prompt.root; gmirror status
Name Status Components
girror/gm0 DEGRADED ada1 (ACTIVE)
ada0 (SYNCHRONIZING, 64%)Nach einer Weile wird die Wiederherstellung abgeschlossen
sein.GEOM_MIRROR: Device gm0: rebuilding provider ada0 finished.
&prompt.root; gmirror status
Name Status Components
mirror/gm0 COMPLETE ada1 (ACTIVE)
ada0 (ACTIVE)mirror/gm0 besteht nun aus den beiden
Platten ada0 und
ada1. Der Inhalt der beiden Platten wird
automatisch miteinander synchronisiert. Im laufenden Betrieb
verhält sich mirror/gm0 wie eine einzelne
Festplatte.FehlerbehebungFalls das System nicht mehr startet, müssen
möglicherweise die BIOS-Einstellungen
geändert werden, um von dem neuen gespiegelten Laufwerk zu
booten. Beide Platten des Spiegels können zum Booten
verwendet werden, da sie als Komponenten des Spiegels
identische Daten enthalten.Wenn der Bootvorgang mit der folgenden Meldung abbricht,
ist irgendwas mit dem Spiegel nicht in Ordnung:Mounting from ufs:/dev/mirror/gm0s1a failed with error 19.
Loader variables:
vfs.root.mountfrom=ufs:/dev/mirror/gm0s1a
vfs.root.mountfrom.options=rw
Manual root filesystem specification:
<fstype>:<device> [options]
Mount <device> using filesystem <fstype>
and with the specified (optional) option list.
eg. ufs:/dev/da0s1a
zfs:tank
cd9660:/dev/acd0 ro
(which is equivalent to: mount -t cd9660 -o ro /dev/acd0 /)
? List valid disk boot devices
. Yield 1 second (for background tasks)
<empty line> Abort manual input
mountroot>Dieses Problem kann durch ein nicht geladenes
Kernelmodul geom_mirror.ko in
/boot/loader.conf verursacht werden.
Um das Problem zu beheben, booten Sie von einem
&os;-Installationsmedium und wählen Sie
Shell an der Eingabeaufforderung. Laden
Sie dann das Modul und hängen Sie den Spiegel ein:&prompt.root; gmirror load
&prompt.root; mount /dev/mirror/gm0s1a /mntBearbeiten Sie dann
/mnt/boot/loader.conf und fügen Sie
eine Zeile für das Kernelmodul hinzu:geom_mirror_load="YES"Speichern Sie die Datei und starten Sie das System
neu.Andere Probleme, die error 19
verursachen können, sind nur mit mehr Aufwand zu beheben.
Obwohl das System von ada0 booten
sollte, wird ein weiterer Prompt erscheinen, wenn
/etc/fstab fehlerhaft ist. Geben
Sie am Loader-Prompt ufs:/dev/ada0s1a ein
und drücken Sie Enter. Machen Sie die
Änderungen an /etc/fstab rückgängig und
hängen Sie anstelle des Spiegels die originale Festplatte
(ada0) ein. Starten Sie dann das
System neu und versuchen Sie den Vorgang erneut.Enter full pathname of shell or RETURN for /bin/sh:
&prompt.root; cp /etc/fstab.orig /etc/fstab
&prompt.root; rebootWiederherstellung des Systems nach einem
PlattenausfallDer Vorteil der Plattenspiegelung ist, dass eine Platte
ausfallen kann, ohne dass Sie dabei Daten verlieren. Falls
ada0 aus dem obigen Beispiel ausfällt,
steht der Spiegel weiterhin zur Verfügung und bietet die Daten
von der verbleibenden Platte ada1
an.Um das ausgefallene Laufwerk zu ersetzen, muss das System
heruntergefahren werden und das ausgefallene Laufwerk durch
ein neues Laufwerk von gleicher oder größerer Kapazität
ersetzt werden. Hersteller verwenden oft etwas
willkürliche Werte für die Kapazität. Der einzige Weg, um
wirklich sicher zu sein, ist die Gesamtzahl der Sektoren von
diskinfo -V zu vergleichen. Ein Laufwerk
mit größerer Kapazität wird funktionieren, allerdings wird der
zusätzliche Platz ungenutzt bleiben.Nachdem der Rechner wieder eingeschaltet ist, wird der
Spiegel im degraded Modus ausgeführt werden.
Der Spiegel wird angewiesen, Laufwerke zu vergessen, die noch
nicht verbunden sind:&prompt.root; gmirror forget gm0Alte Metadaten sollten von der Ersatzfestplatte nach den
Anweisungen in gelöscht
werden. Anschließend kann die Ersatzfestplatte, in diesem
Beispiel ada4, in den Spiegel eingefügt
werden:&prompt.root; gmirror insert gm0 /dev/ada4Die Wiederherstellung beginnt, sobald das neue Laufwerk in
den Spiegel eingesetzt wird. Das Kopieren der Daten vom
Spiegel auf das neue Laufwerk kann eine Weile dauern. Die
Leistung des Spiegels ist während dieser Zeit stark reduziert,
deswegen sollten neue Laufwerke idealerweise dann eingefügt
werden, wenn der Rechner nicht benötigt wird.Der Fortschritt der Wiederherstellung kann mit
gmirror status überwacht werden. Während
der Wiederherstellung ist der Status
DEGRADED. Wenn der Vorgang
abgeschlossen ist, wechselt der Status zu
COMPLETE.RAID3 - Byte-Level Striping mit
dedizierter ParitätMarkGladmanGeschrieben von DanielGerzoTomRhodesBasierend auf Dokumentation von MurrayStokelyBjörnHeidottingÜbersetzt von GEOMRAID3RAID3 ist eine Methode, die mehrere
Festplatten zu einem einzigen Volume mit einer dedizierten
Paritätsfestplatte kombiniert. In einem
RAID3-System werden die Daten in einzelne
Bytes aufgeteilt und dann über alle Laufwerke,
mit Ausnahme der Paritätsfestplatte, geschrieben. Beim Lesen
von Daten in einer RAID3 Implementierung
werden alle Festplatten im Array parallel genutzt. Die Leistung
kann durch den Einsatz von mehreren Controllern weiter erhöht
werden. Ein RAID3-Array hat eine
Fehlertoleranz von 1 Laufwerk und bietet dabei eine Kapazität
von 1 - 1/n der Gesamtkapazität der Laufwerke im Array, wobei
n die Anzahl der Festplatten im Array darstellt. So eine
Konfiguration ist meistens für die Speicherung von größeren
Dateien geeignet, wie beispielsweise Multimediadateien.Mindestens 3 Festplatten sind erforderlich, um ein
RAID3 zu erstellen. Jede Festplatte muss
von der gleichen Größe sein, da die
I/O-Anfragen für Lesen oder Schreiben
auf mehreren Festplatten parallel stattfinden. Aufgrund der
Beschaffenheit von RAID3, muss die Anzahl der
Laufwerke 3, 5, 9, 17 bzw. 2^n + 1 sein.Dieser Abschnitt beschreibt, wie ein Software
RAID3 auf einem &os;-System erstellt
wird.Obwohl es theoretisch möglich ist &os; von einem
RAID3-Array zu booten, wird von solch
einer ungewöhnlichen Konfiguration dringend abgeraten.Ein dediziertes RAID3-Array
erstellenIn &os; wird die Unterstützung für
RAID3 über die
GEOM-Klasse &man.graid3.8; implementiert.
Zum Erstellen eines dedizierten
RAID3-Arrays sind folgende Schritte
erforderlich.Laden Sie zunächst das Modul
geom_raid3.ko mit einem der folgenden
Befehle:&prompt.root; graid3 loadoder:&prompt.root; kldload geom_raid3Stellen Sie sicher, dass ein geeigneter Mountpunkt
existiert. Dieser Befehl erstellt ein neues Verzeichnis,
welches als Mountpunkt verwendet werden kann:&prompt.root; mkdir /multimediaBestimmen Sie die Gerätenamen der Festplatten, die dem
Array hinzugefügt werden und erstellen Sie ein neues
RAID3 Gerät. Das letzte aufgeführte
Gerät wird als dediziertes Paritätslaufwerk verwendet.
Dieses Beispiel verwendet drei unpartionierte
ATA-Platten:
ada1 und
ada2 für
die Daten, sowie
ada3 für
die Parität.&prompt.root; graid3 label -v gr0 /dev/ada1 /dev/ada2 /dev/ada3
Metadata value stored on /dev/ada1.
Metadata value stored on /dev/ada2.
Metadata value stored on /dev/ada3.
Done.Partitionieren Sie das neu erstelle Gerät
gr0 und erstellen Sie darauf
ein UFS-Dateisystem:&prompt.root; gpart create -s GPT /dev/raid3/gr0
&prompt.root; gpart add -t freebsd-ufs /dev/raid3/gr0
&prompt.root; newfs -j /dev/raid3/gr0p1Viele Zahlen rauschen nun über den Bildschirm und
nach einer gewissen Zeit ist der Vorgang abgeschlossen.
Das Volume wurde erstellt und kann jetzt in den
Verzeichnisbaum eingehangen werden:&prompt.root; mount /dev/raid3/gr0p1 /multimedia/Das RAID3-Array ist nun
einsatzbereit.Weitere Konfigurationsschritte sind erforderlich, um die
Einstellungen nach einem Systemneustart zu erhalten.Das Modul geom_raid3.ko muss
geladen werden, bevor das Array eingehangen werden kann.
Damit das Kernelmodul automatisch beim Systemstart geladen
wird, muss die folgende Zeile in
/boot/loader.conf hinzugefügt
werden:geom_raid3_load="YES"Die folgenden Informationen über das Volume müssen in
/etc/fstab hinzugefügt werden, um
das Dateisystem des Arrays automatisch beim Systemstart
zu aktivieren:/dev/raid3/gr0p1 /multimedia ufs rw 2 2Software RAIDWarrenBlockBeigetragen von BjörnHeidottingÜbersetzt von GEOMSoftware RAIDHardware RAIDEinige Motherboards und Erweiterungskarten besitzen ein
ROM, das dem Rechner erlaubt von einem
RAID-Array zu booten. Nach dem Booten wird
der Zugriff auf das RAID-Array durch die
Software auf dem Prozessor des Rechners abgewickelt. Dieses
Hardware-unterstützte
Software-RAID ist nicht abhängig
von einem bestimmten Betriebssystem. Sie funktionieren bereits,
noch bevor das Betriebssystem geladen wird.Abhängig von der verwendeten Hardware werden mehrere Arten
von RAID unterstützt. Eine vollständige
Liste finden Sie in &man.graid.8;.&man.graid.8; benötigt das geom_raid.ko
Kernelmodul, welches beginnend mit &os; 9.1 im
GENERIC-Kernel enthalten ist. Bei Bedarf
kann es manuell mit graid load geladen
werden.Ein Array erstellenGeräte mit Software-RAID haben oft ein
Menü, das über eine bestimmte Tastenkombination beim Booten
aufgerufen werden kann. Das Menü kann verwendet werden, um
RAID-Arrays zu erstellen und zu löschen.
Mit &man.graid.8; können Arrays auch direkt von der
Kommandozeile erstellt werden.graid label wird verwendet, um ein
neues Array zu erstellen. Das Motherboard in diesem Beispiel
besitzt einen &intel; Software-RAID
Chipsatz, so dass das Metadatenformat von &intel; angegeben
wird. Das neue Array bekommt den Namen (Label)
gm0, verhält sich als Spiegel
(RAID1) und verwendet die Laufwerke
ada0 und
ada1.Bei der Erstellung des Arrays wird etwas Platz auf den
Laufwerken überschrieben. Sichern Sie zuvor alle
vorhandenen Daten!&prompt.root; graid label Intel gm0 RAID1 ada0 ada1
GEOM_RAID: Intel-a29ea104: Array Intel-a29ea104 created.
GEOM_RAID: Intel-a29ea104: Disk ada0 state changed from NONE to ACTIVE.
GEOM_RAID: Intel-a29ea104: Subdisk gm0:0-ada0 state changed from NONE to ACTIVE.
GEOM_RAID: Intel-a29ea104: Disk ada1 state changed from NONE to ACTIVE.
GEOM_RAID: Intel-a29ea104: Subdisk gm0:1-ada1 state changed from NONE to ACTIVE.
GEOM_RAID: Intel-a29ea104: Array started.
GEOM_RAID: Intel-a29ea104: Volume gm0 state changed from STARTING to OPTIMAL.
Intel-a29ea104 created$
GEOM_RAID: Intel-a29ea104: Provider raid/r0 for volume gm0 created.Eine Statusabfrage zeigt, dass der neue Spiegel
einsatzbereit ist:&prompt.root; graid status
Name Status Components
raid/r0 OPTIMAL ada0 (ACTIVE (ACTIVE))
ada1 (ACTIVE (ACTIVE))Das Array-Gerät erscheint in
/dev/raid/. Das erste Gerät heißt
r0. Falls weitere Geräte vorhanden sind
heißen diese r1, r2
und so weiter.Das BIOS-Menü einiger Geräte erstellt
Arrays mit Sonderzeichen im Namen. Um Probleme mit diesen
Sonderzeichen zu vermeiden, werden einfache numerische Namen
wie r0 vergeben. Um das tatsächliche
Label anzuzeigen, wie gm0 im obigen
Beispiel, benutzen Sie &man.sysctl.8;:&prompt.root; sysctl kern.geom.raid.name_format=1Mehrere VolumesEinige Software-RAID Geräte
unterstützen mehr als ein Volume pro
Array. Volumes funktionieren wie Festplatten, dass heißt der
Platz auf den Laufwerken kann auf unterschiedliche Weise
geteilt und genutzt werden. Intels
Software-RAID Geräte unterstützen
beispielsweise zwei Volumes. In diesem Beispiel wird ein
40 GB Spiegel verwendet um das Betriebssystem zu
speichern, gefolgt von einem 20 GB
RAID0 (Stripe) Volume für die schnelle
Speicherung von temporären Daten.&prompt.root; graid label -S 40G Intel gm0 RAID1 ada0 ada1
&prompt.root; graid add -S 20G gm0 RAID0Volumes erscheinen unter /dev/raid/
als zusätzliche Einträge
rX. Ein
Array mit Volumes wird als r0 und
r1.Lesen Sie &man.graid.8; um die Anzahl der Volumes zu
ermitteln, die von den verschiedenen
Software-RAID Geräten unterstützt
wird.Ein einzelnes Laufwerk zu einem Spiegel
konvertierenUnter bestimmten Umständen ist es möglich, ein
bestehendes Laufwerk ohne Neuformatierung zu einem
&man.graid.8; Array zu konvertieren. Um Datenverlust
bei der Konvertierung zu vermeiden, müssen die vorhandenen
Laufwerke folgende Mindestanforderungen erfüllen:Das Laufwerk muss mit MBR
partitioniert werden. GPT oder andere
Partitionierungsschemata funktionieren nicht, da durch
&man.graid.8; die Metadaten am Ende des Laufwerks
überschieben und beschädigt werden.Am Ende des Laufwerks muss genügend freier Platz zur
Verfügung stehen, um die &man.graid.8; Metadaten zu
speichern. Die Metadaten variieren in der Größe, es
werden jedoch mindestens 64 MB freier Speicherplatz
empfohlen.Wenn das Laufwerk diese Anforderungen erfüllt, erstellen
Sie zuerst eine vollständige Sicherung. Erzeugen Sie dann
einen Spiegel mit diesem einen Laufwerk:&prompt.root; graid label Intel gm0 RAID1 ada0 NONEDie Metadaten von &man.graid.8; werden in den ungenutzten
Raum am Ende des Laufwerks geschrieben. Ein zweites Laufwerk
kann nun in den Spiegel eingefügt werden:&prompt.root; graid insert raid/r0 ada1Die Daten von dem ersten Laufwerk werden direkt auf das
zweite Laufwerk kopiert. Der Spiegel wird im eingeschränkten
Zustand laufen, bis der Kopiervorgang abgeschlossen
ist.Neue Laufwerke zum Array hinzufügenLaufwerke in einem Array können für ausgefallene oder
fehlende Laufwerke eingesetzt werden. Falls es keine
ausgefallenen oder fehlenden Laufwerke gibt, wird das neue
Laufwerk als Ersatz (Spare)
verwendet.Das Array in diesem Beispiel beginnt sofort damit, die
Daten auf das neu hinzugefügte Laufwerk zu kopieren. Alle
vorhandenen Daten auf dem neuen Laufwerk werden
überschrieben.&prompt.root; graid insert raid/r0 ada1
GEOM_RAID: Intel-a29ea104: Disk ada1 state changed from NONE to ACTIVE.
GEOM_RAID: Intel-a29ea104: Subdisk gm0:1-ada1 state changed from NONE to NEW.
GEOM_RAID: Intel-a29ea104: Subdisk gm0:1-ada1 state changed from NEW to REBUILD.
GEOM_RAID: Intel-a29ea104: Subdisk gm0:1-ada1 rebuild start at 0.Laufwerke aus dem Array entfernenEinzelne Laufwerke können permanent aus dem Array entfernt
werden. Die Metadaten werden dabei gelöscht:&prompt.root; graid remove raid/r0 ada1
GEOM_RAID: Intel-a29ea104: Disk ada1 state changed from ACTIVE to OFFLINE.
GEOM_RAID: Intel-a29ea104: Subdisk gm0:1-[unknown] state changed from ACTIVE to NONE.
GEOM_RAID: Intel-a29ea104: Volume gm0 state changed from OPTIMAL to DEGRADED.Das Array anhaltenEin Array kann angehalten werden, ohne die Metadaten
von den Laufwerken zu löschen. Das Array wird wieder
anlaufen, wenn das System neu gestartet wird.&prompt.root; graid stop raid/r0Den Status des Arrays überprüfenDer Status des Arrays kann jederzeit überprüft werden.
Nachdem ein Laufwerk zum Array hinzugefügt wurde, werden die
Daten vom ursprünglichen Laufwerk auf das neue Laufwerk
kopiert:&prompt.root; graid status
Name Status Components
raid/r0 DEGRADED ada0 (ACTIVE (ACTIVE))
ada1 (ACTIVE (REBUILD 28%))Andere Arten von Arrays, wie RAID0 oder
CONCAT, werden den Status eines
fehlgeschlagenen Laufwerks vielleicht nicht anzeigen. Um
diese teilweise ausgefallenen Arrays anzuzeigen, fügen Sie
hinzu:&prompt.root; graid status -ga
Name Status Components
Intel-e2d07d9a BROKEN ada6 (ACTIVE (ACTIVE))Arrays löschenArrays werden zerstört, indem alle Volumes gelöscht
werden. Wenn das letzte Volume gelöscht wird, wird das
Array gestoppt und die Metadaten von den Laufwerken
entfernt:&prompt.root; graid delete raid/r0Unerwartete Arrays löschenLaufwerke können unerwartete &man.graid.8; Metadaten
enthalten, entweder aus früherer Nutzung oder aus Tests des
Herstellers. &man.graid.8; würde diese Metadaten erkennen und
daraus ein Array erstellen, was den Zugriff auf die einzelnen
Laufwerke beeinträchtigen würde. Um die unerwünschten
Metadaten zu entfernen:Booten Sie das System. Im Boot-Menü wählen Sie
2 für den Loader-Prompt. Geben Sie
dann folgendes ein:OK set kern.geom.raid.enable=0
OK bootDas System wird nun mit deaktiviertem &man.graid.8;
starten.Sichern Sie alle Daten auf dem betroffenen
Laufwerk.Zur Abhilfe kann auch die Array-Erkennung von
&man.graid.8; deaktiviert werden, indemkern.geom.raid.enable=0in /boot/loader.conf hinzugefügt
wird.Um die &man.graid.8; Metadaten von dem entsprechenden
Laufwerk zu entfernen, booten Sie vom &os;
Installationsmedium und wählen Sie
Shell aus. Benutzen Sie
status, um den Namen des Arrays zu
bestimmten, typischerweise
raid/r0:&prompt.root; graid status
Name Status Components
raid/r0 OPTIMAL ada0 (ACTIVE (ACTIVE))
ada1 (ACTIVE (ACTIVE))Löschen Sie das Volume:&prompt.root; graid delete raid/r0Wiederholen Sie den Vorgang für jedes Volume. Nachdem
das letzte Volume gelöscht wurde, wird das Volume
zerstört.Starten Sie das System neu und prüfen die
Vollständigkeit der Daten. Falls erforderlich, müssen die
Daten aus der Sicherung wiederhergestellt werden. Nachdem
die Metadaten entfernt wurden, kann auch der Eintrag
kern.geom.raid.enable=0 aus
/boot/loader.conf entfernt
werden.GEOM Gate NetzwerkGEOM unterstützt einen einfachen
Mechanismus für den Zugriff auf entfernte Geräte wie
Festplatten, CDs und Dateien, durch die
Verwendung des GEOM Gate Netzwerk Daemons,
ggated. Der Server-Dameon läuft auf
dem System, welches ein Gerät anbietet und bearbeitet die
ggatec-Anfragen der Clients. Die
Geräte sollten keine sensiblen Daten enthalten, da die
Verbindung zwischen Client und Server nicht verschlüsselt
ist.Ähnlich wie bei NFS, das in beschrieben ist, wird für die
Konfiguration von ggated eine
Exportdatei verwendet. Diese Datei legt fest, welche Systeme
auf die exportierten Ressourcen zugreifen können und in welchem
Umfang der Zugriff gestattet wird. Um dem Client 192.168.1.5 Lese- und
Schreibzugriff auf die vierte Slice der ersten
SCSI-Platte zu geben, erstellen Sie
/etc/gg.exports mit folgender Zeile:192.168.1.5 RW /dev/da0s4dBevor das Gerät exportiert werden kann, müssen Sie
sicherstellen, dass es nicht bereits gemountet ist.
Anschließend starten Sie
ggated.&prompt.root; ggatedEs stehen mehrere Optionen bereit, mit denen zum Beispiel
ein alternativer Port oder eine alternative Exportdatei
festgelegt werden kann. Weitere Einzelheiten finden Sie in
&man.ggated.8;.Damit ein Client auf das exportierte Gerät zugreifen kann,
benutzten Sie ggatec zusammen mit der
IP-Adresse des Servers und dem entsprechenden
Gerätenamen. Wenn dies erfolgreich ist, zeigt dieser Befehl
einen ggate-Gerätenamen. Hängen Sie dieses
Gerät in einen freien Mountpunkt ein. Dieses Beispiel verbindet
sich mit der Partition /dev/da0s4d auf
192.168.1.1 und hängt
/dev/ggate0 in /mnt
ein:&prompt.root; ggatec create -o rw 192.168.1.1 /dev/da0s4d
ggate0
&prompt.root; mount /dev/ggate0 /mntAuf das Gerät des Servers kann jetzt über den Mountpunkt
/mnt des Clients zugegriffen werden.
Weitere Informationen über ggatec und einige
Anwendungsbeispiele finden Sie in &man.ggatec.8;.Das Einhängen des Gerätes wird scheitern, falls das Gerät
momentan entweder auf dem Server oder einem Client im Netzwerk
gemountet ist. Wenn ein gleichzeitiger Zugriff auf die
Netzwerkressourcen benötigt wird, verwenden Sie stattdessen
NFS.Wenn das Gerät nicht länger gebraucht wird, kann es mit
&man.umount.8; ausgehängt werden, so dass die Ressourcen für
andere Client wieder verfügbar sind.Das Labeln von LaufwerkenGEOMDisk LabelsWährend der Initialisierung des Systems legt der
&os;-Kernel für jedes gefundene Gerät Knotenpunkte
an. Diese Methode für die Überprüfung auf
vorhandene Geräte wirft einige Fragen auf. Was passiert
beispielsweise, wenn ein neues
USB-Laufwerk hinzugefügt wird?
Es ist sehr wahrscheinlich, dass ein
Flash-Speicher-Gerät den Gerätenamen
da0 erhält, während
gleichzeitig das bisherige da0
zu da1 wird. Dies verursacht
Probleme beim Einhängen von Dateisystemen, wenn diese
in /etc/fstab aufgeführt sind und kann dazu
führen, dass das System nicht mehr startet.Eine Lösung für dieses Problem ist das
Aneinanderketten der SCSI-Geräte,
damit ein neues Gerät, welches der
SCSI-Karte hinzugefügt wird,
unbenutzte Gerätenummern erhält. Aber was
geschieht, wenn ein USB-Gerät
möglicherweise die primäre
SCSI-Platte ersetzt? Dies kann
passieren, weil USB-Geräte
normalerweise vor der SCSI-Karte
geprüft werden. Eine Lösung ist das
Hinzufügen dieser Geräte, nachdem das System
gestartet ist. Eine andere Lösung könnte sein,
nur ein einzelnes ATA-Laufwerk zu
nutzen und die SCSI-Geräte niemals
in der /etc/fstab aufzuführen.Eine bessere Lösung ist die Verwendung von
glabel, um die Laufwerke zu mit Labeln zu
versehen und diese in /etc/fstab zu
nutzen. Da glabel seine Label im letzten
Sektor jedes vorhandenen Datenträgers speichert, wird
das Label persistent bleiben (auch über Neustarts hinweg).
Durch Nutzung dieses Labels als Gerät kann das
Dateisystem immer gemountet sein, unabhängig davon,
durch welchen Geräte-Knotenpunkt auf ihn zugegriffen
wird.glabel kann permanente (dauerhaft) und
vorübergehende Label erstellen. Aber nur dauerhafte
Label bleiben konsistent über Neustarts hinweg. Lesen
Sie die &man.glabel.8; für weitere Unterschiede zwischen den
Label-Typen.Label-Typen und BeispielePermanente Label können generische Label oder
Dateisystem-Label sein. Permanente Dateisystem-Label können
mit &man.tunefs.8; oder &man.newfs.8; erzeugt werden. Dieser
Typ von Label wird in einem Unterverzeichnis von
/dev angelegt und wird dem Dateisystem
entsprechend benannt.
UFS2-Dateisystem-Label werden zum Beispiel
in /dev/ufs angelegt. Permanente Label
können außerdem durch den Befehl
glabel label erzeugt werden. Diese Label
sind nicht dateisystemspezisch und werden im Unterverzeichnis
/dev/label erzeugt.Temporäre Label werden beim nächsten Systemstart zerstört.
Diese Label werden im Verzeichnis
/dev/label erzeugt und sind ideal für
Testzwecke. Ein temporäres Label kann mit
glabel create erzeugt werden.Um ein permanentes Label auf einem
UFS2-Dateisystem ohne
Löschung von Daten zu erzeugen, kann man folgenden
Befehl verwenden:&prompt.root; tunefs -L home/dev/da3In /dev/ufs sollte nun ein Label
vorhanden sein, welches zu /etc/fstab
hinzugefügt werden kann:/dev/ufs/home /home ufs rw 2 2Das Dateisystem darf nicht gemountet sein beim
Versuch, tunefs auszuführen.Nun kann das Dateisystem eingehängt werden:&prompt.root; mount /homeVon nun an kann der Geräte-Knotenpunkt sich ohne
negative Effekte auf das System ändern, solange das
Kernelmodul geom_label.ko beim
Systemstart mittels /boot/loader.conf
geladen wird oder die
GEOM_LABEL-Kernel-Option aktiv ist.Dateisysteme können auch mit einem Standard-Label
erzeugt werden (mittels des Flags in
newfs). Lesen Sie &man.newfs.8; für
weitere Informationen.Der folgende Befehl kann genutzt werden, um das Label
zu beseitigen:&prompt.root; glabel destroy homeDas folgende Beispiel zeigt Ihnen, wie Sie Label für
die Partitionen einer Bootplatte erzeugen.Die Partitionen einer Bootplatte labelnDurch das Erstellen von permanenten Labeln für die
Partitionen einer Bootplatte sollte das System selbst dann
noch normal starten können, wenn Sie die Platte an einen
anderen Controller anschließen oder in ein anderes System
installieren. In diesem Beispiel nehmen wir an, dass nur
eine einzige ATA-Platte verwendet wird,
die das System derzeit als ad0
erkennt. Weiters nehmen wir an, dass Sie das
Standard-Partionierungsschema von &os; vewendet haben und
die Platte daher die Dateisysteme /,
/var, /usr sowie
/tmp aufweist. Zusätzlich wurde eine
Swap-Partition angelegt.Starten Sie das System neu. Am &man.loader.8;-Prompt
drücken Sie die Taste 4, um in den
Single-User-Modus zu gelangen. Dort führen Sie die
folgenden Befehle aus:&prompt.root; glabel label rootfs /dev/ad0s1a
GEOM_LABEL: Label for provider /dev/ad0s1a is label/rootfs
&prompt.root; glabel label var /dev/ad0s1d
GEOM_LABEL: Label for provider /dev/ad0s1d is label/var
&prompt.root; glabel label usr /dev/ad0s1f
GEOM_LABEL: Label for provider /dev/ad0s1f is label/usr
&prompt.root; glabel label tmp /dev/ad0s1e
GEOM_LABEL: Label for provider /dev/ad0s1e is label/tmp
&prompt.root; glabel label swap /dev/ad0s1b
GEOM_LABEL: Label for provider /dev/ad0s1b is label/swap
&prompt.root; exitDas System startet daraufhin in den Multi-User-Modus.
Nachdem der Startvorgang abgeschlossen ist, editieren Sie
/etc/fstab und ersetzen die
konventionellen Gerätedateien durch die entsprechenden
Label. Die modifizierte /etc/fstab
sollte wie folgt aussehen:# Device Mountpoint FStype Options Dump Pass#
/dev/label/swap none swap sw 0 0
/dev/label/rootfs / ufs rw 1 1
/dev/label/tmp /tmp ufs rw 2 2
/dev/label/usr /usr ufs rw 2 2
/dev/label/var /var ufs rw 2 2Starten Sie das System neu. Treten keine Probleme auf,
wird das System normal hochfahren und Sie erhalten die
folgende Ausgabe, wenn Sie den Befehl
mount ausführen:&prompt.root; mount
/dev/label/rootfs on / (ufs, local)
devfs on /dev (devfs, local)
/dev/label/tmp on /tmp (ufs, local, soft-updates)
/dev/label/usr on /usr (ufs, local, soft-updates)
/dev/label/var on /var (ufs, local, soft-updates)&man.glabel.8; unterstützt einen Labeltyp für
UFS-Dateisysteme. Dieser basiert auf der
eindeutigen Dateisystem-ID ufsid.
Derartige Label finden sich in
/dev/ufsid und werden
während des Systemstarts automatisch erzeugt. Es ist
möglich, diese ufsid-Label zum
automatischen Einhängen von Partitionen in
/etc/fstab einzusetzen. Verwenden Sie
glabel status, um eine Liste
aller Dateisysteme und ihrer ufsid-Label
zu erhalten:&prompt.user; glabel status
Name Status Components
ufsid/486b6fc38d330916 N/A ad4s1d
ufsid/486b6fc16926168e N/A ad4s1fIn diesem Beispiel repräsentiert
ad4s1d das
/var-Dateisystem,
während ad4s1f dem
/usr-Dateisystem
entspricht. Wenn Sie die angegebenen
ufsid-Werte verwenden, können
diese Dateisysteme durch die folgenden Einträge in
der Datei /etc/fstab gemountet
werden:/dev/ufsid/486b6fc38d330916 /var ufs rw 2 2
/dev/ufsid/486b6fc16926168e /usr ufs rw 2 2Jede Partition, die ein ufsid-Label
aufweist, kann auf diese Art gemountet werden. Dies hat den
Vorteil, dass Sie die permanenten Label nicht manuell anlegen
müssen, wobei sich die Platten nach wie vor über
geräteunabhängige Namen ansprechen und einhängen
lassen.UFS Journaling in GEOMGEOMJournaling&os; unterstützt Journaling für
UFS-Dateisysteme. Diese Funktion wird über
das GEOM-Subsystem realisiert und kann
über das Werkzeug &man.gjournal.8; eingerichtet werden. Im
Gegensatz zu anderen Journaling-Dateisystemen arbeitet
gjournal blockbasiert und wurde nicht als
Teil des Dateisystems implementiert, sondern als
GEOM-Erweiterung.Bei Journaling wird ein Protokoll über alle
Dateisystemtransaktionen angelegt, inklusive aller
Veränderungen, aus denen ein kompletter Schreibvorgang besteht,
bevor diese Änderungen (Metadaten sowie tatsächliche
Schreibvorgänge) physisch auf der Festplatte ausgeführt werden.
Dieses Protokoll kann später erneut aufgerufen werden, um diese
Vorgänge zu wiederholen, damit Systeminkonsistenzen vermieden
werden.Diese Technik bietet eine weitere Möglichkeit,
sich vor Datenverlust und Dateisystem-Inkonsistenzen zu
schützen. Im Gegensatz zu Soft Updates (die
Metadaten-Aktualisierungen verfolgen und erzwingen) und
Snapshots (die ein Image eines Dateisystems darstellen) wird
bei Journaling ein tatsächliches Protokoll in einem speziell
dafür bereitgestellten Bereich der Festplatte gespeichert. Um
die Leistung zu optimieren, kann das Journal auf eine externe
Platte ausgelagert werden. In einem solchen Fall geben Sie die
Gerätedatei der Platte nach dem Gerät an, für das Sie Journaling
aktivieren wollen.Der GENERIC-Kernel bietet Unterstützung
für gjournal. Damit das Kernelmodul
geom_journal.ko beim Booten automatisch
geladen wird, fügen Sie folgende Zeile in
/boot/loader.conf hinzu:geom_journal_load="YES"Wenn ein angepasster Kernel benutzt wird, stellen Sie
sicher, dass folgende Zeile in der Kernelkonfigurationsdatei
enthalten ist:options GEOM_JOURNALSobald das Modul geladen ist, kann ein Journal auf einem
neuen Dateisystem erstellt werden. In diesem Beispiel ist
da4 die neue
SCSI-Platte:&prompt.root; gjournal load
&prompt.root; gjournal label /dev/da4Diese Befehle laden das Modul und erstellen die Gerätedatei
/dev/da4.journal auf
/dev/da4.Nun kann auf dem neuen Gerät ein
UFS-Dateisystem erstellt werden, welches dann
in den Verzeichnisbaum eingehängt wird:&prompt.root; newfs -O 2 -J /dev/da4.journal
&prompt.root; mount /dev/da4.journal /mntFalls auf dem System mehrere Slices angelegt sind
(beispielsweise ad4s1 sowie
ad4s2), wird
gjournal für jedes Slice ein
Journal anlegen (also ad4s1.journal
sowie ad4s2.journal).Mit tunefs ist es auch möglich,
Journaling auf bereits existierenden Dateisystemen zu
aktivieren. Machen Sie aber immer eine
Sicherung der Daten, bevor Sie versuchen, ein existierendes
Dateisystem zu ändern. gjournal wird zwar
den Vorgang abbrechen, wenn es das Journal nicht erzeugen kann,
allerdings schützt dies nicht vor Datenverlust durch einen
fehlerhaften Einsatz von tunefs. Weitere
Informationen über diese beiden Werkzeuge finden Sie in
&man.gjournal.8; und &man.tunefs.8;.Es ist möglich, Journale auch für die Bootplatte eines
&os;-Systems zu verwenden. Der Artikel
Implementing UFS Journaling on a Desktop PC enthält
eine ausführliche Anleitung zu diesem Thema.
Index: head/de_DE.ISO8859-1/books/handbook/serialcomms/chapter.xml
===================================================================
--- head/de_DE.ISO8859-1/books/handbook/serialcomms/chapter.xml (revision 54337)
+++ head/de_DE.ISO8859-1/books/handbook/serialcomms/chapter.xml (revision 54338)
@@ -1,2895 +1,2895 @@
Serielle DatenübertragungMartinHeinenÜbersetzt von Übersichtserielle Datenübertragung&unix; Systeme unterstützten schon immer die serielle
Datenübertragung. Tatsächlich wurden Ein- und Ausgaben auf
den ersten &unix; Maschinen über serielle Leitungen
durchgeführt. Seit der Zeit, in der ein durchschnittlicher
Terminal aus einem seriellen Drucker mit
10 Zeichen/Sekunde und einer Tastatur bestand, hat sich viel
verändert. Dieses Kapitel behandelt einige Möglichkeiten,
serielle Datenübertragung unter &os; zu verwenden.Nachdem Sie dieses Kapitel gelesen haben, werden
Sie Folgendes wissen:Wie Sie Terminals an ein &os;-System
anschließen.Wie Sie sich mit einem Modem auf entfernte
Rechner einwählen.Wie Sie entfernten Benutzern erlauben, sich mit einem
Modem in ein &os;-System einzuwählen.Wie Sie ein &os;-System über eine serielle Konsole
booten.Bevor Sie dieses Kapitel lesen, sollten Sieeinen angepassten Kernel
konfigurieren und installieren können.Berechtigungen und Prozesse unter
&os; verstehen.Zugriff auf die Handbücher der seriellen Komponenten
haben, die mit &os; verwendet werden sollen.Begriffe und HardwareDie folgenden Begriffe werden oft verwendet, wenn es um
serielle Kommunikation geht:bpsBits pro Sekunde
bits-per-second
(bps) ist die
Einheit für die Übertragungsgeschwindigkeit.DEE (DTE)Eine Datenendeinrichtung
DTE(Data
Terminal Equipment) ist einer der beiden Endpunkte bei
der seriellen Kommunikation. Zum Beispiel ein
Computer.DÜE (DCE)Datenübertragungseinrichtung
DCE (Data
Communications Equipment) ist der andere Endpunkt bei
der seriellen Kommunikation. Typischerweise ein
Modem.RS-232Der originale Standard, der serielle
Datenübertragung definiert. Er wird
heutzutage als TIA-232
RS-232C Kabel
bezeichnet.In diesem Abschnitt wird der Begriff Baud nicht
für Übertragungsgeschwindigkeiten gebraucht. Baud
bezeichnet elektrische Zustandswechsel pro Zeiteinheit, die Taktfrequenz,
während bps der richtige
Begriff für die Übertragungsgeschwindigkeit ist.Um ein Modem oder einen Terminal an ein &os;-System
anzuschließen, muss der Computer über eine serielle
Schnittstelle verfügen. Zusätzlich wird das passende Kabel
benötigt, um das Gerät mit der Schnittstelle zu
verbinden. Benutzer, die mit seriellen Geräten und den
nötigen Kabeln schon vertraut sind, können diesen Abschnitt
überspringen.Kabel und SchnittstellenEs gibt verschiedene serielle Kabel. Die zwei häufigsten
sind Nullmodemkabel und Standard-RS-232-Kabel. Die
Dokumentation der Hardware sollte beschreiben, welcher
Kabeltyp benötigt wird.NullmodemkabelEin Nullmodemkabel verbindet einige Signale, wie die
Betriebserde, eins zu eins, andere Signale werden getauscht:
Die Sende- und Empfangsleitungen werden zum Beispiel
gekreuzt.Nullmodemkabel für die Anbindung eines Terminals
können auch selbst hergestellt werden. Die folgende
Tabelle enthält die Signalnamen
von RS-232C sowie die Pinbelegung für einen Stecker vom
Typ DB-25. Obwohl der Standard eine direkte Verbindung
von Pin 1 zu Pin 1
(Protective Ground) vorschreibt, ist
diese in vielen Fällen nicht vorhanden. Einige
Terminals benötigen nur die Pins 2, 3 und 7 für
eine korrekte Funktion, während andere eine
unterschiedliche Konfiguration als die in den folgenden
Beispielen gezeigte benötigen.
Nullmodemkabel vom Typ DB-25-zu-DB-25SignalPin #Pin #SignalSG7verbunden mit7SGTD2verbunden mit3RDRD3verbunden mit2TDRTS4verbunden mit5CTSCTS5verbunden mit4RTSDTR20verbunden mit6DSRDTR20verbunden mit8DCDDSR6verbunden mit20DTRDCD8verbunden mit20DTR
Die folgenden zwei Schemata werden heutzutage ebenfalls
häufig eingesetzt:
Nullmodemkabel vom Typ DB-9-zu-DB-9SignalPin #Pin #SignalRD2verbunden mit3TDTD3verbunden mit2RDDTR4verbunden mit6DSRDTR4verbunden mit1DCDSG5verbunden mit5SGDSR6verbunden mit4DTRDCD1verbunden mit4DTRRTS7verbunden mit8CTSCTS8verbunden mit7RTS
Nullmodemkabel vom Typ DB-9-zu-DB-25SignalPin #Pin #SignalRD2verbunden mit2TDTD3verbunden mit3RDDTR4verbunden mit6DSRDTR4verbunden mit8DCDSG5verbunden mit7SGDSR6verbunden mit20DTRDCD1verbunden mit20DTRRTS7verbunden mit5CTSCTS8verbunden mit4RTS
Wird ein Pin eines Kabels mit zwei Pins des anderen
Kabels verbunden, werden dazu in der Regel zuerst die
beiden Pins mit einem kurzem Draht verbunden. Danach
wird dieser Draht mit dem Pin des anderen Endes
verbunden.Die eben besprochenen Schemata scheinen die
beliebtesten zu sein. Weitere Varianten verbinden SG mit
SG, TD mit RD, RTS und CTS mit DCD, DTR mit DSR, und
umgekehrt.RS-232C KabelEin Standard-RS-232C-Kabel verbindet alle Signale
direkt. Das Signal Transmitted Data wird
mit dem Signal Transmitted Data der
Gegenstelle verbunden. Dieses Kabel wird benötigt, um ein
Modem mit einem &os;-System zu verbinden. Manche
Terminals benötigen dieses Kabel ebenfalls.Über serielle Schnittstellen werden Daten zwischen dem
&os;-System und dem Terminal übertragen. Dieser Abschnitt
beschreibt die verschiedenen Schnittstellen und wie sie
unter &os; angesprochen werden.Da es verschiedene Schnittstellen gibt, sollte vor
dem Kauf oder Selbstbau eines Kabels sichergestellt
werden, dass dieses zu den Schnittstellen des Terminals
und des &os;-Systems passt.Die meisten Terminals besitzen DB-25-Stecker.
Personal Computer haben DB-25- oder DB-9-Stecker. Eine
serielle Multiportkarte hat vielleicht RJ-12- oder
RJ-45-Anschlüsse.Die Dokumentation der Geräte sollte Aufschluss
über den Typ der benötigten Anschlüsse geben.
Oft hilft es, wenn Sie sich den Anschluss einfach
ansehen.Unter &os; wird jede serielle Schnittstelle
(Port) über einen Eintrag in /dev
angesprochen. Es gibt dort zwei verschiedene
Einträge:Schnittstellen für eingehende Verbindungen werden
/dev/ttyuN
genannt. Dabei ist N die Nummer
der Schnittstelle, deren Zählung bei Null beginnt.
Allgemein wird diese Schnittstelle für Terminals
benutzt. Diese Schnittstelle funktioniert nur, wenn ein
Data Carrier Detect Signal
(DCD) vorliegt.Für ausgehende Verbindungen wird in &os; 8.X und
neueren Versionen
/dev/cuauN
verwendet. &os; 7.X und ältere Versionen verwenden
/dev/cuadN.
Dieser Port wird normalerweise nur von
Modems genutzt. Er kann allerdings auch für
Terminals benutzt werden, die das
Data Carrier Detect Signal nicht
unterstützen.Wenn ein Terminal an die erste serielle Schnittstelle
(COM1) angeschlossen ist, wird er
über /dev/ttyu0 angesprochen.
Wenn er an der zweiten seriellen Schnittstelle
(COM2) angeschlossen ist, verwenden Sie
/dev/ttyu1, usw.KernelkonfigurationIn der Voreinstellung benutzt &os; vier serielle
Schnittstellen, die unter &ms-dos; als
COM1, COM2,
COM3 und COM4
bekannt sind. Momentan unterstützt &os; einfache
Multiportkarten, wie bspw. die BocaBoard 1008 und 2016 und
bessere wie die von Digiboard und Stallion Technologies. In
der Voreinstellung sucht der Kernel allerdings nur nach den
Standardanschlüssen.Um zu überprüfen, ob der Kernel die seriellen
Schnittstellen erkennt, achten Sie auf die Meldungen beim
Booten, oder schauen sich diese später mit
/sbin/dmesg an. Achten Sie
auf Meldungen die mit uart beginnen:&prompt.root; /sbin/dmesg | grep 'uart'Wenn der Kernel nicht alle seriellen Schnittstellen
erkennt, müssen Sie /boot/device.hints
konfigurieren. Wenn Sie diese Datei editieren, können Sie
die Einträge für Geräte, die auf dem System nicht vorhanden
sind, auskommentieren oder komplett entfernen.port IO_COM1 ist ein Ersatz für
port 0x3f8, IO_COM2
bedeutet port 0x2f8, IO_COM3
bedeutet port 0x3e8 und IO_COM4
steht für port 0x2e8. Die angegebenen
IO-Adressen sind genau wie die Interrupts 4, 3, 5 und 9
üblich für serielle Schnittstellen. Beachten Sie, dass sich
normale serielle Schnittstellen auf ISA-Bussen
keine Interrupts teilen können.
Multiportkarten besitzen zusätzliche Schaltkreise, die es
allen 16550As auf der Karte erlauben, sich einen oder zwei
Interrupts zu teilen.GerätedateienDie meisten Geräte im Kernel werden durch
Gerätedateien in /dev angesprochen. Die
sio Geräte werden durch
/dev/ttyuN
für eingehende Verbindungen und durch
/dev/cuauN für
ausgehende Verbindungen angesprochen. Zum Initialisieren der
Geräte stellt &os; die Dateien
/dev/ttyuN.init und
/dev/cuauN.init
zur Verfügung.
Zusätzlich existieren Dateien für das Sperren von
Gerätedateien (Locking).
Dabei handelt es sich um die Dateien
/dev/ttyuN.lock
und
/dev/cuauN.lock.
Diese Dateien werden benutzt, um Kommunikationsparameter beim
Öffnen eines Ports vorzugeben. Für Modems, die zur
Flusskontrolle RTS/CTS benutzen, kann damit
crtscts gesetzt werden. Die Geräte
/dev/ttyldN und
/dev/cualaN (locking
devices) werden genutzt, um bestimmte Parameter festzuschreiben und
vor Veränderungen zu schützen. Weitere Informationen
zu Terminals finden Sie in &man.termios.4;, &man.sio.4; erklärt
die Dateien zum Initialisieren und Sperren der Geräte,
&man.stty.1; beschreibt schließlich
Terminal-Einstellungen.Konfiguration der seriellen SchnittstellettyucuauAnwendungen benutzen normalerweise die Geräte
ttyuN oder
cuauN. Das
Gerät besitzt einige Voreinstellungen für Terminal-I/O,
wenn es von einem Prozess geöffnet wird. Mit dem folgenden
Kommando können Sie sich diese Einstellungen ansehen:&prompt.root; stty -a -f /dev/ttyu1Wenn diese Einstellungen verändert werden, bleiben sie
nur solange wirksam, bis das Gerät geschlossen wird.
Wenn das Gerät danach wieder geöffnet wird, sind die
Voreinstellungen wieder wirksam. Um die Voreinstellungen
dauerhaft zu ändern, öffnen Sie das Gerät, das zum Initialisieren
dient und verändern dessen Einstellungen. Um beispielsweise
für ttyu5 den
Modus, 8-Bit Kommunikation und
Flusssteuerung einzuschalten, setzen Sie das folgende
Kommando ab:&prompt.root; stty -f /dev/ttyu5.init clocal cs8 ixon ixoffrc-Dateienrc.serialIn /etc/rc.d/rc.serial werden die
systemweiten Voreinstellungen für serielle Geräte
vorgenommen.Um zu verhindern, dass Einstellungen von Anwendungen
verändert werden, können Sie die Geräte zum
Festschreiben von Einstellungen (locking devices)
benutzen. Wenn sie beispielsweise die Geschwindigkeit von
ttyu5 auf 57600 bps festlegen wollen,
benutzen Sie das folgende Kommando:&prompt.root; stty -f /dev/ttyld5 57600Eine Anwendung, die ttyu5 öffnet,
kann nun nicht mehr die Geschwindigkeit ändern und muss
57600 bps benutzen.Die Geräte zum Initialisieren und Festschreiben von
Einstellungen sollten selbstverständlich nur von
root beschreibbar sein.TerminalsSeanKellyBeigetragen von TerminalsWenn Sie sich nicht an der Konsole oder über ein Netzwerk an
ein &os;-System anmelden können, sind Terminals ein
bequemer und kostengünstiger Weg, um auf ein System zuzugreifen.
Dieser Abschnitt beschreibt wie Sie Terminals mit &os;
benutzen.Das ursprüngliche &unix; System besaß keine Konsolen.
Zum Anmelden und Starten von Programmen wurden stattdessen
Terminals benutzt, die an den seriellen Schnittstellen des
Rechners angeschlossen waren.Die Möglichkeit, über eine serielle Schnittstelle eine
Anmeldesitzung herzustellen, existiert heute noch in fast
jedem &unix;-artigen Betriebssystem, einschließlich &os;.
Der Einsatz eines Terminals, das an einem freien seriellen
Port angeschlossen ist, ermöglicht es dem Benutzer sich
anzumelden und dort jedes Textprogramm zu starten, das
normalerweise an der Konsole oder in einem
xterm Fenster ausgeführt wird.Viele Terminals können an einem &os;-System angeschlossen
werden. Ein alter Computer kann als Terminal an ein
leistungsfähiges &os;-System angeschlossen werden. Damit kann
ein Einzelarbeitsplatz in ein leistungsfähiges
Mehrbenutzersystem verwandelt werden.&os; unterstützt drei Arten von Anschlüssen:Dumb-TerminalsDumb-Terminals (unintelligente Datenstationen) sind
Geräte, die über die serielle Schnittstelle mit einem
Rechner verbunden werden. Sie werden
unintelligent genannt, weil sie nur Text
senden und empfangen und keine Programme laufen lassen
können. Alle benötigten Programme befinden sich auf dem
Rechner, der mit dem Terminal verbunden ist.Es gibt viele Dumb-Terminals, die von verschiedenen
Herstellern produziert werden, und so gut wie jeder der
verschiedenen Terminals sollte mit &os; zusammenarbeiten.
Manche High-End Geräte verfügen sogar über
Grafikfähigkeiten, die allerdings nur von spezieller
Software genutzt werden kann.Dumb-Terminals sind in Umgebungen beliebt, in denen
keine Grafikanwendungen benötigt werden.Computer, die als Terminal fungierenJeder Computer kann die Funktion eines Dumb-Terminals,
der ja nur Text senden und empfangen kann, übernehmen.
Dazu wird lediglich das richtige Kabel benötigt und eine
Terminalemulation, die auf dem
Computer läuft.Diese Konfiguration ist sehr nützlich. Wenn ein
Benutzer zum Beispiel gerade an der &os;-Konsole arbeitet,
kann ein anderer Benutzer einen weniger leistungsstarken
Computer, der als Terminal mit dem &os;-System verbunden
ist, benutzen, um dort gleichzeitig im Textmodus zu
arbeiten.Bereits im Basissystem sind mindestens zwei Werkzeuge
vorhanden, die Sie zur Arbeit über eine serielle Konsole
einsetzen können: &man.cu.1; sowie &man.tip.1;.Um sich von einem &os;-System aus über eine serielle
Verbindung mit einem anderen System zu verbinden, geben
Sie folgenden Befehl ein:&prompt.root; cu -l /dev/cuauNDie Ports sind von Null beginnend nummeriert. Das
bedeutet, dass COM1 dem Gerät
/dev/cuau0 entspricht.In der Ports-Sammlung finden sich weitere Programme,
wie beispielsweise comms/minicom, mit
denen eine Verbindung über eine serielle Schnittstelle
hergestellt werden kann.X-TerminalsX-Terminals sind die ausgereiftesten der verfügbaren
Terminals. Sie werden nicht mit der seriellen
Schnittstelle sondern mit einem Netzwerk, wie dem
Ethernet, verbunden. Diese Terminals sind auch nicht auf
den Textmodus beschränkt, sondern können jede
&xorg;-Anwendung
darstellen.Die Einrichtung und Verwendung von X-Terminals wird in
diesem Abschnitt nicht beschrieben.KonfigurationDieser Abschnitt beschreibt, wie Sie ein &os;-System
konfigurieren müssen, um sich an einem Terminal anzumelden.
Dabei wird vorausgesetzt, dass der Kernel bereits die
serielle Schnittstelle, die mit dem Terminal verbunden ist,
unterstützt. Weiterhin sollte der Terminal schon
angeschlossen sein.Der init Prozess ist für das
Initialisieren des Systems und den Start von Prozessen zum
Zeitpunkt des Systemstarts verantwortlich. Unter anderem
liest init/etc/ttys
ein und startet für jeden
verfügbaren Terminal einen getty
Prozess. getty wiederum fragt beim
Anmelden den Benutzernamen ab und startet
login.Um Terminals auf einem &os;-System einzurichten, führen
Sie folgenden Schritte als root durch:Fügen Sie einen Eintrag in
/etc/ttys für die serielle
Schnittstelle aus /dev ein, falls
dieser nicht bereits vorhanden ist.Geben Sie /usr/libexec/getty als
auszuführendes Programm an. Als Parameter für
getty geben Sie den passenden
Verbindungstyp aus /etc/gettytab
an.Geben Sie den Terminaltyp an.Aktivieren Sie den Anschluss.Geben Sie die Sicherheit des Anschlusses an.Veranlassen Sie init/etc/ttys erneut zu lesen.Optional können Sie in /etc/gettytab
auch einen auf Ihre Zwecke angepassten Terminaltyp erstellen.
&man.gettytab.5; und &man.getty.8; enthalten dazu weitere
Informationen.Hinzufügen eines Eintrags in
/etc/ttysIn /etc/ttys werden alle Terminals
aufgeführt, an denen eine Anmeldung auf dem &os;-System
möglich ist. Hier findet sich zum Beispiel ein Eintrag
für die erste virtuelle Konsole
/dev/ttyv0, der es Benutzern
ermöglicht, sich dort anzumelden. Die Datei enthält weitere
Einträge für andere virtuelle Konsolen, serielle
Schnittstellen und Pseudoterminals. Um einen Terminal
zu konfigurieren, fügen Sie einen Eintrag für den
Namen des Gerätes aus /dev ohne das
Präfix /dev hinzu. Zum Beispiel wird
/dev/ttyv0 als
ttyv0 aufgeführt.In der Voreinstellung enthält
/etc/ttys Einträge für die ersten
vier seriellen Schnittstellen: ttyu0
bis ttyu3. Wird an eine von diesen
Schnittstellen ein Terminal angeschlossen, braucht in dieser
Datei kein weiter Eintrag hinzugefügt werden.Einträge in /etc/ttys
hinzufügenDieses Beispiel konfiguriert zwei Terminals:
Einen Wyse-50 und einen alten 286 IBM PC,
der mit Procomm einen VT-100
Terminal emuliert. Der Wyse-Terminal ist mit der
zweiten seriellen Schnittstelle verbunden und der 286
mit der sechsten seriellen Schnittstelle, einem Anschluss
auf einer Multiportkarte. Die entsprechenden Einträge in
/etc/ttys würden dann wie folgt
aussehen:ttyu1 "/usr/libexec/getty std.38400" wy50 on insecure
ttyu5 "/usr/libexec/getty std.19200" vt100 on insecure
Das erste Feld gibt normalerweise den Namen der
Gerätedatei aus /dev an.Im zweiten Feld wird das auszuführende Kommando,
normal ist das &man.getty.8;, angegeben.
getty initialisiert und öffnet die
Verbindung, setzt die Geschwindigkeit und fragt den
Benutzernamen ab. Danach führt es &man.login.1;
aus.getty akzeptiert einen optionalen
Parameter auf der Kommandozeile, den Verbindungstyp, der
die Eigenschaften der Verbindung, wie die Geschwindigkeit
und Parität, festlegt. Die Typen und die damit
verbundenen Eigenschaften liest getty
aus /etc/gettytab./etc/gettytab enthält viele
Einträge sowohl für neue wie auch alte
Terminalverbindungen. Die meisten Einträge, die mit
std beginnen, sollten mit einem
festverdrahteten Terminal funktionieren. Für jede
Geschwindigkeit zwischen
110 bps und
115200 bps gibt es einen
std Eintrag. Weitere Informationen
dazu finden Sie in &man.gettytab.5;.Wenn Sie den Verbindungstyp in
/etc/ttys eintragen, stellen Sie
sicher, dass die Kommunikationseinstellungen
auch mit denen des Terminals übereinstimmen.In diesem Beispiel verwendet der Wyse-50 keine
Parität und 38400 bps, der
286 PC benutzt ebenfalls keine Parität und
arbeitet mit 19200 bps.Das dritte Feld gibt den Terminaltyp an, der
normalerweise mit diesem Anschluss verbunden ist.
Für Einwählverbindungen wird oft
unknown oder dialup
benutzt, da sich die Benutzer praktisch mit beliebigen
Terminals oder Emulatoren anmelden können. Bei
festverdrahteten Terminals ändert sich der Typ nicht,
so dass in diesem Feld ein richtiger Typ aus der
&man.termcap.5; Datenbank angegeben werden
kann.In diesem Beispiel benutzt der Wyse-50
den entsprechenden Typ aus &man.termcap.5;, der 286 PC
wird als VT-100, den er ja emuliert, angegeben.Das vierte Feld gibt an, ob der Anschluss
aktiviert werden soll. Ist das Feld auf
on gesetzt, startet
init das Programm, das
im zweiten Feld angegeben ist. Normalerweise ist dies
getty. Wenn das Feld auf
offgesetzt wird, wird
getty nicht ausgeführt und folglich
kann sich niemand an dem betreffenden Terminal
anmelden.Das letzte Feld gibt die Sicherheit des
Anschlusses an. Wenn hier secure
angegeben wird, darf sich root, oder jeder
Account mit der UID
0 über diese Verbindung anmelden.
Wenn insecure angegeben wird,
dürfen sich nur unprivilegierte Benutzer anmelden.
Diese können später mit &man.su.1; oder einem
ähnlichen Mechanismus zu root wechseln.Es wird dringend empfohlen
insecure zu verwenden, sogar für
Terminals hinter verschlossenen Türen. Es ist ganz
einfach sich mit su anzumelden,
wenn Superuser-Rechte benötigt werden.init zwingen,
/etc/ttys erneut zu lesenNachdem Änderungen in /etc/ttys
vorgenommen wurden, schicken Sie
init ein SIGHUP-Signal (hangup), um es zu
veranlassen, seine Konfigurationsdatei neu zu lesen:&prompt.root; kill -HUP 1Da init immer der erste Prozess auf
einem System ist, besitzt es immer die Prozess-ID
1.Wenn alles richtig eingerichtet ist, alle Kabel angeschlossen
und die Terminals eingeschaltet sind, sollte für jeden
Terminal ein getty Prozess laufen und auf
jedem Terminal sollte eine Anmeldeaufforderung zu sehen
sein.FehlersucheSelbst wenn Sie den Anweisungen akribisch gefolgt sind, kann es
immer noch zu Fehlern beim Einrichten eines Terminals kommen.
Hier eine Liste der häufigsten Symptome, sowie einige mögliche
Lösungen:Wenn kein Anmeldeprompt erscheint, stellen Sie sicher,
dass der Terminal verbunden und
eingeschaltet ist. Wenn ein PC als Terminal fungiert,
überprüfen Sie, dass die Terminalemulation auf
den richtigen Schnittstellen läuft.Stellen Sie sicher, dass Sie das richtige Kabel
verwenden und dass das Kabel fest mit dem Terminal und
dem &os;-Rechner verbunden ist.Stellen Sie sicher, dass die Einstellungen für
die Geschwindigkeit (bps) und Parität auf
dem &os;-System und dem Terminal gleich sind. Wenn der
Terminal einen Bildschirm besitzt, überprüfen Sie die
richtige Einstellung von Helligkeit und Kontrast. Wenn der
Terminal druckt, stellen Sie die ausreichende Versorgung mit
Papier und Tinte sicher.Überprüfen Sie mit ps,
dass der getty Prozess für
den Terminal läuft:&prompt.root; ps -axww|grep gettyFür jeden Terminal sollte ein Eintrag vorhanden sein.
Aus dem folgenden Beispiel ist zu erkennen, dass
getty auf der zweiten seriellen
Schnittstelle tyyd1 läuft und den
Verbindungstyp std.38400 aus
/etc/gettytab benutzt:22189 d1 Is+ 0:00.03 /usr/libexec/getty std.38400 ttyu1Wenn getty nicht läuft,
überprüfen Sie, ob der Anschluss in
/etc/ttys aktiviert ist. Denken Sie
daran kill -HUP 1 auszuführen, nachdem
/etc/ttys geändert wurde.Wenn getty läuft, aber der
Terminal immer noch kein Anmeldeprompt ausgibt, oder am
Anmeldeprompt nichts eingegeben werden kann, kann es sein,
dass der Terminal oder Kabel keinen Hardware-Handshake
unterstützt. Ändern Sie dann den Eintrag
std.38400 in /etc/ttys
zu 3wire.38400. Nachdem Sie
/etc/ttys geändert haben, setzen
Sie kill -HUP 1 ab. Der
Eintrag 3wire besitzt ähnliche
Eigenschaften wie der Eintrag std,
ignoriert aber den Hardware-Handshake. Wenn Sie den Eintrag
3wire verwenden, muss vielleicht die
Geschwindigkeit verkleinert oder die Software-Flusssteuerung
aktiviert werden, um Pufferüberläufe zu vermeiden.Wenn nur unverständliche Zeichen erscheinen, stellen Sie
sicher, dass die Einstellungen für
die Geschwindigkeit (bps) und Parität auf
dem &os;-System
und dem Terminal gleich sind. Kontrollieren Sie den
getty Prozess und stellen Sie sicher,
dass der richtige Verbindungstyp aus
/etc/gettytab benutzt wird. Wenn das
nicht der Fall ist, editieren Sie
/etc/ttys und setzen das Kommando
kill-HUP 1 ab.Wenn Zeichen doppelt und eingegebene Passwörter im
Klartext erscheinen, stellen Sie den Terminal oder die
Terminalemulation von half duplex oder
local echo auf full duplex
um.EinwählverbindungenGuyHelmerBeigetragen von SeanKellyMit Anmerkungen von EinwählverbindungenDas Einrichten von Einwählverbindungen auf
&os;-Systemen ähnelt dem Anschließen von Terminals, nur dass
anstelle eines Terminals ein Modem verwendet wird. &os;
unterstützt sowohl externe als auch interne Modems.Externe Modems sind für Einwählverbindungen besser
geeignet, da sie die Konfiguration in nicht flüchtigem RAM
speichern können. Zudem verfügen Sie über
Leuchtanzeigen, die den Status wichtiger RS-232 Signale
anzeigen.Interne Modems verfügen normalerweise nicht über
nicht flüchtiges RAM und lassen sich meist nur über
DIP-Schalter konfigurieren. Selbst wenn ein internes Modem
Leuchtanzeigen besitzt, sind diese meist schwer einzusehen, wenn
das Modem eingebaut ist.ModemMit einem externen Modem muss das passende Kabel
verwendet werden. Ein Standard RS-232C Kabel, bei dem die
folgenden Signale miteinander verbunden sind, sollte
ausreichen:
SignalnamenAbkürzungBedeutungRDReceived DataTDTransmitted DataDTRData Terminal ReadyDSRData Set ReadyDCDData Carrier Detect (dadurch erkennt RS-232
das Signal Received Line)SGSignal GroundRTSRequest to SendCTSClear to Send
Ab Geschwindigkeiten von 2400 bps benötigt &os; die
Signale RTS und CTS
für die Flusssteuerung. Das Signal
CD zeigt an, ob ein Träger vorliegt, das
heißt ob die Verbindung aufgebaut ist oder beendet wurde.
DTR zeigt an, dass das Gerät
betriebsbereit ist. Es gibt einige Kabel, bei denen nicht alle
nötigen Signale verbunden sind. Wenn Probleme dieser Art
auftreten, dass zum Beispiel die Sitzung nicht beendet wird,
obwohl die Verbindung beendet wurde, kann das an einem solchen
Kabel liegen.Wie andere &unix; Betriebssysteme auch, benutzt &os;
Hardwaresignale, um festzustellen, ob ein Anruf
beantwortet wurde, eine Verbindung beendet wurde, oder um die
Verbindung zu schließen und das Modem zurückzusetzen.
&os; vermeidet es, dem Modem Kommandos zu senden, oder den
Statusreport des Modems abzufragen.Schnittstellenbausteine&os; unterstützt EIA RS-232C (CCITT V.24) serielle
Schnittstellen, die auf den NS8250, NS16450, NS16550 oder NS16550A
Bausteinen basieren. Die Bausteine der Serie 16550 verfügen
über einen 16 Byte großen Puffer, der als FIFO angelegt
ist. Wegen Fehler in der FIFO-Logik kann der Puffer in einem 16550
Baustein allerdings nicht genutzt werden, das heißt der
Baustein muss als 16450 betrieben werden. Bei allen
Bausteinen ohne Puffer und dem 16550 Baustein muss jedes
Byte einzeln von dem Betriebssystem verarbeitet werden, was
Fehler bei hohen Geschwindigkeiten oder großer Systemlast
erzeugt. Es sollten daher nach Möglichkeit serielle
Schnittstellen, die auf 16550A Bausteinen basieren, eingesetzt
werden.ÜberblickgettyWie bei Terminals auch, startet init für
jede serielle Schnittstelle, die eine Einwählverbindung zur
Verfügung stellt, einen getty Prozess.
Wenn das Modem beispielsweise an /dev/ttyu0
angeschlossen ist, sollte in der Ausgabe von ps
ax eine Zeile wie die folgende erscheinen: 4850 ?? I 0:00.09 /usr/libexec/getty V19200 ttyu0Wenn sich ein Benutzer einwählt und die Verbindung
aufgebaut ist, zeigt das Modem dies durch das CD
Signal (Carrier Detect) an. Der Kernel merkt, dass ein Signal
anliegt und weist getty an, die
Schnittstelle zu öffnen. Dann sendet getty das
Anmeldeprompt mit der ersten für die Verbindung vereinbarten
Geschwindigkeit und wartet auf eine Antwort. Wenn die Antwort
unverständlich ist, weil zum Beispiel die Geschwindigkeit des
Modems von gettys Geschwindigkeit abweicht,
versucht getty die Geschwindigkeit solange
anzupassen, bis es eine verständliche Antwort
erhält./usr/bin/loginNachdem der Benutzer seinen Benutzernamen eingegeben hat,
führt getty/usr/bin/login aus, welches das Passwort
abfragt und danach die Shell des Benutzers startet.KonfigurationsdateienDrei Konfigurationsdateien in /etc
steuern, ob eine Einwahl in das &os;-System möglich ist.
/etc/gettytab, konfiguriert den
/usr/libexec/getty Dæmon. In
/etc/ttys wird festgelegt, auf welchen
Schnittstellen /sbin/init einen
getty Prozess startet. Schließlich
bietet /etc/rc.d/serial die
Möglichkeit, Schnittstellen zu initialisieren.Es gibt zwei Ansichten darüber, wie Modems für
Einwählverbindungen unter &unix; zu konfigurieren sind. Zum
einen kann die Geschwindigkeit zwischen dem Modem und dem Computer
fest eingestellt werden. Sie ist damit unabhängig von der
Geschwindigkeit, mit der sich der entfernte Benutzer einwählt.
Dies hat den Vorteil, dass der entfernte Benutzer das
Anmeldeprompt sofort bekommt. Der Nachteil bei diesem Verfahren
ist, dass das System die tatsächliche Geschwindigkeit
der Verbindung nicht kennt. Damit können bildschirmorientierte
Programme wie Emacs ihren
Bildschirmaufbau nicht an langsame Verbindungen anpassen,
um die Antwortzeiten zu verbessern.Die andere Möglichkeit besteht darin, die Geschwindigkeit
der RS-232 Schnittstelle des lokalen Modems an die Geschwindigkeit
des entfernten Modems anzupassen. Bei einer V.32bis (14400 bps)
Verbindung kann das lokale Modem die RS-232 Schnittstelle mit
19200 bps betreiben, während bei einer Verbindung mit
2400 bps die RS-232 Schnittstelle mit 2400 bps
betrieben wird. Da getty die
Verbindungsgeschwindigkeit des Modems nicht kennt, startet es
den Anmeldevorgang mit der Ausgabe
von login: und wartet auf eine Antwort. Wenn der
Benutzer der Gegenstelle nun nur unverständliche Zeichen
erhält, muss er solange Enter
drücken, bis das Anmeldeprompt erscheint. Solange die
Geschwindigkeiten nicht übereinstimmen, sind die Antworten der
Gegenstelle für getty ebenfalls
unverständlich. In diesem Fall wechselt
getty zur nächsten Geschwindigkeit und gibt
wieder login: aus. In aller Regel erhält der
Benutzer der Gegenstelle nach ein bis zwei Tastendrücken
eine erkennbare Anmeldeaufforderung. Diese Anmeldeprozedur sieht
nicht so sauber wie die Methode mit einer festen Geschwindigkeit
aus, bietet dem Benutzer einer langsamen Verbindung allerdings den
Vorteil, dass sich bildschirmorientierte Programme an die
Geschwindigkeit anpassen können.Im Folgenden wird die Konfiguration für beide Methoden
besprochen, doch die Methode der angepassten Geschwindigkeit
wird bei der Diskussion bevorzugt./etc/gettytab/etc/gettytabMit /etc/gettytab wird &man.getty.8; im
Stil von &man.termcap.5; konfiguriert. Das Format dieser Datei und
die Bedeutung der Einträge wird in &man.gettytab.5;
beschrieben.Wenn die Modemgeschwindigkeit vorgeben wird, sollten
Anpassungen in /etc/gettytab nicht
erforderlich sein.Wenn jedoch die Geschwindigkeit angepasst werden soll,
erstellen Sie einen Eintrag in
/etc/gettytab, um
getty die Geschwindigkeit für das
Modem mitzuteilen. Für ein 2400 bps Modem kann der
vorhandene D2400 Eintrag benutzt
werden.#
# Fast dialup terminals, 2400/1200/300 rotary (can start either way)
#
D2400|d2400|Fast-Dial-2400:\
:nx=D1200:tc=2400-baud:
3|D1200|Fast-Dial-1200:\
:nx=D300:tc=1200-baud:
5|D300|Fast-Dial-300:\
:nx=D2400:tc=300-baud:Wird ein Modem mit einer höheren Geschwindigkeit
eingesetzt, müssen weitere Einträge in
/etc/gettytab erstellt werden.
Dieses Beispiel zeigt einen Eintrag für ein 14400 bps
Modem mit einer Geschwindigkeit bis zu
19200 bps:#
# Additions for a V.32bis Modem
#
um|V300|High Speed Modem at 300,8-bit:\
:nx=V19200:tc=std.300:
un|V1200|High Speed Modem at 1200,8-bit:\
:nx=V300:tc=std.1200:
uo|V2400|High Speed Modem at 2400,8-bit:\
:nx=V1200:tc=std.2400:
up|V9600|High Speed Modem at 9600,8-bit:\
:nx=V2400:tc=std.9600:
uq|V19200|High Speed Modem at 19200,8-bit:\
:nx=V9600:tc=std.19200:Die damit erzeugten Verbindungen verwenden 8 Bit und keine
Parität.Im obigen Beispiel startet die Geschwindigkeit bei
19200 bps (eine V.32bis Verbindung) und geht dann
über 9600 bps (V.32), 400 bps, 1200 bps
und 300 bps wieder zurück zu 19200 bps.
Das Schlüsselwort nx=
(next table) sorgt für
das zyklische Durchlaufen der Geschwindigkeiten. Jede Zeile
zieht zudem noch mit tc=
(table continuation)
die Vorgabewerte für die jeweilige Geschwindigkeit an.Wenn Sie ein 28800 bps Modem besitzen und/oder Kompression
mit einem 14400 bps Modem benutzen wollen, brauchen Sie
höhere Geschwindigkeiten als 19200 bps. Das folgende
Beispiel startet mit 57600 bps:#
# Additions for a V.32bis or V.34 Modem
# Starting at 57600 bps
#
vm|VH300|Very High Speed Modem at 300,8-bit:\
:nx=VH57600:tc=std.300:
vn|VH1200|Very High Speed Modem at 1200,8-bit:\
:nx=VH300:tc=std.1200:
vo|VH2400|Very High Speed Modem at 2400,8-bit:\
:nx=VH1200:tc=std.2400:
vp|VH9600|Very High Speed Modem at 9600,8-bit:\
:nx=VH2400:tc=std.9600:
vq|VH57600|Very High Speed Modem at 57600,8-bit:\
:nx=VH9600:tc=std.57600:Wenn Sie eine langsame CPU oder ein stark
ausgelastetes System besitzen und sich kein 16550A im
System befindet, erhalten Sie bei 57600 bps
vielleicht sio Fehlermeldungen der
Form silo overflow./etc/ttys/etc/ttys/etc/ttys wurde bereits in besprochen. Die Konfiguration für
Modems ist ähnlich, allerdings braucht
getty ein anderes Argument und es muss
ein anderer Terminaltyp angegeben werden. Der Eintrag für
beide Methoden (feste und angepasste Geschwindigkeit) hat
die folgende Form:ttyu0 "/usr/libexec/getty xxx" dialup onDas erste Feld der obigen Zeile gibt die Gerätedatei
für diesen Eintrag an. ttyu0
bedeutet, dass getty mit
/dev/ttyu0 arbeitet. Das zweite Feld
"/usr/libexec/getty xxx"
gibt das Kommando an, das init für dieses
Gerät startet (xxx wird durch
einen passenden Eintrag aus /etc/gettytab
ersetzt). Die Vorgabe für den Terminaltyp, hier
dialup, wird im dritten Feld angegeben. Das
vierte Feld, on, zeigt
init an, dass die Schnittstelle aktiviert
ist. Im fünften Feld könnte noch
secure angegeben werden, um Anmeldungen von
root zu erlauben, doch sollte das wirklich
nur für physikalisch sichere Terminals, wie die
Systemkonsole, aktiviert werden.Die Vorgabe für den Terminaltyp,
dialup im obigen Beispiel, hängt von lokalen
Gegebenheiten ab. Traditionell wird dialup
für Einwählverbindungen verwendet, so dass die
Benutzer in ihren Anmeldeskripten den Terminaltyp auf ihren
Terminal abstimmen können, wenn der Typ auf
dialup gesetzt ist. Wenn Sie nur VT102
Terminals oder Emulatoren einsetzen,
können Sie den Terminaltyp hier auch fest auf
vt102 setzen.Nachdem /etc/ttys geändert wurde,
muss init ein HUP
Signal schicken, damit es die Datei wieder einliest:&prompt.root; kill -HUP 1Stellen Sie sicher, dass das Modem richtig konfiguriert
und angeschlossen ist, bevor Sie das Signal an
init schicken.Das Argument von getty muss in
diesem Fall eine feste Geschwindigkeit vorgeben. Der Eintrag
für ein Modem, das fest auf 19200 bps eingestellt ist,
könnte wie folgt aussehen:ttyu0 "/usr/libexec/getty std.19200" dialup onWenn das Modem auf eine andere Geschwindigkeit eingestellt
ist, setzen Sie anstelle von std.19200 einen
passenden Eintrag der Form
std.speed ein.
Stellen Sie sicher, dass dies auch ein gültiger
Verbindungstyp aus /etc/gettytab
ist.Das Argument von getty muss hier auf
einen der Einträge aus /etc/gettytab
zeigen, der zu einer Kette von Einträgen gehört, die
die zu probierenden Geschwindigkeiten beschreiben. Wenn Sie
dem obigen Beispiel gefolgt sind und zusätzliche
Einträge in /etc/gettytab erzeugt
haben, können Sie die folgende Zeile verwenden:ttyu0 "/usr/libexec/getty V19200" dialup on/etc/rc.d/serialrc-Dateienrc.serialModems, die höhere Geschwindigkeiten unterstützen,
zum Beispiel V.32, V.32bis und V.34 Modems, benutzen
Hardware-Flusssteuerung (RTS/CTS). Für
die entsprechenden Schnittstellen können Sie die
Flusssteuerung mit stty in
/etc/rc.d/serial einstellen.Um beispielsweise die Hardware-Flusssteuerung
für die Geräte zur Ein- und Auswahl der zweiten
seriellen Schnittstelle (COM2)
zu aktivieren, benutzen Sie die Dateien zur Initialisierung der
entsprechenden Geräte und fügen die folgenden Zeilen in
/etc/rc.d/serial hinzu:# Serial port initial configuration
stty -f /dev/ttyu1.init crtscts
stty -f /dev/cuad1.init crtsctsModemkonfigurationFür ein Modem, das seine Konfiguration in nicht
flüchtigem RAM speichert, wird ein Terminalprogramm wie
Telix unter &ms-dos; oder
tip unter &os; benötigt, um die Parameter
einzustellen. Verbinden Sie sich mit derselben Geschwindigkeit, die
getty zuerst benutzen würde, mit dem Modem und
treffen Sie folgende Einstellungen:DCD ist eingeschaltet, wenn das
Trägersignal des entfernten Modems erkannt wird.Im Betrieb liegt DTR an. Bei einem Verlust
von DTR legt das Modem auf und setzt sich zurück.CTS Flusssteuerung ist für
ausgehende Daten aktiviert.XON/XOFF Flusssteuerung ist
ausgeschaltet.RTS Flusssteuerung ist für
eingehende Daten aktiviert.Keine Rückmeldungen ausgeben.Die Echo-Funktion ist deaktiviert.Lesen Sie die Dokumentation für das Modem, um
herauszufinden welche Befehle und/oder DIP-Schalterstellungen
benötigt werden.Für ein externes 14400 &usrobotics; &sportster; gelten zum
Beispiel die folgenden Befehle:ATZ
AT&C1&D2&H1&I0&R2&WBei dieser Gelegenheit können Sie auch gleich andere
Einstellungen, zum Beispiel ob Sie V42.bis und/oder MNP5
Kompression benutzen wollen, an Ihrem Modem vornehmen.Bei einem externen 14400 &usrobotics; &sportster;
müssen Sie auch noch einige DIP-Schalter einstellen.
Die folgenden Einstellungen können verwendet werden:Schalter 1: OBEN – DTR normalSchalter 2: N/A (Rückmeldungen als Text/numerische
Rückmeldungen)Schalter 3: OBEN – Keine Rückmeldungen
ausgebenSchalter 4: UNTEN – Echo-Funktion ausSchalter 5: OBEN – Rufannahme aktiviertSchalter 6: OBEN – Carrier Detect normalSchalter 7: OBEN – Einstellungen aus dem NVRAM ladenSchalter 8: N/A (Smart Mode/Dumb Mode)Für Einwählverbindungen sollten die
Rückmeldungen deaktiviert sein, da sonst
getty dem Modem das Anmeldeprompt
login: schickt und das Modem im Kommandomodus das
Prompt wieder ausgibt (Echo-Funktion) oder eine Rückmeldung gibt.
Das führt dann zu einer länglichen und fruchtlosen
Kommunikation zwischen dem Modem und
getty.Die Geschwindigkeit zwischen Modem und Computer muss auf
einen festen Wert eingestellt werden. Mit einem externen 14400
&usrobotics; &sportster; Modem setzen die folgenden Kommandos die
Geschwindigkeit auf den Wert der Datenendeinrichtung fest:ATZ
AT&B1&WIn diesem Fall muss die Geschwindigkeit der seriellen
Schnittstelle des Modems der eingehenden Geschwindigkeit
angepasst werden. Für ein externes
14400 &usrobotics; &sportster;
Modem erlauben die folgenden Befehle eine Anpassung der
Geschwindigkeit der seriellen Schnittstelle für
Verbindungen, die keine Fehlerkorrektur verwenden:ATZ
AT&B2&WVerbindungen mit Fehlerkorrektur (V.42, MNP) verwenden die
Geschwindigkeit der Datenendeinrichtung.Überprüfen der ModemkonfigurationDie meisten Modems verfügen über Kommandos, die die
Konfiguration des Modems in lesbarer Form ausgeben. Auf einem
externen 14400 &usrobotics; &sportster; zeigt
ATI5 die Einstellungen im nicht
flüchtigen RAM an. Um die wirklichen
Einstellungen unter Berücksichtigung der DIP-Schalter zu
sehen, benutzen Sie ATZ gefolgt von
ATI4.Wenn Sie ein anderes Modem benutzen, schauen Sie bitte in der
Dokumentation des Modems nach, wie Sie die Konfiguration des
Modems überprüfen können.FehlersucheBei Problemen können Sie die Einwählverbindung anhand
der folgenden Punkte überprüfen:Schließen Sie das Modem an das &os;-System an und
booten Sie das System. Wenn das Modem über
Statusindikatoren verfügt, überprüfen Sie, ob der
DTR Indikator leuchtet, wenn das Anmeldeprompt
erscheint. Dies zeigt an, dass das &os;-System einen
getty Prozess auf der entsprechenden
Schnittstelle gestartet hat und das Modem auf einkommende
Verbindungen wartet.Wenn der DTR-Indikator nicht leuchtet,
melden Sie sich an dem &os;-System an und überprüfen mit
ps ax, ob &os; einen
getty-Prozess auf der entsprechenden
Schnittstelle gestartet hat: 114 ?? I 0:00.10 /usr/libexec/getty V19200 ttyu0
115 ?? I 0:00.10 /usr/libexec/getty V19200 ttyu1Wenn das Modem noch keinen Anruf entgegengenommen hat und Sie
stattdessen die folgende Zeile sehen 114 d0 I 0:00.10 /usr/libexec/getty V19200 ttyu0bedeutet dies, dass getty die
Schnittstelle schon geöffnet hat und zeigt Kabelprobleme
oder eine falsche Modemkonfiguration an, da
getty die Schnittstelle erst dann öffnen
kann, wenn das CD Signal (Carrier Detect) vom
Modem anliegt.Wenn Sie keine getty-Prozesse auf den
gewünschten ttyuN
Ports finden, untersuchen Sie /etc/ttys
auf Fehler. Suchen Sie auch in /var/log/messages
nach Meldungen von init oder
getty. Wenn Sie dort Meldungen finden,
sollten Sie noch einmal die beiden Konfigurationsdateien
/etc/ttys und /etc/gettytab
nach Fehlern durchsehen. Überprüfen Sie auch, ob die
Gerätedateien
/dev/ttyuN
vorhanden sind.Versuchen Sie als nächstes, sich in das System
einzuwählen. Auf dem
entfernten System stellen Sie bitte die folgenden
Kommunikationsparameter ein: 8 Bit, keine Parität, ein
Stop-Bit. Wenn kein Anmeldeprompt erscheint oder nur
unleserliche Zeichen, drücken Sie mehrmals, in
Abständen von ungefähr einer Sekunde,
Enter. Wenn Sie immer noch nicht die
login: Meldung sehen, schicken Sie ein
BREAK Kommando. Wenn Sie zur Einwahl ein
Highspeed-Modem benutzen, verwenden Sie eine feste
Geschwindigkeit auf der seriellen Schnittstelle des
Modems.Wenn jetzt immer noch kein Anmeldeprompt erscheint,
überprüfen Sie nochmals /etc/gettytab
und stellen sicher, dass:der Verbindungstyp in /etc/ttys zu
einem gültigen Eintrag in /etc/gettytab
gehört.jeder der nx= Einträge in
gettytab gültig ist undjeder tc= Eintrag auf einen
gültigen Eintrag in gettytab
verweist.Wenn das Modem am &os;-System auf einen eingehenden Anruf
nicht antwortet, stellen Sie sicher, dass das Modem so
konfiguriert ist, dass es einen Anruf beantwortet, wenn
DTR anliegt. Wenn das Modem Statusindikatoren
besitzt, können Sie das Anliegen von DTR
anhand der Leuchten überprüfen.Wenn Sie alles schon mehrfach überprüft haben und
es immer noch noch nicht funktioniert, versuchen Sie es zu
einem späteren Zeitpunkt erneut. Wenn es immer noch nicht
funktioniert, können Sie eine Mail an die Mailingliste
&a.de.questions; schicken, in der Sie Ihr Modem und Ihr
Problem beschreiben.Verbindungen nach AußenDie folgenden Ratschläge beschreiben, wie Sie mit einem
Modem eine Verbindung zu einem anderen Computer herstellen. Dies
können Sie nutzen, um sich auf einem entfernten Computer
anzumelden.Weiterhin ist diese Art von Verbindungen nützlich, wenn
PPP mal nicht funktioniert. Wenn Sie zum Beispiel eine Datei
mit FTP übertragen wollen und das über PPP gerade nicht
möglich ist, melden Sie sich auf dem entfernten Rechner an und
führen dort die FTP-Sitzung durch. Die Dateien können danach
mit zmodem auf den lokalen Rechner übertragen werden.Ein Hayes Modem benutzenEs gibt einen eingebauten, allgemeinen Hayes Wähler in
tip. Verwenden Sie
at=hayes in
/etc/remote.Der Hayes-Treiber ist nicht schlau genug, um ein paar der
erweiterten Funktionen von neueren Modems, bspw.
BUSY, NO DIALTONE oder
CONNECT 115200 zu nutzen. Schalten Sie
diese Nachrichten mit Hilfe von ATX0&W
ab, wenn Sie tip benutzen.Der Anwahl-Timeout von tip beträgt 60
Sekunden. Das Modem sollte weniger verwenden, oder
tip denkt, dass ein Kommunikationsfehler
vorliegt. Versuchen Sie es mit
ATS7=45&W.AT-Befehle benutzen/etc/remoteErstellen Sie einen direct
Eintrag in /etc/remote. Wenn das Modem zum
Beispiel an der ersten seriellen Schnittstelle,
/dev/cuad0, angeschlossen ist, dann
fügen Sie die folgende Zeile hinzu:cuad0:dv=/dev/cuad0:br#19200:pa=noneVerwenden Sie die höchste bps-Rate, die das Modem in der
br Fähigkeit unterstützt. Geben Sie dann
tip cuad0 ein und Sie sind mit dem
Modem verbunden.Oder benutzen Sie cu als
root mit dem folgenden Befehl:&prompt.root; cu -lline -sspeedline steht für die serielle
Schnittstelle (/dev/cuad0) und
speed für die Geschwindigkeit
(57600). Wenn Sie mit dem Eingeben der AT
Befehle fertig sind, beenden Sie mit ~..Das @ Zeichen funktioniert
nichtDas @ Zeichen in der
Telefonnummerfähigkeit sagt tip, dass
es in /etc/phones nach einer Nummer
suchen soll. Aber @ ist auch ein spezielles
Zeichen in den Dateien, in denen Fähigkeiten beschrieben
werden, wie /etc/remote. Schreiben Sie es mit
einem Backslash:pn=\@Wie kann ich von der Kommandozeile eine Telefonnummer
wählen?Setzen Sie einen allgemeinen Eintrag in
/etc/remote. Zum Beispiel:tip115200|Dial any phone number at 115200 bps:\
:dv=/dev/cuad0:br#115200:at=hayes:pa=none:du:
tip57600|Dial any phone number at 57600 bps:\
:dv=/dev/cuad0:br#57600:at=hayes:pa=none:du:Folgendes sollte jetzt funktionieren:&prompt.root; tip -115200 5551234Benutzer, die cu gegenüber
tip bevorzugen, können einen allgemeinen
cu-Eintrag verwenden:cu115200|Use cu to dial any number at 115200bps:\
:dv=/dev/cuad1:br#57600:at=hayes:pa=none:du:und benutzen zum Wählen das Kommando:&prompt.root; cu 5551234 -s 115200Die bps-Rate angebenSchreiben Sie einen tip1200- oder einen
cu1200-Eintrag, aber geben Sie auch die
bps-Rate an, die das Modem wirklich
unterstützt. Leider denkt &man.tip.1;, dass 1200 bps ein
guter Standardwert ist und deswegen sucht es nach einem
tip1200-Eintrag. Natürlich müssen Sie
nicht 1200 bps benutzen.Über einen Terminal-Server auf verschiedene Rechner
zugreifenSie müssen nicht warten bis Sie verbunden sind, und
jedes Mal
CONNECT Rechner
eingeben, benutzen Sie tips
cm-Fähigkeit. Sie können diese
Einträge in /etc/remote verwenden.
Mit den Befehlen tip pain oder
tip muffin können Sie eine Verbindungen zu
den Rechnern pain oder
muffin herstellen; mit
tip deep13 verbinden Sie sich mit dem
Terminalserver.pain|pain.deep13.com|Forrester's machine:\
:cm=CONNECT pain\n:tc=deep13:
muffin|muffin.deep13.com|Frank's machine:\
:cm=CONNECT muffin\n:tc=deep13:
deep13:Gizmonics Institute terminal server:\
:dv=/dev/cuad2:br#38400:at=hayes:du:pa=none:pn=5551234:Mehr als eine Verbindung mit tip
benutzenDas ist oft ein Problem, wenn eine Universität mehrere
Telefonleitungen hat und viele tausend Studenten diese benutzen
wollen.Erstellen Sie einen Eintrag in
/etc/remote und benutzen Sie
@ für die
pn-Fähigkeit:big-university:\
:pn=\@:tc=dialout
dialout:\
:dv=/dev/cuad3:br#9600:at=courier:du:pa=none:Listen Sie dann die Telefonnummern in
/etc/phones auf:big-university 5551111
big-university 5551112
big-university 5551113
big-university 5551114tip probiert jede der Nummern in der
aufgelisteten Reihenfolge und gibt dann auf. Möchten Sie,
dass tip beim Versuchen eine Verbindung
herzustellen nicht aufgibt, lassen Sie es in einer
while-Schleife laufen.Eine Übertragung erzwingenCtrlP
ist das voreingestellte Zeichen, mit dem eine Übertragung
erzwungen werden kann und wird benutzt, um tip
zu sagen, dass das nächste Zeichen direkt gesendet werden
soll und nicht als Fluchtzeichen interpretiert werden soll. Mit
Hilfe der Fluchtsequenz ~s, mit der man
Variablen setzen kann, können Sie jedes andere Zeichen als
force-Zeichen definieren.Geben Sie
~sforce=Zeichen
gefolgt von Enter ein. Für
Zeichen können Sie ein beliebiges
einzelnes Zeichen einsetzen. Wenn Sie
Zeichen weglassen, ist das
force-Zeichen nul, das Sie mit
Ctrl2
oder
CtrlLeertaste eingeben können. Ein guter Wert für
Zeichen ist
ShiftCtrl6, welches nur auf wenigen Terminal Servern benutzt
wird.Sie können das force-Zeichen auch
bestimmen, indem Sie in $HOME/.tiprc das
Folgende einstellen:force=single-charGroßbuchstabenDies passiert, wenn
CtrlA eingegeben wurde, das raise-Zeichen von
tip, das speziell für Leute mit defekten
caps-lock Tasten eingerichtet wurde. Benutzen Sie
~s wie oben und setzen Sie die Variable
raisechar auf etwas, das Ihnen angemessen
erscheint. Tatsächlich kann die Variable auf das gleiche
Zeichen wie das force-Zeichen gesetzt werden,
wenn diese Fähigkeiten niemals benutzt werden sollen.Hier ist ein Muster der .tiprc Datei
für Emacs Benutzer, die
Ctrl2
und
CtrlA
tippen müssen:force=^^
raisechar=^^Geben Sie für ^^ShiftCtrl6 ein.Dateien mit tip übertragenWenn Sie mit einem anderen &unix; System kommunizieren,
können Sie mit ~p (put) und
~t (take) Dateien senden und empfangen. Diese
Befehle lassen cat und echo
auf dem entfernten System laufen, um Dateien zu empfangen und zu
senden. Die Syntax ist:~plocal-fileremote-file~tremote-filelocal-fileEs gibt keine Fehlerkontrolle, deshalb sollte besser ein
anderes Protokoll, wie zmodem, benutzt werden.zmodem mit
tip benutzenUm Dateien zu empfangen, starten Sie das Programm zum Senden
auf dem entfernten Computer. Geben Sie dann
~C rz ein, um die Dateien lokal zu empfangen.Um Dateien zu senden, starten Sie das Programm zum Empfangen
auf dem entfernten Computer. Geben Sie dann
~C sz Dateien ein,
um Dateien auf das entfernte System zu senden.Einrichten der seriellen KonsoleKazutakaYOKOTABeigetragen von BillPaulBased on a document by serielle Konsole&os; kann ein System mit einem Dumb-Terminal
(unintelligente Datenstation) an einer seriellen
Schnittstelle als Konsole booten. Diese Konfiguration ist
besonders nützlich für Systemadministratoren, die &os; auf
Systemen ohne Tastatur oder Monitor installieren wollen, und
Entwickler, die den Kernel oder Gerätetreiber debuggen.Wie in beschrieben, besitzt &os;
drei Bootphasen. Der Code für die ersten beiden Bootphasen
befindet sich im Bootsektor am Anfang der &os;-Slice der
Bootplatte. Dieser Bootblock lädt den Bootloader in Phase
drei.Um eine serielle Konsole einzurichten, muss der
Bootblock, der Bootloader und der Kernel konfiguriert
werden.Schnelle Konfiguration der seriellen KonsoleDieser Abschnitt bietet einen schnellen Überblick über die
Einrichtung einer seriellen Konsolen. Es wird vorausgesetzt,
dass die Voreinstellungen verwendet werden.Verbinden Sie die serielle Konsole mit
COM1 sowie dem Kontrollterminal.Um die Startmeldungen der seriellen Konsole zu sehen,
geben Sie als root folgendes ein:&prompt.root; echo 'console="comconsole"' >> /boot/loader.confÄndern Sie in /etc/ttys
den Eintrag für ttyu0 von
off auf on.
Zusätzlich sollten Sie den Wert
dialup auf vt100
ändern. Nur so wird auf der seriellen Konsole
eine Eingabeaufforderung mit einer Passwortabfrage
aktiviert.Starten Sie nun das System neu, damit die serielle
Konsole aktiviert wird.Wenn Sie eine unterschiedliche Konfiguration benötigen,
lesen Sie den nächsten Abschnitt für eine tiefer gehende
Erklärung.Konfiguration der seriellen KonsoleBereiten Sie ein serielles Kabel vor.NullmodemkabelSie benötigen entweder ein Nullmodemkabel oder ein
serielles Standard Kabel mit einem Nullmodemkabel-Adapter.
In werden serielle
Kabel beschrieben.Trennen Sie die Tastatur vom Computer.Viele PC Systeme suchen beim Power On Self Test
(POST) nach einer Tastatur und geben
eine Fehlermeldung aus, wenn sie keine finden. Einige
Maschinen werden sich sogar weigern, ohne Tastatur zu
booten.Wenn der Rechner trotz einer Fehlermeldung normal
weiterbootet, brauchen Sie weiter nichts zu tun.Wenn das System ohne Tastatur nicht booten will,
müssen Sie das BIOS so konfigurieren, dass es diesen Fehler
ignoriert (wenn das möglich ist). Das Handbuch zum
Motherboard sollte beschreiben, wie das zu bewerkstelligen
ist.Selbst wenn Sie im BIOS Not installed
für die Tastatur einstellen, können Sie eine
Tastatur angeschlossen haben und diese auch weiterhin
benutzen, da sie mit dieser Anweisung das BIOS
lediglich anweisen, nach dem Einschalten des Rechners nicht
nach einer Tastatur zu suchen und den Rechner ohne
entsprechende Fehlermeldung zu starten. Wenn die oben
beschriebene Option nicht im BIOS vorhanden ist, halten Sie
stattdessen Ausschau nach einer Halt on Error
Option. Sie können den gleichen Effekt wie oben erzielen,
wenn Sie diese Option auf All but Keyboard oder
sogar No Errors setzen.Wenn das System über eine &ps2; Maus verfügt,
müssen Sie diese wahrscheinlich auch abziehen. Da sich
die &ps2; Maus und die Tastatur einige Hardwarekomponenten
teilen, kann das dazu führen, dass die
Hardwareerkennung fälschlicherweise eine Tastatur findet,
wenn eine &ps2; Maus angeschlossen ist.Schließen Sie einen Dumb-Terminal an
COM1 (sio0)
an.Wenn Sie keinen Dumb-Terminal besitzen, können Sie
einen alten Computer mit einem Terminalemulator oder die
serielle Schnittstelle eines anderen &unix; Rechners
benutzen. Sie benötigen auf jeden Fall eine freie erste
serielle Schnittstelle (COM1).
Zurzeit ist es nicht möglich, in den Bootblöcken eine
andere Schnittstelle zu konfigurieren, ohne diese neu zu kompilieren.
Wenn Sie COM1 bereits für ein
anderes Gerät benutzen, müssen Sie dieses Gerät
temporär entfernen und einen neuen Bootblock sowie Kernel
installieren, wenn &os; erst einmal installiert
ist.Stellen Sie sicher, dass die Kernelkonfiguration die
richtigen Optionen für COM1
(sio0) enthält.Relevante Optionen sind:0x10Aktiviert die Konsolenunterstützung für
dieses Gerät. Zurzeit kann nur ein Gerät die
Konsolenunterstützung aktiviert haben. Das erste,
in der Konfigurationsdatei aufgeführte Gerät,
mit dieser Option, verfügt über eine aktivierte
Konsolenunterstützung. Beachten Sie, dass
diese Option alleine nicht ausreicht, um die serielle
Konsole zu aktivieren. Setzen Sie entweder noch die
nachfolgend diskutierte Option oder verwenden Sie beim
Booten, wie unten beschrieben, den Schalter
.0x20Das erste Gerät in der Kernelkonfigurationsdatei
mit dieser Option wird, unabhängig von dem unten
diskutierten Schalter , zur Konsole.
Die Option muss zusammen mit
verwendet werden.0x40Reserviert dieses Gerät und sperrt es für
normale Zugriffe. Sie sollten diese Option nicht auf dem
Gerät setzen, das Sie als serielle Konsole verwenden
wollen. Der Zweck dieser Option ist es, dieses
Gerät für das Remote-Debuggen zu reservieren.
Das
FreeBSD Developers' Handbook enthält dazu weitere
Informationen.Beispiel:device sio0 at isa? port IO_COM1 tty flags 0x10 irq 4Weitere Einzelheiten finden Sie in
&man.sio.4;.Wenn diese Optionen nicht gesetzt sind, müssen Sie auf
einer anderen Konsole beim Booten UserConfig starten oder den
Kernel neu kompilieren.Erstellen Sie boot.config im
Rootverzeichnis der a-Partition des
Bootlaufwerks.Der Code des Bootblocks entnimmt dieser Datei, wie Sie Ihr
System booten möchten. Um die serielle Konsole zu
aktivieren, müssen Sie hier eine oder mehrere Optionen
(alle in derselben Zeile) angeben. Die folgenden Optionen
stehen zur Auswahl der Konsole zur Verfügung:Schaltet zwischen der internen und der seriellen
Konsole um. Wenn Sie beispielsweise von der internen
Konsole (Bildschirm) booten, weist
den Bootloader und den Kernel an, die serielle
Schnittstelle als Konsole zu nehmen. Wenn die Konsole
normal auf der seriellen Schnittstelle liegt, wählen
Sie mit den Bildschirm aus.Schaltet zwischen Einzelkonsole und Dual-Konsole um.
Die Einzelkonsole ist entweder die interne Konsole
(der Bildschirm) oder die serielle Schnittstelle, je nach
dem Stand von . Im
Dual-Konsolen Betrieb ist die Konsole, unabhängig
von , gleichzeitig der Bildschirm und
die serielle Schnittstelle. Dies trifft aber nur zu,
wenn der Bootblock ausgeführt wird. Sobald der
Bootloader ausgeführt wird, wird die durch
gegebene Konsole die alleinige
Konsole.Veranlasst den Bootblock nach einer Tastatur zu
suchen. Wenn keine Tastatur gefunden wird, werden
und automatisch
gesetzt.Wegen Platzbeschränkungen in den
Bootblöcken kann nur
erweiterte Tastaturen erkennen. Tastaturen mit weniger
als 101 Tasten und ohne F11 und F12 Tasten werden
wahrscheinlich, wie vielleicht auch die Tastaturen
einiger Laptops, nicht erkannt. Wenn das der
Fall ist, können Sie
nicht verwenden, da es leider keine Abhilfe
für dieses Problem gibt.Benutzen Sie also entweder , um die
Konsole automatisch zu setzen, oder , um die
serielle Konsole zu verwenden.Weitere Optionen werden in &man.boot.8;
beschrieben.Mit Ausnahme von werden die
Optionen an den Bootloader weitergegeben. Der Bootloader
untersucht dann einzig um
festzustellen, welches Gerät die Konsole wird. Wenn Sie
also nur angegeben haben, können Sie
die serielle Schnittstelle nur als Konsole verwenden
während der Bootblock ausgeführt wird. Danach wird der
Bootloader, da ja fehlt, den
Bildschirm zur Konsole machen.Booten Sie die Maschine.Wenn Sie das &os;-System starten, werden die
Bootblöcke den Inhalt von /boot.config
auf der Konsole ausgeben:/boot.config: -P
Keyboard: noDie zweite Zeile sehen Sie nur, wenn Sie in
/boot.config angegeben
haben. Sie zeigt an, ob eine Tastatur angeschlossen ist oder
nicht. Die Meldungen gehen je nach den Einstellungen in
/boot.config auf die interne Konsole, die
serielle Konsole, oder beide Konsolen.OptionenMeldungen erscheinen aufkeineder internen Konsoleder seriellen Konsoleder seriellen und der internen Konsoleder seriellen und der internen Konsole, mit Tastaturder internen Konsole, ohne Tastaturder seriellen KonsoleNach den oben gezeigten Meldungen gibt es eine kleine
Verzögerung bevor die Bootblöcke den Bootloader
laden und weitere Meldungen auf der Konsole erscheinen. Sie
können die Ausführung der Bootblöcke
unterbrechen, um zu überprüfen, ob auch alles richtig
aufgesetzt ist, brauchen das aber unter normalen Umständen
nicht zu tun.Drücken Sie eine Taste außer
Enter um den Bootvorgang zu unterbrechen. Sie
erhalten dann ein Prompt, an dem Sie weitere Eingaben
tätigen können:>> FreeBSD/i386 BOOT
Default: 0:ad(0,a)/boot/loader
boot:Je nach Inhalt von /boot.config
erscheint das Prompt auf der seriellen Konsole, der internen
Konsole oder beiden Konsolen. Wenn die Meldung auf der
richtigen Konsole erscheint, drücken Sie
Enter um fortzufahren.Wenn kein Prompt auf der seriellen Konsole erscheint,
liegt ein Fehler in den Einstellungen vor. Als Abhilfe
geben Sie an der momentanen Konsole
ein, um den Bootblock und den Bootloader auf die serielle
Konsole umzustellen. Führen Sie dann den Bootvorgang mit
Enter weiter und wenn das System gebootet
hat, können Sie die fehlerhaften Einstellungen
korrigieren.Während der dritten Bootphase können Sie immer noch
zwischen der internen und der seriellen Konsole auswählen.
Setzen Sie dazu, wie in
beschrieben, die entsprechenden Variablen des
Bootloaders.ZusammenfassungDie folgende Tabelle bietet eine Zusammenfassung der
verschiedenen Einstellungen, die in diesem Abschnitt
diskutiert wurden:
Fall 1: Option 0x10 für
sio0Optionen in /boot.configKonsole in den BootblöckenKonsole im BootloaderKonsole im Kernelkeineinterneinterneinterneserielleserielleserielleserielle und interneinterneinterneserielle und interneserielleserielle, mit Tastaturinterneinterneinterne, ohne Tastaturserielle und interneserielleserielle
Fall 2: Option 0x30 für
sio0Optionen in /boot.configKonsole in den BootblöckenKonsole im BootloaderKonsole im Kernelkeineinterneinterneserielleserielleserielleserielleserielle und interneinterneserielleserielle und interneserielleserielle, mit Tastaturinterneinterneserielle, ohne Tastaturserielle und interneserielleserielle
Hinweise zur seriellen KonsoleVerwenden einer höheren GeschwindigkeitDie Vorgabewerte für die Kommunikationsparameter der
seriellen Schnittstelle sind: 9600 baud, 8 Bit, keine
Parität und ein Stopp-Bit. Um die Standardgeschwindigkeit
zu ändern, stehen folgende Möglichkeiten zur
Verfügung:Geben Sie die neue Konsolengeschwindigkeit mit
BOOT_COMCONSOLE_SPEED an und
kompilieren Sie die Bootblöcke neu. Ausführliche
Informationen zum Bau und zur Installation von neuen
Bootblöcken finden Sie im
des Handbuchs.Wenn die serielle Konsole nicht mit der Option
gestartet wird,
oder wenn die verwendete serielle Konsole sich von
der von den Bootblöcken verwendeten unterscheidet,
müsssen Sie zusätzlich die folgende Option in
die Kernelkonfigurationsdatei aufnehmen und den Kernel
neu bauen:options CONSPEED=19200Verwenden Sie die Option , um den
Kernel zu booten. Eine Beschreibung dieses Vorgangs
sowie eine Auflistung der von
/boot.config unterstützten Optionen
finden Sie in &man.boot.8;.Aktivieren Sie die Option
comconsole_speed in
/boot/loader.conf.Diese Option setzt voraus, dass auch die Optionen
console,
boot_serial, sowie
boot_multicons in
/boot/loader.conf gesetzt sind.
Im Folgenden finden Sie ein Beispiel, in dem
comconsole_speed verwendet wird,
um die Geschwindigkeit der seriellen Konsole zu
ändern:boot_multicons="YES"
boot_serial="YES"
comconsole_speed="115200"
console="comconsole,vidconsole"Eine andere Schnittstelle als sio0
benutzenWenn Sie, warum auch immer, ein anderes Gerät als
sio0 für die serielle Konsole
einsetzen wollen, kompilieren Sie bitte die Bootblöcke, den
Bootloader und den Kernel nach dem folgenden Verfahren
neu.Installieren Sie die Kernelquellen wie im
beschrieben.Setzen Sie in /etc/make.confBOOT_COMCONSOLE_PORT auf die Adresse der
Schnittstelle (0x3F8, 0x2F8, 0x3E8 oder 0x2E8), die Sie
benutzen möchten. Sie können nur
sio0 bis
sio3 (COM1
bis COM4) benutzen, Multiportkarten
können Sie nicht als Konsole benutzen. Interrupts
müssen Sie hier nicht angeben.Erstellen Sie eine angepasste Kernelkonfiguration
und geben Sie dort die richtigen Optionen für die
Schnittstelle, die Sie benutzen möchten, an. Wenn Sie
zum Beispiel sio1
(COM2) zur Konsole machen wollen,
geben Sie dort entwederdevice sio1 at isa? port IO_COM2 tty flags 0x10 irq 3oderdevice sio1 at isa? port IO_COM2 tty flags 0x30 irq 3an. Keine andere serielle Schnittstelle sollte als
Konsole definiert werden.Übersetzen und installieren Sie die
Bootblöcke und den Bootloader:&prompt.root; cd /sys/boot
&prompt.root; make clean
&prompt.root; make
&prompt.root; make installBauen und installieren Sie einen neuen Kernel.Schreiben Sie die Bootblöcke mit &man.bsdlabel.8;
auf die Bootplatte und booten Sie den neuen Kernel.DDB Debugger über die serielle SchnittstelleWenn Sie den Kerneldebugger über eine serielle
Verbindung bedienen möchten, übersetzen Sie einen
angepassten Kernel mit den folgenden Optionen. Das ist
nützlich, kann aber gefährlich sein, wenn auf der Leitung
falsche BREAK-Signale generiert werden.options BREAK_TO_DEBUGGER
options DDBBenutzung der seriellen Konsole zum AnmeldenDa Sie schon die Bootmeldungen auf der Konsole verfolgen
können und den Kerneldebugger über die Konsole bedienen
können, wollen Sie sich vielleicht auch an der Konsole
anmelden.Öffnen Sie /etc/ttys in einem
Editor und suchen Sie nach den folgenden Zeilen:ttyu0 "/usr/libexec/getty std.9600" unknown off secure
ttyu1 "/usr/libexec/getty std.9600" unknown off secure
ttyu2 "/usr/libexec/getty std.9600" unknown off secure
ttyu3 "/usr/libexec/getty std.9600" unknown off securettyu0 bis ttyu3
entsprechen COM1 bis
COM4. Ändern Sie für die
entsprechende Schnittstelle off zu
on. Wenn Sie auch die Geschwindigkeit der
seriellen Schnittstelle geändert haben, müssen Sie
std.9600 auf die momentane
Geschwindigkeit anpassen.Auch kann den Terminaltyp von
unknown auf den tatsächlich verwendeten
Terminal gesetzt werden.Damit die Änderungen wirksam werden,
müssen Sie noch kill -HUP 1
absetzen.Die Konsole im Bootloader ändernIn den vorigen Abschnitten wurde beschrieben, wie Sie die
serielle Konsole durch Änderungen im Bootblock aktivieren.
Dieser Abschnitt zeigt, wie Sie mit Kommandos und
Umgebungsvariablen die Konsole im Bootloader definieren. Da der
Bootloader die dritte Phase im Bootvorgang ist und nach den
Bootblöcken ausgeführt wird, überschreiben
seine Einstellungen die des Bootblocks.Festlegen der KonsoleMit einer einzigen Zeile in
/boot/loader.conf können Sie den
Bootloader und den Kernel anweisen, die serielle Schnittstelle
zur Konsole zu machen:console="comconsole"Unabhängig von den Einstellungen im Bootblock legt dies
die Konsole fest.Die obige Zeile sollte die erste Zeile in
/boot/loader.conf sein, so dass die
Bootmeldungen so früh wie möglich auf der Konsole zu sehen
sind.Analog können Sie die interne Konsole verwenden:console="vidconsole"Wenn die Umgebungsvariable console nicht
gesetzt ist, bestimmt der Bootloader und damit auch der
Kernel, die Konsole über die Option des
Bootblocks.Die Bootkonsole kann in
/boot/loader.conf.local oder
/boot/loader.conf angegeben
werden.Weitere Informationen erhalten Sie in &man.loader.conf.5;.Momentan gibt es im Bootloader nichts vergleichbares zu
im Bootblock. Damit kann die Konsole nicht
automatisch über das Vorhandensein einer Tastatur
festgelegt werden.Eine andere Schnittstelle als sio0
benutzenDer Bootloader muss neu kompiliert werden, wenn eine
andere Schnittstelle als sio0 benutzt
werden soll. Folgen Sie der Anleitung aus
.VorbehalteObwohl es die meisten Systeme erlauben, ohne Tastatur zu
booten, gibt es nur wenige Systeme, die ohne eine Grafikkarte
booten. Maschinen mit einem AMI BIOS können ohne Grafik
booten, indem Sie den Grafikadapter im CMOS-Setup auf
Not installed setzen.Viele Maschinen unterstützen diese Option allerdings nicht.
Damit diese Maschinen booten, müssen sie über eine
Grafikkarte, auch wenn es nur eine alte Monochromkarte ist,
verfügen. Allerdings brauchen Sie keinen Monitor an die Karte
anzuschließen. Sie können natürlich auch
versuchen, auf diesen Maschinen ein AMI BIOS zu
installieren.