diff --git a/de_DE.ISO8859-1/books/fdp-primer/sgml-markup/chapter.sgml b/de_DE.ISO8859-1/books/fdp-primer/sgml-markup/chapter.sgml
index 6ece8429b0..63da2d78e1 100644
--- a/de_DE.ISO8859-1/books/fdp-primer/sgml-markup/chapter.sgml
+++ b/de_DE.ISO8859-1/books/fdp-primer/sgml-markup/chapter.sgml
@@ -1,3004 +1,3004 @@
SGML-Dokumente erstellenIn diesem Kapitel werden die beiden vom FDP eingesetzen
Auszeichnungssprachen HTML und DocBook behandelt. Hierbei
beschränkt sich dieses Kapitel auf die Elemente, die bei der
täglichen Arbeit am ehesten zum Einsatz kommen werden.Beide Sprachen besitzen eine große Anzahl von Elementen.
Das erschwert es, das richtige Element in der richtigen Situation
auszuwählen. Aus diesem Grund werden zu jedem Element auch
immer Beispiele angeboten, die den richtigen Einsatz des Elements
verdeutlichen sollen.Es ist nicht das Ziel dieses Kapitels möglichst viele
Elemente beider Sprachen zu behandeln – dies wäre nur
eine Wiederholung der eigentlichen Sprachreferenz. Sofern es
Unklarheiten zur Verwendung einzelner Elemente und Auszeichnung
von bestimmten Sachverhalten gibt, können diese an &a.doc;
geschickt werden.Fluß- kontra BlockelementeWenn im folgenden von
Flußelementen die Rede ist, sind
damit Elemente gemeint, die in einem Blockelement auftreten
können und keinen Zeilenumbruch hervorrufen.
Blockelemente hingegen erzeugen unter
anderem einen ZeilenumbruchDie englische
Bezeichnung inline element
wurde in Anlehnung an das Wort Fließtext
mit Flußelement
übersetzt..HTMLHTML, die HyperText Markup
Language, ist die Auszeichnungssprache des
Internets. Weitere Informationen zu HTML finden sich unter
.Sie kommt bei der Erstellung der Webseiten des
FreeBSD-Projektes zum Einsatz. Für technische Dokumentationen
sollte HTML jedoch nicht eingesetzt werden, da DocBook eine
größere und bessere Auswahl an Elementen bietet. Folglich
sollte HTML nur für die FreeBSD-Webseiten verwendet werden.Die HTML-Spezifikation liegt bis jetzt in mehreren Versionen
vor: 1, 2, 3.0, 3.2 und (die aktuelle) 4.0. Von letzterer
existieren zwei Varianten: streng (HTML 4.0
Strict) und locker (HTML 4.0
Transitional).Die HTML-DTDs sind über den Port textproc/html verfügbar und werden
automatisch als Teil des Metaports textproc/docproj
mitinstalliert.Formale Öffentliche BezeichnerDa es mehrere Version von HTML gibt, existieren auch
mehrere FÖPs, zu denen ein HTML-Dokument konform
erklärt werden kann. Die Mehrzahl der sich auf der
FreeBSD-Webseite befindenen HTML-Seiten sind zu der lockeren
Version von HTML 4.0 konform.PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"Die Elemente head und
bodyEin HTML-Dokument unterteilt sich normalerweise in zwei
Bereiche: head und body. Der
Kopf (head) enthält Metadaten
wie den Dokumententitel und Angaben zum Autor. Der Rumpf
(body) umfaßt den eigentlichen
Dokumenteninhalt, der für den Leser bestimmt ist. In einem
HTML-Dokument werden diese Bereiche über die Elemente
head und body
voneinander abgegrenzt. Beide sind Kinder des Wurzelelementes
html.Die Struktur eines HTML-Dokumentes<html>
<head>
<title>Der Dokumententitel</title>
</head>
<body>
…
</body>
</html>BlockelementeÜberschriftenHTML kennt sechs verschiedene Elemente, mit denen
Überschriften ausgezeichnet werden können. Das bekannteste
Element ist h1, das sich am Anfang der
Überschriftenhierarchie befindet. h1
folgen die Überschriftenelemente h2 bis
h6. Der Inhalt von
hN stellt den
Text der Überschrift dar.h1, h2…Fügen Sie in eine der existierenden Übungsdateien folgendes ein:Erstes Kapitel
Das ist die Überschrift des ersten Kapitels
Das ist die Überschrift des ersten Unterkapitels
Das ist die Überschrift des zweiten Kapitels
]]>Eine HTML-Seite sollte immer nur eine Überschrift
h1 haben. Dieser Überschrift können
beliebig viele Kapitel mit einer Überschrift
h2 folgen, die selbst wiederum eine
beliebige Anzahl von Kapiteln mit einer Überschrift
h3 enthalten können. Diese
Verschachtelung setzt sich bis zu Kapiteln mit einer
h6-Überschrift fort. Es sollte vermieden
werden, Elemente in der Überschriftenhierarchie
auszulassen.Falsche Verschachtelung von ÜberschriftenFügen Sie in eine der existierenden Übungsdateien folgendes ein:Erstes Kapitel
Unterkapitel
]]>AbsätzeAbsätze können in HTML mit Hilfe des Elementes
p ausgezeichnet werden.Absätze mit dem Element pFügen Sie in eine der existierenden Übungsdateien folgendes ein:Das hier, das ist ein Absatz. Absätze können
andere Elemente enhalten.
]]>
BlockzitateEin Blockzitat ist ein etwas umfangreicheres Zitat aus
einem anderen Text, das nicht zum aktuellen Absatz
gehört.BlockzitatFügen Sie in eine der existierenden Übungsdateien
folgendes ein:
Artikel 1: Menschenwürde; Grundrechtsbindung der
staatlichen Gewalt
Die Würde des Menschen ist unantastbar. Sie zu achten
und zu schützen ist Verpflichtung aller staatlichen
Gewalten.
Das Deutsche Volk bekennt sich darum zu unverletzlichen
und unveräußerlichen Menschenrechten als Grundlage jeder
menschlichen Gemeinschaft, des Friedens und der
Gerechtigkeit in der Welt.
Die nachfolgenden Grundrechte binden Gesetzgebung,
vollziehende Gewalt und Rechtsprechung als
unmittelbar geltendes Recht.
]]>ListenHTML kennt drei Arten von Listen: sortierte, unsortierte
und Definitionslisten. Ein Eintrag in einer sortierten Liste
wird üblicherweise mit einer Nummer versehen, Einträge in
unsortierten Listen hingegen mit einem Aufzählungspunkt.
Definitionslisten wiederum bestehen aus zwei Teilen: Der
erste enthält den Begriff der definiert werden soll und der
zweite dessen Erläuterung.Sortierte Listen werden mit dem Element
ol (für
ordered
list) ausgezeichnet,
unsortierte Listen mit ul (für
unordered
list) und
Definitionslisten mit dl.Listenpunkte sortierter und unsortierter Listen werden
mit dem Element li ausgezeichnet,
welches Text oder andere Blockelemente enthalten kann.
Begriffe, die in einer Definitionslisten enthalten sind,
werden mit dem Element dt (für
definition
term) ausgezeichnet.
Die Erklärung zu diesem Begriff wird mit Hilfe des Elementes
dd (für definition
description) markiert. So wie
li, kann das Element
dd ebenfalls andere Blockelemente
aufnehmen.Listen mit ul und
ol erstellenFügen Sie in eine der existierenden Übungsdateien
folgendes ein:Jetzt folgt eine unsortierte Liste. Wahrscheinlich werden
die einzelnen Einträge mit einem vorangehenden Punkt dargestellt.
Erster Eintrag
Zweiter Eintrag
Dritter Eintrag
Die zweite Liste ist sortiert und ihre Einträge bestehen aus mehreren Absätzen.
Jeder Listeneintrag ist nummeriert.
Das ist der erste Eintrag mit nur einem Absatz.
Das ist der erste Absatz des zweiten Eintrags.
Und das ist der zweite Absatz des zweiten Eintrags.
Der dritte Eintrag besteht ebenfalls nur aus einem Eintrag.
]]>Definitionslisten mit dl erstellenFügen Sie in eine der existierenden Übungsdateien folgendes ein:
Erster Begriff
Erster Absatz der Erklärung
Zweiter Absatz der Erklärung.
Zweiter Begriff
Erster Absatz der Erklärung.
Dritter Begriff
Erster Absatz der Erklärung zum dritten Begriff.
]]>Vorformatierter TextIn einigen Fällen ist es gewollt, dass die Formatierung
eines Textes im Quelldokument erhalten bleibt, damit der
Leser diesen genau so sieht, wie ihn der Autor erstellt hat.
In der HTML-Spezifikation ist dafür das Element
pre vorgesehen, welches dafür sorgt, dass
Zeilenumbrüche erhalten bleiben und Leerzeichen nicht
zusammengefaßt werden. Browser verwenden für den
Inhalt des Elementes pre
üblicherweise eine Fixschrift.Vorformatierten Text mit pre erstellenDer Originaltext einer E-Mail läßt sich beispielsweise
wie folgt einbinden: From: nik@FreeBSD.org
To: freebsd-doc@FreeBSD.org
Subject: Neue Version verfügbar
Es ist eine neue Version der Fibel für neue Mitarbeiter am
FreeBSD-Dokumentationsprojekt verfügbar:
<URL:http://people.FreeBSD.org/~nik/primer/index.html>
Kommentare und Anmerkungen sind willkommen.
N]]>Beachten Sie, dass < und
& nach wie vor als Sonderzeichen
erkannt werden. Daher wird in diesem Beispiel auch
< an Stelle von
< verwendet. Aus dem gleichen
Grund wurde auch > an Stelle
von > verwendet. Achten Sie also
stets auf Sonderzeichen, wenn Sie normalen Text
aus E-Mails, Programmcode oder einer anderen Quelle
kopieren.TabellenDie meisten Textbrowser, beispielsweise Lynx, können
Tabellen nicht besonders gut darstellen. Deshalb sollten
Auszeichnungsalternativen in Betracht gezogen werden, um
eine angemessene Darstellung sicherzustellen.Tabellen lassen sich in HTML mit Hilfe des Elements
table auszeichnen. Eine Tabelle setzt
sich aus einer oder mehreren Zeilen (tr)
zusammen, von denen jede mindestens eine Zelle
(td) enthält. Zellen können wiederum
andere Blockelemente, wie Absätze oder Listen, enthalten.
Auch können sie auch andere Tabellen aufnehmen, wobei die
Verschachtelungstiefe unbegrenzt ist. Soll die Tabellenzelle
nur einen Textabsatz enthalten, ist es nicht notwendig den
Text mit einem p zu umschließen.Einfache Tabelle mit tableFügen Sie in eine der existierenden Übungsdateien folgendes ein:Eine einfache 2x2 Tabelle.
Obere linke Zelle
Obere rechte Zelle
Untere linke Zelle
Untere rechte Zelle
]]>HTML kennt die Möglichkeit, dass sich eine
Zelle mehrere Zeilen und/oder Spalten erstrecken kann.
Sollen beispielsweise mehrere Spalten zusammenfassen werden,
kann dies mit mit Hilfe des Attributes
colspan erreicht werden, indem man ihm
die Anzahl der zusammenzufassenden Spalten zuweist.
Ähnliches gilt für die Zusammenfassung von Zeilen:
Hierfür wird dem Attribut rowspan
die Anzahl der zusammenzufassenden Zeilen zugewiesen.Anwendung des Attributes rowspanDiese Tabelle besteht aus einer langen Zelle auf der
linken Seite und zwei kleineren Zellen auf der rechten.
Lang und dünn
Obere Zelle
Untere Zelle
]]>Anwendung des Attributes colspanEine breite Zeile oben und zwei schmalere Zeilen
darunter.
Obere Zelle
Linke untere Zelle
Rechte untere Zelle
]]>Gemeinsame Anwendung der Attrbute rowspan und
colspanEine Tablle mit 3-mal-3 Zellen. Oben links
werden 2 mal 2 Zelle zusammengezogen.
Große obere linke Zelle
Obere rechte Zelle
Mittlere rechte Zelle
Untere linke Zelle
Untere mittlere Zelle
Untere rechte Zelle
]]>FlußelementeHervorheben von InformationSollen sich bestimmte Informationen von anderen optisch
abheben, kann dies mit den HTML-Tags
strong und em erreicht
werden. strong stellt dabei eine
stärkere Hervorhebung als em dar,
wobei mit strong ausgezeichnete Elemente
fett und mit em ausgezeichnete Elemente
kursiv dargestellt werden. Allerdings ist diese Aussage
nicht verläßlich, da die Darstellung vom Browser
abhängig ist.Text mit em und strong
hervorhebenDieses Wort ist hervorgehoben,
während dieses noch stärker hervorgehoben ist.]]>Fett- und SchrägschriftDa mittels HTML auch Festlegungen über die
Darstellung getroffen werden können, gibt es die
Möglichkeit direkt zu bestimmen, dass bestimmte
Inhalte fett oder kursiv dargestellt werden sollen. Mit
b eingefaßte Inhalte werden fett
und mit i eingefaßte kursiv
dargestellt.Text mit b und i
formatierenDieses Wort wird fett dargestellt,
während dieses kursiv dargestellt wird.]]>Nicht-proportionale Schrift für TexteDer Tag tt erlaubt es,
Text in einer schreibmaschinenähnlichen
Schrift darzustellen.Nicht-proportionale Schrift mit
ttDieses Dokument wurde ursprünglich von
Nik Clayton geschrieben. Nick Clayton kann unter der E-Mail-Adresse
nik@FreeBSD.org erreicht werden.]]>Änderung der SchriftgrößeHTML bietet auch Möglichkeiten, um Einfluß
auf die Schriftgröße zu nehmen, das heißt,
zu bestimmen, ob die Schrift größer oder kleiner
als die Standardschrift dargestellt werden soll. Es gibt
drei verschiedene Wege, dies zu erreichen:Mittels der Tags big und
small kann die
Darstellungsgröße des eingeschlossenen Textes
vergrößert respektive verkleinert werden.
HTML erlaubt es zudem, diese Tags zu verschachteln, so
dass auch <big><big>Das ist
wesentlich
größer.</big></big>
geschrieben werden kann.Das gleiche Ergebnis kann über die Zuweisung der
Werte 1 und -1 an
das Attribut size
des Tags font erreicht werden. Diese
Vorgehensweise sollte allerdings als veraltet betrachtet
werden, da der Einsatz eines CSS hierfür die bessere
Lösung darstellt.Über die Zuweisung von absoluten Werten im Bereich
von 1 bis 7 an das
Attribut size des Tags
fontDer Standardwert für size ist
3.. Diese
Herangehensweise ist ebenfalls veraltet und sollte nicht
mehr angewandt werden.Schriftgröße ändern mit
big, small und
fontDie folgenden HTML-Schnipsel bewirken alle das gleiche:Dieser Text ist etwas kleiner. Dieser
jedoch ein wenig größer.
Dieser Text ist etwas kleiner. Dieser
jedoch ein wenig größer.
Dieser Text ist etwas kleiner. Dieser
jedoch ein wenig größer.
]]>LinksBei Links handelt es sich ebenfalls Flußelemente.Auf andere Dokumente im WWW verweisenUm auf ein anderes Dokument im WWW zu verweisen,
müssen Sie die URL dieses Dokuments kennen.Links auf andere Dokumente im WWW werden in HTML durch
den Tag a und dessen Attribute href, das die Zieladresse
enthält, angelegt. Der Inhalt des Elementes wird selbst
zum Link und seine Darstellung erfolgt verschieden vom
übrigen Text. Meist geschieht das durch eine andere
Schriftfarbe oder dadurch, dass der Linktext
unterstrichen wird.<a href="..."> benutzenWeitere Informationen stehen auf der
FreeBSD-Webseite zur Verfügung.]]>Beim Aufruf dieses Links wird das referenzierte Dokument vom
Browser geladen und mit dessen Seitenanfang dargestellt.Auf bestimmte Dokumentenabschnitte verweisenHTML unterstützt neben einfachen Links auch solche, die
auf einen bestimmten Abschnitt innerhalb eines Dokumentes
verweisen. Dazu müssen die Abschnitte, auf die verwiesen
werden soll, mit Hilfe von sogenannten Ankern
markiert werden. Diese Anker können ebenfalls mit Hilfe des
Tags a gesetzt werden, nur das anstelle
von href das Attribut
name gesetzt werden
muss.Anwendung von <a name="...">Auf diesen Absatz kann mit
Hilfe seines Namens (absatz1) verwiesen werden.]]>Um auf einen so gekennzeichneten Abschnitt zu verweisen,
muss die URL des Dokumentes um das Zeichen
# und den Namen des Zielankers erweitert
werden.Auf einen Abschnitt eines anderen Dokumentes
verweisenFür dieses Beispiel wird davon ausgegangen, dass der mit
absatz1 gekennzeichnete Absatz sich in
der HTML-Datei foo.html
befindet.Weitere Informationen können im
ersten Absatz der Datei
foo.html gefunden werden.]]>Die DocBook DTDDocBook wurde ursprüglich von HaL Computer Systems and
O'Reilly & Associates als DTD für das Erstellen von
technischen Dokumenten entwickelt
Einen kurzen historischen Abriss finden Sie unter
.
+ url="http://www.oasis-open.org/docbook/intro.shtml#d0e41">http://www.oasis-open.org/docbook/intro.shtml#d0e41.
.
Seit 1998 wird es vom
DocBook Technical Committee gewartet. DocBook ist sehr
stark auf die Beschreibung von Inhalten, und nicht auf die
Darstellung des Inhalts ausgerichtet. Damit steht es im Gegensatz
zu LinuxDoc und HTML.
Formelle und informelle ElementeEinige Elemente der DocBook DTD sind in zwei Varianten
vorhanden: formell und
informell. Üblicherweise besitzt die
formelle Variante einen Titel, dem der eigentliche
Elementeninhalt folgt. Die informelle Variante hingegen hat
keinen Titel.Die DocBook DTD ist in der Ports-Sammlung im Port textproc/docbook enthalten und wird
bei der Installation des Metaports textproc/docproj automatisch
mitinstalliert.Die FreeBSD-ErweiterungenFür das FDP wurde die DocBook DTD durch das
FreeBSD-Dokumentationsproject um zusätzliche Elemente
erweitert, um damit präzisiere
Auszeichnungsmöglichkeiten zur Verfügung zu haben.
Sofern im folgenden FreeBSD-spezifische Elemente genutzt
werden, wird explizit darauf hingewiesen werden.Wenn nachfolgend im Text der Begriff
DocBook verwendet wird, ist damit die durch das
FDP erweiterte Version der DocBook DTD gemeint.Die durch das FDP vorgenommenen Erweiterungen sind nicht
FreeBSD-spezifisch. Sie wurden lediglich vorgenommen, da sie
für die Arbeit des FDPs als nützlich erschienen.
Für den Fall, das in den anderen *nix-Lagern (NetBSD,
OpenBSD, Linux,…) Interesse daran besteht, gemeinsam
eine Standarderweiterung für die DocBook DTD zu
entwickeln, kann mit dem &a.doceng; Verbindung aufgenommen
werden.Zum jetzigen Zeitpunkt sind die FreeBSD-Erweiterungen
nicht Bestandteil der Ports-Sammlung. Sie werden im
&os;-CVS-Archiv (doc/share/sgml/freebsd.dtd)
verwaltet.Formelle Öffentliche BezeichnerIn Übereinstimmung mir der DocBook-Richtlinie zur
Erstellung von Bezeichnern für DocBook-Erweiterungen lautet
der Bezeichner der erweiterten FreeBSD-Variante:PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN"Die Struktur von DocBook-DokumentenDocBook erlaubt es, Dokumente auf verschiedene Weise zu
strukturieren. Innerhalb des FDPs werden hauptsächlich zwei
Arten von DocBook-Dokumenten verwendet: Buch und Artikel.
Beide unterscheiden sich darin, dass ein Buch auf der obersten
Ebene durch chapter-Elemente strukturiert
wird. Sollte das noch nicht ausreichend sein, können die
einzelnen Kapitel eines Buches mit Hilfe des Elementes
part in Teile aufgespalten werden. Das
Handbuch ist beispielsweise auf diese Weise aufgebaut.Kapitel (chapter) können weiterhin in
Unterkapitel unterteilt werden. Diese werden durch die
Elemente sect1 ausgezeichnet. Soll ein
Unterkapitel selbst weitere Unterkapitel enthalten, kann das
über das Element sect2 geschehen. Diese
Unterteilung kann bis zur Tiefe von fünf Unterkapiteln –
über die Elemente sect3,
sect4 und sect5 –
fortgeführt werden. Der eigentliche Inhalt, um den es ja in
dem Artikel oder Buch geht, wird unterhalb der hier genannten
Elemente eingefügt.Vom Aufbau her ist ein Artikel ist einfacher strukturiert
als ein Buch. So kann ein Artikel beispielsweise keine Kapitel
(chapter) enthalten. Stattdessen kann der
Inhalt eines Artikels nur durch die schon bekannten
sectN-Elemente
in einen oder mehrere Abschnitte gegliedert werden.
Überlegen Sie sich vor dem Schreiben eines Textes,
ob der zu schreibende Text am
besten als Buch oder als Artikel angelegt wird. Artikel eignen
sich besser für Texte, die nicht in mehrere Kapitel
aufgeteilt werden müssen und mit einem Umfang von
ungefähr 20 bis 25 Seiten vergleichsweise kurz sind.
Natürlich ist das nur eine Richtlinie. Bücher sind
dementsprechend am besten für lange Texte geeignet, die
sich sinnvoll in Kapitel unterteilen lassen und
möglichweiser noch Anhänge und ähnliches
enthalten können.Alle Tutorien von
FreeBSD sind als Artikel verfaßt, während
hingegen die FreeBSD-FAQ und das FreeBSD-Handbuch als
Bücher verfaßt wurden.Bücher schreibenDer Inhalt eines Buches wird in einem
book-Element abgelegt. Neben dem
Textteil des Buches kann dieses Element weitergehende
Informationen über das Buch selbst,
wie Meta-Informationen zum Erstellen eines
Stichwortverzeichnisses oder zusätzliche
Inhalte zum Erstellen einer Titelei, enthalten. Diese
zusätzlichen Inhalte sollten in einem
bookinfo-Element abgelegt werden.Buchvorlage book mit
bookinfo<book>
<bookinfo>
<title>Titel</title>
<author>
<firstname>Vorname</firstname>
<surname>Nachname</surname>
<affiliation>
<address><email>E-Mail-Adresse</email></address>
</affiliation>
</author>
<copyright>
<year>1998</year>
<holder role="mailto:E-Mail-Adresse">Vollständiger Name</holder>
</copyright>
<releaseinfo>$FreeBSD$</releaseinfo>
<abstract>
<para>Kurze Zusammenfassung des Buchinhaltes.</para>
</abstract>
</bookinfo>
…
</book>Artikel schreibenDer Inhalt eines Artikels wird in einem
article-Element abgelegt. Neben
dem Textteil kann dieses Element weitere Teile,
wie Meta-Informationen zum Erstellen eines
Stichwortverzeichnisses oder zusätzliche
Inhalte zum Erstellen einer Titelei, enthalten.
Analog zu einem Buch, sollten diese Informationen in einem
articleinfo-Element abgelegt
werden.Artikelvorlage article mit
articleinfo<article>
<articleinfo>
<title>Titel</title>
<author>
<firstname>Vorname</firstname>
<surname>Nachname</surname>
<affiliation>
<address><email>E-Mail-Adresse</email></address>
</affiliation>
</author>
<copyright>
<year>1998</year>
<holder role="mailto:E-Mail-Adresse">Vollständiger Name</holder>
</copyright>
<releaseinfo>$FreeBSD$</releaseinfo>
<abstract>
<para>Kurze Zusammenfassung des Artikelinhalts.</para>
</abstract>
</articleinfo>
…
</article>KapitelKapitel werden mit dem
chapter-Element angelegt und müssen ein
title-Element enthalten. Verwendet werden
können sie nur in Büchern.Ein einfaches KapitelKapitelüberschrift
…
]]>Kapitel können nicht leer sein. Nebem einem
title-Element müssen sie weiteren Inhalt
beinhalten. Falls ein leeres Kapitel benötig wird, kann dies
durch das Einfügen eines leeren Absatzes
(para) erreicht werden.Ein leeres KapitelDas ist ein leeres Kapitel
]]>UnterkapitelBücher werden auf der obersten Gliederungsebene
durch chapter-Elemente in Kapitel
unterteilt. Eine weitergehende Untergliederung kann durch
das Anlegen von Unterkapiteln erreicht werden. Im Gegensatz
zu Kapiteln, die durch chapter-Elemente
ausgezeichnet werden, erfolgt die Auszeichnung von
Unterkapitel mit dem Element
sectn. Das
n in Elementnamen trifft eine
Aussage über die Gliederungstiefe, auf der sich das
Unterkapitel befindet. Ein sect1-Element
kann mehrere Elemente vom Typ sect2
enthalten, die die Unterkapitel der
nächsten Gliederungsebene darstellen.
sect5 ist das letzte Element, das auf
diese Art zur Gliederung eingesetzt werden kann.UnterkapitelEin BeispielkapitelEin beliebiger Text.Erster Abschnitt (1.1)
…
Zweiter Abschnitt (1.2)Erster Unterabschnitt (1.2.1)Erster Unterunterabschnitt (1.2.1.1)
…
Zweiter Unterabschnitt (1.2.2)
…
]]>Die Unterkapitel dieses Beispiels wurden zu
Demonstrationszwecken manuell durchnummeriert. In
normalen Dokumenten wird diese Aufgabe von
den Stylesheets übernommen.Bücher mittels part
unterteilenIn den Fällen, in denen die Unteilung eines Buches in
Kapitel nicht ausreichend ist, können mehrere
Kapitel mit dem Element part zu
einem Teil zusammengefasst werden.EinführungÜberblick
…
Was ist FreeBSD?
…
Die Geschichte von FreeBSD
…
]]>BlockelementeAbsätzeDocBook kennt drei Arten von Absätzen: Absätze
mit Überschrift (formalpara),
normale Absätze (para) und einfache
Absätze (simpara).Normale Absätze und einfache Absätze
unterscheiden sich dadurch, dass innerhalb von
para Blockelemente erlaubt sind,
innerhalb von simpara hingegen nicht. Es
ist empfehlenswert, para den Vorzug
zu geben.Absatz mit paraDas ist ein Absatz. Absätze können fast jedes andere
Element aufnehmen.]]>Darstellung:Das ist ein Absatz. Absätze können fast jedes andere
Element aufnehmen.BlockzitateBlockzitate sind textlich umfangreichere Zitate aus
einem anderen Text, die nicht innerhalb des aktuellen
Absatzes angezeigt werden sollen. Wahlweise können
Blockzitate eine Überschrift haben und die Zitatquelle
nennen.blockquoteEin Auszug aus dem Grundgesetz:
Menschenwürde; Grundrechtsbindung der staatlichen GewaltAus dem GrundgesetzDie Würde des Menschen ist unantastbar. Sie zu achten
und zu schützen ist Verpflichtung aller staatlichen
Gewalten.Das Deutsche Volk bekennt sich darum zu unverletzlichen
und unveräußerlichen Menschenrechten als Grundlage jeder
menschlichen Gemeinschaft, des Friedens und der
Gerechtigkeit in der Welt.Die nachfolgenden Grundrechte binden Gesetzgebung,
vollziehende Gewalt und Rechtsprechung als
unmittelbar geltendes Recht.
]]>Darstellung:
Menschenwürde; Grundrechtsbindung der
staatlichen GewaltAus dem GrundgesetzDie Würde des Menschen ist unantastbar. Sie
zu achten und zu schützen ist Verpflichtung
aller staatlichen Gewalten.Das Deutsche Volk bekennt sich darum zu
unverletzlichen und unveräußerlichen
Menschenrechten als Grundlage jeder menschlichen
Gemeinschaft, des Friedens und der Gerechtigkeit in
der Welt.Die nachfolgenden Grundrechte binden
Gesetzgebung, vollziehende Gewalt und Rechtsprechung
als unmittelbar geltendes Recht.
Tipps, Anmerkungen, Warnungen, wichtige Informationen
und RandbemerkungenIn bestimmten Fällen kann es nützlich sein,
dem Leser zusätzliche Informationen zu geben, die sich
vom Haupttext abheben, damit der Leser sie besser wahrnimmt.
Abhängig von der Art der Information, können
solche Stellen mit einem der Elemente tip
(für Tipps), note (für
Anmerkungen), warning (für
Warnungen), caution (für besonders
ernstzunehmende Warnungen) und important
(für wichtige Anmerkungen) ausgezeichnet werden. Trifft
keines dieser Element für die auszuzeichnende Stelle
zu, sollte diese mit dem Element sidebar
ausgezeichnet werden.Da die richtige Einordnung einer auszuzeichnenden
Textstelle nicht immer leicht zu treffen ist, werden in der
DocBook-Dokumentation folgende Empfehlungen gegeben:Eine Anmerkung (note) ist eine
Information, die von jedem Leser beachtet werden
sollte.Eine wichtige Anmerkung
(important) eine Variation einer
Anmerkung.Eine Warnung (warning)
betrifft einen möglichen Hardwareschaden
oder weist auf eine Gefahr für Leib und Leben
hin.Eine besonders ernstzunehmende Warnung
(caution) betrifft einen möglichen
Datenverlust oder Softwareschaden.warningWenn Sie FreeBSD auf Ihrer Festplatte installieren,
kann es sein, daß Sie Windows nie mehr benutzen wollen.
]]>Eine Warnung wird wie folgt dargestellt:Wenn Sie FreeBSD auf Ihrer Festplatte installieren,
kann es sein, dass Sie Windows nie mehr benutzen wollen.Listen und HandlungsanweisungenListen sind ein oft gebrauchtes Hilfsmittel, wenn es
darum geht, Informationen für den Benutzer
übersichtlich darzustellen oder eine Abfolge von
Arbeitsschritten zu beschreiben, die notwendig sind, um ein
bestimmtes Ziel zu erreichen. Zur Auszeichnung von Listen
stellt DocBook die Elemente itemizedlist,
orderedlist und
procedure zur Verfügung.DocBook kennt noch andere Elemente für die
Auszeichnung von Listen, die an dieser Stelle jedoch
nicht behandelt werden..itemizedlist und
orderedlist ähneln sehr stark ihren
HTML-Gegenstücken ul und
ol. Beide Listenarten müssen
mindestens ein Element listitem
enthalten. Das listitem Element
muss mindestens ein weiteres Blockelement
enthalten.procedure unterscheidet sich ein
wenig von den vorhergehenden. Es enthält
step-Elemente, die wiederum
step- oder
substel-Elemente enthalten können.
Ein step-Element kann nur Blockelemente
aufnehmen.itemizedlist,
orderedlist und
procedureDas ist das erste Listenelement.Das ist das zweite Listenelement.Das ist das erste Aufzählungselement.Das ist das zweite Aufzählungselement.Machen Sie zuerst dies.Und dann machen Sie das..Und jetzt noch das…]]>Darstellung:Das ist das erste Listenelement.Das ist das zweite Listenelement.Das ist das erste Aufzählungselement.Das ist das zweite Aufzählungselement.Machen Sie zuerst dies.Und dann machen Sie das..Und jetzt noch das…Dateiinhalte auszeichnenTechnische Dokumente enthalten oft auch
Konfigurationsbeispiele oder Quellcodeschnipsel. Zur
Auszeichnung dieser Inhalte, stellt Docbook das Element
programmlisting zur Verfügung. Im
Gegensatz zu anderen DocBook-Elementen wird der
Elementinhalt von programmlistingnicht normalisiert, das heißt,
dass alle Leerzeichen, Tabulatoren und
Zeilenumbrüche unverändert übernommen werden.
Aus diesem Grund ist es unter anderem wichtig, dass
sich der öffende Tag in der selben Zeile wie der Anfang
des darzustellenden Textes befindet. Gleiches gilt für
den schließenden Tag: Er muss sich am Ende der
letzten Zeile befinden. Wird das nicht beachtet, kann es
sein, dass unerwartete Leerzeichen und Leerzeilen in
der Ausgabe auftauchen.programlistingAm Ende sollte Ihr Programm wie folgt
aussehen:
#include <stdio.h>
int
main(void)
{
printf("Hallo Welt!\n");
}]]>Die spitzen Klammern der
#include-Anweisung können nicht direkt
verwendet werden, sondern müssen über ihre Entitäten
eingebunden werden.Darstellung:Am Ende sollte Ihr Programm wie folgt aussehen:#include <stdio.h>
int
main(void)
{
printf("Hallo Welt!\n");
}TextanmerkungenTextanmerkungen
auf Englisch:
callout
sind ein Mechanismus, um auf bestimmte Stellen in einem
vorhergehenden Beispiel oder Text zu verweisen.Um solche Verweise anzulegen, müssen die betreffenden
Stellen in den Beispielen
(programlisting,
literallayout, …) mit
co-Elementen markiert werden, wobei jedes
Element ein eindeutiges id-Attribut
besitzen muss. Anschließend sollte ein
calloutlist-Element eingefügt werden,
dessen Elemente sich auf die co-Elemente
des Beispiels beziehen und die jeweiligen Anmerkungen
enthalten.Das co- und das
calloutlist-ElementAm Ende sollte Ihr Programm wie folgt
aussehen:
#include <stdio.h>
int
main(void)
{
printf("Hallo Welt\n");
}Bindet die Headerdatei stdio.h ein.Bestimmt den Typ des Rückgabewertes von main().Ruft die Funktion printf() auf, die
Hallo Welt! auf der Standardausgabe ausgibt]]>Darstellung:Am Ende sollte Ihr Programm wie folgt aussehen:#include <stdio.h>
int
main(void)
{
printf("Hallo Welt\n");
}Bindet die Headerdatei stdio.h ein.Bestimmt den Typ des Rückgabewertes von main().Ruft die Funktion printf() auf, die
Hallo Welt! auf der Standardausgabe ausgibtTabellenIm Gegensatz zu HTML ist es nicht notwendig, Tabellen zu
Layoutzwecken einzusetzen, da die Layoutaufgabe von den
Stylesheets übernommen wird. Stattdessen sollten Tabellen
nur für die Auszeichnung von Daten in Tabellenform genutzt
werden.Vereinfacht betrachtet (für Details sollte die
DocBook-Dokumentation zu Rate gezogen werden) besteht eine
Tabelle, die entweder als formelle oder als informelle
Tabelle angelegt werden kann, aus einem
table-Element. Dieses Element selbst
beinhaltet mindestens ein Element tgroup,
das über ein Attribut die Spaltenanzahl der Tabelle
bestimmt. Innerhalb des Elementes tgroup
kann sich ein Element thead mit den
Spaltenüberschriften und ein Element
tbody mit dem eigentlichen Tabelleninhalt
befinden. Beide Elemente beinhalten
row-Elemente, die wiederum
entry-Elemente beinhalten. Jedes
entry-Element stellt eine einzelne
Tabellenzelle dar.Tabellen mittels informaltable
auszeichnenSpaltenüberschrift 1Spaltenüberschrift 2Zeile 1, Spalte 1Zeile 1, Spalte 2Zeile 2, Spalte 1Zeile 2, Spalte 2
]]>Darstellung:Spaltenüberschrift 1Spaltenüberschrift 2Zeile 1, Spalte 1Zeile 1, Spalte 2Zeile 2, Spalte 1Zeile 2, Spalte 2Verwenden Sie stets das Attribut pgwide
mit dem Wert 1, wenn Sie das Element
informaltable benutzen. Ein Bug des
Internet Explorers verhindert ansonsten die korrekte
Darstellung dieser Tabellen.Soll die Tabelle keinen Rand haben, kann das Attribut
frame mit dem Wert
none dem Element
informaltable hinzugefügt werden
(<informaltable frame="none">)).Tabelle mit Attribut
frame="none"Darstellung:Spaltenüberschrift 1Spaltenüberschrift 2Zeile 1, Spalte 1Zeile 1, Spalte 2Zeile 2, Spalte 1Zeile 2, Spalte 2Beispiele für den LeserOft gilt es, für dem Benutzer Beispiele
zu geben, die er dann selber nachvollziehen soll. Meist
handelt es sich dabei um interaktive Dialoge zwischen Mensch
und Maschine: Der Benutzer gibt einen Befehl ein und
erhält eine Antwort vom System. Ein Satz
von speziellen Elementen und Entitäten unterstützt
den Autor bei der Auszeichnung solcher Textstellen:screenGedacht zur Auszeichnung von Bildschirminhalten.
Im Unterschied zu anderen Elementen werden Leerzeichen
innerhalb des Elementes screen
unverändert übernommen.prompt,
&prompt.root; und
&prompt.user;Eingabeaufforderungen des Rechners
(Betriebssysten, Shell oder Anwendung) sind ein häufig
auftretender Teil dessen, was der Benutzer auf dem
Bildschirm zu sehen bekommt. Sie sollten mit
prompt ausgezeichnet werden.Ein Spezialfall sind die beiden
Eingabeaufforderungen der Shell für normale
Benutzer und den Superuser root.
Jedesmal wenn auf eine von diesen beiden Nutzerrollen
hingewiesen werden soll, sollte entweder
&prompt.root; oder
&prompt.user; eingesetzt
werden. Beide Entitäten können auch
außerhalb von screen
verwendet werden.&prompt.root; und
&prompt.user; sind
FreeBSD-spezifische Erweiterungen der DocBook DTD
und nicht in der originalen DocBook DTD
enthalten.userinputDas Element userinput ist
für die Auszeichnung von Benutzereingaben
gedacht.screen, prompt
und userinput&prompt.user; ls -1
foo1
foo2
foo3
&prompt.user; ls -1 | grep foo2
foo2
&prompt.user; suPassword:
&prompt.root; cat foo2
This is the file called 'foo2']]>Darstellung:&prompt.user; ls -1
foo1
foo2
foo3
&prompt.user; ls -1 | grep foo2
foo2
&prompt.user; suPassword:
&prompt.root; cat foo2
This is the file called 'foo2'Obgleich der Inhalt der Datei
foo2 in dem obigen Beispiel angezeigt
wird, sollte dieser nicht mit
programlisting ausgezeichnet werden.
Vielmehr sollte programlisting einzig
und allein für die Darstellung von Dateifragmenten
außerhalb von Benutzeraktionen gewählt
werden.FlußelementeHervorhebungenWenn es darum geht bestimmte Wörter oder Textstellen
hervorzuheben, sollte dafür das Element
emphasis verwendet werden. Das so
ausgezeichnete Text wird dann kursiv oder fett dargestellt;
im Falle einer Sprachausgabe würde es anders betont
werden.Im Gegensatz zu den HTML mit seinen Elementen
b und i, kennt DocBook
keinen Weg, um diese Darstellung zu
ändernAnmerkung des
Übersetzers: Hier sollte man sich noch einmal ins
Gedächtnis rufen, dass mittels der DocBook DTD nur
Inhalte ausgezeichnet werden und nicht das Layout
bestimmt wird.. Handelt es sich bei
dem darzustellenden um eine wichtige Information, kann
alternativ important verwendet
werden.Das Element emphasisFreeBSD ist zweifelslos das führende
Unix-artige Bestriebssystem für die Intel-Plattform.]]>Darstellung:FreeBSD ist zweifelslos das führende
Unix-artige Bestriebssystem für die Intel-Plattform.ZitateUm einen Auszug aus einer anderen Quelle zu zitieren
oder kenntlich zu machen, dass eine bestimmte Wendung
im übertragenen Sinne zu verstehen ist, kann der
betreffende Text mit Hilfe des Elementes
quote ausgezeichnet werden. Innerhalb von
quote können die meisten der
normalerweise zur Verfügung stehenden Elemente genutzt
werden.Richtig zitierenEs sollte immer sichergestellt werden, dass die Suche die Grenzen
zwischen lokaler und öffentlicher Administration
(RFC 1535) einhält.]]>Darstellung:Es sollte immer sichergestellt werden, das die Suche
die Grenzen zwischen lokaler und öffentlicher
Administration (RFC 1535) einhält.Tasten, Maustasten und TastenkombinationenDas Element keycap beschreibt
eine bestimmte Taste der Tastatur.
Für die Auszeichnung von Maustasten
steht analog das Element mousebutton zur
Verfügung. Mit Hilfe von keycombo
können beliebige Tasten- und Maustastenkombinationen
beschrieben werden.Das Element keycombo besitzt ein
Attribut action, dem einer der Werte
click, double-click,
other, press,
seq oder simul
zugewiesen werden kann. Die letzten beiden Werte deuten an,
dass die genannte Kombination nacheinander oder
gleichzeitig gedrückt werden soll. Die Stylesheets
fügen zwischen die einzelnen Unterelemente von
keycombo+-Zeichen
ein.Tasten, Maustasten und TastenkombinationenDiese Eingaben zeichnen Sie wie folgt aus:Mit der Tastenkombination AltF1 kann auf die zweite virtuelle Konsole
umgeschaltet werden.
Um vi zu beenden, ohne die Änderungen zu
speichern, muss Esc:q! eingegeben werden.Der Fenstermanager ist so konfiguriert, dass mittels
Altrechter Maustaste
Fenster verschoben werden können.]]>Darstellung:Mit der Tastenkombination AltF1 kann auf die zweite
virtuelle Konsole umgeschaltet werden.Um vi zu beenden, ohne die
Änderungen zu speichern, muss Esc:q! eingegeben werden.Der Fenstermanager ist so konfiguriert, dass mittels
Altrechter Maustaste
Fenster verschoben werden können.Anwendungen, Befehle, Optionen und HilfeseitenOft besteht die Notwendigkeit auf bestimmte Anwendungen
und Befehle zu verweisen. Der Unterschied zwischen einer
Anwendung und einem Befehl liegt darin, dass eine
Anwendung ein einzelnes oder eine Gruppe von Programmen ist,
mit denen eine bestimmte Aufgabe erledigt werden kann. Ein
Befehl hingegen ist der Name eines Programmes, dass der
Benutzer aufrufen kannDer Befehl
mozilla startet das Programm
mozilla..Desweiteren kann es auch vorkommen, dass die
von einem Programm (in einem bestimmten Fall)
akzeptierten Optionen genannt werden müssen.Schlußendlich ist es oft gewünscht, zu einem
Befehl dessen Abschnitt der Manualseiten im
Unix-üblichen Stil Befehl(Zahl)
anzugeben.Anwendungsnamen können mit application
ausgezeichnet werden.Befehle können zusammen mit der betreffenden
Hilfeseite über das DocBook-Element
citerefentry ausgezeichnet werden.
citerefentry muss zwei weitere
Elemente enthalten: refentrytitle,
für den Befehlsnamen, und manvolnum,
für die Kategorie der Hilfeseite.Diese Art auf Befehle zu verweisen kann sehr
ermüdent sein. Daher gibt es einen Satz von
Allgemeinen
Entitäten, der diese Arbeit erleichtert. Er
ist in der Datei
doc/share/sgml/man-refs.ent enhalten
und kann über den folgenden Bezeichner eingebunden
werden:PUBLIC "-//FreeBSD//ENTITIES DocBook Manual Page Entities//EN"Jede Entität in dieser Datei ist wie folgt aufgebaut:
&man.Hilfeseite.Kategorie;.Der Anfang eines Dokumentes, das diese Entitäten
einbindet, könnte so aussehen:<!DOCTYPE book PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [
<!ENTITY % man PUBLIC "-//FreeBSD//ENTITIES DocBook Manual Page Entities//EN">
%man; … ]>Um Befehle innerhalb des Fließtextes auszuzeichen,
kann das Element command genutzt werden.
Die Optionen eines Befehles können mit Hilfe von
option ausgezeichnet werden.Wenn man sich mehrmals hintereinander auf den gleichen
Befehl bezieht, sollte man beim ersten Auftreten die Notation
&man.command.section;
verwenden. Für alle folgenden Referenzen sollte hingegen
command verwendet werden. Dadurch
verbessert sich das Erscheinungsbild, insbesondere von HTML,
deutlich.Die Unterscheidung zwischen command
und application kann schwer sein, und
manchmal ist die Entscheidung, welches Element das richtige
ist, nicht leicht. Das folgende Beispiel soll diese
Unterscheidung erleichtern.Anwendungen, Befehle und OptionenSendmail ist der verbreitetste
UNIX-Mailserver.
Sendmail besteht aus den Programmen
sendmail8, &man.mailq.1;, und &man.newaliases.1;.Mittels der Option kann
sendmail8 den Status der Mailwarteschlange ausgeben.
Der Status der Mailwarteschlange kann durch den Befehl
sendmail -bp überprüft werden.]]>Darstellung:Sendmail ist der
verbreitetste UNIX-Mailserver.Sendmail besteht aus den
Programmen
sendmail8,
&man.mailq.1; sowie &man.newaliases.1;.Mittels der Option kann
sendmail8 den Status der Mailwarteschlange ausgeben.
Der Status der Mailwarteschlange kann durch den Befehl
sendmail -bp überprüft
werden.Die Schreibweise
&man.Hilfeseite.Kategorie;
ist leichter lesbar.Dateien, Verzeichnisse und ErweiterungenImmer wenn in einem Text der Name einer Datei, eines
Verzeichnisses oder eine Dateierweiterung vorkommt, sollte
die betreffende Stelle mit dem Element
filename ausgezeichnet werden.Das Element filenameDie SGML-Quellen des
englischen Handbuches befinden sich im Verzeichnis
/usr/doc/en/handbook/. In
diesem Verzeichnis befindet sich eine Datei
handbook.sgml. Desweiteren sollte
sich eine Datei mit dem Namen
Makefile zusammen mit mehreren
Dateien mit der Endung .ent in diesem
Verzeichnis befinden.]]>Darstellung:Die SGML-Quellen des englischen Handbuches befinden
sich im Verzeichnis
/usr/doc/en/handbook/. In diesem
Verzeichnis befindet sich eine Datei
handbook.sgml. Desweiteren sollte
sich eine Datei mit dem Namen
Makefile zusammen mit mehreren
Dateien mit der Endung .ent in diesem
Verzeichnis befinden.PortnamenFreeBSD-ErweiterungDie hier genannten Elemente sind Bestandteil der
FreeBSD-Erweiterung für DocBook und sind nicht in der
originalen DocBook DTD enthalten.An einigen Stellen ist es notwendig, den Namen eines
Ports aus FreeBSDs Ports-Sammlung in Dokumenten zu verwenden.
In diesem Fall sollte ebenfalls das Element
filename eingesetzt werden, dabei aber
dem Element das Attribut role mit dem
Wert package zugewiesen werden. Da die
Ports-Sammlung an jeder beliebigen Stelle im Dateisystem
installiert werden kann, sollte filename
nur die Kategorie und den Namen des Ports enthalten, aber
nicht das Verzeichnis
/usr/ports.Portsnamen und das Element filenameWenn Sie Ihr Netz und dessen Datenverkehr analysieren
möchten, dann installieren Sie bitte den Port net/ethereal.]]>Darstellung:Wenn Sie Ihr Netz und dessen Datenverkehr analysieren
möchten, dann installieren Sie bitte den Port net/ethereal.Gerätedateien unterhalb von
/devFreeBSD-ErweiterungDie hier genannten Elemente sind Bestandteil der
FreeBSD-Erweiterung für DocBook und sind nicht in der
originalen DocBook DTD enthalten.Wird in einem Dokument Bezug auf Gerätedateien
unterhalb von dev
genommen, dann gibt es zwei Möglichkeiten diese
auszuzeichnen. Zum einen kann man sich auf das Gerät
beziehen, so wie es unter /dev zu
finden ist, und zum anderen kann man sich auf den
Gerätenamen beziehen, wie es innerhalb des Kerns
verwendet wird. Für letztere Möglichkeit sollte
das Element devicename genutzt
werden.Allerdings besteht nicht immer diese
Wahlmöglichkeit. Einige Geräte, wie zum Beispiel
Netzwerkkartenm haben keinen Eintrag unter
/dev oder werden anders
dargestellt.Gerätenamen per devicename
auszeichnenUnter FreeBSD wird die serielle Datenübertragung über
sio abgewickelt, das unterhalb von
/dev eine Reihe von Einträgen anlegt.
Zu diesen Einträgen behören beispielsweise
/dev/ttyd0 und
/dev/cuaa0.
Andererseits erscheinen Geräte wie beispielsweise
ed0 nicht unterhalb von
/dev.Unter MS-DOS wird das erste Diskettelaufwerk als
a: bezeichnet. FreeBSD
bezeichnet es als /dev/fd0.]]>Darstellung:Unter FreeBSD wird die serielle Datenübertragung
über sio abgewickelt, das
unterhalb von /dev eine Reihe von
Einträgen anlegt. Zu diesen Einträgen
behören beispielsweise
/dev/ttyd0 und
/dev/cuaa0.Andererseits erscheinen Geräte wie beispielsweise
ed0 nicht unterhalb von
/dev.
Unter MS-DOS wird das erste Diskettelaufwerk als
a: bezeichnet. FreeBSD bezeichnet
es als /dev/fd0.Rechner, Domains, IP-Adressen und mehrFreeBSD-ErweiterungDie hier genannten Elemente sind Bestandteil der
FreeBSD-Erweiterung für DocBook und sind nicht in der
originalen DocBook DTD enthalten.Bezeichner für Rechner können in Abhängigkeit
der Bezeichnungsweise auf verschiedene Art und Weise
ausgezeichnet werden. Gemeinsam ist allen, dass sie
das Element hostid benutzen. Über das
Attribut role wird die Art des Bezeichners
genauer bestimmt.Kein Rollenattribut oder
role="hostname"Ohne Rollenattribut stellt der umschlossene Text
einen normlen Rechnernamen wie
freefall oder
wcarchive dar. Wenn es
gewünscht ist, kann mittels
role="hostname" explizit angegeben
werden, dass es sich um einen Rechnernamen
handelt.role="domainname"Ein Domainname wie FreeBSD.org
oder ngo.org.uk. Er enthält keinen
Rechnernamen.role="fqdn"Vollqualifizierter Domainname wie
www.FreeBSD.org. Enthält sowohl
einen Domainnamen als auch einen Rechnernamen.role="ipaddr"Eine IP-Adresse, meistens als durch Doppelpunkte
getrenntes Tupel von vier Zahlen dargestellt.role="ip6addr"Eine IPv6-Adresse.role="netmask"Eine Netzwerkmaske, dargestellt als ein durch
Doppelpunkte getrenntes Vierzahlentupel, einer Hexzahl
oder als ein /, dem eine Zahl
folgt.role="mac"Eine MAC-Adresse, dargestellt durch zweistellige
Hexzahlen, die durch Doppelpunkte getrennt
sind.role und
hostidDer lokale Rechner kann immer über den Namen
localhost angesprochen werden, dem immer
die IP-Adresse
127.0.0.1 zugeordnet ist.
Zur Domain FreeBSD.org
gehören verschiedene Rechner, inklusive freefall.FreeBSD.org und pointyhat.FreeBSD.org.Wenn eine IP-Adresse einer Netzwerkkarte zugeordnet wird,
was mit der Hilfe von ifconfig geschieht,
sollte immer die Netzmaske
255.255.255.255, die auch
hexadezimal als 0xffffffff
abgegeben werden kann, benutzt werden.Die MAC-Adresse ist für jede existierende Netzwerkkarte
auf der Welt eindeutig. Eine typische MAC-Adresse ist
beispielsweise 08:00:20:87:ef:d0.]]>Darstellung:Der lokale Rechner kann immer über den Namen
localhost angesprochen werden, dem immer
die IP-Adresse 127.0.0.1
zugeordnet ist.Zur Domain FreeBSD.org gehören
verschieden Rechner, inklusive freefall.FreeBSD.org und bento.FreeBSD.org.Wenn eine IP-Adresse einer Netzwerkkarte zugeordnet
wird, was mit der Hilfe von ifconfig
geschieht, sollte immer die Netzmaske
255.255.255.255, die auch
hexadezimal als 0xffffffff
abgegeben werden kann, benutzt werden.Die MAC-Adresse ist für jede existierende
Netzwerkkarte auf der Welt eindeutig. Eine typische
MAC-Adresse ist beispielsweise 08:00:20:87:ef:d0.BenutzernamenFreeBSD-ErweiterungDie hier genannten Elemente sind Bestandteil der
FreeBSD-Erweiterung für DocBook und sind nicht in der
originalen DocBook DTD enthalten.Namen von Benutzern, wie
root oder bib,
können mit dem Element username
ausgezeichnet werden.Das Element usernameFür die meisten Administrationsaufgaben müssen
Sie als root angemeldet sein.]]>Darstellung:Für die meisten Administrationsaufgaben müssen Sie als
root angemeldet sein.Beschreibung von MakefilesFreeBSD-ErweiterungDie hier genannten Elemente sind Bestandteil der
FreeBSD-Erweiterung für DocBook und sind nicht in der
originalen DocBook DTD enthalten.Zur Beschreibung von Teilen einer Makedatei stehen die
beiden Elemente marketarget und
makevar zur Verfügung.
maketarget bezeichnet ein Ziel eines
Makefiles, das als Parameter beim
Aufruf von make angegeben werden kann.
makevar hingegen bezeichnet eine
Variable, die entweder in einem
Makefile definiert oder
make auf der Befehlszeile übergeben
werden kann, um so den Bauprozess zu beeinflussen.maketarget und
makevarZwei übliche Ziele in einem Makefile
sind all und
clean.
Üblicherweise wird, wenn das Ziel all
aufgerufen wird, die gesamte Anwendung neu erstellt. Der Aufruf
des Zieles clean veranlaßt das
Löschen aller temporären Dateien (zum Beispiel
.o), die während der Übersetzung erzeugt
wurden.Das genaue Verhalten von clean
kann von einer Reihe von Variablen beeinflußt werden.
Stellvertretend seien hier CLOBBER und
RECURSE genannt.]]>Darstellung:Zwei übliche Ziele in einem
Makefile sind
all und
clean.Üblicherweise wird, wenn das Ziel
all aufgerufen wird, die gesamte
Anwendung neu erstellt. Der Aufruf des Zieles
clean veranlaßt das
Löschen aller temporären Dateien (zum Beispiel
.o), die während der
Übersetzung erzeugt wurden.Das genaue Verhalten von
clean kann von einer Reihe von
Variablen beeinflußt werden. Stellvertretend seien
hier CLOBBER und
RECURSE genannt.Text buchstabengetreu übernehmenFür das Handbuch ist es oft notwendig, Textausschnitte
buchstabengetreu darzustellen. Hierbei kann es sich um Texte
handeln, die aus einer anderen Datei stammen oder die der
Leser eins-zu-eins aus dem Handbuch kopieren können
soll.In einigen Fällen ist zu diesem Zwecke
programlisting ausreichend, jedoch nicht
immer. So ist programlisting zum Beispiel
nicht einsetzbar, wenn es darum geht, einen Auszug aus einer
Datei innerhalb eines Absatzes einzufügen. In solchen Fällen
sollte das Element literal zum Einsatz
kommen.literalDie Zeile maxusers 10 in der
Kernelkonfigurationsdatei beeinflußt die Größe vieler
Systemtabellen und kann als ungefähr als Richtwert dafür
gelten, wie viele paralle Anmeldungen das System handhaben
kann.]]>Darstellung:Die Zeile maxusers 10 in der
Kernelkonfigurationsdatei beeinflußt die Größe vieler
Systemtabellen und kann als ungefähr als Richtwert dafür
gelten, wie viele paralle Anmeldungen das System handhaben
kann.Benutzerspezifische Eingaben darstellenEs kommt oft vor, dass der Leser Beispiele,
Dateinamen oder Kommandozeilen verändern muss.
Für einen solchen Anwendungsfall
ist das Element replaceable gedacht. Es
kann innerhalb von anderen Elementen
genutzt werden, um die Teile auszuzeichnen, die es zu
ersetzen gilt.Das Element replaceable&prompt.user; man command]]>Darstellung:&prompt.user; man commandDieses Beispiel zeigt, dass nur der Text mit
replaceable umschlossen werden soll,
den der Benutzer einzusetzen hat. Sämtlicher anderer
Text sollte wie üblich ausgezeichnet werden.Die Zeile
maxusers n
in der Kernelkonfigurationsdatei bestimmt die Größe vieler Systemtabellen
und stellt einen groben Richtwert dafür dar, wie viele gleichzeitige Anmeldungen
das System unterstützt.
Für einen Arbeitsplatzrechner stellt 32 einen guten
Wert für n dar.]]>Darstellung:Die Zeile maxusers
n in der
Kernelkonfigurationsdatei bestimmt die Größe
vieler Systemtabellen und stellt einen groben Richtwert
dafür dar, wie viele gleichzeitige Anmeldungen das
System unterstützt.Für einen Arbeitsplatzrechner stellt
32 einen guten Wert für
n dar.Fehlermeldungen des Systems darstellenIn manchen Fällen kann es nötig sein,
Fehlermeldungen darzustellen, die von FreeBSD erzeugt werden
können. Für solche Fälle ist das Element
errorname vorgesehen.Das Element errornamePanic: cannot mount root ]]>Darstellung:Panic: cannot mount rootBilder und GrafikenDie Verwendung von Grafiken innerhalb der Dokumentation
ist momentan noch in einem experimentellen Stadium. Es ist
daher wahrscheinlich, dass sich die hier beschriebenen
Mechanismen noch ändern werden.Für die Verwendung von Grafiken ist es notwendig,
den Port graphics/ImageMagick
zusätzlich zu installieren, da er
nicht vom Port textproc/docproj mitinstalliert
wird.Das beste Beispiel für den Einsatz von Grafiken ist
der unter
doc/en_US.ISO8859-1/articles/vm-design/
zu findene Artikel Design elements of the FreeBSD VM
system. Falls beim Lesen der folgenden Kapitel
Fragen unbeantwortet oder unklar bleiben, empfiehlt es sich,
die unter dem genannten Verzeichnis befindlichen Dateien zu
studieren und anhand ihrer zu verstehen, wie alles
zusammenhängt. Es empfiehlt sich, den Artikel in
verschiedenen Ausgabeformaten zu erzeugen, da man so sehen
kann, wie die Grafiken in Abhängigkeit vom
Ausgabemedium angeordnet werden.Unterstütze GrafikformateZur Zeit werden nur zwei Grafikformate unterstützt.
Welches von beiden Formaten zum Einsatz kommen sollte,
hängt von der Art der Grafik ab.Für Bilder, die vorrangig Vektorelemente wie
Netzwerkdiagramme, Zeitlinien und ähnliches beinhalten,
sollte Encapsulated Postscript als Format gewählt
werden. Wichtig ist es in diesem Fall, dass die
Grafikdatei die Endung .eps hat.
Für Bitmapgrafiken, wie zum Beispiel Bildschirmfotos,
steht das Portable Network Grafic Format zur
Verfügung. In diesem Fall, sollte die Grafikdatei immer
die Endung .png haben.In das CVS-Archiv sollten nur
Grafiken in diesen beiden Formaten übernommen
werden.Es sollte darauf sehr darauf geachtet werden, das
richtige Format für das richtige Bild zu wählen.
Erwartungsgemäß wird es Dokumente geben, die eine
Mischung aus PNG- und EPS-Grafiken enthalten. In solchen
Fällen, stellen die Makedateien die Verwendung des
richtigen Formats in Abhängigkeit vom Ausgabeformat
sicher. Deshalb sollte die gleiche Grafik niemals
in zwei unterschiedlichen Formaten in das CVS-Archiv
übernommen werden.Es ist absehbar, dass das Dokumentationsprojekt
in Zukunft das Scalable Vector Graphic-Format (SVG) als
Standardformat für Vektorgrafiken übernehmen
wird. Zum jetzigen Zeitpunkt ist dieser Wechsel noch nicht
möglich, da der Stand der jetzigen SVG-Anwendungen
noch nicht den dafür notwendigen Erfordernissen
entspricht.DocBook-Elemente für den GrafikeinsatzDas Auszeichnen von Bildern mittels DocBook ist relativ
einfach. Zuerst wird ein
mediaobject-Element eingefügt, das
als Container für medienspezifische Elemente fungieren
kann. Für die Zwecke des FDPs sind das die Elemente
imageobject und
textobject.In das mediaobject-Element sollten
ein Element vom Typ imageobject und zwei
textobject-Elemente eingefügt
werden. Das imageobject-Element verweist
auf die eigentliche Grafikdatei. Dabei ist allerdings nur
der Dateipfad ohne Erweiterung anzugegeben. Die
textobject-Elemente werden dafür
genutzt, Texte aufzunehmen, die dem Leser anstelle des
Bildes oder zusammen mit dem Bild angezeigt werden.Dies kann unter zwei Umständen geschehen:Wenn ein Dokument als HTML-Datei durch einem Browser
angezeigt wird. In diesem Falle muss jeder Grafik
ein Alternativtext zugeordnet werden, der dem Leser
angezeigt werden kann. Meist ist das notwendig, wenn der
Browser die Grafik noch nicht geladen hat oder wenn der
Benutzer den Mauszeiger über die Grafik
führt.Wenn das Dokument als Textdatei gelesen wird. Da in
einer Textdatei keine Grafiken angezeigt werden können,
sollte es für die Grafik eine Textentsprechung geben,
die alternativ angezeigt werden kann.Das folgende Beispiel soll das bisher geschriebene
illustrieren. Angenommen es liegt eine einzubindene Grafik
in der Datei bild1 vor, die die
Darstellung eines As in einem Rechteck enthält. Die
ASCII-Alternative könnte so ausgezeichnet werden:<mediaobject>
<imageobject>
<imagedata fileref="bild1">
</imageobject>
<textobject>
<literallayout class="monospaced">+ - - - - - - - - - - - - - - -+
| A |
+- - - - - - - - - - - - - - -+</literallayout>
</textobject>
<textobject>
<phrase>Ein Bild</phrase>
</textobject>
</mediaobject>Innerhalb vom Element imageobject
befindet sich ein Element imagedata,
welches mit Hilfe des Attributes
fileref den Namen der Grafikdatei
(ohne Erweiterung) angibt. Die Bestimmung der
Dateierweiterung wird von den Stylesheets
übernommen.Das erste textobject-Element
enthält ein literallayout-Element,
dessen Attribut class den Wert
monospaced zugewiesen bekommt. Der
Inhalt dieses Elements wird genutzt, wenn das Dokument
in Textform ausgegeben wird. An dieser Stelle hat der
Autor die Möglichkeit seine
Textzeichenkünste unter Beweis zu
stellen.Wichtig ist, dass die erste und die letzte
Zeile sich gleichauf mit dem öffenden und dem
schließenden Tag befindet. Dadurch wird
sichergestellt, dass keine unnötigen
Leerzeichen in die Ausgabe aufgenommen werden.Das zweite textobject-Element
sollte lediglich ein phrase-Element
enthalten. Wird das Dokument nach HTML konvertiert, wird
dessen Inhalt für das Attribut
alt des img-Tags
verwendet.Die Makefile-EinträgeAlle in einem Dokument verwendeten Grafiken müssen in
dem zugehörigen Makefile in der Variable
IMAGES enthalten sein.
IMAGES sollte immer die Namen der
Quellgrafiken enthalten. Werden in
einem Dokument beispielsweise die drei Grafiken
bild1.eps,
bild2.png und
bild3.png referenziert, sollte das
Makefile die folgende Zeile
enthalten:…
IMAGES= bild1.eps bild2.png bild3.png
…Eine andere Möglichkeit wäre:…
IMAGES= bild1.eps
IMAGES+= bild2.png
IMAGES+= bild3.png
…Es kann nicht oft genug betont werden: Welche
Grafikdateien für das zu erzeugende Dokument benötigt
werden, wird von dem Makefiles bestimmt.
IMAGES darf nur die Originaldateien
enthalten.Grafiken und Kapitel in UnterverzeichnissenWenn Sie Ihre Dokumentation in mehrere kleine
Dateien aufspalten (siehe
),
müssen Sie sorgfältig vorgehen.Angenommen es handelt sich um ein Buch, dessen drei
Kapitel in separaten Verzeichnissen angelegt wurden
(kapitel1/kapitel.sgml,
kapitel2/kapitel.sgml und
kapitel3/kapitel.sgml). Enthalten die
Kapitel Grafiken, empfiehlt es sich, diese in den gleichen
Verzeichnisses abzulegen, wie die Kapitel selbst. In diesem
Falle gilt es jedoch zu beachten, dass die Pfade der
Grafikdateien in der Variable IMAGES und
in den imagedata-Elementen immer auch den
Verzeichnisnamen mitenthalten.Soll beispielsweise die Datei
kapitel1/bild1.png in das in
kapitel1/kapitel.sgml enthaltene
Kapitel eingebunden werden, sollte dies so erfolgen:<mediaobject>
<imageobject>
<imagedata fileref="kapitel1/bild1">
</imageobject>
…
</mediaobject>fileref muss den
Datei- und den Verzeichnisnamen enthalten.Das Makefile muss dementsprechend
die Zeile
…
IMAGES= kapitel1/bild1.png
…
enthalten.Wird dies beachtet, sollte es zu keinen Problemen
kommen.QuerverweiseQuerverweise sind auch Flußelemente.Querverweise innerhalb eines DokumentesUm innerhalb eines Dokumentes Verweise anzulegen, muss
angegeben werden, von welcher Textstelle aus wohin verwiesen
werden soll.Jedes DocBook-Element besitzt ein Attribut
id, über das seinem Element ein
eindeutiger Bezeichner zugewiesen werden kann.In den meisten Fällen werden Querverweise nur zu
Kapiteln gesetzt. Die chaper- und
sect*-Elemente sollten aus diesem Grunde
ein gesetztes id-Attribut
besitzen.chapter und section
mit dem Attribut idEinführungDas ist eine Einführung. Sie enthält ein Unterkapitel, das
ebenfalls einen eigenen Bezeichner hat.Unterkapitel 1Das ist ein Unterkapitel.
]]>Als Wert für das Attribut id
sollte immer ein selbsterklärender Bezeichner gewählt
werden. Zudem ist es notwendig, dass dieser Bezeichner
innerhalb des Dokumentes eindeutig ist. Im obigen Beispiel
wurde der Bezeichner für das Unterkapitel gebildet,
indem der Bezeichner des übergeordneten Kapitels um den
Titel des Unterkapitels erweitert wurde. Diese
Vorgehensweise hilft sicherzustellen, dass Bezeichner
eindeutig sind und bleiben.Manchmal soll jedoch nicht auf den Anfang eines Kapitels
verwiesen werden, sondern zum Beispiel auf eine Stelle in
einem Absatz oder auf ein bestimmtes Beispiel. In solchen
Fällen kann an der Stelle, auf die verwiesen werden
soll, das Element anchor mit gesetztem
Attribut id eingefügt werden.
anchor kann selber keinen weiteren Inhalt
aufnehmen.Querverweise und das Element
anchorDieser Absatz enthält ein
Ziel für Querverweise, was jedoch keine
Auswirkung auf dessen Darstellung hat.]]>Zum Anlegen des eigentlichen Querverweises selbst kann
eines der beiden Elemente xref oder
link genutzt werden. Beide besitzen das
Attribut linkend, dem der
id-Wert des Verweiszieles zugewiesen
wird. Ob sich das Ziel vor oder nach dem Verweis befindet,
spielt keine Rolle.xref und link
unterscheiden sich jedoch hinsichtlich der Art und Weise,
auf die der Text erzeugt wird, auf dem der Querverweis
liegt. Kommt xref zum Einsatz, hat der
Autor keine Kontrolle darüber – der Text wird
automatisch für ihn erzeugt.Einsatz von xrefFür dieses Beispiel wird davon ausgegangen, dass sich
folgendes Textfragment irgendwo innerhalb eines Dokumentes
auftaucht, dass das vorherige
id-Beispiel enthält.Weitere Informationen gibt
es im .
Genauere Informationen können im
gefunden werden.]]>Der Verweistext wird automatisch von den Stylesheets
erzeugt und so hervorgehoben, dass ersichtlich ist,
dass es sich bei dem Text um einen Verweis
handelt.
Weitere Informationen können in der
Einführung gefunden
werden.Genauere Informationen können im
Unterkapitel 1 gefunden
werden.
Der Text, auf dem der HTML-Link für den Querverweis
liegt, wurde von den Kapitelüberschriften
übernommen.Das bedeutet, dass es nicht
möglich ist, mit der Hilfe von
xref einen Querverweis zu einer mit
anchor gekennzeichneten Stelle
anzulegen. Da anchor keinen Inhalt
aufnehmen kann, können die Stylesheets nicht
automatisch einen Text für den Verweis
erzeugen.Möchte man selber den für den Verweis
benutzten Text bestimmen können, sollte das Element
link verwendet werden. Im Gegensatz zu
xref kann link Inhalt
aufnehmen, der dann für den Verweis verwendet
wird.link beutzenFür dieses Beispiel wird davon ausgegangen, dass
es sich in dem Dokument befindet, das auch
das id-Beispiel enthält.Weitere Informationen können
im ersten Kapitel gefunden
werden.
Genauere Informationen können in
diesem Kapitel
gefunden werden.]]>Aus diesem SGML-Fragment würden die Stylesheets
folgendes generieren (der hervorgehobene Text deutet den
erzeugten Verweis an):
Weitere Informationen können im ersten
Kapitel gefunden werden.Genauere Informationen können in
diesem Kapitel gefunden
werden.
Das letzte Beispiel ist schlecht. Es sollten niemals
Wörter wie dieses oder
hier als Linktext benutzt werden. Solche
Wörter zwingen den Leser dazu, den Kontext des
Verweises zu lesen, um zu verstehen, wohin der Verweis
führt.Mit dem Element linkkann auf mit
anchor gekennzeichnete Stellen im
Dokument verwiesen werden, da der Inhalt von
link als Text für den Querverweise
genutzt wird.Verweise auf Dokumente im WWWDas Anlegen von Verweisen auf externe Dokumente ist
wesentlich einfacher – solange die URL des zu
referenzierenden Dokumentes bekannt ist. Um von einem
bestimmten Textabschnitt auf das gewünschte externe
Dokument zu verweisen, muss die jeweilige Stelle mit
dem Element ulink ausgezeichnet werden.
Mittels des Attributes url kann die
Adresse des Zieldokumentes angegeben werden. Bei der
Umformung des Quelldokumentes in die verschiedenen
Ausgabeformate wird der sich zwischen Start- und Endtag
befindliche Text für den Verweis übernommen, den
der Leser aufrufen kann.Verweise mit ulinkNatürlich ist es möglich, anstatt diesen Text
weiterzulesen, sofort die
FreeBSD-Homepage
aufzurufen.]]>Darstellung:Natürlich ist es möglich, anstatt diesen Text
weiterzulesen, sofort die FreeBSD-Homepage
aufzurufen.
diff --git a/de_DE.ISO8859-1/books/handbook/basics/chapter.sgml b/de_DE.ISO8859-1/books/handbook/basics/chapter.sgml
index a63e6b42e9..73e5542b93 100644
--- a/de_DE.ISO8859-1/books/handbook/basics/chapter.sgml
+++ b/de_DE.ISO8859-1/books/handbook/basics/chapter.sgml
@@ -1,2771 +1,2922 @@
ChrisShumwayUmgeschrieben von UwePierauÜbersetzt von Grundlagen des UNIX BetriebssystemsÜbersichtDas folgende Kapitel umfasst die grundlegenden Kommandos
und Funktionsweisen des Betriebssystems FreeBSD. Viel von dem folgenden
Material gilt auch für jedes andere &unix;-artige System.
Falls Sie mit dem Material schon vertraut sind, können Sie dieses
Kapitel überlesen. Wenn FreeBSD neu für Sie ist, dann sollten
Sie dieses Kapitel auf jeden Fall aufmerksam lesen.Dieser Abschnitt behandelt die folgenden Themen:virtuelle Konsolen,Zugriffsrechte unter &unix; sowie Datei-Flags unter &os;,Zugriffskontrolllisten für Dateisysteme,die Verzeichnisstruktur von &os;,Organisation von Dateisystemen unter &os;,Ein- und Abhängen von Dateisystemen,Prozesse, Dämonen und Signale,Shells und die Login-Umgebung,Texteditoren,Geräte und Gerätedateien,Binärformate unter &os; undwie Sie in den Manualpages nach weiteren Informationen
suchen können.Virtuelle Konsolen und Terminalsvirtuelle KonsoleTerminalsSie können FreeBSD mit einem Terminal benutzen, der nur Text
darstellen kann. Wenn Sie FreeBSD auf diese Weise benutzen, stehen
Ihnen alle Möglichkeiten eines &unix; Betriebssystems zur
Verfügung. Dieser Abschnitt beschreibt was Terminals und
Konsolen sind und wie sie unter FreeBSD eingesetzt werden.Die KonsoleKonsoleWenn Ihr FreeBSD-System ohne eine graphische
Benutzeroberfläche startet, wird am Ende des Systemstarts,
nachdem die Startskripten gelaufen sind, ein Anmeldeprompt
ausgegeben. Die letzten Startmeldungen sollten ähnlich wie
die Folgenden aussehen:Additional ABI support:.
Local package initialization:.
Additional TCP options:.
Fri Sep 20 13:01:06 EEST 2002
FreeBSD/i386 (pc3.example.org) (ttyv0)
login:Beachten Sie die letzten beiden Zeilen der Ausgabe, die
vorletzte lautet:FreeBSD/i386 (pc3.example.org) (ttyv0)Diese Zeile enthält einige Informationen über das
gerade gestartete System. Die Ausgabe stammt von der
FreeBSD-Konsole einer Maschine mit einem Intel oder
Intel-kompatiblen Prozessor der x86-ArchitekturGenau das ist mit i386 gemeint. Auch
wenn Ihr System keine Intel 386 CPU besitzt, wird
i386 ausgegeben. Es wird immer die
Architektur und nicht der Typ des Prozessors ausgegeben.. Der Name des Systems (jedes &unix; System besitzt
einen Namen) ist pc3.example.org und die Ausgabe
stammt von der Systemkonsole, dem Terminal
ttyv0.Das Ende der Ausgabe ist immer die Aufforderung zur Eingabe
eines Benutzernamens:login:Der Anmeldevorgang wird im nächsten Abschnitt
erläutert.Der AnmeldevorgangFreeBSD ist ein Mehrbenutzersystem, das Multitasking
unterstützt. Das heißt mehrere Benutzer können
gleichzeitig viele Programme auf einem System laufen lassen.Jedes Mehrbenutzersystem muss die Benutzer voneinander
unterscheiden können. Bei FreeBSD und allen anderen
&unix;-artigen
Betriebssystemen wird dies dadurch erreicht, dass sich die
Benutzer anmelden müssen, bevor sie Programme laufen lassen
können. Jeder Benutzer besitzt einen eindeutigen Namen (den
Account) und ein dazugehörendes Passwort, die beide bei
der Anmeldung abgefragt werden.StartskriptenNachdem FreeBSD gestartet ist und die StartskriptenStartskripten sind Programme, die FreeBSD automatisch bei
jedem Startvorgang ausführt. Der Zweck der Skripte
besteht darin, das System zu konfigurieren und nützliche
Dienste im Hintergrund zu starten., gelaufen sind, erscheint eine Aufforderung zur Eingabe
des Benutzernamens:login:Wenn Ihr Benutzername beispielsweise john
ist, geben Sie jetzt john gefolgt von
Enter ein. Sie sollten dann eine Aufforderung zur
Eingabe des Passworts erhalten:login: john
Password:Geben Sie jetzt das Passwort von john
gefolgt von Enter ein. Das Passwort wird aus
Sicherheitsgründen nicht auf dem Bildschirm angezeigt.Wenn Sie das richtige Passwort eingegeben haben, sind Sie
am System angemeldet und können nun alle verfügbaren
Kommandos absetzen.Anmgemeldet sind Sie, wenn Sie die Tagesmeldungen
(message of today) gefolgt
von einer Eingabeaufforderung (dem Zeichen #,
$ oder %) gesehen
haben.Virtuelle KonsolenDa FreeBSD mehrere Programme gleichzeitig laufen lassen kann,
ist eine einzige Konsole, an der Kommandos abgesetzt werden
können, zu wenig. Abhilfe schaffen virtuelle Konsolen, die
mehrere Konsolen zur Verfügung stellen.Die Anzahl der virtuellen Konsolen unter FreeBSD können Sie
einstellen. Zwischen den einzelnen Konsolen können Sie mit
speziellen Tastenkombinationen wechseln. Jede Konsole verfügt
über einen eigenen Ausgabekanal und FreeBSD ordnet die
Tastatureingaben und Monitorausgaben der richtigen Konsole zu, wenn
Sie zwischen den Konsolen wechseln.Zum Umschalten der Konsolen stellt FreeBSD spezielle
Tastenkombinationen bereitEine recht technische und genaue Beschreibung der FreeBSD-Konsole
und der Tastatur-Treiber finden Sie in den Hilfeseiten
&man.syscons.4;, &man.atkbd.4;, &man.vidcontrol.1; und
&man.kbdcontrol.1;. Lesen Sie diese Seiten, wenn Sie an den
Einzelheiten interessiert sind.. Benutzen Sie
AltF1,
AltF2 bis
AltF8,
um zwischen den verschiedenen Konsolen umzuschalten.Wenn Sie zu einer anderen Konsole wechseln, sichert FreeBSD den
Bildschirminhalt und gibt den Bildschirminhalt der neuen Konsole
aus. Dies erzeugt die Illusion mehrerer Bildschirme und
Tastaturen, an denen Sie Kommandos absetzen können. Wenn eine
Konsole nicht sichtbar ist, weil Sie auf eine andere Konsole
gewechselt haben, laufen die dort abgesetzten Kommandos
weiter./etc/ttysIn der Voreinstellung stehen unter FreeBSD acht virtuelle
Konsolen zur Verfügung, deren Anzahl Sie leicht erhöhen
oder verringern können. Die Anzahl und Art der Konsolen wird
in /etc/ttys eingestellt.Jede Zeile in /etc/ttys, die nicht mit
# anfängt, konfiguriert einen Terminal oder
eine virtuelle Konsole. In der Voreinstellung werden in dieser
Datei neun virtuelle Konsolen definiert, von denen acht aktiviert
sind. Die Konsolen sind in den Zeilen, die mit
ttyv beginnen, definiert:# name getty type status comments
#
ttyv0 "/usr/libexec/getty Pc" cons25 on secure
# Virtual terminals
ttyv1 "/usr/libexec/getty Pc" cons25 on secure
ttyv2 "/usr/libexec/getty Pc" cons25 on secure
ttyv3 "/usr/libexec/getty Pc" cons25 on secure
ttyv4 "/usr/libexec/getty Pc" cons25 on secure
ttyv5 "/usr/libexec/getty Pc" cons25 on secure
ttyv6 "/usr/libexec/getty Pc" cons25 on secure
ttyv7 "/usr/libexec/getty Pc" cons25 on secure
ttyv8 "/usr/X11R6/bin/xdm -nodaemon" xterm off secureDie Hilfeseite &man.ttys.5; enthält eine ausführliche
Beschreibung der Spalten dieser Datei und der Optionen, die Sie zum
Konfigurieren der virtuellen Konsolen benutzen können.Die Konsole im Single-User-ModusEine eingehende Beschreibung des Single-User-Modus finden Sie
in . Im Single-User-Modus steht
Ihnen nur eine Konsole zur Verfügung.
Die Definition dieser Konsole befindet sich ebenfalls in
/etc/ttys. Suchen Sie nach einer Zeile, die
mit console beginnt:# name getty type status comments
#
# If console is marked "insecure", then init will ask for the root password
# when going to single-user mode.
console none unknown off secureIn der Zeile, die mit console beginnt,
können Sie secure durch
insecure ersetzen. Wenn Sie danach in den
Single-User-Modus booten, verlangt das System ebenfalls die
Eingabe des root-Passworts.Setzen Sie insecure nicht
leichtfertig ein. Wenn Sie das Passwort von
root vergessen, wird es schwierig, in den
Single-User-Modus zu gelangen, wenn Sie den
FreeBSD-Boot-Prozess nicht genau verstehen.Den Videomodus der Konsole anpassenDer Standard-Videomodus der FreeBSD-Konsole kann auf jeden
Modus eingestellt werden, der von Ihrer Grafikkarte und Ihrem
Monitor unterstützt wird (beispielsweise 1024x768 oder
1280x1024). Wollen Sie eine andere Einstellung verwenden,
müssen Sie Ihren Kernel neu kompilieren, nachdem Sie die
zwei folgenden Zeilen in Ihre Kernelkonfigurationsdatei
aufgenommen haben:OPTIONS VESA
options SC_PIXEL_MODENachdem Sie den Kernel mit diesen zwei Optionen neu
kompiliert haben, bestimmen Sie die möglichen
Videomodi mit dem Werkzeug &man.vidcontrol.1;. Um
beispielsweise einer Liste aller unterstützten
Modi zu erhalten, verwenden Sie den folgenden Befehl:&prompt.root; vidcontrol -i modeAls Ergebnis erhalten Sie eine Liste aller Videomodi,
die von Ihrer Hardware unterstützt werden. Sie wählen
einen neuen Modus aus, indem Sie den entsprechenden Wert
(wiederum als Benutzer root) an
&man.vidcontrol.1; übergeben:&prompt.root; vidcontrol MODE_279Um diese Einstellung dauerhaft zu speichern, müssen Sie
die folgende Zeile in die Datei
/etc/rc.conf aufnehmen:allscreens_flags="MODE_279"ZugriffsrechteUNIXFreeBSD, das ein direkter Abkömmling von BSD &unix; ist,
stützt sich auf mehrere Grundkonzepte von &unix; Systemen.
Das erste und ausgeprägteste: FreeBSD ist
ein Mehrbenutzer-Betriebssystem. Das System ermöglicht,
dass mehrere Benutzer gleichzeitig an völlig verschiedenen
und unabhängigen Aufgaben arbeiten können. Es ist
verantwortlich für eine gerechte Auf- und Zuteilung von
Nachfragen nach Hardware- und Peripheriegeräten, Speicher
und CPU-Zeit unter den Benutzern.Da das System mehrere Benutzer unterstützt, hat alles,
was das System verwaltet, einen Satz von Rechten, die bestimmen,
wer die jeweilige Ressource lesen, schreiben oder ausführen
darf. Diese Zugriffsrechte stehen in drei Achtergruppen, die in
drei Teile unterteilt sind: einen für den Besitzer der
Datei, einen für die Gruppe, zu der die Datei gehört
und einen für alle anderen. Die numerische Darstellung
sieht wie folgt aus:ZugriffsrechteDateizugriffsrechteWertZugriffsrechteAuflistung im Verzeichnis0Kein Lesen, Kein Schreiben, Kein Ausführen---1Kein Lesen, Kein Schreiben, Ausführen--x2Kein Lesen, Schreiben, Kein Ausführen-w-3Kein Lesen, Schreiben, Ausführen-wx4Lesen, Kein Schreiben, Kein Ausführenr--5Lesen, Kein Schreiben, Ausführenr-x6Lesen, Schreiben, Kein Ausführenrw-7Lesen, Schreiben, AusführenrwxlsVerzeichnisseSie können auf der Kommandozeile
von &man.ls.1; angeben, um eine ausführliche Verzeichnisauflistung
zu sehen, die in einer Spalte die Zugriffsrechte für den
Besitzer, die Gruppe und alle anderen enthält.
Die Ausgabe von ls -l könnte
wie folgt aussehen:&prompt.user; ls -l
total 530
-rw-r--r-- 1 root wheel 512 Sep 5 12:31 myfile
-rw-r--r-- 1 root wheel 512 Sep 5 12:31 otherfile
-rw-r--r-- 1 root wheel 7680 Sep 5 12:31 email.txt
...Die erste Spalte der Ausgabe enthält die
Zugriffsrechte:-rw-r--r--Das erste Zeichen von links ist ein Symbol, welches angibt,
ob es sich um eine normale Datei, ein Verzeichnis, ein
zeichenorientiertes Gerät, ein Socket oder irgendeine andere
Pseudo-Datei handelt. In diesem Beispiel zeigt - eine
normale Datei an. Die nächsten drei Zeichen,
dargestellt als rw-, ergeben die Rechte
für den Datei-Besitzer. Die drei Zeichen danach
r-- die Rechte der Gruppe, zu der die Datei
gehört. Die letzten drei Zeichen, r--,
geben die Rechte für den Rest der Welt an. Ein Minus
bedeutet, dass das Recht nicht gegeben ist. In diesem Fall
sind die Zugriffsrechte also: der Eigentümer kann die Datei
lesen und schreiben, die Gruppe kann lesen und alle anderen
können auch nur lesen. Entsprechend obiger Tabelle
wären die Zugriffsrechte für diese Datei
644, worin jede Ziffer die drei Teile der
Zugriffsrechte dieser Datei verkörpert.Das ist alles schön und gut, aber wie kontrolliert das
System die Rechte von Hardware-Geräten? FreeBSD behandelt
die meisten Hardware-Geräte als Dateien, welche Programme
öffnen, lesen und mit Daten beschreiben können wie
alle anderen Dateien auch. Diese Spezial-Dateien sind im
Verzeichnis /dev gespeichert.Verzeichnisse werden ebenfalls wie Dateien behandelt. Sie
haben Lese-, Schreib- und Ausführ-Rechte. Das
Ausführungs-Bit hat eine etwas andere Bedeutung für
ein Verzeichnis als für eine Datei. Die Ausführbarkeit
eines Verzeichnisses bedeutet, dass in das Verzeichnis
zum Beispiel mit cd gewechselt werden kann.
Das bedeutet auch, dass in dem Verzeichnis auf Dateien, deren
Namen bekannt sind, zugegriffen werden kann, vorausgesetzt die
Zugriffsrechte der Dateien lassen dies zu.Das Leserecht auf einem Verzeichnis erlaubt es, sich den Inhalt
des Verzeichnisses anzeigen zu lassen. Um eine Datei mit bekanntem
Namen in einem Verzeichnis zu löschen, müssen auf dem
Verzeichnis Schreib- und Ausführ-Rechte
gesetzt sein.Es gibt noch mehr Rechte, aber die werden vor allem in
speziellen Umständen benutzt, wie zum Beispiel bei
SetUID-Binaries und Verzeichnissen mit gesetztem Sticky-Bit.
Mehr über Zugriffsrechte von Dateien und wie sie gesetzt werden,
finden Sie in &man.chmod.1;.TomRhodesBeigesteuert von Symbolische ZugriffsrechteZugriffsrechtesymbolischeDie Zugriffsrechte lassen sich auch über Symbole
anstelle von oktalen Werten festlegen. Symbolische
Zugriffsrechte werden in der Reihenfolge
Wer, Aktion
und Berechtigung angegeben.
Die folgenden Symbole stehen zur Auswahl:OptionSymbolBedeutungWeruBenutzer (user)WergGruppe (group)WeroAndere (other)WeraAlleAktion+Berechtigungen hinzufügenAktion-Berechtigungen entziehenAktion=Berechtigungen explizit setzenBerechtigungrlesen (read)Berechtigungwschreiben (write)Berechtigungxausführen
(execute)BerechtigungtSticky-BitBerechtigungsSet-UID oder Set-GIDSymbolische Zugriffsrechte werden wie die numerischen
mit dem Kommando &man.chmod.1; vergeben. Wenn
Sie beispielsweise allen anderen Benutzern den Zugriff auf
die Datei FILE verbieten wollen,
benutzen Sie den nachstehenden Befehl:&prompt.user; chmod go= FILEWenn Sie mehr als eine Änderung der Rechte einer
Datei vornehmen wollen, können Sie eine durch Kommata
getrennte Liste der Rechte angeben. Das folgende Beispiel
entzieht der Gruppe und der Welt (den anderen) die
Schreibberechtigung auf die Datei FILE
und fügt dann für alle Ausführungsrechte
hinzu:&prompt.user; chmod go-w,a+x FILETomRhodesBeigetragen von &os; Datei-FlagsZusätzlich zu den vorhin diskutierten Zugriffsrechten
unterstützt &os; auch die sogenannten
Datei-Flags. Diese erhöhen die Sicherheit
Ihres Systems, indem sie eine verbesserte Kontrolle von
Dateien erlauben. Verzeichnisse werden allerdings nicht
unterstützt.Diese verbesserte Sicherheit führt dazu, dass manche
Dateien nicht einmal von root gelöscht
oder bearbeitet werden können.Datei-Flags können über &man.chflags.1; gesetzt
oder gelöscht werden. Um beispielsweise die Datei
file1 mit dem
unlöschbar-Flag zu sichern, geben Sie
folgenden Befehl ein:&prompt.root; chflags sunlink file1Um dieses Flag wieder zu löschen, geben Sie den
Befehl erneut ein. Allerdings setzen Sie ein
no vor :&prompt.root; chflags nosunlink file1Um die Flags dieser Datei anzuzeigen, verwenden Sie
&man.ls.1; zusammen mit der Option :&prompt.root; ls -lo file1Dadurch erhalten Sie eine Ausgabe ähnlich der
folgenden:-rw-r--r-- 1 trhodes trhodes sunlnk 0 Mar 1 05:54 file1Viele Flags können nur von root
gesetzt oder gelöscht werden. Andere wiederum können
auch vom Eigentümer der Datei gesetzt werden. Weitere
Informationen zu Datei-Flags finden sich in den Manualpages
&man.chflags.1; und &man.chflags.2;.
+
+
+
+
+
+ Tom
+ Rhodes
+ Beigetragen von
+
+
+
+
+ Die Berechtigungen setuid, setgid, und sticky
+
+ Anders als die Berechtigungen, die bereits angesprochen wurden,
+ existieren drei weitere Einstellungen, über die alle
+ Administratoren Bescheid wissen sollten. Dies sind die Berechtigungen
+ setuid, setgid und
+ sticky.
+
+ Diese Einstellungen sind wichtig für manche &unix;-Operationen,
+ da sie Funktionalitäten zur Verfügung stellen, die
+ normalerweise nicht an gewöhnliche Anwender vergeben wird.
+ Um diese zu verstehen, muss der Unterschied zwischen der realen
+ und der effektiven Benutzer-ID erwähnt werden.
+
+ Die reale Benutzer-ID ist die UID, welche den
+ Prozess besitzt oder gestartet hat. Die effektive
+ UID ist diejenige, als die der Prozess läuft.
+ Beispielsweise wird &man.passwd.1; mit der realen ID des Benutzers
+ ausgeführt, der sein Passwort ändert. Um jedoch die
+ Passwortdatenbank zu bearbeiten, wird es effektiv als
+ root-Benutzer ausgeführt. Das
+ ermöglicht es normalen Benutzern, ihr Passwort zu ändern, ohne
+ einen Permission Denied-Fehler angezeigt zu
+ bekommen.
+
+
+ Die nosuid &man.mount.8;-Option wird dafür
+ sorgen, dass diese Anwendungen stillschweigend scheitern. Genauer
+ gesagt, sie werden nicht ausgeführt und der Anwender wird
+ darüber auch nicht informiert. Auf diese Option kann man sich
+ nicht vollständig verlassen, da ein
+ nosuid-Wrapper in der Lage wäre, dies zu
+ umgehen, wie in der &man.mount.8; Manualpage zu lesen ist.
+
+
+ Die setuid-Berechtigung kann durch das Voranstellen bei einer
+ Berechtigungsgruppe mit der Nummer Vier (4) gesetzt werden, wie im
+ folgenden Beispiel gezeigt wird:
+
+ &prompt.root; chmod 4755 suidexample.sh
+
+ Die Berechtigungen auf der
+ suidexample.sh-Datei
+ sollten jetzt wie folgt aussehen:
+
+ -rwsr-xr-x 1 trhodes trhodes 63 Aug 29 06:36 suidexample.sh
+
+ In dem Beispiel sollte auffallen, dass ein s
+ jetzt Teil der Berechtigungen des Dateibesitzers geworden ist, welches
+ das Ausführen-Bit ersetzt. Dies ermöglicht es Werkzeugen
+ mit erhöhten Berechtigungen zu laufen, wie z.B.
+ passwd.
+
+ Um dies in Echtzeit zu beobachten, öffnen Sie zwei Terminals.
+ Starten Sie auf einem den passwd-Prozess als normaler
+ Benutzer. Während es auf die Passworteingabe wartet,
+ überprüfen Sie die Prozesstabelle und sehen Sie sich die
+ Informationen des passwd-Kommandos an.
+
+ Im Terminal A:
+
+ Changing local password for trhodes
+Old Password:
+
+ Im Terminal B:
+
+ &prompt.root; ps aux | grep passwd
+
+ trhodes 5232 0.0 0.2 3420 1608 0 R+ 2:10AM 0:00.00 grep passwd
+ root 5211 0.0 0.2 3620 1724 2 I+ 2:09AM 0:00.01 passwd
+
+ Wie oben erwähnt, wird passwd von einem
+ normalen Benutzer ausgeführt, benutzt aber die effektive
+ UID von root.
+
+ Die setgid-Berechtigung führt die gleiche
+ Aktion wie die setuid-Berechtigung durch, allerdings
+ verändert sie die Gruppenberechtigungen. Wenn eine Anwendung
+ oder ein Werkzeug mit dieser Berechtigung ausgeführt wird,
+ erhält es die Berechtigungen basierend auf der Gruppe, welche die
+ Datei besitzt und nicht die des Benutzers, der den Prozess gestartet
+ hat.
+
+ Um die setgid-Berechtigung auf einer Datei zu
+ setzen, geben Sie dem chmod-Befehl eine
+ führende Zwei (2) mit, wie im folgenden gezeigt:
+
+ &prompt.root; chmod 2755 sgidexample.sh
+
+ Die neue Einstellung kann wie zuvor betrachtet werden. Beachten Sie,
+ dass das s sich jetzt in dem Feld befindet, das
+ für die Berechtigungen der Gruppe bestimmt ist:
+
+ -rwxr-sr-x 1 trhodes trhodes 44 Aug 31 01:49 sgidexample.sh
+
+
+ Obwohl es sich bei dem in diesen Beispielen gezeigten Shellskript
+ um eine ausführbare Datei handelt, wird es nicht mit einer
+ anderen EUID oder effektiven Benutzer-ID
+ ausgeführt. Das ist so, weil Shellskripte keinen Zugriff auf
+ &man.setuid.2;-Systemaufrufe erhalten.
+
+
+ Diese beiden ersten angesprochenen Spezialberechtigungen (die
+ setuid und setgid
+ Berechtigungs-Bits) können die Systemsicherheit verringern, da
+ sie erhöhte Rechte ermöglichen. Es gibt noch ein drittes
+ Berechtigungs-Bit, das die Sicherheit eines Systems erhöhen kann:
+ das sticky bit.
+
+ Das sticky bit erlaubt, wenn es auf ein
+ Verzeichnis angewendet wird, nur dem Besitzer der Datei diese Dateien
+ auch zu löschen. Dieses Recht ist nützlich, um die
+ Löschung von Dateien in öffentlichen Verzeichnissen durch
+ Benutzer, denen diese Dateien nicht gehören, zu verhindern, wie
+ z.B. in /tmp. Um diese Berechtigung anzuwenden,
+ stellen Sie der Berechtigung eine Eins (1) voran, beispielsweise
+ so:
+
+ &prompt.root; chmod 1777 /tmp
+
+ Den Effekt können Sie sich ansehen, indem Sie
+ das Kommando ls ausführen:
+
+ &prompt.root; ls -al / | grep tmp
+
+ drwxrwxrwt 10 root wheel 512 Aug 31 01:49 tmp
+
+ Das sticky bit kann anhand des
+ t ganz am Ende der Berechtigungen abgelesen
+ werden.
+ Verzeichnis-StrukturenVerzeichnis HierarchienDie FreeBSD-Verzeichnishierarchie ist die Grundlage, um
ein umfassendes Verständnis des Systems zu erlangen.
Das wichtigste Konzept, das Sie verstehen sollten, ist das
Root-Verzeichnis /. Dieses Verzeichnis ist das
erste, das während des Bootens eingehangen wird. Es
enthält das notwendige Basissystem, um das System in den
Mehrbenutzerbetrieb zu bringen. Das Root-Verzeichnis enthält
auch die Mountpunkte für Dateisysteme, die beim Wechsel in
den Multiuser-Modus eingehängt werden.Ein Mountpunkt ist ein Verzeichnis, in das zusätzliche
Dateisysteme (in der Regel unterhalb des Wurzelverzeichnisses)
eingehängt werden können. Dieser Vorgang wird in
ausführlich beschrieben.
Standard-Mountpunkte sind /usr,
/var, /tmp,
/mnt sowie /cdrom.
Auf diese Verzeichnisse verweisen üblicherweise Einträge
in der Datei /etc/fstab.
/etc/fstab ist
eine Tabelle mit verschiedenen Dateisystemen und Mountpunkten
als Referenz des Systems. Die meisten der Dateisysteme in
/etc/fstab werden beim Booten automatisch
durch das Skript &man.rc.8; gemountet, wenn die zugehörigen
Einträge nicht mit der Option
versehen sind. Weitere Informationen zu diesem Thema finden Sie
im .Eine vollständige Beschreibung der Dateisystem-Hierarchie
finden Sie in &man.hier.7;. Als Beispiel sei eine kurze
Übersicht über die am häufigsten verwendeten
Verzeichnisse gegeben:VerzeichnisBeschreibung/Wurzelverzeichnis des Dateisystems./bin/Grundlegende Werkzeuge für den Single-User-Modus
sowie den Mehrbenutzerbetrieb./boot/Programme und Konfigurationsdateien, die während
des Bootens benutzt werden./boot/defaults/Vorgaben für die Boot-Konfiguration, siehe
&man.loader.conf.5;./dev/Gerätedateien, siehe &man.intro.4;./etc/Konfigurationsdateien und Skripten des Systems./etc/defaults/Vorgaben für die System Konfigurationsdateien,
siehe &man.rc.8;./etc/mail/Konfigurationsdateien von MTAs wie
&man.sendmail.8;./etc/namedb/Konfigurationsdateien von named,
siehe &man.named.8;./etc/periodic/Täglich, wöchentlich oder monatlich
ablaufende Skripte, die von &man.cron.8; gestartet werden.
Siehe &man.periodic.8;./etc/ppp/Konfigurationsdateien von ppp,
siehe &man.ppp.8;./mnt/Ein leeres Verzeichnis, das von Systemadministratoren
häufig als temporärer Mountpunkt genutzt wird./proc/Prozess Dateisystem, siehe &man.procfs.5;
und &man.mount.procfs.8;./rescue/Statisch gelinkte Programme zur Wiederherstellung
des Systems, lesen Sie dazu auch &man.rescue.8;./root/Home Verzeichnis von root./sbin/Systemprogramme und administrative Werkzeuge, die
grundlegend für den Single-User-Modus und den
Mehrbenutzerbetrieb sind./tmp/Temporäre Dateien, die für gewöhnlich
bei einem Neustart des Systems verloren gehen.
Häufig wird ein speicherbasiertes Dateisystem unter
/tmp
eingehängt. Dieser Vorgang kann automatisiert werden,
wenn Sie die tmpmfs-bezogenen Variablen von
&man.rc.conf.5; verwenden. Alternativ können Sie
auch einen entsprechenden Eintrag in
/etc/fstab aufnehmen. Weitere
Informationen finden Sie in &man.mdmfs.8;./usr/Der Großteil der Benutzerprogramme und
Anwendungen./usr/bin/Gebräuchliche Werkzeuge, Programmierhilfen und
Anwendungen./usr/include/Standard C include-Dateien./usr/lib/Bibliotheken./usr/libdata/Daten verschiedener Werkzeuge./usr/libexec/System-Dämonen und System-Werkzeuge, die von
anderen Programmen ausgeführt werden./usr/local/Lokale Programme, Bibliotheken usw. Die Ports-Sammlung
benutzt dieses Verzeichnis als Zielverzeichnis für zu
installierende Anwendungen. Innerhalb von
/usr/local sollte das von
&man.hier.7; beschriebene Layout für
/usr benutzt werden. Das
man Verzeichnis wird direkt unter
/usr/local anstelle unter
/usr/local/share angelegt. Die
Dokumentation der Ports findet sich in
share/doc/port.
/usr/obj/Von der Architektur abhängiger Verzeichnisbaum,
der durch das Bauen von /usr/src
entsteht./usr/portsDie FreeBSD-Ports-Sammlung (optional)./usr/sbin/System-Dämonen und System-Werkzeuge, die von
Benutzern ausgeführt werden./usr/share/Von der Architektur unabhängige Dateien./usr/src/Quelldateien von BSD und/oder lokalen
Ergänzungen./usr/X11R6/Optionale X11R6-Programme und Bibliotheken./var/Wird für mehrere Zwecke genutzt und enthält
Logdateien, temporäre Daten und Spooldateien.
Manchmal wird ein speicherbasiertes Dateisystem unter
/var
eingehängt. Dieser Vorgang kann automatisiert werden,
wenn Sie die varmfs-bezogenen Variablen von
&man.rc.conf.5; verwenden. Alternativ können Sie
auch einen entsprechenden Eintrag in
/etc/fstab aufnehmen. Weitere
Informationen finden Sie in &man.mdmfs.8;./var/log/Verschiedene Logdateien des Systems./var/mail/Postfächer der Benutzer./var/spool/Verschiedene Spool-Verzeichnisse der Drucker- und
Mailsysteme./var/tmp/Temporäre Dateien. Dateien in diesem
Verzeichnis bleiben in der Regel auch bei einem Neustart
des Systems erhalten, es sei denn, bei
/var handelt es
sich um ein speicherbasiertes Dateisystem./var/ypNIS maps.Festplatten, Slices und Partitionen&os; identifiziert Dateien anhand eines Dateinamens.
In Dateinamen wird zwischen Groß- und Kleinschreibung
unterschieden: readme.txt und
README.TXT bezeichnen daher zwei
verschiedene Dateien. &os; benutzt keine Dateiendungen wie
.txt, um den Typ der Datei
(ein Programm, ein Dokument oder andere Daten) zu
bestimmen.Dateien werden in Verzeichnissen gespeichert. In einem
Verzeichnis können sich keine oder hunderte Dateien
befinden. Ein Verzeichnis kann auch andere Verzeichnisse
enthalten und so eine Hierarchie von Verzeichnissen aufbauen,
die Ihnen die Ablage von Daten erleichtert.In Dateinamen werden Verzeichnisse durch einen
Schrägstrich (/,
Slash) getrennt. Wenn
das Verzeichnis foo
ein Verzeichnis bar
enthält, in dem sich die Datei readme.txt
befindet, lautet der vollständige Name der Datei
(oder der Pfad zur Datei)
foo/bar/readme.txt.Verzeichnisse und Dateien werden in einem Dateisystem
gespeichert. Jedes Dateisystem besitzt ein
Wurzelverzeichnis
(Root-Directory),
das weitere Verzeichnisse enthalten kann.Dieses Konzept kennen Sie vielleicht von anderen
Betriebssystemen, aber es gibt einige Unterschiede:
In &ms-dos; werden Datei- und Verzeichnisnamen mit dem
Zeichen \ getrennt, &macos; benutzt
dazu das Zeichen :.&os; kennt keine Laufwerksbuchstaben und in Pfaden
werden keine Bezeichnungen für Laufwerke benutzt.
Die Pfadangabe c:/foo/bar/readme.txt
gibt es in &os; nicht.Stattdessen wird ein Dateisystem als Wurzeldateisystem
(root file system)
ausgewählt. Das Wurzelverzeichnis dieses Dateisystems
wird / genannt.
Jedes andere Dateisystem wird unter dem Wurzeldateisystem
eingehangen
(mount). Daher scheint
jedes Verzeichnis, unabhängig von der Anzahl der
Platten, auf derselben Platte zu liegen.Betrachten wir drei Dateisysteme A,
B und C. Jedes
Dateisystem besitzt ein eigenes Wurzelverzeichnis, das
zwei andere Verzeichnisse enthält:
A1,
A2,
B1,
B2,
C1 und
C2.Das Wurzeldateisystem soll A sein.
Das Kommando ls zeigt darin
die beiden Verzeichnisse A1
und A2 an.
Der Verzeichnisbaum sieht wie folgt aus: /
|
+--- A1
|
`--- A2Ein Dateisystem wird in einem Verzeichnis eines anderen
Dateisystems eingehangen. Wir hängen nun das Dateisystem
B in das Verzeichnis
A1 ein. Das
Wurzelverzeichnis von B ersetzt nun
das Verzeichnis A1 und
die Verzeichnisse des Dateisystems B
werden sichtbar: /
|
+--- A1
| |
| +--- B1
| |
| `--- B2
|
`--- A2Jede Datei in den Verzeichnissen
B1 oder
B2 kann
über den Pfad /A1/B1
oder /A1/B2
erreicht werden. Dateien aus dem Verzeichnis
/A1 sind jetzt
verborgen. Wenn das Dateisystem B
wieder abgehangen wird
(umount), erscheinen
die verborgenen Dateien wieder.Wenn das Dateisystem B unter dem
Verzeichnis A2
eingehangen würde, sähe der Verzeichnisbaum
so aus: /
|
+--- A1
|
`--- A2
|
+--- B1
|
`--- B2Die Dateien des Dateisystems B wären
unter den Pfaden /A2/B1 und
/A2/B2 erreichbar.Dateisysteme können übereinander eingehangen
werden. Der folgende Baum entsteht, wenn im letzten
Beispiel das Dateisystem C in das Verzeichnis
B1 des Dateisystems
B eingehangen wird: /
|
+--- A1
|
`--- A2
|
+--- B1
| |
| +--- C1
| |
| `--- C2
|
`--- B2C könnte auch im Verzeichnis
A1 eingehangen
werden: /
|
+--- A1
| |
| +--- C1
| |
| `--- C2
|
`--- A2
|
+--- B1
|
`--- B2Der &ms-dos;-Befehl join kann Ähnliches
bewirken.Normalerweise müssen Sie sich nicht mit Dateisystemen
beschäftigen. Während der Installation werden
die Dateisysteme und die Stellen, in der sie eingehangen werden,
festgelegt. Dateisysteme müssen Sie erst wieder anlegen,
wenn Sie eine neue Platte hinzufügen.Sie können sogar mit nur einem großen
Dateisystem auskommen. Dies hat mehrere Nachteile
und einen Vorteil.Vorteile mehrerer DateisystemeDie Dateisysteme können mit unterschiedlichen
Optionen (mount options)
eingehangen werden. Bei sorgfältiger Planung können
Sie beispielsweise das Wurzeldateisystem nur lesbar
einhängen. Damit schützen Sie sich vor dem
unabsichtlichen Löschen oder Editieren kritischer
Dateien. Von Benutzern beschreibbare Dateisysteme
wie /home
können Sie mit der Option nosuid
einhängen, wenn sie von anderen Dateisystemen getrennt
sind. Die SUID- und
GUID-Bits verlieren auf solchen
Dateisystemen ihre Wirkung und die Sicherheit des
Systems kann dadurch erhöht werden.Die Lage von Dateien im Dateisystem wird, abhängig
vom Gebrauch des Dateisystems, automatisch von &os;
optimiert. Ein Dateisystem mit vielen kleinen Dateien,
die häufig geschrieben werden, wird anders behandelt
als ein Dateisystem mit wenigen großen Dateien.
Mit nur einem Dateisystem ist diese Optimierung
unmöglich.In der Regel übersteht ein &os;-Dateisystem auch
einen Stromausfall. Allerdings kann ein Stromausfall zu
einem kritischen Zeitpunkt das Dateisystem beschädigen.
Wenn die Daten über mehrere Dateisysteme verteilt
sind, lässt sich das System mit hoher
Wahrscheinlichkeit noch starten. Dies erleichtert
das Zurückspielen von Datensicherungen.Vorteil eines einzelnen DateisystemsDie Größe von Dateisystemen liegt fest.
Es kann passieren, dass Sie eine Partition
vergrößern müssen. Dies ist nicht leicht:
Sie müssen die Daten sichern, das Dateisystem
vergrößert anlegen und die gesicherten
Daten zurückspielen.&os; kennt den Befehl &man.growfs.8;, mit dem man
Dateisysteme im laufenden Betrieb
vergrößern kann.Dateisysteme befinden sich in Partitionen (damit sind
nicht die normalen &ms-dos;-Partitionen gemeint). Jede Partition
wird mit einem Buchstaben von a bis
h bezeichnet und kann nur ein Dateisystem
enthalten. Dateisysteme können daher über ihren
Mount-Point, den Punkt an dem sie eingehangen sind, oder
den Buchstaben der Partition, in der sie liegen, identifiziert
werden.&os; benutzt einen Teil der Platte für den
Swap-Bereich, der dem Rechner
virtuellen Speicher zur Verfügung
stellt. Dadurch kann der Rechner Anwendungen mehr Speicher
zur Verfügung stellen als tatsächlich eingebaut
ist. Wenn der Speicher knapp wird, kann &os; nicht benutzte
Daten in den Swap-Bereich auslagern. Die ausgelagerten
Daten können später wieder in den Speicher
geholt werden (dafür werden dann andere Daten
ausgelagert).Für einige Partitionen gelten besondere
Konventionen:PartitionKonventionaEnthält normalerweise
das WurzeldateisystembEnthält normalerweise
den Swap-BereichcIst normalerweise genauso groß wie
die Slice in der die Partition liegt. Werkzeuge,
die auf der kompletten Slice arbeiten, wie ein
Bad-Block-Scanner, können so die
c-Partition benutzen.
Für gewöhnlich legen Sie in dieser
Partition kein Dateisystem an.dFrüher hatte die d-Partition
eine besondere Bedeutung. Heute ist dies nicht mehr der
Fall und die Partition d kann wie
jede andere Partition auch verwendet werden.Jede Partition, die ein Dateisystem enthält,
wird in einer Slice angelegt.
Slice ist der Begriff, den &os; für &ms-dos;-Partitionen
verwendet. Slices werden von eins bis vier durchnummeriert.SlicesPartitionendangerously dedicatedDie Slice-Nummern werden mit vorgestelltem
s hinter den Gerätenamen gestellt:
da0s1
ist die erste Slice auf dem ersten SCSI-Laufwerk. Auf einer
Festplatte gibt es höchstens vier Slices. In einer
Slice des passenden Typs kann es weitere logische Slices
geben. Diese erweiterten Slices werden ab fünf durchnummeriert:
ad0s5 ist
die erste erweiterte Slice auf einer IDE-Platte. Diese
Geräte werden von Dateisystemen benutzt, die sich in
einer kompletten Slice befinden müssen.Slices, dangerously dedicated-Festplatten
und andere Platten enthalten Partitionen, die mit Buchstaben
von a bis h bezeichnet
werden. Der Buchstabe wird an den Gerätenamen
gehangen: da0a
ist die a-Partition des ersten
da-Laufwerks. Dieses Laufwerk ist
dangerously dedicated.
ad1s3e ist
die fünfte Partition in der dritten Slice der zweiten
IDE-Platte.Schließlich wird noch jede Festplatte des Systems
eindeutig bezeichnet. Der Name einer Festplatte beginnt mit
einem Code, der den Typ der Platte bezeichnet. Es folgt eine
Nummer, die angibt, um welche Festplatte es sich handelt.
Anders als bei Slices werden Festplatten von Null beginnend
durchnummeriert. Gängige Festplatten-Namen sind in
zusammengestellt.Wenn Sie eine Partition angeben, erwartet &os;, dass Sie
auch die Slice und die Platte angeben, in denen sich die
Partition befindet. Wenn Sie eine Slice angeben, müssen
Sie auch die Platte der Slice angeben. Setzen Sie den Namen
aus dem Plattennamen gefolgt von einem s,
der Slice-Nummer und dem Buchstaben der Partition zusammen.
Einige Beispiele finden Sie in
.Der Aufbau einer Festplatte wird in
dargestellt.Um &os; zu installieren, müssen Sie zuerst Slices
auf den Festplatten anlegen. Innerhalb der Slices, die Sie
für &os; verwenden wollen, müssen Sie dann
Partitionen anlegen. In den Partitionen wiederum werden
die Dateisysteme (oder der Auslagerungsbereich) angelegt.
Für Dateisysteme müssen Sie schließlich
noch festlegen, wo diese eingehangen werden (Mount-Point).
Namen von Platten, Slices und PartitionenNameBedeutungad0s1aDie erste Partition (a)
in der ersten Slice (s1) der
ersten IDE-Festplatte (ad0).da1s2eDie fünfte Partition (e)
der zweiten Slice (s2) auf
der zweiten SCSI-Festplatte
(da1).Aufteilung einer FestplatteDas folgende Diagramm zeigt die Sicht von &os; auf die
erste IDE-Festplatte eines Rechners. Die Platte soll
4 GB groß sein und zwei Slices (&ms-dos;-Partitionen)
mit je 2 GB besitzen. Die erste Slice enthält
ein &ms-dos;-Laufwerk (C:), die zweite
Slice wird von &os; benutzt. Im Beispiel verwendet die
&os;-Installationen drei Datenpartitionen und einen
Auslagerungsbereich.Jede der drei Partitionen enthält ein Dateisystem.
Das Wurzeldateisystem ist die a-Partition.
In der e-Partition befindet sich
der /var-Verzeichnisbaum
und in der f-Partition befindet sich
der Verzeichnisbaum unterhalb von
/usr..-----------------. --.
| | |
| DOS / Windows | |
: : > First slice, ad0s1
: : |
| | |
:=================: ==: --.
| | | Partition a, mounted as / |
| | > referred to as ad0s2a |
| | | |
:-----------------: ==: |
| | | Partition b, used as swap |
| | > referred to as ad0s2b |
| | | |
:-----------------: ==: | Partition c, no
| | | Partition e, used as /var > file system, all
| | > referred to as ad0s2e | of FreeBSD slice,
| | | | ad0s2c
:-----------------: ==: |
| | | |
: : | Partition f, used as /usr |
: : > referred to as ad0s2f |
: : | |
| | | |
| | --' |
`-----------------' --'Anhängen und Abhängen von DateisystemenEin Dateisystem wird am besten als ein Baum mit der
Wurzel / veranschaulicht.
/dev, /usr, und
die anderen Verzeichnisse im Rootverzeichnis sind Zweige,
die wiederum eigene Zweige wie /usr/local
haben können.Root-DateisystemEs gibt verschiedene Gründe, bestimmte dieser Verzeichnisse
auf eigenen Dateisystemen anzulegen. /var
enthält log/, spool/
sowie verschiedene andere temporäre
Dateien und kann sich daher schnell füllen. Es empfiehlt sich,
/var von / zu trennen,
da es schlecht ist, wenn das Root-Dateisystem voll
läuft.Ein weiterer Grund bestimmte Verzeichnisbäume auf
andere Dateisysteme zu legen, ist gegeben, wenn sich die
Verzeichnisbäume auf gesonderten physikalischen oder
virtuellen Platten, wie
Network File System
oder CD-ROM-Laufwerken, befinden.Die fstab DateiDateisystemefstabWährend des Boot-Prozesses
werden in /etc/fstab aufgeführte
Verzeichnisse, sofern sie nicht mit der Option
versehen sind, automatisch angehangen.Die Zeilen in /etc/fstab haben das
folgende Format:device/mount-pointfstypeoptionsdumpfreqpassnodeviceEin existierender Gerätename
wie in beschrieben.mount-pointEin existierendes Verzeichnis,
an das das Dateisystem angehangen wird.fstypeDer Typ des Dateisystems,
der an &man.mount.8; weitergegeben wird. FreeBSDs
Standarddateisystem ist ufs.optionsEntweder
für beschreibbare Dateisysteme oder
für schreibgeschützte Dateisysteme, gefolgt von
weiteren benötigten Optionen. Eine häufig verwendete
Option ist für Dateisysteme,
die während der normalen Bootsequenz nicht angehangen
werden sollen. Weitere Optionen finden sich
in &man.mount.8;.dumpfreqGibt die Anzahl der Tage an, nachdem das
Dateisystem gesichert werden soll. Fehlt der Wert, wird
0 angenommen.passnoBestimmt die Reihenfolge, in der die Dateisysteme
überprüft werden sollen. Für Dateisysteme,
die übersprungen werden sollen, ist
passno auf null zu setzen. Für das
Root-Dateisystem, das vor allen anderen überprüft
werden muss, sollte der Wert von
passno eins betragen. Allen anderen
Dateisystemen sollten Werte größer eins zugewiesen
werden. Wenn mehrere Dateisysteme den gleichen Wert
besitzen, wird &man.fsck.8; versuchen, diese parallel zu
überprüfen.Das mount KommandoDateisystemeanhängen&man.mount.8; hängt schließlich Dateisysteme
an.In der grundlegenden Form wird es wie folgt benutzt:&prompt.root; mount devicemountpointViele Optionen werden in &man.mount.8; beschrieben,
die am häufigsten verwendeten sind:Optionen von mountHängt alle Dateisysteme aus
/etc/fstab an. Davon ausgenommen
sind Dateisysteme, die mit noauto markiert
sind, die mit der Option ausgeschlossen
wurden und Dateisysteme, die schon angehangen sind.Führt alles bis auf den
mount-Systemaufruf aus.
Nützlich ist diese Option in Verbindung
mit . Damit wird angezeigt, was
&man.mount.8; tatsächlich versuchen
würde, um das Dateisystem anzuhängen.Erzwingt das Anhängen eines unsauberen Dateisystems
oder erzwingt die Rücknahme des Schreibzugriffs, wenn
der Status des Dateisystems von beschreibbar auf
schreibgeschützt geändert wird.Hängt das Dateisystem schreibgeschützt ein. Das
kann auch durch Angabe von als Argument
( vor FreeBSD 5.2) der Option
erreicht werden.fstypeHängt das Dateisystem mit dem angegebenen Typ an,
oder hängt nur Dateisysteme mit dem angegebenen Typ
an, wenn auch angegeben
wurde.Die Voreinstellung für den Typ des Dateisystems
ist ufs.Aktualisiert die Mountoptionen des Dateisystems.Geschwätzig sein.Hängt das Dateisystem beschreibbar an. erwartet eine durch Kommata separierte Liste
von Optionen, unter anderem die folgenden:noexecVerbietet das Ausführen von binären
Dateien auf dem Dateisystem. Dies ist eine
nützliche Sicherheitsfunktion.nosuidSetUID und SetGID Bits werden auf dem Dateisystem
nicht beachtet. Dies ist eine nützliche
Sicherheitsfunktion.Das umount KommandoDateisystemeabhängen&man.umount.8; akzeptiert als Parameter entweder
einen Mountpoint, einen Gerätenamen, oder die
Optionen oder .Jede Form akzeptiert , um das
Abhängen zu erzwingen, und , um
etwas geschwätziger zu sein. Seien Sie bitte vorsichtig mit
: Ihr Computer kann abstürzen oder es
können Daten auf dem Dateisystem beschädigt werden, wenn
Sie das Abhängen erzwingen. und werden benutzt
um alle Dateisysteme, deren Typ durch
modifiziert werden kann, abzuhängen.
hängt das Rootdateisystem nicht ab.ProzesseDa FreeBSD ein Multitasking-Betriebssystem ist, sieht es so aus,
als ob mehrere Prozesse zur gleichen Zeit laufen. Jedes Programm,
das zu irgendeiner Zeit läuft, wird
Prozess genannt. Jedes Kommando
startet mindestens einen Prozess. Einige Systemprozesse
laufen ständig und stellen die Funktion des Systems sicher.Jeder Prozess wird durch eine eindeutige Nummer identifiziert,
die Prozess-ID oder
PID genannt wird. Prozesse haben ebenso
wie Dateien einen Besitzer und eine Gruppe, die festlegen, welche
Dateien und Geräte der Prozess benutzen kann. Dabei
finden die vorher beschriebenen Zugriffsrechte Anwendung. Die meisten
Prozesse haben auch einen Elternprozess, der sie gestartet hat.
Wenn Sie in der Shell Kommandos eingeben, dann ist die Shell ein
Prozess und jedes Kommando, das Sie starten, ist auch ein
Prozess. Jeder Prozess, den Sie auf diese Weise starten,
besitzt den Shell-Prozess als Elternprozess. Die Ausnahme
hiervon ist ein spezieller Prozess, der &man.init.8;
heißt. init ist immer der erste Prozess
und hat somit die PID 1. init wird vom Kernel
beim Booten von FreeBSD gestartet.Die Kommandos &man.ps.1; und &man.top.1; sind besonders
nützlich, um sich die Prozesse auf einem System anzusehen.
ps zeigt eine statische Liste der laufenden
Prozesse und kann deren PID, Speicherverbrauch und die
Kommandozeile, mit der sie gestartet wurden und vieles mehr
anzeigen. top zeigt alle laufenden Prozesse
an und aktualisiert die Anzeige, so dass Sie Ihrem Computer
bei der Arbeit zuschauen können.Normal zeigt Ihnen ps nur die laufenden
Prozesse, die Ihnen gehören. Zum Beispiel:&prompt.user; ps
PID TT STAT TIME COMMAND
298 p0 Ss 0:01.10 tcsh
7078 p0 S 2:40.88 xemacs mdoc.xsl (xemacs-21.1.14)
37393 p0 I 0:03.11 xemacs freebsd.dsl (xemacs-21.1.14)
48630 p0 S 2:50.89 /usr/local/lib/netscape-linux/navigator-linux-4.77.bi
48730 p0 IW 0:00.00 (dns helper) (navigator-linux-)
72210 p0 R+ 0:00.00 ps
390 p1 Is 0:01.14 tcsh
7059 p2 Is+ 1:36.18 /usr/local/bin/mutt -y
6688 p3 IWs 0:00.00 tcsh
10735 p4 IWs 0:00.00 tcsh
20256 p5 IWs 0:00.00 tcsh
262 v0 IWs 0:00.00 -tcsh (tcsh)
270 v0 IW+ 0:00.00 /bin/sh /usr/X11R6/bin/startx -- -bpp 16
280 v0 IW+ 0:00.00 xinit /home/nik/.xinitrc -- -bpp 16
284 v0 IW 0:00.00 /bin/sh /home/nik/.xinitrc
285 v0 S 0:38.45 /usr/X11R6/bin/sawfishWie Sie sehen, gibt &man.ps.1; mehrere Spalten aus. In der
PID Spalte findet sich die vorher besprochene
Prozess-ID. PIDs werden von 1 beginnend bis 99999 zugewiesen
und fangen wieder von vorne an, wenn die Grenze überschritten
wird. Ist eine PID bereits vergeben, wird diese allerdings nicht
erneut vergeben.
Die Spalte TT zeigt den Terminal, auf dem das
Programm läuft. STAT zeigt den Status
des Programms an und kann für die Zwecke dieser Diskussion ebenso
wie TT ignoriert werden. TIME
gibt die Zeit an, die das Programm auf der CPU gelaufen ist –
dies ist nicht unbedingt die Zeit, die seit dem Start des Programms
vergangen ist, da die meisten Programme hauptsächlich auf
bestimmte Dinge warten, bevor sie wirklich CPU-Zeit verbrauchen.
Unter der Spalte COMMAND finden Sie schließlich
die Kommandozeile, mit der das Programm gestartet wurde.&man.ps.1; besitzt viele Optionen, um die angezeigten Informationen
zu beeinflussen. Eine nützliche Kombination ist
auxww. Mit werden Information
über alle laufenden Prozesse und nicht nur Ihrer eigenen
angezeigt. Der Name des Besitzers des Prozesses, sowie Informationen
über den Speicherverbrauch werden mit
angezeigt. zeigt auch Dämonen-Prozesse an,
und veranlasst &man.ps.1; die komplette
Kommandozeile für jeden Befehl anzuzeigen, anstatt sie
abzuschneiden, wenn sie zu lang für die Bildschirmausgabe
wird.Die Ausgabe von &man.top.1; sieht ähnlich aus:&prompt.user; top
last pid: 72257; load averages: 0.13, 0.09, 0.03 up 0+13:38:33 22:39:10
47 processes: 1 running, 46 sleeping
CPU states: 12.6% user, 0.0% nice, 7.8% system, 0.0% interrupt, 79.7% idle
Mem: 36M Active, 5256K Inact, 13M Wired, 6312K Cache, 15M Buf, 408K Free
Swap: 256M Total, 38M Used, 217M Free, 15% Inuse
PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND
72257 nik 28 0 1960K 1044K RUN 0:00 14.86% 1.42% top
7078 nik 2 0 15280K 10960K select 2:54 0.88% 0.88% xemacs-21.1.14
281 nik 2 0 18636K 7112K select 5:36 0.73% 0.73% XF86_SVGA
296 nik 2 0 3240K 1644K select 0:12 0.05% 0.05% xterm
48630 nik 2 0 29816K 9148K select 3:18 0.00% 0.00% navigator-linu
175 root 2 0 924K 252K select 1:41 0.00% 0.00% syslogd
7059 nik 2 0 7260K 4644K poll 1:38 0.00% 0.00% mutt
...Die Ausgabe ist in zwei Abschnitte geteilt. In den ersten
fünf Kopfzeilen finden sich die zuletzt zugeteilte PID, die
Systemauslastung (engl. load average),
die Systemlaufzeit (die Zeit seit dem letzten Reboot) und die
momentane Zeit. Die weiteren Zahlen im Kopf beschreiben wie viele
Prozesse momentan laufen (im Beispiel 47), wie viel Speicher
und Swap verbraucht wurde und wie viel Zeit das System in den
verschiedenen CPU-Modi verbringt.Darunter befinden sich einige Spalten mit ähnlichen
Informationen wie in der Ausgabe von &man.ps.1;. Wie im vorigen
Beispiel können Sie die PID, den Besitzer, die verbrauchte
CPU-Zeit und das Kommando erkennen. &man.top.1; zeigt auch den
Speicherverbrauch des Prozesses an, der in zwei Spalten aufgeteilt
ist. Die erste Spalte gibt den gesamten Speicherverbrauch des
Prozesses an, in der zweiten Spalte wird der aktuelle Verbrauch
angegeben. &netscape; hat im gezeigten
Beispiel insgesamt 30 MB Speicher verbraucht. Momentan benutzt
es allerdings nur 9 MB.Die Anzeige wird von &man.top.1; automatisch alle zwei Sekunden
aktualisiert. Der Zeitraum kann mit eingestellt
werden.Dämonen, Signale und Stoppen von ProzessenWenn Sie einen Editor starten, können Sie ihn leicht bedienen
und Dateien laden. Sie können das, weil der Editor dafür
Vorsorge getroffen hat und auf einem Terminal
läuft. Manche Programme erwarten keine Eingaben von einem
Benutzer und lösen sich bei erster Gelegenheit von ihrem
Terminal. Ein Web-Server zum Beispiel verbringt den ganzen Tag
damit, auf Anfragen zu antworten und erwartet keine Eingaben von Ihnen.
Programme, die E-Mail von einem Ort zu einem anderen Ort transportieren
sind ein weiteres Beispiel für diesen Typ von Anwendungen.Wir nennen diese Programme Dämonen.
Dämonen stammen aus der griechischen Mythologie und waren
weder gut noch böse. Sie waren kleine dienstbare Geister,
die meistens nützliche Sachen für die Menschheit vollbrachten.
Ähnlich wie heutzutage Web-Server und Mail-Server nützliche
Dienste verrichten. Seit langer Zeit ist daher das BSD Maskottchen
dieser fröhlich aussehende Dämon mit Turnschuhen
und Dreizack.Programme, die als Dämon laufen, werden entsprechend einer
Konvention mit einem d am Ende benannt.
BIND steht beispielsweise für
Berkeley Internet Name Domain, das tatsächlich laufende Programm
heißt aber
named. Der Apache Webserver wird
httpd genannt, der Druckerspool-Dämon heißt
lpd usw. Dies ist allerdings eine Konvention
und keine unumstößliche Regel: Der Dämon der
Anwendung sendmail heißt
sendmail und nicht maild, wie
Sie vielleicht gedacht hatten.Manchmal müssen Sie mit einem Dämon kommunizieren. Dazu
verwenden Sie Signale. Sie können
mit einem Dämonen oder jedem anderen laufenden Prozess
kommunizieren, indem Sie diesem ein Signal schicken. Sie können
verschiedene Signale verschicken – manche haben eine festgelegte
Bedeutung, andere werden von der Anwendung interpretiert. Die
Dokumentation zur fraglichen Anwendung wird erklären, wie
die Anwendung Signale interpretiert. Sie können nur Signale
zu Prozessen senden, die Ihnen gehören. Normale Benutzer haben
nicht die Berechtigung, Prozessen anderer Benutzer mit &man.kill.1;
oder &man.kill.2; Signale zu schicken. Der Benutzer
root darf jedem Prozess Signale schicken.In manchen Fällen wird FreeBSD Signale senden. Wenn eine
Anwendung schlecht geschrieben ist und auf Speicher zugreift, auf
den sie nicht zugreifen soll, so sendet FreeBSD dem Prozess
das Segmentation Violation Signal
(SIGSEGV). Wenn eine Anwendung den &man.alarm.3;
Systemaufruf benutzt hat, um nach einiger Zeit benachrichtigt zu
werden, bekommt sie das Alarm Signal (SIGALRM)
gesendet.Zwei Signale können benutzt werden, um Prozesse zu stoppen:
SIGTERM und SIGKILL. Mit
SIGTERM fordern Sie den Prozess höflich zum
Beenden auf. Der Prozess kann das Signal abfangen und merken,
dass er sich beenden soll. Er hat dann Gelegenheit Logdateien
zu schließen und die Aktion, die er vor der Aufforderung
sich zu beenden durchführte, abzuschließen. Er kann
sogar SIGTERM ignorieren, wenn er eine Aktion
durchführt, die nicht unterbrochen werden darf.SIGKILL kann von keinem Prozess ignoriert
werden. Das Signal lässt sich mit Mich interessiert
nicht, was du gerade machst, hör sofort auf damit!
umschreiben. Wenn Sie einem Prozess SIGKILL
schicken, dann wird FreeBSD diesen sofort beenden
Das stimmt nicht ganz: Es gibt Fälle, in denen ein Prozess
nicht unterbrochen werden kann. Wenn der Prozesss zum Beispiel
eine Datei von einem anderen Rechner auf dem Netzwerk liest und dieser
Rechner aus irgendwelchen Gründen nicht erreichbar ist
(ausgeschaltet, oder ein Netzwerkfehler), dann ist der Prozess
nicht zu unterbrechen. Wenn der Prozess den Lesezugriff
nach einem Timeout von typischerweise zwei Minuten aufgibt,
dann wir er beendet..Andere Signale, die Sie vielleicht verschicken wollen, sind
SIGHUP, SIGUSR1 und
SIGUSR2. Diese Signale sind für allgemeine
Zwecke vorgesehen und verschiedene Anwendungen werden unterschiedlich
auf diese Signale reagieren.Nehmen wir an, Sie haben die Konfiguration Ihres Webservers
verändert und möchten dies dem Server mitteilen. Sie
könnten den Server natürlich stoppen und
httpd wieder starten. Die Folge wäre eine
kurze Zeit, in der der Server nicht erreichbar ist. Die meisten
Dämonen lesen Ihre Konfigurationsdatei beim Empfang eines
SIGHUP neu ein. Da es keinen Standard gibt, der
vorschreibt, wie auf diese Signale zu reagieren ist, lesen
Sie bitte die Dokumentation zu dem in Frage kommenden Dämon.Mit &man.kill.1; können Sie, wie unten gezeigt, Signale
verschicken.Verschicken von SignalenDas folgende Beispiel zeigt, wie Sie &man.inetd.8; ein
Signal schicken. Die Konfigurationsdatei von
inetd ist /etc/inetd.conf.
Diese Konfigurationsdatei liest inetd ein,
wenn er ein SIGHUP empfängt.Suchen Sie die Prozess-ID des Prozesses, dem Sie ein Signal
schicken wollen. Benutzen Sie dazu &man.ps.1; und &man.grep.1;.
Mit &man.grep.1; können Sie in einer Ausgabe nach einem
String suchen. Da &man.inetd.8; unter dem Benutzer
root läuft und Sie das Kommando als
normaler Benutzer absetzen, müssen Sie &man.ps.1; mit
aufrufen:&prompt.user; ps -ax | grep inetd
198 ?? IWs 0:00.00 inetd -wWDie Prozess-ID von &man.inetd.8; ist 198. In einigen
Fällen werden Sie auch das grep inetd
Kommando in der Ausgabe sehen. Dies hat damit zu tun, wie
&man.ps.1; die Liste der laufenden Prozesse untersucht.Senden Sie das Signal mit &man.kill.1;. Da &man.inetd.8;
unter dem Benutzer root läuft, müssen
Sie zuerst mit &man.su.1; root werden:&prompt.user; suPassword:
&prompt.root; /bin/kill -s HUP 198&man.kill.1; wird, wie andere Kommandos von &unix; Systemen auch, keine Ausgabe
erzeugen, wenn das Kommando erfolgreich war. Wenn Sie versuchen,
einem Prozess, der nicht Ihnen gehört, ein Signal zu
senden, dann werden Sie die Meldung
kill: PID: Operation not
permitted sehen. Wenn Sie sich bei der Eingabe der
PID vertippen, werden Sie das Signal dem falschen Prozess
schicken, was schlecht sein kann. Wenn Sie Glück haben,
existiert der Prozess nicht und Sie werden mit der Ausgabe
kill: PID: No such
process belohnt.Warum soll ich /bin/kill benutzen?Viele Shells stellen kill als internes
Kommando zur Verfügung, das heißt die Shell sendet
das Signal direkt, anstatt /bin/kill
zu starten. Das kann nützlich sein, aber die
unterschiedlichen Shells benutzen eine verschiedene Syntax,
um die Namen der Signale anzugeben. Anstatt jede Syntax zu
lernen, kann es einfacher sein, /bin/kill
... direkt aufzurufen.Andere Signale senden Sie auf die gleiche Weise, ersetzen
Sie nur TERM oder KILL
entsprechend.Es kann gravierende Auswirkungen haben, wenn Sie zufällig
Prozesse beenden. Insbesondere &man.init.8; mit der Prozess-ID
ist ein Spezialfall. Mit /bin/kill -s KILL 1
können Sie Ihr System schnell herunterfahren.
Überprüfen Sie die Argumente von &man.kill.1;
immer zweimal bevor
Sie Return drücken.ShellsShellsKommandozeileVon der tagtäglichen Arbeit mit FreeBSD wird eine Menge
mit der Kommandozeilen Schnittstelle der Shell erledigt. Die
Hauptaufgabe einer Shell besteht darin, Kommandos der Eingabe
anzunehmen und diese auszuführen. Viele Shells haben
außerdem eingebaute Funktionen, die die tägliche
Arbeit erleichtern, beispielsweise eine Dateiverwaltung,
die Vervollständigung von Dateinamen (Globbing), einen
Kommandozeileneditor, sowie Makros und Umgebungsvariablen. FreeBSD
enthält die Shells sh (die Bourne Shell) und
tcsh (die verbesserte C-Shell) im Basissystem.
Viele andere Shells, wie zsh oder
bash, befinden sich in der Ports-Sammlung.Welche Shell soll ich benutzen? Das ist wirklich eine
Geschmacksfrage. Sind Sie ein C-Programmierer, finden Sie
vielleicht eine C-artige Shell wie die tcsh
angenehmer. Kommen Sie von Linux oder ist Ihnen der Umgang mit &unix; Systemen
neu, so könnten Sie die bash probieren.
Der Punkt ist, dass
jede Shell ihre speziellen Eigenschaften hat, die mit Ihrer
bevorzugten Arbeitsumgebung harmonieren können oder nicht.
Sie müssen sich eine Shell aussuchen.Ein verbreitetes Merkmal in Shells ist die
Dateinamen-Vervollständigung. Sie müssen nur einige
Buchstaben eines Kommandos oder eines Dateinamen eingeben und
die Shell vervollständigt den Rest automatisch durch
drücken der Tab-Taste. Hier ist ein Beispiel.
Angenommen, Sie
haben zwei Dateien foobar und
foo.bar. Die Datei
foo.bar möchten Sie löschen. Nun
würden Sie an der Tastatur eingeben:
rm fo[Tab].
[Tab].Die Shell würde dann rm
foo[BEEP].bar ausgeben.[BEEP] meint den Rechner-Piepser. Diesen gibt die Shell
aus, um anzuzeigen, dass es den Dateinamen nicht
vervollständigen konnte, da es mehrere Möglichkeiten
gibt. Beide Dateien foobar und
foo.bar beginnen mit fo,
so konnte nur bis foo ergänzt werden.
Nachdem Sie . eingaben und dann die
Tab-Taste
drückten, konnte die Shell den Rest für Sie
ausfüllen.UmgebungsvariablenEin weiteres Merkmal der Shell ist der Gebrauch von
Umgebungsvariablen. Dies sind veränderbare Schlüsselpaare
im Umgebungsraum der Shell, die jedes von der Shell aufgerufene
Programm lesen kann. Daher enthält der Umgebungsraum viele
Konfigurationsdaten für Programme. Die folgende Liste zeigt
verbreitete Umgebungsvariablen und was sie bedeuten:UmgebungsvariablenVariableBeschreibungUSERName des angemeldeten Benutzers.PATHListe mit Verzeichnissen (getrennt durch Doppelpunkt)
zum Suchen nach Programmen.DISPLAYDer Name des X11-Bildschirms, auf dem
Ausgaben erfolgen sollen.SHELLDie aktuelle Shell.TERMName des Terminaltyps des Benutzers. Benutzt, um die
Fähigkeiten des Terminals zu bestimmen.TERMCAPDatenbankeintrag der Terminal Escape Codes,
benötigt um verschieden Terminalfunktionen
auszuführen.OSTYPETyp des Betriebsystems, beispielsweise FreeBSD.MACHTYPEDie CPU Architektur auf dem das System
läuft.EDITORVom Benutzer bevorzugter Text-Editor.PAGERVom Benutzer bevorzugter Text-Betrachter.MANPATHListe mit Verzeichnissen (getrennt durch Doppelpunkt)
zum Suchen nach Manualpages.ShellsBourne ShellDas Setzen von Umgebungsvariablen funktioniert
von Shell zu Shell unterschiedlich. Zum Beispiel benutzt man
in C-artigen Shells wie der tcsh dazu
setenv. Unter Bourne-Shells wie sh
oder bash benutzen Sie zum Setzen von
Umgebungsvariablen export. Um
beispielsweise die Variable EDITOR mit
csh oder tcsh auf
/usr/local/bin/emacs zu setzen, setzen Sie das
folgende Kommando ab:&prompt.user; setenv EDITOR /usr/local/bin/emacsUnter Bourne-Shells:&prompt.user; export EDITOR="/usr/local/bin/emacs"Sie können die meisten Shells Umgebungsvariablen
expandieren lassen, in dem Sie in der Kommandozeile ein
$ davor eingeben. Zum Beispiel gibt
echo $TERM aus, worauf $TERM
gesetzt ist, weil die Shell $TERM expandiert
und das Ergebnis an echo gibt.Shells behandeln viele Spezialzeichen, so genannte
Metazeichen, als besondere Darstellungen für Daten.
Das allgemeinste ist das Zeichen *, das eine
beliebige Anzahl Zeichen in einem Dateinamen repräsentiert.
Diese Metazeichen können zum Vervollständigen von
Dateinamen (Globbing) benutzt werden. Beispielsweise liefert
das Kommando echo * nahezu das gleiche
wie die Eingabe von ls, da die Shell alle
Dateinamen die mit * übereinstimmen, an
echo weitergibt.Um zu verhindern, dass die Shell diese Sonderzeichen
interpretiert, kann man sie schützen, indem man ihnen einen
Backslash (\) voranstellt. echo
$TERM gibt aus, auf was auch immer Ihr Terminal
gesetzt ist. echo \$TERM gibt
$TERM genauso aus, wie es hier steht.Ändern der ShellDer einfachste Weg Ihre Shell zu ändern, ist das
Kommando chsh zu benutzen.
chsh platziert Sie im Editor, welcher durch
Ihre Umgebungsvariable EDITOR gesetzt ist,
im vi wenn die Variable nicht gesetzt ist.
Ändern Sie die Zeile mit Shell:
entsprechend Ihren Wünschen.Sie können auch chsh mit der Option
aufrufen, dann wird Ihre Shell gesetzt,
ohne dass Sie in einen Editor gelangen. Um Ihre Shell
zum Beispiel auf die bash zu ändern,
geben Sie das folgende Kommando ein:&prompt.user; chsh -s /usr/local/bin/bashDie von Ihnen gewünschte Shell
muss in /etc/shells
aufgeführt sein. Haben Sie eine Shell aus der
Ports-Sammlung installiert,
sollte das schon automatisch erledigt werden. Installierten
Sie die Shell von Hand, so müssen Sie sie dort
eintragen.Haben Sie beispielsweise die bash nach
/usr/local/bin installiert, geben Sie
Folgendes ein:&prompt.root; echo "/usr/local/bin/bash" >> /etc/shellsDanach können Sie chsh aufrufen.Text-EditorenText EditorenEditorenEine großer Teil der Konfiguration wird bei FreeBSD durch
das Editieren von Textdateien erledigt. Deshalb ist es eine
gute Idee, mit einem Texteditor vertraut zu werden. FreeBSD hat
ein paar davon im Basissystem und sehr viel mehr in der
Ports-Sammlung.eeText EditoreneeDer am leichtesten und einfachsten zu erlernende Editor nennt
sich ee, was für
easy editor steht.
Um ee zu starten, gibt man in der
Kommandozeile ee filename ein, wobei
filename den Namen der zu editierenden
Datei darstellt. Um zum Beispiel /etc/rc.conf
zu editieren, tippen Sie ee /etc/rc.conf ein.
Einmal im Editor, finden Sie alle Editor-Funktionen oben im
Display aufgelistet. Das Einschaltungszeichen
^ steht für die Ctrl (oder
Strg) Taste, mit ^e ist also die
Tastenkombination Ctrle
gemeint. Um ee zu verlassen, drücken
Sie Esc und wählen dann aus. Der Editor fragt nach, ob Sie speichern
möchten, wenn die Datei verändert wurde.viText EditorenviemacsText EditorenemacsFreeBSD verfügt über leistungsfähigere
Editoren wie vi als Teil des
Basissystems, andere Editoren wie emacs
oder vim sind Teil der Ports-Sammlung.
Diese Editoren bieten höhere Funktionalität und
Leistungsfähigkeit, jedoch auf Kosten einer etwas
schwierigeren Erlernbarkeit. Wenn Sie viele Textdateien
editieren, sparen Sie auf lange Sicht mehr Zeit durch das Erlernen
von Editoren wie vim oder
emacs ein.
+
+ Viele Anwendungen, die Dateien verändern oder Texteingabe
+ erwarten, werden automatisch einen Texteditor öffnen. Um den
+ Standardeditor zu ändern, setzen Sie die Umgebungsvariable
+ EDITOR. Um mehr darüber zu erfahren, lesen Sie den
+ Abschnitt Shells.Geräte und GerätedateienDer Begriff Gerät wird meist in Verbindung mit Hardware
wie Laufwerken, Druckern, Grafikkarten oder Tastaturen gebraucht.
Der Großteil der Meldungen, die beim Booten von FreeBSD angezeigt
werden, beziehen sich auf gefundene Geräte. Sie können sich
die Bootmeldungen später in /var/run/dmesg.boot
ansehen.Gerätenamen, die Sie wahrscheinlich in den Bootmeldungen sehen
werden, sind zum Beispiel acd0, das erste
IDE CD-ROM oder kbd0, die Tastatur.Auf die meisten Geräte wird unter &unix; Systemen über spezielle
Gerätedateien im /dev Verzeichnis
zugegriffen.Anlegen von GerätedateienWenn sie ein neues Gerät zu Ihrem System hinzufügen,
oder die Unterstützung für zusätzliche Geräte
kompilieren, müssen ein oder mehrere Gerätedateien
erstellt werden.DEVFS (Gerätedateisystem)Das Gerätedateisystem DEVFS
ermöglicht durch den
Namensraum des Dateisystems Zugriff auf den Namensraum der
Geräte im Kernel. Damit müssen Gerätedateien
nicht mehr extra angelegt werden, sondern werden von
DEVFS verwaltet.Weitere Informationen finden Sie in &man.devfs.5;.BinärformateUm zu verstehen, warum &os; das Format
&man.elf.5; benutzt, müssen Sie
zunächst etwas über die drei gegenwärtig
dominanten ausführbaren Formate
für &unix; Systeme wissen:&man.a.out.5;Das älteste und klassische
Objektformat von &unix; Systemen. Es benutzt einen kurzen,
kompakten Header mit einer magischen Nummer am Anfang, die oft
benutzt wird, um das Format zu charakterisieren
(weitere Details finden Sie unter &man.a.out.5;). Es
enthält drei geladene Segmente: .text, .data und
.bss, sowie eine Symboltabelle und eine
Stringtabelle.COFFDas Objektformat von SVR3. Der Header
enthält nun eine Sectiontable. Man kann
also mit mehr als nur den Sections .text, .data und .bss
arbeiten.&man.elf.5;Der Nachfolger von COFF.
Kennzeichnend sind mehrere Sections und mögliche
32-Bit- oder 64-Bit-Werte. Ein wesentlicher Nachteil:
ELF wurde auch unter der Annahme
entworfen, dass es nur eine ABI (Application
Binary Interface) pro Systemarchitektur geben wird.
Tatsächlich ist diese Annahme falsch – nicht
einmal für die kommerzielle SYSV-Welt (in der es
mindestens drei ABIs gibt: SVR4, Solaris, SCO) trifft
sie zu.FreeBSD versucht, dieses Problem zu umgehen, indem
ein Werkzeug bereitgestellt wird, um ausführbare
Dateien im ELF-Format mit
Informationen über die ABI zu versehen, zu der
sie passen. Weitere Informationen finden Sie in der
Manualpage &man.brandelf.1;.FreeBSD kommt aus dem klassischen Lager
und verwendete traditionell das Format &man.a.out.5;, eine
Technik, die bereits über viele BSD-Releases
hinweg eingesetzt und geprüft worden ist. Obwohl es
bereits seit einiger Zeit möglich war, auf einem
FreeBSD-System auch Binaries (und Kernel) im
ELF-Format zu erstellen und
auszuführen, widersetzte FreeBSD sich anfangs dem
Druck, auf ELF als
Standardformat umzusteigen. Warum? Nun, als das
Linux-Lager die schmerzhafte Umstellung auf
ELF durchführte, ging es nicht so
sehr darum, dem ausführbaren Format
a.out zu entkommen, als dem
unflexiblen, auf Sprungtabellen basierten Mechanismus
für Shared-Libraries der die Konstruktion von
Shared-Libraries für Hersteller und Entwickler
gleichermaßen sehr kompliziert machte. Da die
verfügbaren ELF-Werkzeuge eine
Lösung für das Problem mit den Shared-Libraries
anboten und ohnehin generell als ein Schritt
vorwärts angesehen wurden, wurde der Aufwand
für die Umstellung als notwendig akzeptiert und die
Umstellung wurde durchgeführt. Unter FreeBSD ist der
Mechanismus von Shared-Libraries enger an den Stil des
Shared-Library-Mechanismus von Suns &sunos;
angelehnt und von daher sehr einfach zu verwenden.Ja, aber warum gibt es so viele unterschiedliche Formate?In alter, grauer Vorzeit gab es simple Hardware.
Diese simple Hardware unterstützte ein einfaches,
kleines System. a.out war absolut passend
für die Aufgabe, Binaries auf diesem simplen System (eine PDP-11)
darzustellen. Als &unix; von diesem simplen System portiert
wurde, wurde auch das a.out-Format beibehalten,
weil es für die frühen Portierungen auf Architekturen
wie den Motorola 68000 und VAX ausreichte.Dann dachte sich ein schlauer Hardware-Ingenieur,
dass, wenn er Software zwingen könnte, einige
Tricks anzustellen, es ihm möglich wäre, ein
paar Gatter im Design zu sparen, und seinen CPU-Kern
schneller zu machen. Obgleich es dazu gebracht wurde, mit
dieser neuen Art von Hardware (heute als RISC
bekannt) zu arbeiten, war a.out für
diese Hardware schlecht geeignet. Deshalb wurden viele neue
Formate entwickelt, um eine bessere Leistung auf dieser
Hardware zu erreichen, als mit dem begrenzten, simplen
a.out-Format. Dinge wie
COFF, ECOFF und
einige andere obskure wurden erdacht und ihre Grenzen
untersucht, bevor die Dinge sich in Richtung
ELF entwickelten.Hinzu kam, dass die Größe von
Programmen gewaltig wurde und Festplatten sowie
physikalischer Speicher immer noch relativ klein waren.
Also wurde das Konzept von Shared-Libraries geboren. Das
VM-System wurde auch immer fortgeschrittener. Obwohl bei
jedem dieser Fortschritte das
a.out-Format benutzt worden ist,
wurde sein Nutzen mit jedem neuen Merkmal mehr und mehr
gedehnt. Zusätzlich wollte man Dinge dynamisch zur
Ausführungszeit laden, oder Teile ihres Programms
nach der Initialisierung wegwerfen, um Hauptspeicher
oder Swap-Speicher zu sparen. Programmiersprachen
wurden immer fortschrittlicher und man wollte, dass
Code automatisch vor der main-Funktion aufgerufen wird.
Das a.out-Format wurde oft
überarbeitet, um alle diese Dinge zu ermöglichen
und sie funktionierten auch für einige Zeit.
a.out konnte diese Probleme nicht
ohne ein ständiges Ansteigen eines Overheads im Code
und in der Komplexität handhaben. Obwohl
ELF viele dieser Probleme löste,
wäre es sehr aufwändig, ein System umzustellen, das
im Grunde genommen funktionierte. Also musste
ELF warten, bis es aufwändiger war, bei
a.out zu bleiben, als zu
ELF überzugehen.Im Laufe der Zeit haben sich die Erstellungswerkzeuge,
von denen FreeBSD seine Erstellungswerkzeuge abgeleitet
hat (speziell der Assembler und der Loader), in zwei
parallele Zweige entwickelt. Im FreeBSD-Zweig wurden
Shared-Libraries hinzugefügt und einige Fehler
behoben. Das GNU-Team, das diese Programme
ursprünglich geschrieben hat, hat sie umgeschrieben
und eine simplere Unterstützung zur Erstellung von
Cross-Compilern durch beliebiges Einschalten verschiedener
Formate usw. hinzugefügt. Viele Leute wollten
Cross-Compiler für FreeBSD erstellen, aber sie hatten
kein Glück, denn FreeBSD's ältere Sourcen
für as und ld
waren hierzu nicht geeignet. Die neuen
GNU-Werkzeuge (binutils) unterstützen
Cross-Compilierung, ELF, Shared-Libraries,
C++-Erweiterungen und mehr. Weiterhin geben viele
Hersteller ELF-Binaries heraus und es
ist gut, wenn FreeBSD sie ausführen kann.ELF ist ausdrucksfähiger als
a.out und gestattet eine bessere Erweiterbarkeit
des Basissystems. Die ELF-Werkzeuge werden
besser gewartet und bieten Unterstützung von
Cross-Compilierung, was für viele Leute wichtig ist.
ELF mag etwas langsamer sein, als
a.out, aber zu versuchen, das zu messen,
könnte schwierig werden. Es gibt unzählige Details, in
denen sich die beiden Formate unterscheiden, wie sie Pages
abbilden, Initialisierungscode handhaben usw. Keins davon
ist sehr wichtig, aber es sind Unterschiede. Irgendwann
wird die Unterstützung für Programme im
a.out-Format aus dem
GENERIC-Kernel entfernt werden.
Wenn es dann keinen oder kaum noch
Bedarf für die Unterstützung dieses Formates
gibt, werden die entsprechenden Routinen ganz entfernt
werden.Weitere InformationenManualpagesManualpagesDie umfassendste Dokumentation rund um FreeBSD gibt es in
Form von Manualpages. Annähernd jedes Programm im System
bringt eine kurze Referenzdokumentation mit, die die
grundsätzliche Funktion und verschiedene Parameter
erklärt. Diese Dokumentationen kann man mit dem
man Kommando benutzen. Die Benutzung des
man Kommandos ist einfach:&prompt.user; man KommandoKommando ist der Name des Kommandos,
über das Sie etwas erfahren wollen. Um beispielsweise
mehr über das Kommando ls zu lernen,
geben Sie ein:&prompt.user; man lsDie Online-Dokumentation ist in nummerierte Sektionen
unterteilt:Benutzerkommandos.Systemaufrufe und Fehlernummern.Funktionen der C Bibliothek.Gerätetreiber.Dateiformate.Spiele und andere Unterhaltung.Verschiedene Informationen.Systemverwaltung und -Kommandos.Kernel Entwickler.In einigen Fällen kann dasselbe Thema in mehreren
Sektionen auftauchen. Es gibt zum Beispiel ein chmod
Benutzerkommando und einen chmod()
Systemaufruf. In diesem Fall können Sie dem
man Kommando
sagen, aus welcher Sektion Sie die Information erhalten
möchten, indem Sie die Sektion mit angeben:&prompt.user; man 1 chmodDies wird Ihnen die Manualpage für das Benutzerkommando
chmod zeigen. Verweise auf eine Sektion
der Manualpages werden traditionell in Klammern
gesetzt. So bezieht sich &man.chmod.1; auf das
Benutzerkommando chmod und mit
&man.chmod.2; ist der Systemaufruf gemeint.Das ist nett, wenn Sie den Namen eines Kommandos wissen,
und lediglich wissen wollen, wie es zu benutzen ist. Aber was
tun Sie, wenn Sie Sich nicht an den Namen des Kommandos
erinnern können? Sie können mit man
nach Schlüsselbegriffen in den
Kommandobeschreibungen zu suchen, indem Sie den Parameter
benutzen:&prompt.user; man -k mailMit diesem Kommando bekommen Sie eine Liste der
Kommandos, deren Beschreibung das Schlüsselwort
mail enthält. Diese Funktionalität
erhalten Sie auch, wenn Sie das Kommando apropos
benutzen.Nun, Sie schauen Sich alle die geheimnisvollen Kommandos
in /usr/bin an, haben aber nicht den
blassesten Schimmer, wozu die meisten davon gut sind? Dann
rufen Sie doch einfach das folgende Kommando auf:&prompt.user; cd /usr/bin
&prompt.user; man -f *Dasselbe erreichen Sie durch Eingabe von:&prompt.user; cd /usr/bin
&prompt.user; whatis *GNU Info DateienFreeBSD enthält viele Anwendungen und Utilities
der Free Software Foundation (FSF). Zusätzlich zu den
Manualpages bringen diese Programme ausführlichere
Hypertext-Dokumente (info genannt) mit,
welche man sich mit dem Kommando info
ansehen kann. Wenn Sie emacs
installiert haben, können Sie auch dessen info-Modus
benutzen.Um das Kommando &man.info.1; zu benutzen, geben Sie
einfach ein:&prompt.user; infoEine kurze Einführung gibt es mit
h; eine Befehlsreferenz erhalten Sie durch
Eingabe von: ?.
diff --git a/de_DE.ISO8859-1/books/handbook/filesystems/chapter.sgml b/de_DE.ISO8859-1/books/handbook/filesystems/chapter.sgml
index 62818b375d..921264646b 100644
--- a/de_DE.ISO8859-1/books/handbook/filesystems/chapter.sgml
+++ b/de_DE.ISO8859-1/books/handbook/filesystems/chapter.sgml
@@ -1,662 +1,662 @@
TomRhodesGeschrieben von BenedictReuschlingÜbersetzt von DanielSeuffertDateisystemunterstützungÜbersichtFile SystemsFile Systems SupportFile SystemsDateisysteme sind ein wesentlicher Bestandteil von Betriebssystemen.
Sie erlauben es den Benutzern Dateien zu laden und zu speichern,
ermöglichen den Zugriff auf die Daten und machen Festplatten
überhaupt erst nützlich. Unterschiedliche Betriebssysteme
besitzen normalerweise eine Gemeinsamkeit, nämlich deren
mitgeliefertes Dateisystem. Bei &os; ist dieses Dateisystem bekannt
unter dem Namen Fast File System FFS, das direkt auf
dem Original-Unix™ Dateisystem, UFS genannt,
basiert. Dieses ist das von &os; mitgelieferte Dateisystem, das auf
Festplatten für den Dateizugriff verwendet wird.&os; unterstützt auch eine Vielzahl von anderen Dateisystemen,
um auf Daten von anderen Betriebssystemen lokal zuzugreifen, wie z.B.
Daten auf USB-Speichermedien, Flash-Speichern und
Festplatten. Es gibt auch Unterstützung für fremde
Dateisysteme. Dabei handelt es sich um Dateisysteme, die auf anderen
Betriebssystemen entwickelt wurden, wie beispielsweise das &linux;
Extended File System (EXT) und das Z-Dateisystem
(ZFS) von &sun;.Es gibt verschiedene Stufen der Unterstützung in &os;
für diese unterschiedlichen Dateisysteme. Manche benötigen ein
geladenes Kernelmodul, andere die Installation bestimmter Werkzeuge.
Dieses Kapitel dient dazu, den Benutzern von &os; dazu helfen, auf andere
Dateisysteme zuzugreifen, beginnend mit &sun;s Z-Dateisystem (ZFS).Nachdem Sie dieses Kapitel gelesen haben, werden Sie die folgenden
Dinge wissen:Den Unterschied zwischen eingebauten und unterstützten
Dateisystemen.Welche Dateisysteme von &os; unterstützt werden.Wie man fremde Dateisysteme aktiviert, konfiguriert, darauf
zugreift und diese verwendet.Bevor Sie dieses Kapitel lesen, sollten Sie:Grundlagen von &unix; und &os; verstehen
().Mit den Grundlagen der Konfiguration und dem Bauen des Kernels
vertraut sein ().Problemlos Software von Drittherstellern in &os; installieren
können ().sich ein wenig mit Festplatten, Speicher und Gerätenamen
in &os; auskennen ().Die ZFS-Funktionen sind als experimentell
zu betrachten. Manchen Optionen werden möglicherweise bestimmte
Funktionalitäten fehlen, andere funktionieren eventuell gar
nicht. Mit der Zeit werden diese Eigenschaften als für den
Produktivbetrieb geeignet erachtet werden und dann wird diese
Dokumentation entsprechend geändert, um diesem Zustand
gerecht zu werden.Das Z-Dateisystem (ZFS)Das Z-Dateisystem ist eine neue von &sun; entwickelte Technologie,
mit dem Konzept einer gepoolten Speichermethodik. Das bedeutet, dass
Speicher nur verwendet wird, wenn dieser als Datenspeicher benutzt wird.
ZFS wurde auch für maximale Datenintegrität entwickelt und
unterstützt dabei mehrfache Kopien, Schnappschüsse und
Prüfsummen für Daten. Ein neues Datenreplikationsmodell,
bekannt als RAID-Z, wurde ebenfalls hinzugefügt.
Das RAID-Z-Modell ist ähnlich zu
RAID5, wurde aber mit dem Ziel entworfen,
Datenverfälschung beim Schreiben zu verhindern.ZFS EinstellungenDas ZFS-Teilsystem benötigt viele
Systemressourcen, weshalb gewisse Einstellungen notwendig sind, um
maximale Effizienz während des täglichen Gebrauchs zu
gewährleisten. Da es sich um eine experimentelle Funktion in &os;
handelt, wird sich das in naher Zukunft ändern. Wie dem auch sei,
zum gegenwärtigen Zeitpunkt wird die Anwendung der folgenden
Schritte empfohlen.HauptspeicherDer verfügbare Hauptspeicher im System sollte mindestens
1 Gigabyte betragen, jedoch werden 2 Gigabyte oder mehr
empfohlen. In allen gezeigten Beispielen in diesem Abschnitt
verwendet das System 1 Gigabyte Hauptspeicher mit mehreren
anderen Einstellungen.Manche Nutzer hatten Erfolg bei der Verwendung von weniger
als 1 GB Hauptspeicher, aber mit dieser begrenzten Menge an RAM
ist es sehr wahrscheinlich, dass &os; eine Panic wegen
erschöpftem Hauptspeicher erleiden wird, wenn es hohen
Belastungen ausgesetzt ist.KernelkonfigurationEs wird vorgeschlagen, nicht benötigte Treiber und Optionen
aus der Kernelkonfigurationsdatei zu entfernen. Da die meisten
Geräte als Module verfügbar sind, können diese einfach
mittels der Datei /boot/loader.conf geladen
werden.Nutzer der &i386;-Architektur sollten die folgende Option in
ihrer Kernelkonfigurationsdatei hinzufügen, den Kernel neu
erstellen und anschliessend das System neustarten:options KVA_PAGES=512Diese Option wird den Adressraum des Kernels vergrössern,
was es ermöglicht, die Einstellung vm.kvm_size
über die momentan verhängte Grenze von 1 GB
(2 GB für PAE) zu erhöhen. Um den
passenden Wert dieser Option zu ermitteln, teilen Sie den
gewünschten Adressraum in Megabyte durch vier. In diesem Fall
beträgt er 512 für 2 GB.Einstellungen des LoadersDer kmem-Addressraum sollte auf allen
&os;-Architekturen erhöht werden. Die folgende Option, die dem
Testsystem mit einem Gigabyte Hauptspeicher der Datei
/boot/loader.conf hinzugefügt und welches
anschliessend neu gestartet wurde, war erfolgreich:vm.kmem_size="330M"
vm.kmem_size_max="330M"
vfs.zfs.arc_max="40M"
vfs.zfs.vdev.cache.size="5M"Eine detailliertere Liste von Vorschlägen zu ZFS-verwandten
Einstellungen finden Sie unter .Verwenden von ZFSEs existiert ein Startmechanismus, der es &os; erlaubt,
ZFS als Pool während des Systemstarts
zu initialisieren. Um das zu tun, geben Sie die folgenden Befehle
ein:&prompt.root; echo 'zfs_enable="YES"' >> /etc/rc.conf
&prompt.root; /etc/rc.d/zfs startFür den Rest dieses Dokuments wird angenommen, dass zwei
SCSI-Platten im System verfügbar sind und
dass deren Gerätenamen
da0 und
da1 lauten.
Benutzer von IDE-Hardware können
ad-Geräte
an Stelle von SCSI-Hardware einsetzen.Pool mit nur einer PlatteUm ein ZFS auf einer einzelnen Festplatte
zu erstellen, benutzen Sie das
zpool-Kommando:&prompt.root; zpool create example /dev/da0Um den neuen Pool anzusehen, überprüfen Sie die
Ausgabe von df:&prompt.root; df
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/ad0s1a 2026030 235230 1628718 13% /
devfs 1 1 0 100% /dev
/dev/ad0s1d 54098308 1032846 48737598 2% /usr
example 17547136 0 17547136 0% /exampleDiese Ausgabe zeigt deutlich, dass der
example-Pool nicht nur erstellt, sondern auch
gemountet wurde. Er ist genau wie andere
Dateisysteme verfügbar, Dateien können darin erstellt und
von den Benutzern aufgelistet werden, wie im folgenden Beispiel
gezeigt wird:&prompt.root cd /example
&prompt.root; ls
&prompt.root; touch testfile
&prompt.root; ls -al
total 4
drwxr-xr-x 2 root wheel 3 Aug 29 23:15 .
drwxr-xr-x 21 root wheel 512 Aug 29 23:12 ..
-rw-r--r-- 1 root wheel 0 Aug 29 23:15 testfileLeider verwendet dieser Pool keine der Vorteile der
ZFS-Eigenschaften. Erstellen Sie ein Dateisystem
auf diesem Pool und aktivieren Sie die Komprimierung darauf:&prompt.root; zfs create example/compressed
&prompt.root; zfs set compression=gzip example/compressedJetzt ist example/compressed ein von
ZFS komprimiertes Dateisystem. Versuchen Sie, ein
paar grosse Dateien in das Verzeichnis /example/compressed zu kopieren.Die Komprimierung kann jetzt deaktiviert werden mittels:&prompt.root; zfs set compression=off example/compressedUm das Dateisystem aus dem Verzeichnisbaum abzuhängen, geben
Sie den folgenden Befehl ein und vergewissern Sie sich über
df vom Erfolg dieser Aktion:&prompt.root; zfs umount example/compressed
&prompt.root; df
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/ad0s1a 2026030 235232 1628716 13% /
devfs 1 1 0 100% /dev
/dev/ad0s1d 54098308 1032864 48737580 2% /usr
example 17547008 0 17547008 0% /exampleMounten Sie das Dateisystem erneut, um es wieder verfügbar
zu machen und bestätigen Sie mit df:&prompt.root; zfs mount example/compressed
&prompt.root; df
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/ad0s1a 2026030 235234 1628714 13% /
devfs 1 1 0 100% /dev
/dev/ad0s1d 54098308 1032864 48737580 2% /usr
example 17547008 0 17547008 0% /example
example/compressed 17547008 0 17547008 0% /example/compressedDer Pool und das Dateisystem können genausogut über die
Ausgabe von mount überwacht werden:&prompt.root; mount
/dev/ad0s1a on / (ufs, local)
devfs on /dev (devfs, local)
/dev/ad0s1d on /usr (ufs, local, soft-updates)
example on /example (zfs, local)
example/data on /example/data (zfs, local)
example/compressed on /example/compressed (zfs, local)Wie zu beobachten ist, können
ZFS-Dateisysteme nach deren Erstellung genauso
wie normale Dateisysteme verwendet werden, jedoch sind auch noch viele
andere Eigenschaften verfügbar. Im folgenden Beispiel wird ein
neues Dateisystem, data, erstellt. Wichtige
Dateien sollen hier gespeichert werden, weshalb das Dateisystem
angewiesen wird, jeweils zwei Kopien jedes Datenblocks zu
unterhalten:&prompt.root; zfs create example/data
&prompt.root; zfs set copies=2 example/dataEs ist nun möglich, den Speicherplatzverbrauch der Daten
mittels df erneut zu betrachten:&prompt.root; df
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/ad0s1a 2026030 235234 1628714 13% /
devfs 1 1 0 100% /dev
/dev/ad0s1d 54098308 1032864 48737580 2% /usr
example 17547008 0 17547008 0% /example
example/compressed 17547008 0 17547008 0% /example/compressed
example/data 17547008 0 17547008 0% /example/dataBeachten Sie, dass jedem Dateisystem des Pools die gleiche Menge
an Speicher zur Verfügung steht. Das ist der Grund für die
Verwendung von df in all diesen Beispielen, da es
zeigt, dass das Dateisystem nur den Speicher belegt, den es auch
benötigt und alles wird von dem gleichen Pool abgezogen.
ZFS macht Konzepte wie Volumen und Partitionen
überflüssig und erlaubt mehrere Dateisysteme auf demselben
Pool. Zerstören Sie die Datensysteme und anschliessend den Pool,
da sie nicht länger gebraucht werden:&prompt.root; zfs destroy example/compressed
&prompt.root; zfs destroy example/data
&prompt.root; zpool destroy exampleFestplatten werden mit der Zeit schlechter und fallen aus, eine
unvermeidliche Tatsache. Wenn diese Platte ausfällt, sind die
Daten verloren. Eine Möglichkeit, diesen Datenverlust beim
Plattenausfall zu vermeiden, ist die Verwendung von
RAID. ZFS unterstützt
diese Eigenschaft im Entwurf seiner Pools und wird im nächsten
Abschnitt behandelt.ZFS RAID-ZWie zuvor bereits erwähnt, wird in diesem Abschnitt
angenommen, dass zwei SCSI-Geräte vorhanden
sind (da0 und da1).
Um einen RAID-Z Pool zu erstellen, geben Sie das
folgende Kommando ein:&prompt.root; zpool create storage raidz da0 da1Der storage-zPool sollte jetzt erstellt worden
sein. Sie können das überprüfen, indem Sie die Befehle
&man.mount.8; und &man.df.1; wie zuvor verwenden. Weitere
Plattenspeicher können an das Ende der oben stehenden Liste
hinzugefügt werden. Erstellen Sie ein neues Dateisystem in dem
Pool, home genannt, in dem später Dateien von
Benutzern platziert werden:&prompt.root; zfs create storage/homeNun kann die Komprimierung aktiviert und zusätzliche
Kopien der Benutzerverzeichnisse und der darin enthaltenen Dateien
angelegt werden. Dies geschieht über die gleichen Befehle
wie bereits zuvor:&prompt.root; zfs set copies=2 storage/home
&prompt.root; zfs set compression=gzip storage/homeUm dieses Verzeichnis als neues Benutzerverzeichnis zu verwenden,
kopieren Sie die Nutzerdaten dort hin und erstellen Sie die
entsprechenden Symlinks:&prompt.root; cp -rp /home/* /storage/home
&prompt.root; rm -rf /home /usr/home
&prompt.root; ln -s /storage/home /home
&prompt.root; ln -s /storage/home /usr/homeAnwender sollten jetzt ihre Daten in dem neu angelegten /storage/home Dateisystem auffinden.
Prüfen Sie das, indem Sie einen neuen Benutzer hinzufügen
und sich als dieser Benutzer am System anmelden.Versuchen Sie, einen Schnappschuss anzulegen, der später
wieder zurückgerollt werden kann:&prompt.root; zfs snapshot storage/home@08-30-08Beachten Sie, dass die Schnappschuss-Option nur auf echte
Dateisysteme, jedoch nicht auf Verzeichnisse oder eine Datei
angewendet werden kann. Das @-Zeichen dient als
Begrenzer zwischen dem Dateisystem- oder Volumenamen. Wenn ein
Benutzerverzeichnis zerstört wird, können Sie es über
den folgenden Befehl wieder herstellen:&prompt.root; zfs rollback storage/home@08-30-08Um eine Liste von allen verfügbaren Schnappschüssen zu
erhalten, starten Sie das ls-Kommando in
Verzeichnis .zfs/snapshot des entsprechenden
Dateisystems. Beispielsweise können Sie den vorhin angelegten
Schnappschuss mit dem folgenden Befehl auflisten:&prompt.root; ls /storage/home/.zfs/snapshotEs ist möglich ein Skript zu schreiben, dass monatliche
Schnappschüsse der Nutzerdaten anlegt. Allerdings werden die
Schnappschüsse mit der Zeit eine grosse Menge an Speicherplatz
einnehmen. Den vorherigen Schnappschuss können Sie über
das folgende Kommando löschen:&prompt.root; zfs destroy storage/home@08-30-08Nach all diesen Tests gibt es keinen Grund, das Verzeichnis
/storage/home noch länger in seinem
momentanen Zustand zu belassen. Ernennen Sie es zum echten /home-Dateisystem:&prompt.root; zfs set mountpoint=/home storage/homeDie Eingabe der Befehle df und
mount zeigt, dass das System das Dateisystem nun
als das echte /home
behandelt:&prompt.root; mount
/dev/ad0s1a on / (ufs, local)
devfs on /dev (devfs, local)
/dev/ad0s1d on /usr (ufs, local, soft-updates)
storage on /storage (zfs, local)
storage/home on /home (zfs, local)
&prompt.root; df
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/ad0s1a 2026030 235240 1628708 13% /
devfs 1 1 0 100% /dev
/dev/ad0s1d 54098308 1032826 48737618 2% /usr
storage 17547008 0 17547008 0% /storage
storage/home 17547008 0 17547008 0% /homeDamit ist die RAID-Z-Konfiguration
abgeschlossen. Um über den Status des Dateisystems mittels des
nächtlichen &man.periodic.8;-Skripts auf dem Laufenden gehalten
zu werden, geben Sie das folgende Kommando ein:&prompt.root; echo 'daily_status_zfs_enable="YES"' >> /etc/periodic.confWiederherstellung von RAID-ZJedes Software-RAID besitzt Verfahren, um
dessen Zustand zu überwachen.
ZFS ist da keine Ausnahme. Der Status von
RAID-Z Geräten kann mittels des folgenden
Kommandos betrachtet werden:&prompt.root; zpool status -xWenn alle Pools gesund sind und alles normal ist, wird die
folgende Nachricht zurückgegeben:all pools are healthyWenn ein Problem existiert (möglicherweise ist eine Platte
ausgefallen), wird der Zustand des Pools ähnlich dem Folgenden
ausgegeben: pool: storage
state: DEGRADED
status: One or more devices has been taken offline by the administrator.
Sufficient replicas exist for the pool to continue functioning in a
degraded state.
action: Online the device using 'zpool online' or replace the device with
'zpool replace'.
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
storage DEGRADED 0 0 0
raidz1 DEGRADED 0 0 0
da0 ONLINE 0 0 0
da1 OFFLINE 0 0 0
errors: No known data errorsDas bedeutet, dass das Gerät vom Systemadministrator
abgeschaltet wurde. In diesem Fall trifft das zu. Um eine Platte
abzuschalten, wurde das folgende Kommando eingegeben:&prompt.root; zpool offline storage da1Es ist jetzt möglich, da1 zu
ersetzen, nachdem das System ausgeschaltet wurde. Wenn das System
wieder läuft, kann der folgende Befehl benutzt werden, um die
Platte zu ersetzen:&prompt.root; zpool replace storage da1Von da an kann der Status erneut überprüft werden,
jedoch dieses Mal ohne die Option , um die
Zustandsinformation zu bekommen:&prompt.root; zpool status storage
pool: storage
state: ONLINE
scrub: resilver completed with 0 errors on Sat Aug 30 19:44:11 2008
config:
NAME STATE READ WRITE CKSUM
storage ONLINE 0 0 0
raidz1 ONLINE 0 0 0
da0 ONLINE 0 0 0
da1 ONLINE 0 0 0
errors: No known data errorsWie in diesem Beispiel gezeigt, scheint alles wieder normal zu
sein.DatenüberprüfungWie bereits erwähnt, verwendet ZFS
Prüfsummen, um die Integrität der
gespeicherten Daten zu verifizieren. Die Prüfsummen werden
automatisch beim Erstellen des Dateisystem aktiviert und können
über den folgenden Befehl deaktiviert werden:&prompt.root; zfs set checksum=off storage/homeDas ist jedoch kein schlauer Einfall, da die Prüfsummen nur
ganz wenig Speicherplatz einnehmen und viel nützlicher sind,
wenn Sie aktiviert bleiben. Es scheint auch kein nennenswerter
Ressourcenverbrauch mit deren Aktivierung verbunden zu sein. Wenn die
Prüfsummen aktiv sind, kann ZFS die
Datenintegrität über den Vergleich der Prüfsummen
gewährleisten. Dieser Prozess wird als reinigen
bezeichnet. Um die Datenintegrität des
storage-Pools zu überprüfen, geben Sie
den folgenden Befehl ein:&prompt.root; zpool scrub storageDieser Prozess kann einige Zeit in Anspruch nehmen, abhängig
davon, wieviele Daten gespeichert sind. Es handelt sich dabei auch
um eine I/O-intensive Aktion, weshalb auch jeweils
nur eine dieser Operationen durchgeführt werden darf. Nachdem
die Reinigung abgeschlossen ist, wird der Status aktualisiert und
kann über eine Statusabfrage eingesehen werden:&prompt.root; zpool status storage
pool: storage
state: ONLINE
scrub: scrub completed with 0 errors on Sat Aug 30 19:57:37 2008
config:
NAME STATE READ WRITE CKSUM
storage ONLINE 0 0 0
raidz1 ONLINE 0 0 0
da0 ONLINE 0 0 0
da1 ONLINE 0 0 0
errors: No known data errorsDie Zeit des Abschlusses der Aktion kann in diesem Beispiel direkt
abgelesen werden. Die Prüfsummen helfen dabei, sicherzustellen,
dass die Datenintegrität über einen langen Zeitraum hinaus
erhalten bleibt.Es gibt viele weitere Optionen für das Z-Dateisystem, lesen
Sie dazu die Manualpage &man.zfs.8; und &man.zpool.8;.
diff --git a/de_DE.ISO8859-1/books/handbook/ppp-and-slip/chapter.sgml b/de_DE.ISO8859-1/books/handbook/ppp-and-slip/chapter.sgml
index 6585be4728..593e4da97f 100644
--- a/de_DE.ISO8859-1/books/handbook/ppp-and-slip/chapter.sgml
+++ b/de_DE.ISO8859-1/books/handbook/ppp-and-slip/chapter.sgml
@@ -1,3463 +1,3373 @@
JimMockRestrukturiert, neu organisiert und aktualisiert von ThomasSchwarzkopfÜbersetzt von PPP und SLIPÜbersichtPPPSLIPUnter FreeBSD stehen verschiedene Möglichkeiten zur
Verfügung, um Computer miteinander zu verbinden. Der Aufbau
einer Netzwerk- oder Internetverbindung mit Hilfe eines Einwahlmodems
– für den eigenen oder für andere Rechner –
erfordert den Einsatz von PPP oder SLIP.Nachdem Sie dieses Kapitel gelesen haben, werden Sie wissen:Wie Sie User-PPP einrichten.Wie Sie Kernel-PPP einrichten.Was zu tun ist, um PPPoE (PPP over
Ethernet) einzurichten.Wie Sie PPPoA (PPP over
ATM) einrichten.Wie Sie einen SLIP-Client und -Server einrichten und
konfigurierenPPPUser-PPPPPPKernel-PPPPPPover EthernetBevor Sie dieses Kapitel lesen, sollten Sie:mit den grundlegenden Begriffen der Netzwerktechnik
vertraut sein.die Grundlagen und den Zweck einer Einwahlverbindung sowie
PPP und/oder SLIP kennen.Sie fragen sich vielleicht, worin denn der Hauptunterschied
zwischen User-PPP und Kernel-PPP liegt. Die Antwort ist einfach:
User-PPP verarbeitet die ein- und ausgehenden Daten im Userland,
statt im Kernel. Dies ist zwar aufwändig, im Hinblick auf
die Daten, die dadurch zwischen Kernel und Userland hin und her
kopiert werden müssen, doch es ermöglicht auch eine
PPP-Implementierung mit weitaus mehr Funktionen. User-PPP verwendet
das Gerät tun, um mit anderen Rechnern
zu kommunizieren, während Kernel-PPP hierfür das
Gerät ppp benutzt.In diesem Kapitel wird durchgängig vom Programm
ppp gesprochen, wenn damit User-PPP
gemeint ist. Ausnahmen werden gemacht, wenn eine
Unterscheidung gegenüber anderer PPP-Software, wie
pppd, notwendig wird. Soweit nichts
anderes angegeben ist, sollten alle Befehle, die in diesem
Kapitel erklärt werden, als root
ausgeführt werden.TomRhodesAktualisiert und erweitert von BrianSomersUrsprünglich geschrieben von NikClaytonMit Beiträgen von DirkFrömbergPeterChildsUser-PPPUser-PPPVoraussetzungenDieses Dokument geht davon aus, dass Sie Folgendes zur
Verfügung haben:ISPPPPEinen Account bei einem Internet Service Provider (ISP),
zu dem Sie mit PPP eine Verbindung aufbauen können.Ein Modem oder ein anderes Gerät, das, richtig
konfiguriert und mit Ihrem Rechner verbunden, Ihnen die
Herstellung einer Verbindung zu Ihrem ISP erlaubt.Die Einwahlnummer(n) Ihres ISP.PAPCHAPUNIXLogin NamePasswortIhren Login-Namen und Ihr Passwort (entweder ein
- reguläres Login/Passwort-Paar im UNIX-Stil oder
+ reguläres Login/Passwort-Paar im &unix;-Stil oder
ein PAP bzw. CHAP Login/Passwort-Paar).NameserverDie IP-Adresse von einem oder mehreren Nameservern.
Üblicherweise werden Ihnen von Ihrem ISP zwei
IP-Adressen für diesen Zweck zur Verfügung gestellt.
Wenn Sie keine solche IP-Adresse von Ihrem
Provider bekommen haben, können Sie das Kommando
enable dns in der Datei
ppp.conf verwenden, um
ppp anzuweisen, den Nameserver
für Sie einzutragen. Diese Funktion setzt allerdings
voraus, dass Ihr ISP eine PPP-Implementierung verwendet,
die das Aushandeln eines Nameservers unterstützt.Die folgenden Informationen werden Ihnen möglicherweise
von Ihrem ISP zur Verfügung gestellt, sie sind aber nicht
zwingend erforderlich:Die Gateway IP-Adresse Ihres ISP. Als Gateway wird
der Computer bezeichnet, zu dem Sie eine Verbindung aufbauen.
Die IP-Adresse dieses Rechners wird als
default route eingetragen. Wenn Sie
diese Information nicht zur Verfügung haben, kann PPP so
konfiguriert werden, dass der PPP-Server Ihres ISP während
des Verbindungsaufbaus eine gültige Adresse
übermittelt.ppp bezieht sich mit
HISADDR auf diese IP-Adresse.Die Netzmaske, die Sie verwenden sollten. Falls Ihnen Ihr
ISP keine Netzmaske vorgegeben hat, können Sie
255.255.255.255 verwenden.feste IP-AdresseWenn Ihnen Ihr ISP eine statische IP-Adresse zur
Verfügung stellt, können Sie diese eintragen.
Andernfalls lassen wir uns einfach von der Gegenstelle
eine IP-Adresse zuweisen.Falls Ihnen die erforderlichen Informationen fehlen
sollten, nehmen Sie bitte Kontakt mit Ihrem ISP auf.Die Beispieldateien, die in diesem Kapitel dargestellt werden,
enthalten Zeilennummern. Die Nummerierung dient lediglich einer
leichteren Orientierung und sollte von Ihnen nicht in Ihre Dateien
übernommen werden. Richtiges Einrücken, durch
Tabulatoren und Leerzeichen, ist ebenfalls wichtig.Automatische Konfiguration von
PPPPPPKonfigurationSowohl ppp als auch pppd
(die PPP-Implementierung auf Kernelebene) verwenden die
- Konfigurationsdateien im Verzeichnis /etc/ppp.
- Beispiele für User-PPP sind in
- /usr/share/examples/ppp/ zu finden.
+ Konfigurationsdateien im Verzeichnis /etc/ppp.
+ Beispiele für User-PPP sind in /usr/share/examples/ppp/
+ zu finden.
Die Konfiguration von ppp erfordert,
je nach Ihren besonderen Bedingungen, die Bearbeitung
einiger Dateien. Was Sie in diese Dateien eintragen, hängt
unter anderem davon ab, ob Ihnen Ihr ISP eine statische
IP-Adresse (Sie verwenden immer dieselbe IP-Adresse,
die Ihnen einmal zugeteilt wurde) oder eine dynamische IP-Adresse
(Ihre IP-Adresse ändert sich bei jeder Verbindung
mit dem ISP) zugewiesen hat.PPP und statische IP-AdressenPPPmit fester IP-AdresseSie müssen die Konfigurationsdatei
/etc/ppp/ppp.conf bearbeiten. Sie sollte
so aussehen, wie in dem unten angegebenen Beispiel.Zeilen die mit einem : enden,
beginnen in der ersten Spalte (am Beginn der Zeile). Alle
anderen Zeilen sollten wie dargestellt durch Leerzeichen
oder Tabulatoren eingerückt werden.1 default:
2 set log Phase Chat LCP IPCP CCP tun command
3 ident user-ppp VERSION (built COMPILATIONDATE)
-4 set device /dev/cuaa0
+4 set device /dev/cuad0
5 set speed 115200
6 set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \
7 \"\" AT OK-AT-OK ATE1Q0 OK \\dATDT\\T TIMEOUT 40 CONNECT"
8 set timeout 180
9 enable dns
10
11 provider:
12 set phone "(123) 456 7890"
13 set authname foo
14 set authkey bar
15 set login "TIMEOUT 10 \"\" \"\" gin:--gin: \\U word: \\P col: ppp"
16 set timeout 300
17 set ifaddr x.x.x.xy.y.y.y 255.255.255.255 0.0.0.0
18 add default HISADDRZeile 1:Gibt den Standardeintrag an. Befehle dieses
Eintrags werden automatisch ausgeführt, wenn
ppp läuft.Zeile 2:Schaltet die Loggingparameter ein. Wenn die
Verbindung zufriedenstellend funktioniert, können
Sie diese Zeile verkürzen:set log phase tunDies verhindert ein übermäßiges
Anwachsen der Logdateien.Zeile 3:Gibt PPP an, wie es sich gegenüber der
Gegenstelle identifizieren soll. PPP identifiziert
sich gegenüber der Gegenstelle, wenn es Schwierigkeiten
bei der Aushandlung und beim Aufbau der Verbindung gibt.
Dabei werden Informationen bereitgestellt, die dem
Administrator der Gegenstelle helfen
können, die Ursache der Probleme zu finden.Zeile 4:Gibt das Device an, an dem das Modem
angeschlossen ist.
- COM1 entspricht
- /dev/cuaa0 und
- COM2 entspricht
- /dev/cuaa1.
+ COM1 entspricht /dev/cuad0 und
+ COM2 entspricht /dev/cuad1.
Zeile 5:Legt die Geschwindigkeit fest, mit der Sie
die Verbindung betreiben möchten. Falls ein Wert
von 115200 nicht funktioniert (was aber bei jedem
einigermaßen neuen Modem
funktionieren sollte), versuchen Sie es stattdessen
mit 38400.Zeilen 6 & 7:PPPUser-PPPDie Zeichenfolge für die Einwahl. User-PPP
verwendet eine expect-send Syntax, ähnlich dem
&man.chat.8;-Programm. Weitere Informationen zu den
Eigenschaften dieser Sprache bietet die Manual-Seite.Beachten Sie, dass dieser Befehl aufgrund der
besseren Lesbarkeit auf der nächsten Zeile weitergeht.
Das kann für jeden Befehl in
- ppp.conf gelten, wenn ``\''
- das letzte Zeichen in einer Zeile ist.
+ ppp.conf gelten, wenn
+ \ das letzte Zeichen in einer Zeile
+ ist.
Zeile 8:Legt den Zeitrahmen fest, innerhalb dessen eine Reaktion
erfolgen muss. Der Standardwert liegt bei 180 Sekunden, so
dass diese Zeile lediglich einen kosmetischen Charakter
hat.Zeile 9:Weist PPP an, bei der Gegenstelle eine Bestätigung
der lokalen Resolvereinstellungen anzufordern. Wenn Sie
einen lokalen Nameserver betreiben, sollte diese Zeile
auskommentiert oder gelöscht werden.Zeile 10:Eine leere Zeile zur besseren Lesbarkeit. Leere Zeilen
werden von PPP ignoriert.Zeile 11:Bestimmt einen Provider, namens
provider. Wenn Sie hier den Namen Ihres
ISP einsetzen, können Sie später die Verbindung
- mit aufbauen.
+ mit
+ aufbauen.
Zeile 12: Gibt die Telefonnummer des Providers an. Mehrere
Telefonnummern können angegeben werden, indem Doppelpunkte
(:) oder Pipe-Zeichen
(|) als Trennzeichen verwendet werden.
Der Unterschied zwischen diesen beiden Trennzeichen ist in
&man.ppp.8; beschrieben.
Zusammenfassend: Wenn Sie die verschiedenen Nummern
abwechselnd verwenden möchten, sollten Sie die
Nummern durch einen Doppelpunkt trennen.
Wenn Sie immer die erste Nummer verwenden möchten und
die anderen nur zum Einsatz kommen sollen, wenn eine Einwahl
mit der ersten Telefonnummer nicht möglich ist, sollten
Sie das Pipe-Zeichen zur Trennung verwenden.
Wie im Beispiel, sollten Sie die gesamte Reihe der
Telefonnummern in Anführungszeichen setzen.Sie müssen die Telefonnummer in
Anführungszeichen (") setzen,
wenn Sie Leerzeichen in der Telefonnummer verwenden,
ansonsten rufen Sie einen Fehler hervor, der vielleicht
schwer zu finden ist.Zeilen 13 & 14:Gibt den Benutzernamen und das Passwort an. Wenn Sie
zur Verbindung einen Login-Prompt im UNIX-Stil verwenden,
bezieht sich der Befehl set login
mit den \U und \P Variablen auf diese Werte. Wenn Sie
zum Verbindungsaufbau PAP oder CHAP verwenden, werden
diese Werte zum Zeitpunkt der
Authentifizierung verwendet.Zeile 15:PAPCHAPWenn Sie PAP oder CHAP einsetzen, gibt es an
dieser Stelle keinen Login-Prompt, weshalb Sie diese
Zeile auskommentieren oder löschen sollten. Der
Abschnitt Authentifizierung
mit PAP und CHAP enthält hierzu weitere
Einzelheiten.Der Login-String hat die gleiche chat-ähnliche
Syntax, wie der Einwahlstring. Der String in diesem
Beispiel funktioniert mit einem ISP, dessen
Login-Session folgendermaßen aussieht:J. Random Provider
login: foo
password: bar
protocol: pppSie müssen dieses Skript noch an Ihre
eigenen Erfordernisse anpassen. Wenn Sie dieses Skript
zum ersten Mal schreiben, sollten Sie sicherstellen,
dass Sie chat-logging aktiviert haben,
damit Sie überprüfen zu können, ob
die Konversation zwischen Ihrem Rechner und dem Rechner
des Providers wie erwartet abläuft.Zeile 16:ZeitbeschränkungSetzt einen Zeitrahmen (in Sekunden), innerhalb
dessen eine Reaktion erfolgen muss. In diesem Fall,
wird die Verbindung nach 300 Sekunden automatisch
geschlossen, wenn keine Aktivität zu
verzeichnen ist. Wenn Sie keinen Zeitrahmen festlegen
wollen, nach dessen Überschreiten die Verbindung
geschlossen wird, können Sie diesen Wert auf 0
setzen oder die Kommandozeilen-Option
verwenden.Zeile 17:ISPGibt die IP-Adresse für das Interface an.
Der String x.x.x.x sollte
durch die IP-Adresse ersetzt werden, die Ihnen Ihr
Provider zugeteilt hat. Der String
y.y.y.y sollte durch die
IP-Adresse ersetzt werden, die Ihr ISP als Gateway
angegeben hat (das ist der Rechner, mit dem Ihr Rechner
eine Verbindung aufbaut). Wenn Ihnen Ihr ISP keine
Gateway Adresse zur Verfügung gestellt hat,
verwenden Sie hier einfach 10.0.0.2/0. Wenn Sie
eine erratene IP-Adresse verwenden
müssen, sollten Sie in der Datei
/etc/ppp/ppp.linkup einen
entsprechenden Eintrag machen. Folgen Sie dazu den
Anweisungen im Abschnitt PPP und dynamische
IP-Adressen. Wenn diese Zeile ausgelassen
wird, kann ppp nicht im
Modus betrieben werden.Zeile 18:Fügt eine Defaultroute für das Gateway Ihres
Providers hinzu. Das Wort HISADDR wird
dabei durch die in Zeile 17 angegebene Gateway
Adresse ersetzt. Wichtig ist, dass diese Zeile nach
Zeile 17 erscheint, da andernfalls
HISADDR noch nicht initialisiert
ist.Wenn Sie ppp nicht im
Modus betreiben, sollte diese Zeile in die Datei
ppp.linkup
verschoben werden.Wenn Sie eine statische IP-Adresse verwenden und ppp im
Modus läuft, ist es nicht notwendig,
einen Eintrag in die Datei ppp.linkup
hinzuzufügen. In diesem Fall hat ihre Routingtabelle
bereits die richtigen Einträge, bevor Sie die Verbindung
aufbauen. Sie möchten aber vielleicht einen Eintrag
hinzufügen, um ein Programm aufzurufen, nachdem die
Verbindung aufgebaut ist. Dies wird weiter unten am Beispiel
von Sendmail erklärt.Beispiele für Konfigurationsdateien finden Sie
- im Verzeichnis /usr/share/examples/ppp/.
+ im Verzeichnis /usr/share/examples/ppp/.
PPP und dynamische IP-AdressenPPPmit dynamischen IP-AdressenIPCPWenn Ihnen Ihr ISP keine statische IP-Adresse zuteilt,
kann ppp so konfiguriert werden, dass die
lokale und die entfernte IP-Adresse beim Verbindungsaufbau
ausgehandelt werden. Dies geschieht, indem zunächst eine
IP-Adresse erraten wird, die von
ppp, unter Verwendung des IP
Configuration Protocol (IPCP) durch eine richtige ersetzt wird,
wenn die Verbindung aufgebaut ist. Die Konfiguration der Datei
ppp.conf entspricht derjenigen, die im
Abschnitt PPP und statische IP-
Adressen dargestellt wurde, jedoch mit folgender
Änderung:17 set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.255Auch hier dient die Zeilennummerierung lediglich der
besseren Übersichtlichkeit. Einrückungen, von
mindestens einem Leerzeichen, sind allerdings erforderlich.Zeile 17:Die Zahl nach dem / Zeichen,
gibt die Anzahl der Bits der Adresse an, auf die ppp
besteht. Sie möchten vielleicht andere IP-Adressen
verwenden, die oben angegebenen werden aber immer
funktionieren.Das letzte Argument (0.0.0.0) weist
PPP an, den Verbindungsaufbau mit der Adresse 0.0.0.0 zu beginnen, statt 10.0.0.1 zu verwenden. Dies ist bei
einigen ISPs notwendig. Verwenden Sie nicht
0.0.0.0
als erstes Argument für set ifaddr,
da so verhindert wird, dass
PPP im Modus eine initiale Route
setzt.Wenn PPP nicht im Modus läuft,
müssen Sie die Datei/etc/ppp/ppp.linkup
editieren. ppp.linkup kommt zum Einsatz, wenn
eine Verbindung aufgebaut worden ist. Zu diesem Zeitpunkt hat
ppp die Interface Adressen vergeben und es ist
möglich, die Einträge in der Routingtabelle
hinzuzufügen:1 provider:
2 add default HISADDRZeile 1:Beim Aufbau einer Verbindung sucht ppp
in der Datei ppp.linkup nach einem
Eintrag. PPP geht dabei nach folgenden Regeln vor:
Suche zunächst nach der gleichen Bezeichnung,
die wir auch in der Datei ppp.conf
verwendet haben. Falls das nicht
funktioniert, suche nach einem Eintrag der IP-Adresse unseres
Gateways. Dieser Eintrag ist eine Bezeichnung im Stil von
IP-Adressen, die sich aus vier Oktetts zusammensetzt. Falls
immer noch kein passender Eintrag gefunden wurde, suche nach
dem Eintrag MYADDR.Zeile 2:Diese Zeile weist ppp an, eine
Defaultroute zu verwenden, die auf HISADDR
zeigt. HISADDR wird nach der
Aushandlung mit IPCP durch die IP-Adresse des
Gateways ersetzt.Die Dateien
/usr/share/examples/ppp/ppp.conf.sample
und /usr/share/examples/ppp/ppp.linkup.sample
bieten detaillierte Beispiele für pmdemand
Einträge.Annahme eingehender AnrufePPPeingehende Anrufe annehmenWenn Sie ppp auf einem Rechner,
der in ein LAN eingebunden ist, so konfigurieren, dass eingehende
Anrufe angenommen werden, müssen Sie entscheiden,
ob Pakete an das LAN weitergeleitet werden sollen. Wenn Sie das
möchten, sollten Sie an die Gegenstelle eine IP-Adresse aus
Ihrem lokalen Subnetz vergeben und den Befehl
enable proxy
in die Datei /etc/ppp/ppp.conf einfügen.
Außerdem sollte die Datei /etc/rc.conf
Folgendes enthalten:gateway_enable="YES"Welches getty?Der Abschnitt Einwählverbindungen
bietet eine gute Beschreibung, wie Einwählverbindungen unter
Verwendung von &man.getty.8; genutzt werden können.Eine Alternative zu getty ist mgetty,
eine raffiniertere Version von getty, die mit
Blick auf Einwählverbindungen entworfen wurde.Der Vorteil von mgetty ist,
dass es auf aktive Weise mit Modems spricht,
das heißt wenn ein Port in /etc/ttys
ausgeschaltet ist, wird Ihr Modem nicht auf Anrufe
reagieren.Spätere Versionen von mgetty (von
0.99beta aufwärts) unterstützen auch die automatische
Erkennung von PPP-Streams, was Ihren Clients den skriptlosen
Zugang zu Ihren Servern erlaubt.Der Abschnitt Mgetty und
AutoPPP bietet weitere Informationen zu
mgetty.PPP und RechteDer Befehl ppp muss normalerweise als
root ausgeführt werden. Wenn Sie
jedoch möchten, dass ppp im Server-Modus
auch von einem normalen Benutzer, wie unten beschrieben,
durch Aufruf von ppp
ausgeführt werden kann, müssen Sie
diesem Benutzer die Rechte erteilen, ppp
auszuführen, indem Sie ihn in der Datei
/etc/group der Gruppe
- network hinzufügen.
+ network hinzufügen.
Sie werden ihm ebenfalls den Zugriff auf einen oder mehrere
Abschnitte der Konfigurationsdatei geben müssen, indem Sie
den allow Befehl verwenden:allow users fred maryWenn dieser Befehl im default
Abschnitt verwendet wird, erhalten die angegebenen Benutzer
vollständigen Zugriff.PPP-Shells für dynamische IP-AdressenPPP ShellsErzeugen Sie eine Datei mit dem Namen
/etc/ppp/ppp-shell, die Folgendes
enthält:#!/bin/sh
IDENT=`echo $0 | sed -e 's/^.*-\(.*\)$/\1/'`
CALLEDAS="$IDENT"
TTY=`tty`
if [ x$IDENT = xdialup ]; then
IDENT=`basename $TTY`
fi
echo "PPP for $CALLEDAS on $TTY"
echo "Starting PPP for $IDENT"
exec /usr/sbin/ppp -direct $IDENTDieses Skript sollte ausführbar sein. Nun
erzeugen Sie einen symbolischen Link
ppp-dialup auf dieses Skript
mit folgendem Befehl:&prompt.root; ln -s ppp-shell /etc/ppp/ppp-dialupSie sollten dieses Skript als
Shell für alle Benutzer von
Einwählverbindungen verwenden. Dies ist ein Beispiel
aus der Datei /etc/passwd
für einen Benutzer namens pchilds,
der PPP für Einwählverbindungen verwenden kann
(Denken Sie daran, die Passwortdatei nicht direkt zu
editieren, sondern dafür &man.vipw.8; zu
verwenden).pchilds:*:1011:300:Peter Childs PPP:/home/ppp:/etc/ppp/ppp-dialup
- Erstellen Sie ein Verzeichnis /home/ppp,
- das von allen Benutzern gelesen werden kann und die folgenden leeren
- Dateien enthält:
+ Erstellen Sie ein Verzeichnis /home/ppp, das von allen Benutzern
+ gelesen werden kann und die folgenden leeren Dateien
+ enthält:-r--r--r-- 1 root wheel 0 May 27 02:23 .hushlogin
-r--r--r-- 1 root wheel 0 May 27 02:22 .rhostsDies verhindert, dass /etc/motd
angezeigt wird.PPP-Shells für statische IP-AdressenPPP ShellsErstellen Sie die Datei ppp-shell
wie oben oben dargestellt. Erzeugen Sie nun für
jeden Account mit statischer IP-Adresse einen symbolischen
Link auf ppp-shell.Wenn Sie beispielsweise die drei Kunden,
fred, sam und
mary haben, für die Sie
CIDR-/24-Netzwerke routen, schreiben Sie Folgendes:&prompt.root; ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-fred
&prompt.root; ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-sam
&prompt.root; ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-maryJeder Einwählzugang dieser Kunden sollte den
oben erzeugten symbolischen Link als Shell haben
(mary's Shell
sollte also /etc/ppp/ppp-mary sein).Einrichten von ppp.conf für
dynamische IP-AdressenDie Datei /etc/ppp/ppp.conf sollte in
etwa wie folgt aussehen:default:
set debug phase lcp chat
set timeout 0
ttyd0:
set ifaddr 203.14.100.1 203.14.100.20 255.255.255.255
enable proxy
ttyd1:
set ifaddr 203.14.100.1 203.14.100.21 255.255.255.255
enable proxyDie Einrückungen sind wichtig.Der Abschnitt default: wird für
jede Sitzung geladen. Erstellen Sie für jede
Einwählverbindung, die Sie in der Datei
/etc/ttys ermöglicht haben, einen
Eintrag, wie oben für ttyd0: gezeigt.
Jede Verbindung sollte eine eigene IP-Adresse aus dem Pool
der Adressen bekommen, die sie für diese Benutzergruppe
reserviert haben.Einrichten von ppp.conf für
statische IP-AdressenZu dem bisher dargestellten Inhalt der Beispieldatei
/usr/share/examples/ppp/ppp.conf sollten
Sie einen Abschnitt für jeden Benutzer mit statisch
zugewiesener IP-Adresse hinzufügen. Wir werden nun
unser Beispiel mit den
Accounts fred, sam und
mary weiterführen.fred:
set ifaddr 203.14.100.1 203.14.101.1 255.255.255.255
sam:
set ifaddr 203.14.100.1 203.14.102.1 255.255.255.255
mary:
set ifaddr 203.14.100.1 203.14.103.1 255.255.255.255Die Datei /etc/ppp/ppp.linkup sollte,
falls erforderlich, ebenfalls Routinginformationen für
jeden Benutzer mit statischer IP-Adresse enthalten. Die unten
dargestellte Zeile würde dem Netzwerk 203.14.101.0/24 eine Route über die
PPP-Verbindung des Client hinzufügen.fred:
add 203.14.101.0 netmask 255.255.255.0 HISADDR
sam:
add 203.14.102.0 netmask 255.255.255.0 HISADDR
mary:
add 203.14.103.0 netmask 255.255.255.0 HISADDRmgetty und AutoPPPmgettyAutoPPPLCPWird mgetty mit der Option
AUTO_PPP konfiguriert und kompiliert,
kann mgetty die LCP Phase von PPP-Verbindungen
erkennen und automatisch eine ppp-Shell starten.
Da hierbei jedoch die Login/Passwort-Sequenz nicht
durchlaufen wird, ist es notwendig, Benutzer durch PAP
oder CHAP zu authentifizieren.In diesem Abschnitt wird davon ausgegangen, dass der
Benutzer eine Version von mgetty mit
der Option AUTO_PPP (v0.99beta oder
neuer) erfolgreich konfiguriert, kompiliert und
installiert hat.Stellen Sie sicher, dass die Datei
/usr/local/etc/mgetty+sendfax/login.config
Folgendes enthält:/AutoPPP/ - - /etc/ppp/ppp-pap-dialupHierdurch wird mgetty angewiesen,
das Skript ppp-pap-dialup für
die erkannten PPP-Verbindungen auszuführen.Erstellen Sie nun die Datei
/etc/ppp/ppp-pap-dialup mit folgendem
Inhalt (die Datei sollte ausführbar sein):#!/bin/sh
exec /usr/sbin/ppp -direct pap$IDENTErstellen Sie bitte für jede Einwählverbindung,
die Sie in /etc/ttys ermöglicht haben,
einen korrespondierenden Eintrag in der Datei
/etc/ppp/ppp.conf. Diese
Einträge können problemlos, mit den Definitionen
die wir weiter oben gemacht haben, koexistieren.pap:
enable pap
set ifaddr 203.14.100.1 203.14.100.20-203.14.100.40
enable proxyJeder Benutzer, der sich auf diese Weise anmeldet,
benötigt einen Benutzernamen und ein Passwort in der Datei
/etc/ppp/ppp.secret. Sie haben auch die
Möglichkeit, Benutzer mit Hilfe von PAP zu authentifizieren,
indem Sie der Datei /etc/passwd folgende
Option hinzufügen:enable passwdauthWenn Sie bestimmten Benutzern eine statische IP-Adresse
zuweisen möchten, können Sie diese als drittes
Argument in der Datei
/etc/ppp/ppp.secret angeben. In
/usr/share/examples/ppp/ppp.secret.sample
finden Sie hierfür Beispiele.MS-ErweiterungenDNSNetBIOSPPPErweiterungen von MicrosoftEs ist möglich PPP so zu konfigurieren, dass bei Bedarf
DNS und NetBIOS Nameserveradressen bereitgestellt werden.Um diese Erweiterungen für die PPP Version 1.x
zu aktivieren, sollte der entsprechende Abschnitt der Datei
/etc/ppp/ppp.conf um folgende Zeilen
ergänzt werden:enable msext
set ns 203.14.100.1 203.14.100.2
set nbns 203.14.100.5Für PPP Version 2 und höher:accept dns
set dns 203.14.100.1 203.14.100.2
set nbns 203.14.100.5Damit werden den Clients die primären und sekundären
Nameserveradressen sowie ein NetBIOS Nameserver-Host
mitgeteilt.In Version 2 und höher verwendet PPP die Werte, die
in /etc/resolv.conf zu finden sind, wenn
die Zeile set dns weggelassen wird.Authentifizierung durch PAP und CHAPPAPCHAPEinige ISPs haben ihr System so eingerichtet, dass der
Authentifizierungsteil eines Verbindungsaufbaus mit Hilfe von
PAP oder CHAP-Mechanismen durchgeführt wird. Wenn dies bei
Ihnen der Fall sein sollte, wird Ihnen Ihr ISP bei der Verbindung
keinen login:-Prompt präsentieren,
sondern sofort mit der Aushandlung der PPP-Verbindung
beginnen.PAP ist nicht so sicher wie CHAP, doch die Sicherheit ist
hierbei normalerweise kein Problem, da Passwörter, obgleich
von PAP im Klartext versandt, lediglich über die
serielle Verbindung verschickt werden. Es gibt für Cracker
wenig Möglichkeiten zu lauschen.Zurückkommend auf die Abschnitte
PPP und statische
IP-Adressen oder PPP und dynamische IP-Adressen
müssen folgende Veränderungen vorgenommen werden:13 set authname MyUserName
14 set authkey MyPassword
15 set loginZeile 13:Diese Zeile legt Ihren PAP/CHAP Benutzernamen fest.
Sie müssen den richtigen Wert für
MyUserName eingeben.Zeile 14:PasswortDiese Zeile legt Ihr PAP/CHAP Passwort fest. Sie
müssen den richtigen Wert für
MyPassword eingeben.
Sie können eine zusätzliche Zeile, wie etwa:16 accept PAPoder16 accept CHAPverwenden, um deutlich zu machen, dass dies
beabsichtigt ist, aber sowohl PAP wie auch CHAP als
standardmäßig akzeptiert werden.Zeile 15:Ihr ISP wird normalerweise nicht von Ihnen verlangen,
dass Sie sich am Server einloggen, wenn Sie PAP oder CHAP
verwenden. Sie müssen deshalb den String
set login deaktivieren.Veränderung Ihrer ppp
Konfiguration im laufenden BetriebEs ist möglich, dem Programm ppp
Befehle zu erteilen, während es im Hintergrund läuft.
Dazu ist jedoch die Einrichtung eines passenden Diagnose-Ports
erforderlich. Ergänzen Sie hierzu Ihre Konfigurationsdatei
um folgende Zeile:set server /var/run/ppp-tun%d DiagnosticPassword 0177Damit wird PPP angewiesen, auf den angegebenen
UNIX-Domainsocket zu hören und Clients nach dem angegebenen
Passwort zu fragen, bevor der Zugang Gewährt wird. Das
%d wird durch die Nummer des benutzten
tun-Devices ersetzt.Wenn ein Socket eingerichtet ist, kann das Programm
&man.pppctl.8; in Skripten verwendet werden, mit denen in das
laufende Programm eingegriffen wird.Interne NAT von PPP benutzenPPPNATPPP kann Network Address Translation (NAT) ohne Hilfe des
Kernels durchführen. Wenn Sie diese Funktion benutzen
wollen, fügen Sie die folgende Zeile in
/etc/ppp/ppp.conf ein:nat enable yesSie können NAT mit der Option
auf der Kommandozeile von PPP aktivieren. Weiterhin kann
NAT in /etc/rc.conf mit der Variablen
ppp_nat aktiviert werden. Dies ist auch die
Voreinstellung.Die nachstehende /etc/ppp/ppp.conf
benutzt NAT für bestimmte eingehende Verbindungen:nat port tcp 10.0.0.2:ftp ftp
nat port tcp 10.0.0.2:http httpWenn Sie Verbindungen von außen überhaupt nicht
trauen, benutzen Sie die folgende Zeile:nat deny_incoming yesAbschließende SystemkonfigurationPPPKonfigurationSie haben ppp nun konfiguriert,
aber bevor PPP eingesetzt werden kann, gibt noch einige
weitere Dinge zu erledigen, die alle die Bearbeitung der
Datei /etc/rc.conf erfordern.Gehen Sie diese Datei von oben nach unten durch, und stellen Sie
als Erstes sicher, dass die Zeile hostname=
vorhanden ist:hostname="foo.example.com"Wenn Ihnen Ihr ISP eine statische IP-Adresse und einen Namen
zugewiesen hat, ist es wahrscheinlich am besten, wenn Sie diesen
Namen als Hostnamen verwenden.Schauen Sie nach der Variable
network_interfaces. Wenn Sie Ihr System
so konfigurieren möchten, dass bei Bedarf
eine Verbindung zu Ihrem ISP aufgebaut wird, sollten Sie das Device
tun0 zu der Liste hinzufügen oder es
andernfalls entfernen.network_interfaces="lo0 tun0"
ifconfig_tun0=Die Variable ifconfig_tun0 sollte leer sein
und eine Datei namens /etc/start_if.tun0 sollte
erstellt werden. Diese Datei sollte die nachfolgende Zeile
enthalten:ppp -auto mysystemDieses Skript startet Ihren ppp-Dæmon im Automatik-Modus.
Es wird bei der Netzwerkkonfiguration ausgeführt.
Wenn Ihr Rechner als Gateway für ein LAN fungiert,
möchten Sie vielleicht auch die Option
verwenden. In der Manual-Seite sind
weitere Einzelheiten hierzu zu finden.Stellen Sie sicher, dass der Start eines Routerprogramms
in /etc/rc.conf wie folgt deaktiviert
ist:router_enable="NO"routedEs ist wichtig, dass der routed
Dæmon nicht gestartet wird da routed
dazu tendiert, die von ppp erstellten
Einträge der Standardroute zu überschreiben.Es ist außerdem sinnvoll, darauf zu achten, dass die Zeile
sendmail_flags nicht die Option
enthält, da sendmail sonst ab und zu
die Netzwerkverbindung prüfen wird, was möglicherweise dazu
führt, dass sich Ihr Rechner einwählt. Sie können
hier Folgendes angeben:sendmail_flags="-bd"sendmailDer Nachteil dieser Lösung ist, dass Sie
sendmail nach jedem Aufbau einer
ppp-Verbindung auffordern müssen, die Mailwarteschlange
zu überprüfen, indem Sie Folgendes eingeben:&prompt.root; /usr/sbin/sendmail -qVielleicht möchten Sie den Befehl !bg
in der Datei ppp.linkup verwenden, um dies
zu automatisieren:1 provider:
2 delete ALL
3 add 0 0 HISADDR
4 !bg sendmail -bd -q30mSMTPWenn Sie dies nicht möchten, ist es möglich,
einen dfilter einzusetzen, um SMTP-Verkehr
zu blockieren. Weitere Einzelheiten hierzu finden Sie in den
Beispieldateien.Das Einzige, was nun noch zu tun bleibt, ist Ihren Rechner neu
zu starten. Nach dem Neustart können Sie entweder:&prompt.root; pppund danach dial provider eingeben,
um eine PPP-Sitzung zu starten, oder Sie geben:&prompt.root; ppp -auto providerein, um ppp bei Datenverkehr aus Ihrem
Netzwerk heraus, automatisch eine Verbindung herstellen
zu lassen (vorausgesetzt Sie haben kein
start_if.tun0 Skript erstellt).ZusammenfassungDie folgenden Schritte sind nötig, wenn ppp zum ersten Mal
eingerichtet werden soll:Clientseite:Stellen Sie sicher, dass das
tun Device in den Kernel
eingebaut ist.
- Vergewissern Sie sich, dass die Gerätedatei
- tunN
- im Verzeichnis /dev vorhanden ist.
+ Vergewissern Sie sich, dass die Gerätedatei tunN
+ im Verzeichnis /dev vorhanden ist.Bearbeiten Sie die Datei
/etc/ppp/ppp.conf. Das Beispiel
pmdemand sollte für die meisten
ISP ausreichen.Wenn Sie eine dynamische IP-Adresse haben, erstellen Sie
einen Eintrag in der Datei
/etc/ppp/ppp.linkup.Aktualisieren Sie die Datei
/etc/rc.conf.Erstellen Sie das Skript start_if.tun0,
wenn Sie einen bedarfgesteuerten Einwahlprozess
(demand dialing)
benötigen.Serverseite:Stellen Sie sicher, dass das
tun Device in den Kernel
eingebaut ist.Vergewissern Sie sich, dass die Gerätedatei
tunN
im Verzeichnis /dev vorhanden istErstellen Sie einen Eintrag in der Datei
/etc/passwd
(verwenden Sie dazu das Programm &man.vipw.8;).Erstellen Sie ein Profil im Heimatverzeichnis des
Benutzers, das
ppp -direct direct-server o.Ä.
ausführt.Bearbeiten Sie die Datei
/etc/ppp/ppp.conf. Das Beispiel
direct-server sollte ausreichen.Erzeugen Sie einen Eintrag in
/etc/ppp/ppp.linkup.Aktualisieren Sie die Datei
/etc/rc.conf.Gennady B.SorokopudTeile wurden ursprünglich beigetragen von RobertHuffKernel-PPPEinrichtung von Kernel-PPPPPPKernel-PPPBevor Sie PPP auf Ihrem Computer einrichten, sollten Sie
- dafür sorgen, dass pppd im Verzeichnis
- /usr/sbin vorhanden ist und
- /etc/ppp existiert.
+ dafür sorgen, dass pppd im Verzeichnis /usr/sbin vorhanden ist und /etc/ppp existiert.
pppd kann auf zweierlei Weise arbeiten:Als Client – Sie möchten
Ihren Rechner mit einem Netz verbinden, indem Sie eine
serielle PPP-Verbindung aufbauen.PPPServerAls Server – Ihr Rechner ist in
ein Netzwerk eingebunden und stellt die PPP-Verbindung
für andere Rechner im Netzwerk her.In beiden Fällen werden Sie eine Datei mit den
benötigten Optionen erstellen müssen
(/etc/ppp/options oder,
wenn mehr als ein Benutzer PPP verwendet,
~/.ppprc).Sie benötigen außerdem eine Software
(vorzugsweise comms/kermit), mit der
Sie seriell per Modem wählen und eine Verbindung zu dem
entfernten Host aufbauen können.TrevRoydhouseBasierend auf Informationen von Verwendung von pppd als ClientPPPClientCiscoDie folgende Datei /etc/ppp/options
kann für einen Verbindungsaufbau mit PPP zu einem Cisco
Terminalserver verwendet werden.crtscts # enable hardware flow control
modem # modem control line
noipdefault # remote PPP server must supply your IP address
# if the remote host does not send your IP during IPCP
# negotiation, remove this option
passive # wait for LCP packets
domain ppp.foo.com # put your domain name here
-:<remote_ip> # put the IP of remote PPP host here
+:remote_ip # put the IP of remote PPP host here
# it will be used to route packets via PPP link
# if you didn't specified the noipdefault option
- # change this line to <local_ip>:<remote_ip>
+ # change this line to local_ip:remote_ip
defaultroute # put this if you want that PPP server will be your
# default routerUm eine Verbindung herzustellen, sollten Sie:KermitModemMit Kermit (oder einem
anderen Modemprogramm) den entfernten Host anwählen
und Ihren Benutzernamen sowie Ihr Passwort (oder was
sonst nötig ist, um PPP auf dem entfernten Host
zu aktivieren) eingeben.Kermit beenden
(ohne die Verbindung abzubrechen).Folgendes eingeben:
- &prompt.root; /usr/src/usr.sbin/pppd.new/pppd /dev/tty0119200
+ &prompt.root; /usr/sbin/pppd /dev/tty0119200Achten Sie darauf, dass sie eine geeignete Geschwindigkeit
wählen und das richtige Device verwenden.Nun ist Ihr Computer mit Hilfe von PPP verbunden. Wenn
die Verbindung nicht funktionieren sollte, können Sie
die Option in die Datei
/etc/ppp/options eintragen und die Ausgaben
auf der Konsole beobachten, um die Fehler zu finden.Das folgende Skript /etc/ppp/pppup
führt alle 3 Schritte automatisch aus:#!/bin/sh
pgrep -l pppd
pid=`pgrep pppd`
if [ "X${pid}" != "X" ] ; then
echo 'killing pppd, PID=' ${pid}
kill ${pid}
fi
pgrep -l kermit
pid=`pgrep kermit`
if [ "X${pid}" != "X" ] ; then
echo 'killing kermit, PID=' ${pid}
kill -9 ${pid}
fi
ifconfig ppp0 down
ifconfig ppp0 delete
kermit -y /etc/ppp/kermit.dial
pppd /dev/tty01 19200Kermit/etc/ppp/kermit.dial ist
ein Kermit-Skript
das den Einwählvorgang und alle notwendigen Autorisationen auf
dem entfernten Host durchführt (ein Beispiel für ein
solches Skript ist im Anhang zu diesem Dokument zu finden).Verwenden Sie das folgende Skript
/etc/ppp/pppdown, um die PPP-Verbindung
abzubrechen:#!/bin/sh
pid=`pgrep pppd`
if [ X${pid} != "X" ] ; then
echo 'killing pppd, PID=' ${pid}
kill -TERM ${pid}
fi
pgrep -l kermit
pid=`pgrep kermit`
if [ "X${pid}" != "X" ] ; then
echo 'killing kermit, PID=' ${pid}
kill -9 ${pid}
fi
/sbin/ifconfig ppp0 down
/sbin/ifconfig ppp0 delete
kermit -y /etc/ppp/kermit.hup
/etc/ppp/ppptestPrüfen Sie, ob pppd immer
noch läuft, indem Sie
/usr/etc/ppp/ppptest ausführen.
Dieses Skript sollte folgendermaßen aussehen:#!/bin/sh
pid=`pgrep pppd`
if [ X${pid} != "X" ] ; then
echo 'pppd running: PID=' ${pid-NONE}
else
echo 'No pppd running.'
fi
set -x
netstat -n -I ppp0
ifconfig ppp0Um die Modemverbindung abzubrechen, können Sie das Skript
/etc/ppp/kermit.hup verwenden, das Folgendes
enthalten sollte:set line /dev/tty01 ; put your modem device here
set speed 19200
set file type binary
set file names literal
set win 8
set rec pack 1024
set send pack 1024
set block 3
set term bytesize 8
set command bytesize 8
set flow none
pau 1
out +++
inp 5 OK
out ATH0\13
echo \13
exitHier ist eine alternative Methode, bei der chat
an Stelle von Kermit eingesetzt wird:Die folgenden beiden Dateien reichen aus, um eine
Verbindung über pppd herzustellen./etc/ppp/options:
- /dev/cuaa1 115200
+ /dev/cuad1 115200
crtscts # enable hardware flow control
modem # modem control line
connect "/usr/bin/chat -f /etc/ppp/login.chat.script"
noipdefault # remote PPP serve must supply your IP address
# if the remote host doesn't send your IP during
# IPCP negotiation, remove this option
passive # wait for LCP packets
domain <your.domain> # put your domain name here
: # put the IP of remote PPP host here
# it will be used to route packets via PPP link
# if you didn't specified the noipdefault option
- # change this line to <local_ip>:<remote_ip>
+ # change this line to local_ip:remote_ip;
defaultroute # put this if you want that PPP server will be
# your default router/etc/ppp/login.chat.script:Die folgenden Angaben sollten in einer Zeile stehen.
- ABORT BUSY ABORT 'NO CARRIER' "" AT OK ATDT<phone.number>
- CONNECT "" TIMEOUT 10 ogin:-\\r-ogin: <login-id>
- TIMEOUT 5 sword: <password>
+ ABORT BUSY ABORT 'NO CARRIER' "" AT OK ATDTphone.number
+ CONNECT "" TIMEOUT 10 ogin:-\\r-ogin: login-id
+ TIMEOUT 5 sword: passwordWenn diese Dateien richtig installiert und modifiziert sind,
müssen Sie pppd, nur noch wie folgt
starten:&prompt.root; pppdVerwendung von pppd als Server/etc/ppp/options sollte etwa Folgendes
enthalten:crtscts # Hardware flow control
netmask 255.255.255.0 # netmask (not required)
192.114.208.20:192.114.208.165 # IP's of local and remote hosts
# local ip must be different from one
# you assigned to the Ethernet (or other)
# interface on your machine.
# remote IP is IP address that will be
# assigned to the remote machine
domain ppp.foo.com # your domain
passive # wait for LCP
modem # modem lineDas folgende Skript /etc/ppp/pppserv
lässt pppd als Server zu arbeiten:#!/bin/sh
pgrep -l pppd
pid=`pgrep pppd`
if [ "X${pid}" != "X" ] ; then
echo 'killing pppd, PID=' ${pid}
kill ${pid}
fi
pgrep -l kermit
pid=`pgrep kermit`
if [ "X${pid}" != "X" ] ; then
echo 'killing kermit, PID=' ${pid}
kill -9 ${pid}
fi
# reset ppp interface
ifconfig ppp0 down
ifconfig ppp0 delete
# enable autoanswer mode
kermit -y /etc/ppp/kermit.ans
# run ppp
pppd /dev/tty01 19200Verwenden Sie das Skript/etc/ppp/pppservdown,
um den Server zu beenden:#!/bin/sh
pgrep -l pppd
pid=`pgrep pppd`
if [ "X${pid}" != "X" ] ; then
echo 'killing pppd, PID=' ${pid}
kill ${pid}
fi
pgrep -l kermit
pid=`pgrep kermit`
if [ "X${pid}" != "X" ] ; then
echo 'killing kermit, PID=' ${pid}
kill -9 ${pid}
fi
ifconfig ppp0 down
ifconfig ppp0 delete
kermit -y /etc/ppp/kermit.noansMit dem Kermit-Skript
(/etc/ppp/kermit.ans) lässt sich
die Funktion Ihres Modems, automatisch zu antworten, ein- bzw.
ausschalten. Es sollte folgendermaßen aussehen:set line /dev/tty01
set speed 19200
set file type binary
set file names literal
set win 8
set rec pack 1024
set send pack 1024
set block 3
set term bytesize 8
set command bytesize 8
set flow none
pau 1
out +++
inp 5 OK
out ATH0\13
inp 5 OK
echo \13
out ATS0=1\13 ; change this to out ATS0=0\13 if you want to disable
; autoanswer mode
inp 5 OK
echo \13
exitEin Skript namens /etc/ppp/kermit.dial wird
für die Einwahl und Authentifizierung am entfernten Host verwendet.
Sie müssen es noch an Ihre lokalen Gegebenheiten anpassen.
Geben Sie in diesem Skript Ihren Benutzernamen und Ihr Passwort ein.
In Abhängigkeit von der Reaktion Ihres Modems und des
entfernten Hosts, werden Sie auch noch die input
Anweisungen verändern müssen.;
; put the com line attached to the modem here:
;
set line /dev/tty01
;
; put the modem speed here:
;
set speed 19200
set file type binary ; full 8 bit file xfer
set file names literal
set win 8
set rec pack 1024
set send pack 1024
set block 3
set term bytesize 8
set command bytesize 8
set flow none
set modem hayes
set dial hangup off
set carrier auto ; Then SET CARRIER if necessary,
set dial display on ; Then SET DIAL if necessary,
set input echo on
set input timeout proceed
set input case ignore
def \%x 0 ; login prompt counter
goto slhup
:slcmd ; put the modem in command mode
echo Put the modem in command mode.
clear ; Clear unread characters from input buffer
pause 1
output +++ ; hayes escape sequence
input 1 OK\13\10 ; wait for OK
if success goto slhup
output \13
pause 1
output at\13
input 1 OK\13\10
if fail goto slcmd ; if modem doesn't answer OK, try again
:slhup ; hang up the phone
clear ; Clear unread characters from input buffer
pause 1
echo Hanging up the phone.
output ath0\13 ; hayes command for on hook
input 2 OK\13\10
if fail goto slcmd ; if no OK answer, put modem in command mode
:sldial ; dial the number
pause 1
echo Dialing.
output atdt9,550311\13\10 ; put phone number here
assign \%x 0 ; zero the time counter
:look
clear ; Clear unread characters from input buffer
increment \%x ; Count the seconds
input 1 {CONNECT }
if success goto sllogin
reinput 1 {NO CARRIER\13\10}
if success goto sldial
reinput 1 {NO DIALTONE\13\10}
if success goto slnodial
reinput 1 {\255}
if success goto slhup
reinput 1 {\127}
if success goto slhup
if < \%x 60 goto look
else goto slhup
:sllogin ; login
assign \%x 0 ; zero the time counter
pause 1
echo Looking for login prompt.
:slloop
increment \%x ; Count the seconds
clear ; Clear unread characters from input buffer
output \13
;
; put your expected login prompt here:
;
input 1 {Username: }
if success goto sluid
reinput 1 {\255}
if success goto slhup
reinput 1 {\127}
if success goto slhup
if < \%x 10 goto slloop ; try 10 times to get a login prompt
else goto slhup ; hang up and start again if 10 failures
:sluid
;
; put your userid here:
;
output ppp-login\13
input 1 {Password: }
;
; put your password here:
;
output ppp-password\13
input 1 {Entering SLIP mode.}
echo
quit
:slnodial
echo \7No dialtone. Check the telephone line!\7
exit 1
; local variables:
; mode: csh
; comment-start: "; "
; comment-start-skip: "; "
; end:TomRhodesBeigetragen von Probleme bei PPP-VerbindungenPPPFehlersucheDieser Abschnitt behandelt Probleme, die auftauchen
können, wenn PPP über ein Modem verwendet wird.
Sie müssen beispielsweise genau die Eingabeaufforderung
des Systems kennen, in das Sie sich einwählen.
Einige ISPs verwenden ssword
andere verwenden password; wenn
das Einwahlskript falsch ist, scheitert die Anmeldung.
Üblicherweise suchen Sie nach Fehlern der PPP-Verbindung
indem Sie sich manuell verbinden. Wie das genau geht,
wird im Folgenden gezeigt.Gerätedateien überprüfen
- Wenn Sie den Kernel neu konfiguriert haben, werden
- Sie such an das sio-Gerät
- erinnern. Falls Sie keinen Kernel konfiguriert haben,
- machen Sie sich keine Sorgen. Die seriellen Geräte
- finden Sie in der Ausgabe von dmesg:
+ Wenn Sie einen eigenen Kernel verwenden, stellen Sie sicher, dass
+ die folgende Zeile in der Kernelkonfigurationsdatei vorhanden
+ ist:
+
+ device sio
+
+ Das sio-Gerät ist bereits
+ im GENERIC-Kernel vorhanden, deshalb sind in
+ diesem Fall keine zusätzlichen Schritte vonnöten.
+ Kontrollieren Sie die Ausgabe von dmesg:&prompt.root; dmesg | grep sioIn der Ausgabe sollten die entsprechenden
sio-Geräte, beispielsweise
sio1
(COM2), angezeigt werden.
Wird ein passendes Gerät angezeigt, brauchen Sie
keinen neuen Kernel zu erstellen. Wenn Ihr Modem an
sio1
angeschlossen ist (in DOS ist dieser Anschluss als
- COM2 bekannt), ist
- /dev/cuaa1 die
- dazugehörende Gerätedatei.
+ COM2 bekannt), ist /dev/cuad1 die dazugehörende
+ Gerätedatei.
Manuelle VerbindungenEin Verbindungsaufbau zum Internet durch manuelle Steuerung
von ppp geht schnell, ist einfach und
stellt einen guten Weg dar, eine Verbindung auf Fehler hin
zu überprüfen oder einfach Informationen darüber
zu sammeln, wie Ihr ISP Verbindungen handhabt.
Lassen Sie uns PPP von der
Kommandozeile aus starten. Beachten Sie, dass in allen
Beispielen example
der Hostname der Maschine ist, auf der
PPP läuft. Sie starten
ppp, indem Sie einfach ppp
eingeben:&prompt.root; pppWir haben ppp nun gestartet.
- ppp ON example> set device /dev/cuaa1
+ ppp ON example> set device /dev/cuad1Wir geben das Device an, an das unser Modem angeschlossen ist.
- In diesem Fall ist es cuaa1.
+ In diesem Fall ist es cuad1.
ppp ON example> set speed 115200Wir geben die Verbindungsgeschwindigkeit an. Im Beispiel
verwenden wir 115200 kbpsppp ON example> enable dnsWir weisen ppp an, unseren
Resolver zu konfigurieren und in der Datei
/etc/resolv.conf Einträge für
den Nameserver hinzuzufügen. Falls ppp
unseren Hostnamen nicht bestimmen kann, geben wir diesen
später manuell an.ppp ON example> termWir wechseln in den Terminal-Modus, um
das Modem manuell kontrollieren zu können.
- deflink: Entering terminal mode on /dev/cuaa1
+ deflink: Entering terminal mode on /dev/cuad1
type '~h' for helpat
OK
atdt123456789Sie verwenden at zur Initialisierung
Ihres Modems und dann atdt sowie die Nummer Ihres
ISP, um den Einwählprozess zu starten.CONNECTDies ist die Bestätigung, dass eine Verbindung aufgebaut
wurde. Falls wir Verbindungsprobleme bekommen, die nicht
mit der Hardware zusammenhängen, werden wir an dieser
Stelle ansetzen müssen, um eine Lösung zu finden.ISP Login:myusernameHier werden Sie nach einem Benutzernamen gefragt. Geben Sie
am Prompt den Namen ein, den Ihnen Ihr ISP
zur Verfügung gestellt hat.ISP Pass:mypasswordAn dieser Stelle müssen Sie das Passwort angeben, das
Ihnen von Ihrem ISP vorgegeben wurde. Das
Passwort wird, analog dem normalen Anmeldevorgang,
nicht angezeigt.Shell or PPP:pppAbhängig von Ihrem ISP, kann es sein,
dass dieser Prompt bei Ihnen gar nicht erscheint. Wir werden
hier gefragt, ob wir eine Shell beim Provider verwenden oder
ppp starten wollen. Weil wir eine
Internetverbindung aufbauen wollen, haben wir uns in diesem
Beispiel für ppp entschieden.Ppp ON example>Beachten Sie, dass sich in diesem Beispiel das erste
in einen Großbuchstaben verwandelt hat.
Dies zeigt, dass wir erfolgreich eine Verbindung
zu unserem ISP hergestellt haben.PPp ON example>An dieser Stelle haben wir uns erfolgreich bei unserem
ISP authentifiziert und warten darauf, dass
uns eine IP-Adresse zugewiesen wird.PPP ON example>Wir haben uns mit der Gegenstelle auf eine
IP-Adresse geeinigt und den Verbindungsaufbau
erfolgreich abgeschlossenPPP ON example> add default HISADDRHier geben wir unsere Standardroute an. Weil zu diesem
Zeitpunkt unsere einzige Verbindung zu unserer Gegenstelle besteht,
müssen wir dies tun, bevor wir Kontakt zu unserer Umwelt
aufnehmen können. Falls dies aufgrund bestehender Routen
nicht funktionieren sollte, können Sie ein Ausrufungszeichen
! vor setzen.
Sie können diese Standardroute aber auch vor dem
eigentlichen Verbindungsaufbau angeben und
PPP wird entsprechend eine neue Route
aushandeln.Wenn alles gut ging, sollten wir nun eine aktive
Internetverbindung haben, die wir mit
Ctrlz
in den Hintergrund schicken können
Wenn sie feststellen, dass PPP wieder zu
ppp wird, ist die Verbindung abgebrochen.
Es ist gut dies zu wissen, weil dadurch der Verbindungsstatus
angezeigt wird. Große Ps zeigen an,
dass wir eine Verbindung zum ISP haben und
kleine ps zeigen an, dass
wir aus irgendeinem Grund die Verbindung verloren haben.
ppp hat nur diese beiden Zustände.FehlersucheWenn sie einen Direktanschluss haben und keine Verbindung
aufbauen können, schalten Sie die Hardware-Flusssteuerung
CTS/RTS aus, indem Sie die Option
verwenden. Dies ist
zumeist dann der Fall, wenn Sie mit einem
PPP-fähigen Terminalserver
verbunden sind. Hier bleibt PPP
bei dem Versuch hängen, Daten über Ihre
Nachrichtenverbindung zu schicken, weil auf ein
CTS-Signal (Clear-to-Send) gewartet
wird, das nie kommt. Wenn Sie diese Option jedoch gebrauchen,
sollten Sie auch die Option
verwenden, die erforderlich sein kann, um bestimmte Hardware
zu kontrollieren, die auf die Übertragung bestimmter
Zeichen zwischen den Kommunikations-Endpunkten (zumeist
XON/XOFF) angewiesen ist. Die Manual-Seite &man.ppp.8;
bietet mehr Informationen zu dieser Option und ihrer
Verwendung.Wenn Sie ein älteres Modem haben, benötigen Sie
vielleicht die Option .
Standardmäßig wird keine Parität vorausgesetzt,
sie ist aber für die Fehlerprüfung bei älteren
Modems und bei bestimmten ISPs erforderlich.
Sie könnten diese Option für den
ISP Compuserve benötigen.PPP kehrt möglicherweise
nicht in den Befehlsmodus zurück, was normalerweise
auf einen Fehler bei der Aushandlung hinweist, wobei der
ISP wartet, dass Ihre Seite den
Aushandlungsprozess beginnt. Die Option ~p
erzwingt in diesem Fall den Beginn des
Aushandlungsprozesses.Wenn Sie nie einen Login-Prompt erhalten, müssen
Sie statt des im Beispiel gezeigten UNIX-Stils höchst
wahrscheinlich PAP oder
CHAP für die Authentifizierung
verwenden. Um PAP oder
CHAP zu verwenden, ergänzen Sie
PPP einfach um folgende Optionen,
bevor Sie in den Terminalmodus wechseln:ppp ON example> set authname myusernameHierbei sollte myusername
durch den Benutzernamen ersetzt werden, den Sie von Ihrem
ISP bekommen haben.ppp ON example> set authkey mypasswordmypassword sollten Sie
durch das Passwort ersetzen, das Ihnen Ihr ISP
gegeben hat.Wenn die Verbindung aufgebaut wird, Sie aber keine Rechner
unter ihrem Domänen-Namen erreichen können, versuchen
Sie, einen Rechner mit &man.ping.8; und seiner
IP-Adresse zu erreichen. Wenn 100% der Pakete
verloren gehen, ist es sehr wahrscheinlich, dass Ihnen
keine Standardroute zugewiesen wurde. Überprüfen Sie,
ob während des Verbindungsaufbaus die Option
gesetzt war. Wenn Sie zu
einer entfernten IP-Adresse eine Verbindung
aufbauen können, ist es möglich, dass die
Adresse eines Nameservers nicht in die Datei
/etc/resolv.conf eingetragen
wurde. Diese Datei sollte folgendermaßen aussehen:domain example.com
nameserver x.x.x.x
nameserver y.y.y.y Dabei sollten x.x.x.x und
y.y.y.y durch die
IP-Adressen der DNS-Server Ihres
ISPs ersetzt werden. Diese Information
ist Ihnen bei Vertragsabschluss mitgeteilt worden. Wenn
nicht, sollte ein Anruf bei Ihrem ISP
Abhilfe schaffen.Mit &man.syslog.3; können Sie Ihre
PPP-Verbindung protokollieren.
Fügen Sie einfach die folgende Zeile in
/etc/syslog.conf ein:!ppp
*.* /var/log/ppp.logIn den meisten Fällen existiert diese
Funktionalität bereits.JimMockBeigetragen (durch http://node.to/freebsd/how-tos/how-to-freebsd-pppoe.html) von PPP over Ethernet (PPPoE)PPPover EthernetPPPoEPPP, over EthernetDieser Abschnitt beschreibt, wie Sie PPP over Ethernet
(PPPoE) einrichten.Konfiguration des KernelsEine besondere Kernelkonfiguration ist für PPPoE nicht
mehr erforderlich. Sofern die notwendige NetGraph-Unterstützung
nicht in den Kernel eingebaut wurde, wird diese von
ppp dynamisch geladen.Einrichtung von ppp.confDies hier ist ein Beispiel einer funktionierenden
ppp.conf:default:
set log Phase tun command # you can add more detailed logging if you wish
set ifaddr 10.0.0.1/0 10.0.0.2/0
name_of_service_provider:
set device PPPoE:xl1 # replace xl1 with your Ethernet device
set authname YOURLOGINNAME
set authkey YOURPASSWORD
set dial
set login
add default HISADDRppp ausführenAls root, geben Sie ein:&prompt.root; ppp -ddial name_of_service_providerppp beim Systemstart
ausführenFügen Sie Folgendes in Ihre Datei
/etc/rc.conf ein:ppp_enable="YES"
ppp_mode="ddial"
ppp_nat="YES" # if you want to enable nat for your local network, otherwise NO
ppp_profile="name_of_service_provider"Verwendung einer PPPoE-Dienstbezeichnung (service tag)Manchmal kann es notwendig sein, eine Dienstbezeichnung
(service tag) zu verwenden, um
eine Verbindung aufzubauen.
Dienstbezeichnungen werden eingesetzt, um zwischen verschiedenen
PPPoE-Servern unterscheiden zu können, die einem
bestehenden Netzwerk zugeteilt sind.Die erforderlichen Dienstbezeichnungen sollten in der
Dokumentation, zu finden sein, die Ihnen Ihr ISP zur Verfügung
gestellt hat. Wenn Sie diese Informationen dort nicht finden,
fragen Sie beim technischen Kundendienst Ihres ISP danach.Als letzte Möglichkeit, bleibt die Methode, die von
dem Programm Roaring Penguin PPPoE
vorgeschlagen wird, das in der Ports-Sammlung zu finden ist. Bedenken
Sie aber, dass dadurch Daten Ihres Modems gelöscht werden
können, so dass es nicht mehr benutzt werden kann.
Überlegen Sie also genau, ob Sie dies machen wollen.
Installieren Sie einfach das Programm, das Ihnen Ihr Provider
zusammen mit dem Modem geliefert hat. Gehen Sie dann in das
Menü System dieses Programms. Der Name
Ihres Profils, sollte in der Liste aufgeführt sein.
Normalerweise ist dies ISP.Der Name des Profils (service tag)
wird im Eintrag für
die PPPoE-Konfiguration in der Datei ppp.conf
verwendet, als der Teil des Befehls
set device (die manpage &man.ppp.8;
enthält Einzelheiten hierzu), der den Provider angibt.
Dieser Eintrag sollte folgendermaßen aussehen:set device PPPoE:xl1:ISPVergessen Sie nicht, statt xl1
das richtige Device Ihrer Netzwerkkarte anzugeben.Denken sie auch daran, ISP
durch das Profil, das Sie oben gefunden haben zu ersetzen.Weitere Informationen bieten:Nutzung von T-DSL und T-Online mit
FreeBSD von Udo ErdelhoffCheaper Broadband with FreeBSD on
DSL von Renaud Waldura.PPPoE mit einem &tm.3com;
HomeConnect
ADSL Modem Dual LinkDieses Modem folgt nicht dem RFC 2516
(A Method for transmitting PPP over Ethernet
(PPPoE), verfasst von L. Mamakos, K. Lidl, J. Evarts,
D. Carrel, D. Simone, und R. Wheeler). Stattdessen wurden andere
Pakettyp-Codes für die Ethernet Frames verwendet.
Bitte beschweren Sie sich unter 3Com, wenn Sie
der Ansicht sind, dass dieses Modem die PPPoE-Spezifikation einhalten
sollte.Um FreeBSD in die Lage zu versetzen, mit diesem Gerät zu
kommunizieren, muss ein sysctl Befehl angegeben werden. Dies kann
beim Systemstart automatisch geschehen, indem die Datei
/etc/sysctl.conf angepasst wird:net.graph.nonstandard_pppoe=1oder, wenn der Befehl unmittelbar wirksam werden soll,
durch:&prompt.root; sysctl net.graph.nonstandard_pppoe=1Da hiermit eine systemweit gültige Einstellung vorgenommen
wird, ist es nicht möglich, gleichzeitig mit einem normalen
PPPoE-Client oder Server und einem &tm.3com;
HomeConnect ADSL Modem
zu kommunizieren.PPP over ATM (PPPoA)PPPover ATMPPPoAPPP, over ATMNachfolgend wird beschrieben, wie PPP over ATM (PPPoA)
eingerichtet wird. PPPoA ist vor allem unter europäischen
DSL-Providern populär.Der Einsatz von PPPoA mit dem Alcatel &speedtouch; USBPPPoA-Unterstützung für dieses Gerät ist
unter FreeBSD als Port verfügbar, da die Firmware unter Alcatels
Lizenzvereinbarung vertrieben wird und deshalb nicht
mit dem FreeBSD-Basissystem frei verteilt werden kann.Um die Software zu installieren, verwenden Sie einfach die Ports-Sammlung. Installieren Sie den Port
net/pppoa und folgen Sie den dabei
angegebenen Instruktionen.Für den ordnungsgemäßen Betrieb muss
das Alcatel &speedtouch; USB, wie viele USB-Geräte,
Firmware auf den Gastrechner laden. FreeBSD kann die
Firmware automatisch laden, wenn das Gerät mit
dem USB-Anschluss verbunden wird. Dazu fügen Sie
als Benutzer root die nachstehenden
Zeilen in /etc/usbd.conf ein:device "Alcatel SpeedTouch USB"
devname "ugen[0-9]+"
vendor 0x06b9
product 0x4061
attach "/usr/local/sbin/modem_run -f /usr/local/libdata/mgmt.o"Den USB-Dæmon aktivieren Sie mit der folgenden
Zeile in /etc/rc.conf:usbd_enable="YES"Wenn die Verbindung beim Start von
ppp aufgebaut werden soll,
fügen Sie die nachstehenden Zeilen als Benutzer
root in /etc/rc.conf
ein:ppp_enable="YES"
ppp_mode="ddial"
ppp_profile="adsl"Verwenden Sie bitte diese Einstellungen zusammen mit
der Beispielkonfiguration in ppp.conf
des Ports net/pppoa.Die Verwendung von mpdSie können mpd verwenden,
um zu einer Reihe von Diensten, insbesondere PPTP-Diensten eine
Verbindung herzustellen. Sie finden
mpd in der Ports-Sammlung unter
net/mpd. Viele ADSL Modems,
wie das Alcatel &speedtouch; Home, sind auf einen PPTP-Tunnel
zwischen dem Modem und dem Rechner angewiesen.Zuerst müssen Sie den Port installieren, um danach
mpd entsprechend Ihren Anforderungen
und den Vorgaben Ihres Providers konfigurieren zu können. Der
Port installiert auch einige
- gut dokumentierte Beispielkonfigurationsdateien in
- PREFIX/etc/mpd/.
+ gut dokumentierte Beispielkonfigurationsdateien in PREFIX/etc/mpd/.
Beachten Sie, dass PREFIX hier das Verzeichnis
angibt, in das Ihre Ports installiert werden. Standardmäßig
- ist dies das Verzeichnis /usr/local/.
+ ist dies das Verzeichnis /usr/local/.
Ein kompletter Leitfaden zur Konfiguration von
mpd ist im HTML-Format verfügbar,
- sobald der Port installiert ist. Dieser ist in
- PREFIX/share/doc/mpd/
+ sobald der Port installiert ist. Dieser ist in PREFIX/share/doc/mpd/
zu finden. Hier ist eine Beispielkonfiguration, um mit
mpd eine Verbindung zu einem
ADSL-Dienst aufzubauen. Die Konfiguration ist auf zwei Dateien
verteilt. Zunächst die Datei
mpd.conf:default:
load adsl
adsl:
new -i ng0 adsl adsl
set bundle authname username
set bundle password password
set bundle disable multilink
set link no pap acfcomp protocomp
set link disable chap
set link accept chap
set link keep-alive 30 10
set ipcp no vjcomp
set ipcp ranges 0.0.0.0/0 0.0.0.0/0
set iface route default
set iface disable on-demand
set iface enable proxy-arp
set iface idle 0
openDer Benutzername, den Sie zur Authentifizierung bei
Ihrem ISP verwenden.Das Passwort, das Sie zur Authentifizierung bei
Ihrem ISP verwenden.Die Datei mpd.links enthält
Informationen über die Verbindung(en), die Sie aufbauen
möchten. Eine Beispieldatei mpd.links,
die das vorige Beispiel ergänzt, wird unten
angegeben:adsl:
set link type pptp
set pptp mode active
set pptp enable originate outcall
set pptp self 10.0.0.1
set pptp peer 10.0.0.138Die IP-Adresse des &os;-Rechners von dem aus Sie
mpd verwenden.Die IP-Adresse des ADSL-Modems.
Das Alcatel &speedtouch; Home hat die Adresse
10.0.0.138 voreingestellt.Ein Verbindungsaufbau kann einfach durch Eingabe des folgenden
Befehls als root gestartet werden:&prompt.root; mpd -b adslSie können sich den Status der Verbindung durch folgenden Befehl
anzeigen lassen:&prompt.user; ifconfig ng0
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1500
inet 216.136.204.117 --> 204.152.186.171 netmask 0xffffffffDie Verwendung von mpd ist der
empfehlenswerteste Weg, um mit &os; eine Verbindung zu
einem ADSL-Dienst aufzubauen.Die Verwendung von pptpclientEs ist außerdem möglich, mit FreeBSD eine
Verbindung zu anderen PPPoA-Diensten aufzubauen. Dazu wird
net/pptpclient verwendet.Um mit net/pptpclient eine
eine Verbindung zu einem DSL-Dienst aufbauen zu können,
müssen Sie den entsprechenden Port bzw. das Paket installieren
und die Datei /etc/ppp/ppp.conf bearbeiten.
Sie müssen root sein, um diese Schritte
durchführen zu können. Eine Beispieldatei für
ppp.conf ist weiter unten angegeben.
Weitere Informationen zu den Optionen von ppp.conf
bietet die Manual-Seite ppp
&man.ppp.8;:adsl:
set log phase chat lcp ipcp ccp tun command
set timeout 0
enable dns
set authname username
set authkey password
set ifaddr 0 0
add default HISADDRDer Benutzername für den Zugang zu den Diensten
Ihres ISP.Das Passwort für Ihren Account.Weil Sie Ihr Passwort in der Datei
ppp.conf in Klartext angeben müssen,
sollten Sie sicherstellen, dass niemand den Inhalt dieser Datei
lesen kann. Die folgende Reihe von Befehlen stellt sicher,
dass die Datei nur von root lesbar ist.
Zusätzliche Informationen bieten die Manual-Seiten
&man.chmod.1; und &man.chown.8;:&prompt.root; chown root:wheel /etc/ppp/ppp.conf
&prompt.root; chmod 600 /etc/ppp/ppp.confDies wird einen Tunnel für eine PPP-Session zu Ihrem
DSL-Router öffnen. Ethernet-DSL-Modems haben eine
vorkonfigurierte LAN-IP-Adresse, mit der Sie eine Verbindung
aufbauen. Im Falle des Alcatel &speedtouch; Home handelt es sich
dabei um die Adresse 10.0.0.138.
In der Dokumentation Ihres Routers sollte angegeben sein, welche
Adresse Ihr Gerät verwendet. Um den Tunnel zu öffnen
und eine PPP-Session zu starten, führen
Sie bitte folgenden Befehl aus:&prompt.root; pptp addressadslVielleicht möchten Sie ein kaufmännisches Und
(&) an das Ende oben angegebenen Kommandos
anfügen, da pptp sonst den
Prompt nicht zurückgibt.Ein virtuelles Tunnel-Device tun
wird für das Zusammenspiel der Prozesse
pptp und ppp
geschaffen. Wenn Sie den Prompt zurückerhalten haben
oder der pptp-Prozess das Vorliegen
einer Verbindung bestätigt, können Sie den Tunnel
folgendermaßen überprüfen:&prompt.user; ifconfig tun0
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
inet 216.136.204.21 --> 204.152.186.171 netmask 0xffffff00
Opened by PID 918Wenn Sie nicht in der Lage sein sollten, eine Verbindung
aufzubauen, überprüfen Sie die Konfiguration Ihres Routers,
den Sie normalerweise per telnet
oder mit einem Web-Browser erreichen können. Falls
dennoch keine Verbindung zustande kommt, sollten Sie die
Ausgabe des Befehls pptp und die
Logdatei /var/log/ppp.log von
ppp nach Hinweisen auf die Ursache
durchsuchen.SatoshiAsamiUrsprünglich beigetragen von GuyHelmerMit Beiträgen von PieroSeriniSLIPSLIPEinrichtung eines SLIP-ClientsSLIPClientIm Folgenden wird ein Weg beschrieben, SLIP auf einer
FreeBSD-Maschine für ein Netzwerk mit festen Hostnamen
einzurichten. Bei einer dynamischen Zuweisung des Hostnamens
(das heißt wenn sich Ihre Adresse bei jeder Einwahl ändert)
wird die Einrichtung wahrscheinlich etwas komplexer aussehen.Bestimmen Sie zuerst, an welcher seriellen Schnittstelle Ihr Modem
angeschlossen ist. Viele Leute erzeugen einen symbolischen Link,
- wie etwa /dev/modem, der auf den
- wirklichen Gerätenamen /dev/cuaaN
- (/dev/cuadN unter &os; 6.X)
- verweist. Damit ist es Ihnen möglich,
- vom eigentlichen Gerätenamen zu abstrahieren, sollten Sie
- das Modem einmal an eine andere Schnittstelle anschließen
- müssen. Es kann ziemlich umständlich sein, wenn Sie
- eine viele Dateien in /etc und
- .kermrc-Dateien, die über
- das ganze System verstreut sind, anpassen müssen!
+ wie etwa /dev/modem, der auf den wirklichen
+ Gerätenamen /dev/cuadN verweist. Damit ist es Ihnen
+ möglich, vom eigentlichen Gerätenamen zu abstrahieren,
+ sollten Sie das Modem einmal an eine andere Schnittstelle
+ anschließen müssen. Es kann ziemlich umständlich sein,
+ wenn Sie eine viele Dateien in /etc und
+ .kermrc-Dateien, die über das ganze System
+ verstreut sind, anpassen müssen!
- /dev/cuaa0
- (/dev/cuad0 unter &os; 6.X) ist
- COM1, /dev/cuaa1
- (/dev/cuad1 unter &os; 6.X) ist
- COM2, etc.
+ /dev/cuad0 ist
+ COM1, /dev/cuad1
+ ist COM2, etc.Stellen Sie sicher, dass Folgendes in Ihrer
Kernelkonfigurationsdatei steht:device sl 1Dieses pseudo-device ist im GENERIC Kernel
enthalten. Falls es von Ihnen nicht gelöscht wurde, sollten
Sie hier kein Problem haben.Dinge, die Sie nur einmal erledigen müssenTragen Sie Ihren lokalen Rechner, das Gateway, sowie
die Nameserver in Ihre Datei /etc/hosts
ein. Diese Datei sieht bei mir so aus:127.0.0.1 localhost loghost
136.152.64.181 water.CS.Example.EDU water.CS water
136.152.64.1 inr-3.CS.Example.EDU inr-3 slip-gateway
128.32.136.9 ns1.Example.EDU ns1
128.32.136.12 ns2.Example.EDU ns2Vergewissern Sie sich, dass in der Datei
- /etc/host.conf
- hosts vor bind steht, wenn
- Sie ein System vor FreeBSD 5.0 verwenden. Ab
- FreeBSD 5.0 wird die Datei
- /etc/nsswitch.conf verwendet, in deren
- -Zeile files vor
- dns stehen sollte. Ohne diese Reihenfolge
+ /etc/host.conf im Abschnitt
+ hosts:files vor
+ dns steht. Ohne diese Reihenfolge
könnten lustige Dinge passieren.Editieren Sie die Datei
/etc/rc.conf.Ihren Hostnamen geben Sie an, indem Sie folgende Zeile
bearbeiten:hostname="myname.my.domain"Hier sollte der vollständige Internethostname
Ihres Rechners angegeben werden.DefaultrouteDen Defaultrouter geben Sie durch die Modifikation
folgender Zeile an:defaultrouter="NO"wird zu:defaultrouter="slip-gateway"Erstellen Sie die Datei
/etc/resolv.conf, die Folgendes
enthält:domain CS.Example.EDU
nameserver 128.32.136.9
nameserver 128.32.136.12NameserverDomain NameWie Sie sehen, werden hiermit die Nameserver angegeben.
Natürlich hängen die tatsächlichen Domainnamen
und Adressen von Ihren Gegebenheiten ab.Legen Sie ein Passwort für root und
toor (sowie für alle anderen Accounts
die kein Passwort haben) fest.Starten Sie Ihren Rechner neu und überprüfen
Sie, ob er mir dem richtigen Hostnamen startet.Aufbau einer SLIP-VerbindungSLIPVerbindungsaufbauWählen Sie sich ein, geben Sie
slip und am Prompt den Namen Ihres
Rechners sowie Ihr Passwort ein. Was Sie eingeben müssen,
hängt von Ihren Gegebenheiten ab. Wenn Sie
Kermit verwenden, können Sie
ein Skript ähnlich dem Folgenden verwenden:# kermit setup
set modem hayes
set line /dev/modem
set speed 115200
set parity none
set flow rts/cts
set terminal bytesize 8
set file type binary
# The next macro will dial up and login
define slip dial 643-9600, input 10 =>, if failure stop, -
output slip\x0d, input 10 Username:, if failure stop, -
output silvia\x0d, input 10 Password:, if failure stop, -
output ***\x0d, echo \x0aCONNECTED\x0aNatürlich müssen Sie hier Ihren Benutzernamen
und Ihr Passwort eintragen. Wenn Sie das getan haben,
können Sie am Kermit-Prompt
einfach slip eingeben, um sich zu
verbinden.Es ist generell eine schlechte
Idee, Ihr Passwort in einer unverschlüsselten
Textdatei irgendwo im Dateisystem zu speichern.
Tun Sie dies auf Ihr eigenes Risiko.Belassen Sie Kermit so (Sie
können es mit
Ctrlz unterbrechen) und geben Sie als
root ein:&prompt.root; slattach -h -c -s 115200 /dev/modemWenn Sie mit ping Hosts auf der anderen
Seite des Routers erreichen können, sind Sie verbunden!
Wenn es nicht funktionieren sollte, können Sie versuchen
statt als Argument
für slattach zu verwenden.Beenden der VerbindungUm slattach zu beenden, geben Sie
Folgendes ein:&prompt.root; kill -INT `cat /var/run/slattach.modem.pid`Beachten Sie, dass Sie
root sein müssen, um dies
durchführen zu können. Kehren Sie zu kermit
zurück (mit Hilfe von fg, wenn Sie es
unterbrochen haben) und beenden Sie dieses Programm
(q).&man.slattach.8; gibt an,
dass ifconfig sl0 down verwendet werden
soll, um das Interface zu deaktivieren, doch das
scheint keinen Unterschied zu machen.
(ifconfig sl0 gibt dasselbe aus).Es kann vorkommen, dass Ihr Modem sich weigert, das
Trägersignal zu beenden. In diesem Fall starten Sie
kermit einfach neu und beenden es wieder.
Beim zweiten Versuch geht es meist aus.Lösungen bei ProblemenWenn es nicht funktionieren sollte, können Sie
an die Mailingliste &a.net.name; schreiben. Über
diese Dinge sind Benutzer bisher gestolpert:Nicht oder in
slattach verwenden (Das sollte
nicht entscheidend sein, aber einige Benutzer haben
berichtet, dass dies ihre Probleme löst).Verwendung von statt
(bei einigen Schriftarten kann der
Unterschied schwer zu erkennen sein).Probieren Sie ifconfig sl0,
um den Status Ihrer Schnittstelle abzufragen. Das Ergebnis
könnte beispielsweise so aussehen:&prompt.root; ifconfig sl0
sl0: flags=10<POINTOPOINT>
inet 136.152.64.181 --> 136.152.64.1 netmask ffffff00Wenn &man.ping.8; die Fehlermeldung
no route to host ausgibt, kann
die Routingtabelle falsch sein. Die Routen können Sie
sich mit dem Kommando netstat -r
ansehen:&prompt.root; netstat -r
Routing tables
Destination Gateway Flags Refs Use IfaceMTU Rtt Netmasks:
(root node)
(root node)
Route Tree for Protocol Family inet:
(root node) =>
default inr-3.Example.EDU UG 8 224515 sl0 - -
localhost.Exampl localhost.Example. UH 5 42127 lo0 - 0.438
inr-3.Example.ED water.CS.Example.E UH 1 0 sl0 - -
water.CS.Example localhost.Example. UGH 34 47641234 lo0 - 0.438
(root node)Die Zahlen im Beispiel stammen von einer recht
ausgelasteten Maschine. Die Zahlen auf Ihrem System werden,
je nach Netzaktivität, von den gezeigten
abweichen.Einrichtung eines SLIP-ServersSLIPServerDieses Dokument bietet Empfehlungen, wie Sie Ihr FreeBSD-System als
SLIP-Server einrichten. Typischerweise bedeutet dies, Ihr System so zu,
konfigurieren, dass beim Login automatisch eine Verbindung für
entfernte SLIP-Clients aufgebaut wird.VoraussetzungenTCP/IP NetzeDieser Abschnitt ist ausgesprochen technischer Natur, weshalb
Hintergrundwissen erforderlich ist. Wir gehen davon aus, dass Sie
mit dem TCP/IP Protokoll, insbesondere mit
Netzwerk- und Rechneradressierung, Netzwerkmasken, Subnetzen,
Routing und Routingprotokollen, wie RIP, vertraut sind.
Die Konfiguration von SLIP-Diensten
auf einem Einwählserver erfordert die Kenntnis dieser Konzepte.
Wenn Sie damit nicht vertraut sein sollten, lesen Sie bitte
Craig Hunt's TCP/IP Network Administration
publiziert von O'Reilly & Associates, Inc. (ISBN Nummer
0-937175-82-X) oder die Bücher von Douglas Comer über
das TCP/IP Protokoll.ModemWir gehen außerdem davon aus, dass Sie Ihr(e) Modem(s)
eingerichtet haben und die entsprechenden Systemdateien so
konfiguriert haben, dass Logins durch Ihr Modem zugelassen sind.
Wenn Sie Ihr System dafür noch nicht vorbereitet haben,
lesen Sie bitte , um Ihre
Einwahlverbindung zu konfigurieren. Hilfreich sind auch die
Manualpages &man.sio.4; mit Informationen zum Gerätetreiber
der seriellen Schnittstelle &man.ttys.5;, sowie &man.gettytab.5;,
&man.getty.8; und &man.init.8; für Informationen zur
Konfiguration von Logins über ein Modem. &man.stty.1; bietet
Informationen zur Einstellung der Parameter der seriellen
Schnittstelle (etwa von clocal für
direkt angeschlossene serielle Geräte).Ein kurzer ÜberblickMit der normal verwendeten Konfiguration funktioniert der
FreeBSD-SLIP-Server folgendermaßen: Ein SLIP-Benutzer
wählt einen FreeBSD-SLIP-Server an und meldet sich mit einer
speziellen SLIP-Login-ID ein, wobei
/usr/sbin/sliplogin als Shell dieses
besonderen Accounts dient. Das Programm
sliplogin durchsucht die Datei
/etc/sliphome/slip.hosts nach einer
passenden Zeile für diesen Account. Falls ein
Treffer erzielt wird, verbindet es den seriellen Anschluss mit
einem verfügbaren SLIP-Interface und führt das
Shellskript /etc/sliphome/slip.login
aus, um das SLIP-Interface zu konfigurieren.Ein Beispiel für ein Login eines SLIP-ServersWenn beispielsweise die Kennung eines SLIP-Benutzers,
Shelmerg wäre, könnte der Eintrag des
Benutzers Shelmerg in der Datei
/etc/master.passwd etwa so aussehen:Shelmerg:password:1964:89::0:0:Guy Helmer - SLIP:/usr/users/Shelmerg:/usr/sbin/sliploginWenn sich Shelmerg anmeldet,
wird sliplogin die Datei
/etc/sliphome/slip.hosts nach einer
übereinstimmenden Benutzerkennung durchsuchen. So
könnte etwa folgende Zeile in
/etc/sliphome/slip.hosts stehen:Shelmerg dc-slip sl-helmer 0xfffffc00 autocompsliplogin wird die passende Zeile finden,
den seriellen Anschluss mit dem nächsten verfügbaren
SLIP-Interface verbinden und dann
/etc/sliphome/slip.login wie hier
dargestellt ausführen:/etc/sliphome/slip.login 0 19200 Shelmerg dc-slip sl-helmer 0xfffffc00 autocompWenn alles gut läuft, wird
/etc/sliphome/slip.login ein
ifconfig für das SLIP-Interface
durchführen, mit dem sich sliplogin
verbunden hat (in obigem Beispiel ist das slip 0, der als
erster Parameter in der Liste an slip.login
übergeben wurde), um die lokale IP-Adresse
(dc-slip), die entfernte IP-Adresse
(sl-helmer), die Netzmaske
des SLIP-Interface (0xfffffc00) und
alle zusätzlichen Optionen (autocomp)
festzulegen. Wenn etwas schief laufen sollte, bietet,
sliplogin normalerweise informative
Meldungen durch den syslogd-Daemon,
der die Meldungen standardmäßig nach
/var/log/messages schreibt (sehen Sie
hierzu auch in den Manual-Seiten für &man.syslogd.8;
und &man.syslog.conf.5; nach). Überprüfen Sie
auch /etc/syslog.conf,
um zu sehen, was syslogd aufzeichnet und
wo es aufgezeichnet wird.KernelkonfigurationKernelKonfigurationDer Standardkernel von &os; (GENERIC)
bietet bereits SLIP-Unterstützung (&man.sl.4;). Falls
Sie einen angepassten Kernel verwenden, müssen Sie
sicherstellen, dass Ihre Kernelkonfigurationsdatei folgende
Zeile enthält:device slIn der Voreinstellung leitet Ihr &os;-Rechner keine
Pakete weiter. Wenn Sie Ihren FreeBSD-SLIP-Server als
Router einsetzen möchten, müssen Sie die Datei
/etc/rc.conf bearbeiten und den Wert
der Variable gateway_enable auf
- setzen.
+ setzen. Dadurch ist sichergestellt, dass
+ die Routingoptionen auch nach einem Neustart erhalten bleiben.
- Danach sollten Sie Ihren Rechner neu starten, damit die neuen
- Einstellungen wirksam werden.
+ Um die Einstellungen sofort anzuwenden, führen Sie den
+ folgenden Befehl als root-Benutzer aus:
+
+ &prompt.root; /etc/rc.d/routing startWeitere Informationen zur Konfiguration Ihres Kernels,
finden Sie in dieses Handbuches.Konfiguration des Sliplogin
- Wie bereits erwähnt, gibt es im Verzeichnis
- /etc/sliphome drei Dateien, die Teil der
+ Wie bereits erwähnt, gibt es im Verzeichnis /etc/sliphome drei Dateien, die Teil der
Konfiguration für /usr/sbin/sliplogin
sind (sliplogin ist in &man.sliplogin.8;
beschrieben): slip.hosts,
definiert die SLIP-Benutzer sowie deren IP-Adresse;
slip.login, womit normalerweise nur das
SLIP-Interface konfiguriert wird und (optional)
slip.logout, womit die Auswirkungen von
slip.login rückgängig gemacht
werden, wenn die serielle Verbindung beendet wird.Konfiguration der Datei
slip.hosts/etc/sliphome/slip.hosts enthält
Zeilen, die mindestens vier durch Leerzeichen getrennte Elemente
enthalten:Login-Kennung des SLIP-BenutzersLokale Adresse (lokal für den SLIP-Server)
der SLIP-VerbindungEntfernte Adresse der SLIP-VerbindungNetzwerkmaskeDie lokalen und entfernten Adressen können
Hostnamen sein, deren zugehörige IP-Adresse durch die
Datei /etc/hosts oder mithilfe des
Domain Name Service aufgelöst wird. Wie die Adressen
aufgelöst werden, hängt von den Einstellungen in
/etc/nsswitch.conf ab. Die Netzwerkmaske
kann ein Name sein, der durch
eine Suche in /etc/networks aufgelöst
werden kann. Auf einem Beispielsystem, würde die Datei
/etc/sliphome/slip.hosts
folgendermaßen aussehen:#
# login local-addr remote-addr mask opt1 opt2
# (normal,compress,noicmp)
#
Shelmerg dc-slip sl-helmerg 0xfffffc00 autocompAm Ende der Zeile stehen eine oder mehrere der folgenden
Optionen. – keine
Header-Kompression – Header werden
komprimiert – Header werden
komprimiert, sofern die Gegenstelle es erlaubt – ICMP-Pakete werden
deaktiviert (ping Pakete werden
unterdrückt, statt die Ihnen zur Verfügung
stehende Bandbreite aufzubrauchen)SLIPTCP/IP NetzeDie Auswahl von lokalen und entfernten Adressen für Ihre
SLIP-Verbindung, hängt davon ab, ob Sie ein TCP/IP-Subnetz
reservieren oder ob Sie proxy ARP auf Ihrem
SLIP-Server verwenden (es handelt sich nicht um
echtes proxy ARP, aber dieser Begriff wird
in diesem Abschnitt verwendet, um diesen Sachverhalt zu
beschreiben). Wenn Sie nicht sicher sind, welche Methode
Sie wählen sollen oder wie IP-Adressen zugewiesen werden,
lesen Sie bitte in den Büchern
zum Thema TCP/IP nach, die als Voraussetzungen für SLIP
() angegeben worden sind
oder fragen Sie Ihren IP-Netzwerkadministrator.Wenn Sie für Ihre SLIP-Clients ein eigenes Subnetz
verwenden, werden Sie die Nummer des Subnetzes aus der Ihnen
zugewiesenen IP-Netzwerknummer zuteilen und die IP-Adressen
Ihrer SLIP-Clients aus diesem Subnetz verwenden müssen.
Dann können Sie eine statische Route zu Ihrem
SLIP-Subnetz über Ihren SLIP-Server auf Ihren
nächsten IP-Router konfigurieren.EthernetWenn Sie aber andererseits die proxy ARP
Methode verwenden möchten, werden Sie die IP-Adressen Ihrer
SLIP-Clients aus dem Subnetz Ihres SLIP-Server nehmen und die
Skripte /etc/sliphome/slip.login/etc/sliphome/slip.logout anpassen
müssen, damit diese &man.arp.8; zur Verwaltung der
- proxy-ARP-Einträge in der ARP-Tabelle Ihres SLIP-Servers
- verwenden
+ proxy ARP-Einträge in der ARP-Tabelle Ihres
+ SLIP-Servers verwenden.Konfiguration von slip.loginEine typische Datei
/etc/sliphome/slip.login sieht
folgendermaßen aus:#!/bin/sh -
#
# @(#)slip.login 5.1 (Berkeley) 7/1/90
#
# generic login file for a slip line. sliplogin invokes this with
# the parameters:
# 1 2 3 4 5 6 7-n
# slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 inet $4 $5 netmask $6Diese slip.login Datei führt
lediglich ifconfig für das entsprechende
SLIP-Interface mit den lokalen und entfernten Adressen und der
Netzwerkmaske des SLIP-Interface aus.Wenn Sie sich dafür entschieden haben, die
proxy ARP Methode zu verwenden (statt eines
separaten Subnetzes für Ihre SLIP-Clients)
sollte Ihre Datei /etc/sliphome/slip.login
etwa folgendermaßen aussehen:#!/bin/sh -
#
# @(#)slip.login 5.1 (Berkeley) 7/1/90
#
# generic login file for a slip line. sliplogin invokes this with
# the parameters:
# 1 2 3 4 5 6 7-n
# slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 inet $4 $5 netmask $6
# Answer ARP requests for the SLIP client with our Ethernet addr
/usr/sbin/arp -s $5 00:11:22:33:44:55 pubDie zusätzliche Zeile arp -s
$5 00:11:22:33:44:55 pub in der Datei
slip.login erzeugt einen ARP-Eintrag
in der ARP-Tabelle des SLIP-Servers. Dieser ARP-Eintrag
veranlasst den SLIP-Server mit seiner Ethernet MAC-Adresse
zu antworten, sobald ein anderer IP-Knoten im Ethernet mit
der IP-Adresse des SLIP-Clients Kontakt aufnehmen
möchte.EthernetMAC AdresseWenn Sie das Beispiel von oben verwenden, achten Sie darauf
die Ethernet MAC-Adresse (00:11:22:33:44:55) durch die MAC-Adresse der
Ethernetkarte Ihres Systems zu ersetzen. Sonst wird Ihr
proxy ARP sicher nicht funktionieren! Sie
können die MAC-Adresse Ihres SLIP-Servers herausfinden,
indem Sie sich die Ausgabe von netstat -i
ansehen. Die zweite Zeile der Ausgabe sollte ungefähr
aussehen wie diese hier:ed0 1500 <Link>0.2.c1.28.5f.4a 191923 0 129457 0 116Dies zeigt an, dass die Ethernet MAC-Adresse dieses
Systems 00:02:c1:28:5f:4a lautet.
Die Punkte in der Ethernet MAC-Adresse, die von
netstat -i ausgegeben wird, müssen
durch Doppelpunkte ersetzt werden. Bei jeder einstelligen
Hexadezimalzahl sollten außerdem führende Nullen
hinzugefügt werden, um die Adresse in die Form zu bringen,
die von &man.arp.8; verlangt wird.
Die Manual-Seite von &man.arp.8; bietet hierzu eine
vollständige Übersicht.Wenn Sie die Dateien
/etc/sliphome/slip.login und
/etc/sliphome/slip.logout erstellen,
müssen diese ausführbar gemacht werden
(chmod 755 /etc/sliphome/slip.login
/etc/sliphome/slip.logout),
da sliplogin auf deren Ausführbarkeit
angewiesen ist. Konfiguration von slip.logoutDie Datei/etc/sliphome/slip.logout ist
nicht zwingend erforderlich (außer Sie verwenden proxy
ARP), aber falls Sie diese Datei erzeugen möchten,
ist hier ein Beispiel für ein grundlegendes
slip.logout Skript:#!/bin/sh -
#
# slip.logout
#
# logout file for a slip line. sliplogin invokes this with
# the parameters:
# 1 2 3 4 5 6 7-n
# slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 downWenn Sie proxy ARP einsetzen, muss
/etc/sliphome/slip.logout den
ARP-Eintrag für den SLIP-Client löschen:#!/bin/sh -
#
# @(#)slip.logout
#
# logout file for a slip line. sliplogin invokes this with
# the parameters:
# 1 2 3 4 5 6 7-n
# slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 down
# Quit answering ARP requests for the SLIP client
/usr/sbin/arp -d $5arp -d $5 löscht den ARP-Eintrag,
den die proxy ARPslip.login
hinzufügte, als der SLIP-Client sich eingeloggt hatte.Es soll nochmals darauf hingewiesen werden, dass für die
Datei /etc/sliphome/slip.logout das
Ausführungs-Bit gesetzt werden muss, nachdem die Datei
erstellt worden ist (z.B. chmod 755
/etc/sliphome/slip.logout).Überlegungen zum RoutingSLIPRoutingWenn Sie nicht die proxy ARP Methode benutzen,
um Datenpakete zwischen Ihren SLIP-Clients und dem Rest Ihres
Netzwerkes (oder vielleicht dem Internet) zu routen, werden Sie
wahrscheinlich statische Routen zu Ihrem nächsten
Standardrouter hinzufügen müssen, um Pakete aus dem
Subnetz Ihres SLIP-Clients über Ihren SLIP-Server
weiterzuleiten.Statische Routenstatische RoutenDas Hinzufügen von statischen Routen zu Ihrem
nächsten Standardrouter kann problematisch sein
(oder unmöglich, wenn Sie nicht die erforderliche
Berechtigung haben...). Wenn Sie in Ihrer Organisation ein
Netzwerk mit mehreren Routern haben, müssen einige Router,
wie etwa die von Cisco und Proteon hergestellten, nicht nur mit
der statischen Route zum SLIP-Subnetz konfiguriert werden, sondern
es muss ihnen auch mitgeteilt werden, über welche statischen
Routen sie andere Router informieren sollen. Daher ist einiges
an Fachwissen und Problemlösungskompetenz erforderlich, um auf
statischen Routen basierendes Routing erfolgreich
einzurichten.
-
-
- Der Einsatz von &gated;
-
- &gated
-
-
-
- &gated; ist inzwischen
- proprietäre Software und steht der Öffentlichkeit
- nicht mehr als Sourcecode zur Verfügung
- (weitere Informationen hierzu sind auf der
- &gated;
- Webseite zu finden). Dieser Abschnitt existiert lediglich,
- um die Rückwärtskompatibilität für
- diejenigen sicherzustellen, die noch eine ältere Version
- verwenden.
-
-
- Eine Alternative zu dem aufwändigen Einsatz von
- statischen Routen ist die Installation von
- &gated; auf Ihrem FreeBSD-SLIP-Server.
- &gated; kann so konfiguriert
- werden, dass er die passenden Routingprotokolle (RIP/OSPF/BGP/EGP)
- verwendet, um die anderen Router über Ihr SLIP-Subnetz zu
- informieren. Sie müssen die Datei
- /etc/gated.conf erstellen,
- um &gated; zu konfigurieren.
- Hier ist eine Beispieldatei, ähnlich derjenigen,
- die der Autor auf einem FreeBSD-SLIP-Server verwendet hat:
-
- #
-# gated configuration file for dc.dsu.edu; for gated version 3.5alpha5
-# Only broadcast RIP information for xxx.xxx.yy out the ed Ethernet interface
-#
-#
-# tracing options
-#
-traceoptions "/var/tmp/gated.output" replace size 100k files 2 general ;
-
-rip yes {
- interface sl noripout noripin ;
- interface ed ripin ripout version 1 ;
- traceoptions route ;
-} ;
-
-#
-# Turn on a bunch of tracing info for the interface to the kernel:
-kernel {
- traceoptions remnants request routes info interface ;
-} ;
-
-#
-# Propagate the route to xxx.xxx.yy out the Ethernet interface via RIP
-#
-
-export proto rip interface ed {
- proto direct {
- xxx.xxx.yy mask 255.255.252.0 metric 1; # SLIP connections
- } ;
-} ;
-
-#
-# Accept routes from RIP via ed Ethernet interfaces
-
-import proto rip interface ed {
- all ;
-} ;
-
- RIP
- Die oben angegebene Beispieldatei
- gated.conf sendet Routinginformationen,
- die das SLIP-Subnetz xxx.xxx.yy
- betreffen, mit Hilfe von RIP zum Ethernet. Wenn Sie einen
- anderen Ethernet-Treiber als ed
- verwenden, werden Sie die Einträge,
- die sich auf ed beziehen, entsprechend
- abändern müssen. Mit dieser Beispieldatei wird auch
- die Aufzeichnung der Aktivitäten von
- &gated; in der Datei
- /var/tmp/gated.output
- eingerichtet, was für eine eventuelle Fehlersuche
- nützlich sein kann. Sie können diese Option
- natürlich auch abschalten, wenn
- &gated;
- bei Ihnen ohne Probleme läuft. Sie müssen
- xxx.xxx.yy noch durch die
- Netzwerkadresse Ihres SLIP-Subnetzes ersetzen (ändern
- Sie die Netzmaske im Abschnitt proto direct
- ebenfalls).
-
- Wenn Sie &gated; auf Ihrem System
- installiert und konfiguriert haben, müssen Sie die
- FreeBSD-Startskripten noch anweisen,
- &gated;
- statt routed zu verwenden. Am
- einfachsten können Sie dies erreichen, indem Sie
- die Variablen router und
- router_flags in der Datei
- /etc/rc.conf entsprechend setzen.
- Die Manual-Seite für &gated; bietet
- weitere Informationen zu den Kommandozeilenparametern.
-
diff --git a/de_DE.ISO8859-1/books/handbook/serialcomms/chapter.sgml b/de_DE.ISO8859-1/books/handbook/serialcomms/chapter.sgml
index bd58eb1fa5..1ea0a19cbe 100644
--- a/de_DE.ISO8859-1/books/handbook/serialcomms/chapter.sgml
+++ b/de_DE.ISO8859-1/books/handbook/serialcomms/chapter.sgml
@@ -1,3090 +1,3040 @@
MartinHeinenÜbersetzt von Serielle DatenübertragungÜ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 FreeBSD zu verwenden.Nachdem Sie dieses Kapitel durchgearbeitet haben, werden
Sie Folgendes wissen:Wie Sie Terminals an Ihr FreeBSD anschließen.
Wie Sie sich mit einem Modem auf einem entfernten
Rechner einwählen.Wie Sie entfernten Benutzern erlauben, sich mit einem
Modem in Ihr System einzuwählen.Wie Sie Ihr System über eine serielle Konsole
booten.Bevor Sie dieses Kapitel lesen, sollten Sieeinen neuen Kernel konfigurieren und installieren
können ().Das Berechtigungskonzept von &unix; und Prozesse
verstehen ().Zudem sollten Sie Zugriff auf die Handbücher der
seriellen Komponenten (Modem oder Multiportkarte) haben, die Sie
mit FreeBSD verwenden wollen.EinführungBegriffebits-per-secondbpsBits pro Sekunde – Einheit für die
Übertragungsgeschwindigkeit.DEE (DTE)DEEDTEDatenendeinrichtung (Data Terminal Equipment) –
zum Beispiel Ihr Computer.DÜE (DCE)DÜEDCEDatenübertragungseinrichtung (Data Communications
Equipment) – Ein Modem.RS-232RS-232C KabelEIA (Electronic Industries Association) Norm für
die serielle Datenübertragung.In diesem Abschnitt wird der Begriff Baud nicht
für Übertragungsgeschwindigkeiten gebraucht. Baud
bezeichnet elektrische Zustandswechsel pro Zeiteinheit, die Taktfrequenz,
während bps (Bits pro Sekunde) der
richtige Begriff für die
Übertragungsgeschwindigkeit ist (die meisten Pedanten sollten
damit zufrieden sein).Kabel und SchnittstellenUm ein Modem oder einen Terminal an Ihr FreeBSD-System
anzuschließen, muss Ihr Computer über eine serielle
Schnittstelle verfügen. Zusätzlich brauchen Sie noch das
passende Kabel, um das Gerät mit der Schnittstelle zu
verbinden. Wenn Sie mit Ihren Geräten und den nötigen
Kabeln schon vertraut sind, können Sie diesen Abschnitt
überspringen.KabelEs gibt verschiedene serielle Kabel. Die zwei häufigsten
sind Nullmodemkabel und Standard-RS-232-Kabel. Die
Dokumentation Ihrer Hardware sollte beschreiben, welchen Kabeltyp
Sie benötigen.NullmodemkabelNullmodemkabelEin Nullmodemkabel verbindet einige Signale, wie die
Betriebserde, eins zu eins, andere Signale werden getauscht:
Die Sende- und Empfangsleitungen werden zum Beispiel
gekreuzt.Sie können das Kabel für die Anbindung eines
Terminals auch selbst herstellen. Die folgende Tabelle
enthält die Signalnamen von
RS-232C sowie die Pinbelegung für einen Stecker vom
Typ DB-25. Beachten Sie dabei aber, dass der Standard
zwar eine direkte Verbindung beider Pin 1
(Protective Ground) vorschreibt, diese
aber in vielen Fällen nicht vorhanden ist. 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. Es gibt aber noch weitere Varianten. Im Buch
RS-232 Made Easy wird beispielsweise
SG mit SG verbunden, TD mit RD, RTS und CTS mit DCD, DTR
mit DSR, und umgekehrt.Standard RS-232C KabelRS-232C KabelEin Standard-RS-232C-Kabel verbindet alle Signale direkt,
das heißt das Signal Transmitted Data wird mit
dem Signal Transmitted Data der Gegenstelle verbunden.
Dieses Kabel wird benötigt, um ein Modem mit einem
FreeBSD-System zu verbinden. Manche Terminals benötigen dieses
Kabel ebenfalls.SchnittstellenÜber serielle Schnittstellen werden Daten zwischen dem
FreeBSD-System und dem Terminal übertragen. Dieser
Abschnitt beschreibt die verschiedenen Schnittstellen und wie sie
unter FreeBSD angesprochen werden.Arten von SchnittstellenDa es verschiedene Schnittstellen gibt, sollten Sie vor
dem Kauf oder Selbstbau eines Kabels sicherstellen, dass
dieses zu den Schnittstellen Ihres Terminals und
FreeBSD-Systems passt.Die meisten Terminals besitzen DB-25-Stecker.
Personal Computer haben DB-25- oder DB-9-Stecker. Wenn
Sie eine serielle Multiportkarte für Ihren PC besitzen,
haben Sie vielleicht RJ-12- oder RJ-45-Anschlüsse.Die Dokumentation Ihrer Geräte sollte Aufschluss
über den Typ der benötigten Anschlüsse geben.
Oft hilft es, wenn Sie sich den Anschluss einfach
ansehen.SchnittstellenbezeichnungUnter FreeBSD sprechen Sie die serielle Schnittstelle
(Port) über einen Eintrag im /dev
Verzeichnis an. Es gibt dort zwei verschiedene
Einträge:Schnittstellen für eingehende Verbindungen werden
/dev/ttydN
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
/dev/cuadN
verwendet. Dieser Port wird normalerweise nur von
Modems genutzt. Sie können ihn allerdings für
Terminals benutzen, die das Data Carrier Detect
- Signal nicht unterstützen.
-
- Unter &os;5.X wurden Ports für ausgehende
- Verbindungen mit
- /dev/cuaaN
- bezeichnet.
-
+ Signal nicht unterstützen.
Wenn Sie einen Terminal an die erste serielle Schnittstelle
(COM1 in &ms-dos;), angeschlossen haben,
sprechen Sie ihn über /dev/ttyd0 an.
Wenn er an der zweiten seriellen Schnittstelle angeschlossen
ist, verwenden Sie /dev/ttyd1, usw.KernelkonfigurationIn der Voreinstellung benutzt FreeBSD vier serielle
Schnittstellen, die in &ms-dos;-Kreisen als
COM1, COM2,
COM3 und COM4
bekannt sind. Momentan unterstützt FreeBSD einfache
Multiportkarten (z.B. 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 eine Ihrer seriellen
Schnittstellen erkennt, achten Sie auf die Meldungen beim Booten,
oder schauen sich diese später mit
/sbin/dmesg an. Insbesondere sollten Sie auf
Meldungen achten, die mit den Zeichen sio
anfangen.Das folgende Kommando zeigt Ihnen nur die Meldungen an,
die die Folge sio enthalten:&prompt.root; /sbin/dmesg | grep 'sio'Auf einem System mit vier seriellen Schnittstellen sollte der
Kernel die folgenden Meldungen ausgeben:sio0 at 0x3f8-0x3ff irq 4 on isa
sio0: type 16550A
sio1 at 0x2f8-0x2ff irq 3 on isa
sio1: type 16550A
sio2 at 0x3e8-0x3ef irq 5 on isa
sio2: type 16550A
sio3 at 0x2e8-0x2ef irq 9 on isa
sio3: type 16550AWenn Ihr Kernel nicht alle seriellen Schnittstellen erkennt,
müssen Sie Ihren Kernel über die Datei
/boot/device.hints konfigurieren.
Zusätzlich können Sie Einträge für
Geräte, die auf Ihrem System nicht vorhanden sind, aus dem
Kernel entfernen.Die Hilfeseite &man.sio.4; enthält weitere Informationen
zu seriellen Schnittstellen und Multiportkarten.
Seien Sie vorsichtig, wenn Sie Konfigurationsdateien
von älteren FreeBSD-Versionen verwenden, da sich die Syntax
und die Bedeutung der Optionen zwischen verschiedenen
Versionen geändert hat.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
bitte, 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/ttydN
für eingehende Verbindungen und durch
/dev/cuadN für
ausgehende Verbindungen angesprochen. Zum Initialisieren der
Geräte stellt FreeBSD die Dateien
- /dev/ttydN und
- /dev/cuadN (unter
- &os; 6.X) beziehungsweise
- /dev/ttyidN und
- /dev/cuaiaN
+ /dev/ttydN.init und
+ /dev/cuadN.init
zur Verfügung.
Zusätzlich existieren Dateien für das Sperren von
Gerätedateien (Locking).
Dabei handelt es sich um die Dateien
/dev/ttydN.lock
und
- /dev/cuadN.lock
- (unter &os; 6.X) beziehungsweise um die Dateien
- /dev/ttyldN und
- /dev/cualaN.
- Diese Dateien werden
- benutzt, um Kommunikationsparameter beim Öffnen eines Ports
- vorzugeben. Für Modems, die zur Flusskontrolle
- RTS/CTS benutzen, kann damit
+ /dev/cuadN.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 SchnittstellettydcuadAnwendungen benutzen normalerweise die Geräte
ttydN oder
cuadN. 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/ttyd1Sie können diese Einstellungen verändern, sie bleiben
allerdings 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 zu
ändern, öffnen Sie das Gerät, das zum Initialisieren
dient und verändern dessen Einstellungen. Um beispielsweise
für ttyd5 den
Modus, 8-Bit Kommunikation und
Flusssteuerung einzuschalten, setzen Sie das folgende
Kommando ab:&prompt.root; stty -f /dev/ttyd5.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
ttyd5 auf 57600 bps festlegen wollen,
benutzen Sie das folgende Kommando:&prompt.root; stty -f /dev/ttyld5 57600Eine Anwendung, die ttyd5 ö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.SeanKellyBeigetragen von TerminalsTerminalsWenn Sie sich nicht an der Konsole oder über ein Netzwerk an
Ihrem FreeBSD-System anmelden können, sind Terminals ein
bequemer und billiger Weg auf Ihr System zuzugreifen. Dieser
Abschnitt beschreibt wie Sie Terminals mit FreeBSD benutzen.TerminaltypenDas 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. Dies entspricht der Benutzung eines Modems
zum Anmelden auf einem entfernten System, um dort mit einem
Terminalemulator im Textmodus zu arbeiten.Die Konsolen heutiger PCs besitzen sehr gute
Grafikfähigkeiten, trotzdem gibt es in fast jedem &unix; System
die Möglichkeit, sich über die serielle Schnittstelle
anzumelden; FreeBSD ist da keine Ausnahme. Sie können sich an
einem Terminal anmelden und dort jedes Textprogramm, das Sie
normalerweise an der Konsole oder in einem xterm
Fenster im X Window System benutzen, laufen lassen.Im kommerziellen Umfeld können Sie viele Terminals an ein
FreeBSD-System anschließen und diese auf den
Arbeitsplätzen Ihrer Angestellten aufstellen. Im privaten
Umfeld kann ein älterer IBM PC oder &macintosh; als Terminal
dienen. Damit verwandeln Sie einen Einzelarbeitsplatz in ein
leistungsfähiges Mehrbenutzersystem.FreeBSD kennt drei verschiedene Terminals:Dumb terminals,PCs, die als Terminals
fungieren,X Terminals.Die folgenden Abschnitte beschreiben jeden dieser Terminals.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 Programme, wie Texteditoren, Compiler oder Spiele befinden
sich auf dem Rechner, der mit dem Terminal verbunden ist.Es gibt viele Dumb-Terminals, die von verschiedenen
Herstellern produziert werden, wie zum Beispiel der VT-100 von
Digital Equipment Corporation oder der WY-75 von Wyse. So gut
wie jeder der verschiedenen Terminals sollte mit FreeBSD
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, wie zum Beispiel X-Programme, laufen
müssen.PCs, die als Terminal fungierenJeder PC kann die Funktion eines
Dumb-Terminals, der ja nur
Text senden und empfangen kann, übernehmen. Dazu brauchen
Sie nur das richtige Kabel und eine
Terminalemulation, die auf dem PC
läuft.Diese Konfiguration ist im privaten Umfeld sehr beliebt. Wenn
Ihr Ehepartner zum Beispiel gerade an der FreeBSD-Konsole arbeitet,
können Sie einen weniger leistungsstarken PC, der als
Terminal mit dem FreeBSD-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 serial-port-deviceserial-port-device ist hier der Name der
Gerätedatei, die einer bestimmten seriellen Schnittstelle
- Ihres Systems zugewiesen ist. Diese Gerätedateien wurden
- vor &os; 6.0 als
- /dev/cuaaN,
- seither als
+ Ihres Systems zugewiesen ist. Diese Gerätedateien werden
/dev/cuadN
- bezeichnet.
+ genannt.
Der Buchstabe N muss dabei durch die Nummer
des seriellen Ports Ihres Systems ersetzt werden.Beachten Sie, dass die Numerierung dieses Daten (im
Gegensatz etwa zu &ms-dos;-kompatiblen Systemen) unter &os;
mit Null und nicht mit Eins beginnt. Die Schnittstelle
COM1 entspricht daher in der Regel
/dev/cuad0 unter &os;.In der Ports-Sammlung finden sich weitere Programme
(beispielsweise comms/minicom), mit denen Sie
eine Verbindung über eine serielle Schnittstelle
herstellen können.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 X-Anwendung darstellen.X-Terminals sind hier nur der Vollständigkeit halber
aufgezählt. Die Einrichtung von X-Terminals wird in diesem
Abschnitt nicht beschrieben.KonfigurationIm Folgenden wird beschrieben, wie Sie Ihr FreeBSD-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.Aus wissen Sie, dass
init für das Initialisieren des Systems und
den Start von Prozessen zum Zeitpunkt des Systemstarts
verantwortlich ist. 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 Ihrem FreeBSD-System einzurichten, führen
Sie folgenden Schritte als root durch:Wenn er noch nicht da ist, fügen Sie einen Eintrag in
/etc/ttys für die serielle
Schnittstelle aus /dev ein.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.
Die genaue Vorgehensweise wird in diesem Abschnitt nicht
erklärt, aber die Manualpages von &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 Sie sich auf dem FreeBSD-System
anmelden können. Hier findet sich zum Beispiel ein Eintrag
für die erste virtuelle Konsole
- /dev/ttyv0, der es Ihnen ermöglicht,
+ /dev/ttyv0, der es Ihnen ermöglicht,
sich dort anzumelden. Die Datei enthält des Weiteren
Einträge für andere virtuelle Konsolen, serielle
Schnittstellen und Pseudoterminals. Wenn Sie einen Terminal
konfigurieren wollen, 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. Wenn Sie an eine von diesen einen
+ vier seriellen Schnittstellen: ttyd0 bis
+ ttyd3. Wenn Sie an eine von diesen einen
Terminal anschließen, brauchen Sie keinen weiteren Eintrag
hinzuzufügen.Einträge in /etc/ttys
hinzufügenAngenommen, wir wollen an ein System zwei Terminals
anschließen: Einen Wyse-50 und einen alten 286 IBM PC,
der mit Procomm einen VT-100
Terminal emuliert. Den Wyse-Terminal verbinden wir mit der
zweiten seriellen Schnittstelle und den 286 mit der sechsten
seriellen Schnittstelle (einem Anschluss auf einer
Multiportkarte). Die entsprechenden Einträge in
/etc/ttys würden dann wie folgt
aussehen:ttyd1 "/usr/libexec/getty std.38400" wy50 on insecure
ttyd5 "/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. Natürlich
können Sie auch eigene Einträge erstellen,
Informationen dazu finden Sie in &man.gettytab.5;.Wenn Sie den Verbindungstyp in
/etc/ttys eintragen, stellen Sie
bitte sicher, dass die Kommunikationseinstellungen
auch mit denen des Terminals übereinstimmen.In unserem 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 Sie in diesem Feld einen richtigen Typ aus der
&man.termcap.5; Datenbank angeben können.In unserem Beispiel benutzen wir für den 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. Wenn Sie hier on
angeben, startet init das Programm, das
im zweiten Feld angegeben wurde (normal
getty). Wenn Sie off
angeben, wird das Kommando aus dem zweiten Feld nicht
ausgeführt und folglich können Sie sich dann an
dem betreffenden Terminal nicht anmelden.Im letzten Feld geben Sie die Sicherheit des
Anschlusses an. Wenn Sie hier secure
angeben, darf sich root (oder jeder
Account mit der UID 0) über diese
Verbindung anmelden. Wenn Sie insecure
angeben, 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
nur für Terminals hinter verschlossenen Türen
zu verwenden, da Sie mit su leicht zum
Superuser werden können.init zwingen,
/etc/ttys erneut zu lesenNachdem Sie die nötigen Änderungen in
/etc/ttys vorgenommen haben, 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 PID
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 sollten Sie eine Anmeldeaufforderung sehen.FehlersucheSelbst wenn Sie den Anweisungen akribisch gefolgt sind, kann es
immer noch zu Fehlern beim Einrichten eines Terminals kommen. Die
folgende Aufzählung von Symptomen beschreibt mögliche
Lösungen:Es erscheint kein AnmeldepromptStellen 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 FreeBSD-Rechner verbunden ist.Stellen Sie sicher, dass die Einstellungen für
die Geschwindigkeit (bps) und Parität auf dem FreeBSD
System und dem Terminal gleich sind. Wenn Ihr Terminal einen
Bildschirm besitzt, überprüfen Sie die richtige
Einstellung von Helligkeit und Kontrast. Wenn Ihr 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 sollten Sie einen Eintrag sehen.
Aus dem folgenden Beispiel erkennen Sie, dass
getty auf der zweiten seriellen
- Schnittstelle läuft und den Verbindungstyp
- std.38400 aus
+ Schnittstelle tyyd1 läuft und den
+ Verbindungstyp std.38400 aus
/etc/gettytab benutzt:22189 d1 Is+ 0:00.03 /usr/libexec/getty std.38400 ttyd1Wenn getty nicht läuft,
überprüfen Sie, ob der Anschluss in
/etc/ttys aktiviert ist. Haben Sie
kill -HUP 1 abgesetzt, nachdem Sie
/etc/ttys geändert hatten?Wenn getty läuft, aber der
Terminal immer noch kein Anmeldeprompt ausgibt, oder Sie am
Anmeldeprompt nichts eingeben können, kann es sein,
dass Ihr 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 das Kommando 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, müssen Sie
vielleicht die Geschwindigkeit verkleinern oder die
Software-Flusssteuerung aktivieren, um
Pufferüberläufe zu vermeiden.Es erscheinen nur unverständliche ZeichenStellen Sie sicher, dass die Einstellungen für
die Geschwindigkeit (bps) und Parität auf dem FreeBSD
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.Zeichen erscheinen doppelt und eingegebene
Passwörter erscheinen im KlartextStellen Sie den Terminal oder die Terminalemulation von
half duplex oder local echo auf
full duplex. um.GuyHelmerBeigetragen von SeanKellyMit Anmerkungen von EinwählverbindungenEinwählverbindungenDas Einrichten von Einwählverbindungen ähnelt dem
Anschließen von Terminals, nur dass Sie anstelle eines
Terminals ein Modem verwenden.Externe und interne ModemsExterne 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 und unter Umständen Besucher beeindrucken
können.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.Modems und KabelModemMit einem externen Modem müssen Sie das richtige Kabel
benutzen: 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 FreeBSD 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 Sie Probleme der Art
haben, 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 FreeBSD
Hardwaresignale, um festzustellen, ob ein Anruf
beantwortet wurde, eine Verbindung beendet wurde, oder um die
Verbindung zu schließen und das Modem zurückzusetzen.
FreeBSD vermeidet es, dem Modem Kommandos zu senden, oder den
Statusreport des Modems abzufragen. Falls Sie ein Benutzer
von PC-basierenden Bulletin Board Systemen sind, mag Sie das
verwundern.SchnittstellenbausteineFreeBSD 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/ttyd0
angeschlossen ist, sollte in der Ausgabe von ps
ax eine Zeile wie die folgende erscheinen: 4850 ?? I 0:00.09 /usr/libexec/getty V19200 ttyd0Wenn 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 vollendet das Öffnen der Schnittstelle durch
getty. 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/logingetty führt, nachdem der Benutzer seinen
Namen eingegeben hat, /usr/bin/login aus,
welches das Passwort abfragt und danach die Shell des
Benutzers startet.KonfigurationsdateienDrei Konfigurationsdateien in /etc
steuern, ob eine Einwahl in Ihr FreeBSD-System möglich ist.
Die erste, /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
haben Sie in /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.Konfiguration für feste GeschwindigkeitWenn Sie die Modemgeschwindigkeit vorgeben, werden Sie in
/etc/gettytab nichts ändern
müssen.Konfiguration für angepasste GeschwindigkeitIn /etc/gettytab müssen
Einträge für die Geschwindigkeiten, die Sie benutzen
wollen, sein. Wenn Sie ein 2400 bps Modem besitzen,
können Sie wahrscheinlich den schon vorhandenen
D2400 Eintrag benutzen.#
# 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:Wenn Sie ein Modem mit einer höheren Geschwindigkeit
besitzen, müssen Sie wahrscheinlich in
/etc/gettytab weitere Einträge
erstellen. Hier ist ein Beispiel, das Sie mit einem 14400 bps
Modem benutzen können:#
# 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 in Ihrem 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:ttyd0 "/usr/libexec/getty xxx" dialup onDas erste Feld der obigen Zeile gibt die Gerätedatei
- für diesen Eintrag an – ttyd0
+ für diesen Eintrag an – ttyd0
bedeutet, dass getty mit
/dev/ttyd0 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 aber
beispielsweise nur VT102 Terminals oder Emulatoren einsetzen,
können Sie den Terminaltyp hier auch fest auf
vt102 setzen.Nachdem Sie /etc/ttys geändert
haben, müssen Sie init ein
HUP Signal schicken, damit es die Datei wieder
einliest. Sie können dazu das folgende Kommando
verwenden:&prompt.root; kill -HUP 1Wenn Sie das System zum ersten Mal konfigurieren, sollten Sie
dieses Kommando erst ausführen, wenn Sie Ihr Modem richtig
konfiguriert und angeschlossen haben.Konfiguration für feste GeschwindigkeitDas 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:ttyd0 "/usr/libexec/getty std.19200" dialup onWenn Ihr 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.Konfiguration für angepasste GeschwindigkeitDas 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:ttyd0 "/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/ttyd1.init crtscts
stty -f /dev/cuad1.init crtsctsModemkonfigurationWenn Sie ein Modem besitzen, das seine Konfiguration in nicht
flüchtigem RAM speichert, werden Sie ein Terminalprogramm wie
- Telix unter &ms-dos; oder tip unter FreeBSD
- benötigen, um die Parameter einzustellen. Verbinden Sie sich
- mit derselben Geschwindigkeit, die getty
- zuerst benutzen würde, mit dem Modem und treffen Sie folgende
- Einstellungen:
+ Telix unter &ms-dos; oder
+ tip unter &os; benötigen, 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.In der Dokumentation Ihres Modems finden Sie die nötigen
Befehle, die Sie absetzen müssen, und/oder nötigen
DIP-Schalterstellungen, um die obigen Einstellungen zu
treffen.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 Sie vielleicht
als Beispiel für andere Modems verwenden: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.Konfiguration für feste GeschwindigkeitDie 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&WKonfiguration für angepasste GeschwindigkeitIn 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 Ihres 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:Überprüfen des FreeBSD-SystemsSchließen Sie das Modem an das FreeBSD-System an und
booten Sie das System. Wenn Ihr Modem über
Statusindikatoren verfügt, überprüfen Sie, ob der
DTR Indikator leuchtet, wenn das Anmeldeprompt
erscheint. Dies zeigt an, dass das FreeBSD-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 FreeBSD-System an und überprüfen mit
ps ax, ob FreeBSD einen
getty-Prozess auf der entsprechenden
Schnittstelle gestartet hat. Unter den angezeigten Prozessen
sollten Sie ähnliche wie die folgenden finden: 114 ?? I 0:00.10 /usr/libexec/getty V19200 ttyd0
115 ?? I 0:00.10 /usr/libexec/getty V19200 ttyd1Wenn das Modem noch keinen Anruf entgegengenommen hat und Sie
stattdessen die folgende Zeile sehen 114 d0 I 0:00.10 /usr/libexec/getty V19200 ttyd0bedeutet 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 ttydN
+ gewünschten ttydN
Ports finden, untersuchen Sie bitte /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/ttydN
vorhanden sind.EinwählversuchVersuchen Sie, sich in Ihr System einzuwählen. Auf dem
entfernten System stellen Sie bitte die folgenden
Kommunikationsparameter ein: 8 Bit, keine Parität, ein
Stop-Bit. Wenn Sie kein Anmeldeprompt erhalten oder nur
unleserliche Zeichen sehen, 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
(AT&B1 für ein
&usrobotics; &sportster;).Wenn Sie jetzt immer noch kein Anmeldeprompt erhalten,
überprüfen Sie nochmals /etc/gettytab
und stellen sicher, dassder 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 an Ihrem FreeBSD-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 Ihr 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, machen Sie erst einmal
eine Pause, bevor Sie weitermachen. 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 und Ihnen sollte geholfen werden.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, oder um eine Verbindung zu einem BBS (Bulletin Board
System) herzustellen.Weiterhin ist diese Art von Verbindungen nützlich, wenn mal
Ihr PPP 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 Sie
danach mit zmodem auf den lokalen Rechner übertragen.
-
+ Mein Hayes Modem wird nicht unterstützt – was kann
ich tun?Eigentlich ist die Onlinehilfe für tip
nicht mehr aktuell. Es gibt einen eingebauten, allgemeinen
Hayes Wähler. Verwenden Sie einfach at=hayes
in /etc/remote.Der Hayes-Treiber ist nicht schlau genug, um ein paar der
erweiterten Funktionen von neueren Modems zu erkennen –
Nachrichten wie BUSY,
NO DIALTONE oder CONNECT 115200
verwirren ihn nur. Sie sollten diese Nachrichten mit Hilfe von
ATX0&W abschalten, wenn Sie
tip benutzen.Der Anwahl-Timeout von tip beträgt 60
Sekunden. Ihr Modem sollte weniger verwenden, oder
tip denkt, dass ein Kommunikationsfehler
vorliegt. Versuchen Sie es mit
ATS7=45&W.
-
-
- Tatsächlich unterstützt die ausgelieferte Version
- von tip Hayes Modems noch nicht
- vollständig. Die Lösung ist,
- tipconf.h in
- /usr/src/usr.bin/tip/tip zu editieren.
- Dafür benötigen Sie natürlich die Quellcode
- Distribution.
-
- Ändern Sie die Zeile #define HAYES 0
- zu #define HAYES 1. Dann führen Sie
- make und make install aus.
- Es sollte jetzt funktionieren.
- Wie soll ich die AT-Befehle eingeben?/etc/remoteErstellen Sie einen so genannten direct
Eintrag in /etc/remote. Wenn Ihr 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 Ihr Modem in der
br Fähigkeit unterstützt. Geben Sie dann tip
cuad0 ein und Sie sind mit Ihrem
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 ~..
+ Befehle fertig sind, beenden Sie mit ~..
-
+ Wieso funktioniert das @ Zeichen für
die pn Fähigkeit nicht?Das @ Zeichen in der
Telefonnummerfähigkeit sagt tip, dass
es in der Datei /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?Stellen 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:Mit dem folgenden Befehl können Sie dann
wählen:&prompt.root; tip -115200 5551234Sollten Sie cu gegenüber
tip bevorzugen, verwenden Sie einen allgemeinen
cu-Eintrag: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 115200
-
+ Muss ich dabei jedes Mal die bps-Rate angeben?Schreiben Sie einen tip1200- oder einen
cu1200-Eintrag, aber geben Sie auch die bps-Rate
an, die Ihr 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.
-
+ Wie kann ich möglichst komfortabel über einen
Terminal-Server auf verschiedene Rechner zugreifen?Sie 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: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: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.
-
+ Kann tip mehr als eine Verbindung für
jede Seite ausprobieren?Das ist oft ein Problem, wenn eine Universität mehrere
Telefonleitungen hat und viele tausend Studenten diese benutzen
wollen.Erstellen Sie einen Eintrag für Ihre Universität 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 die Telefonnummern der Universität 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.
-
+ Warum muss ich zweimal
CtrlP
tippen, um ein
CtrlP
zu senden?CtrlP
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-char>
+ force=single-char
-
+ Warum ist auf einmal alles was ich schreibe in
GROSSBUCHSTABEN??Sie müssen
CtrlA, eingegeben haben, 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
Sie diese Fähigkeiten niemals benutzen wollen.Hier ist ein Muster der .tiprc Datei,
perfekt für Emacs Benutzer, die oft
Ctrl2
und
CtrlA
tippen müssen:force=^^
raisechar=^^Geben Sie für ^^ShiftCtrl6 ein.
-
+ Wie kann ich Dateien mit tip
übertragen?Wenn 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 sollten Sie besser ein
anderes Protokoll, wie zmodem, benutzen.
-
+ Wie kann ich zmodem mit tip laufen
lassen?Um 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.KazutakaYOKOTABeigesteuert von BillPaulAuf Grundlage eines Dokuments von Einrichten der seriellen Konsoleserielle KonsoleEinführungFreeBSD 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 FreeBSD auf Systemen ohne Tastatur oder
Monitor installieren wollen, und Entwickler, die den Kernel oder
Gerätetreiber debuggen.Wie in beschrieben, besitzt FreeBSD drei
Bootphasen. Der Code für die ersten beiden Bootphasen befindet
sich im Bootsektor am
Anfang der FreeBSD-Slice der Bootplatte. Dieser Bootblock
lädt den Bootloader (/boot/loader) in
Phase drei.Um eine serielle Konsole einzurichten, müssen Sie den
Bootblock, den Bootloader und den Kernel konfigurieren.Serielle Konsole einrichten, KurzfassungDieser Abschnitt fasst zusammen, wie Sie eine
serielle Konsole einrichten. Es wird vorausgesetzt, dass
Sie die Voreinstellungen verwenden und wissen, wie
serielle Schnittstellen verbunden werden.
- Verbinden Sie die serielle Konsole mit COM1 sowie
- dem Kontrollterminal.
+ 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 ttyd0 von
+ den Eintrag für ttyd0 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,
sollten Sie lesen.Konfiguration der KonsoleBereiten Sie ein serielles Kabel vor.NullmodemkabelSie benötigen entweder ein Nullmodemkabel oder ein
serielles Standard Kabel mit einem Nullmodemkabel-Adapter. In
wurden serielle Kabel
beschrieben.Trennen Sie die Tastatur vom Computer.Die meisten 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 Ihr Rechner trotz einer Fehlermeldung normal
weiterbootet, brauchen Sie weiter nichts zu tun.
Beispielsweise geben einige Maschinen mit einem Phoenix BIOS
nur Keyboard failed aus und booten dann
normal weiter.Wenn Ihr System ohne Tastatur nicht booten will,
müssen Sie das BIOS so konfigurieren, das es diesen Fehler
ignoriert (wenn das möglich ist). Das Handbuch zu Ihrem
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.
+ 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 Ihr 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. Gateway 2000
Pentium 90 MHz Systemen wird dieses Verhalten nachgesagt.
Normalerweise ist das kein Problem, da eine Maus ohne
Tastatur sowieso nicht sinnvoll einsetzbar ist.Schließen Sie einen Dumb-Terminal an
COM1 (sio0)
an.Wenn Sie keinen Dumb-Terminal besitzen, können Sie
einen alten PC/XT 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 Ihr FreeBSD erst einmal installiert ist.
Auf einem Server sollte COM1 ohnehin
verfügbar sein. Wenn Sie die Schnittstelle für ein
anderes Gerät benutzen und Sie dieses nicht auf
COM2 (sio1)
legen können, sollten Sie sich nicht an erster Stelle mit
dem Aufsetzen einer seriellen Konsole beschäftigen.Stellen Sie sicher, dass Ihre 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 entnehmen Sie bitte
&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 dies bei Ihrem
System der Fall ist, können Sie
nicht verwenden, da es leider noch keine Umgehung
für dieses Problem gibt.Benutzen Sie also entweder , um die
Konsole automatisch zu setzen, oder , um die
serielle Konsole zu verwenden.In boot.config können Sie auch
andere, in &man.boot.8; beschriebene Optionen,
aufnehmen.Mit Ausnahme von werden die Optionen an
den Bootloader (/boot/loader)
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 FreeBSD-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 Sie das Prompt auf der seriellen Konsole erwartet
haben, dort aber nichts sehen, liegt ein Fehler in Ihren
Einstellungen vor. Als Umgehung 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.Nachdem der Bootloader geladen wurde und Sie sich in der
dritten Bootphase befinden, 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 Übersicht zeigt, welche Konsole, abhängig
von den getroffenen Einstellungen, ausgewählt wird.Fall 1: Option 0x10 für
sio0device sio0 at isa? port IO_COM1 tty flags 0x10 irq 4Optionen in /boot.configKonsole in den BootblöckenKonsole im BootloaderKonsole im Kernelkeineinterneinterneinterneserielleserielleserielleserielle und interneinterneinterneserielle und interneserielleserielle, mit Tastaturinterneinterneinterne, ohne Tastaturserielle und interneserielleserielleFall 2: Option 0x30 für
sio0device sio0 at isa? port IO_COM1 tty flags 0x30 irq 4Optionen in /boot.configKonsole in den BootblöckenKonsole im BootloaderKonsole im Kernelkeineinterneinterneserielleserielleserielleserielleserielle und interneinterneserielleserielle und interneserielleserielle, mit Tastaturinterneinterneserielle, ohne Tastaturserielle und interneserielleserielleHinweise 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. Wenn Sie die
Standardgeschwindigkeit ändern wollen, haben Sie folgende
Möglichkeiten: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
Ihre Kernelkonfigurationsdatei aufnehmen und den Kernel
neu bauen:options CONSPEED=19200Verwenden Sie die Option , um den
Kernel zu booten. Die Option kann
auch in die Datei /boot.config
aufgenommen werden. Eine Beschreibung dieses Vorgangs
sowie eine Auflistung der von
/boot.config unterstützten
Optionen finden Sie in der Manualpage &man.boot.8;.Aktivieren Sie die Option
comconsole_speed in der Datei
/boot/loader.conf.Diese Option setzt voraus, dass auch die Optionen
console,
boot_serial, sowie
boot_multicons in der Datei
/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"
-
-
- &os;-Versionen vor 6.1-RELEASE unterstützen
- weder die Option noch die Option
- comconsole_speed in der Datei
- /boot/loader.conf. Verwenden
- Sie eine solche &os;-Version, müssen Sie
- die Bootblöcke neu bauen.
- 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 (siehe
).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 (nützlich, kann aber
gefährlich sein, wenn auf der Leitung falsche BREAK-Signale
generiert werden), sollten Sie einen Kernel mit
den folgenden Optionen erstellen: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:ttyd0 "/usr/libexec/getty std.9600" unknown off secure
ttyd1 "/usr/libexec/getty std.9600" unknown off secure
ttyd2 "/usr/libexec/getty std.9600" unknown off secure
ttyd3 "/usr/libexec/getty std.9600" unknown off secure
- ttyd0 bis ttyd3
+ ttyd0 bis ttyd3
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, zum
Beispiel std.19200, anpassen.Sie sollten auch den Terminaltyp von
unknown auf den tatsächlich verwendeten
Terminal setzen.Damit die Änderungen an der Datei 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 Ihnen, 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.rc können Sie den
+ /boot/loader.conf können Sie den
Bootloader und den Kernel anweisen, die serielle Schnittstelle
zur Konsole zu machen:set console="comconsole"Unabhängig von den Einstellungen im Bootblock legt dies
die Konsole fest.Die obige Zeile sollte die erste Zeile in
- /boot/loader.rc sein, so dass Sie die
+ /boot/loader.conf sein, so dass Sie die
Bootmeldungen so früh wie möglich auf der Konsole
sehen.Analog können Sie die interne Konsole verwenden:set console="vidconsole"Wenn Sie console nicht setzen, bestimmt der
Bootloader (und damit auch der Kernel) die Konsole über
die Option des Bootblocks.
- Ab FreeBSD 3.2 können Sie die Bootkonsole in
+ Sie können die Bootkonsole in
/boot/loader.conf.local oder
- /boot/loader.conf anstatt in
- /boot/loader.rc angeben. In
- /boot/loader.rc finden Sie bei dieser Methode
- den folgenden Inhalt:
-
- include /boot/loader.4th
-start
-
- Erstellen Sie /boot/loader.conf.local
- und fügen die Zeile
-
- console=comconsole
-
- oder
-
- console=vidconsole
+ /boot/loader.conf angeben.
- ein. Weitere Informationen erhalten Sie in
- &man.loader.conf.5;.
+ 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
benutzenSie müssen den Bootloader neu kompilieren, wenn Sie eine
andere Schnittstelle als sio0 benutzen
wollen. Folgen Sie der Anleitung aus
.VorbehalteHinter dem ganzen steckt die Idee, Server ohne Hardware
für Grafik und ohne Tastatur zu betreiben. Obwohl es die
meisten Systeme erlauben, ohne Tastatur zu booten, gibt es leider
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.
diff --git a/de_DE.ISO8859-1/books/handbook/users/chapter.sgml b/de_DE.ISO8859-1/books/handbook/users/chapter.sgml
index c45efd1bda..c16d25433d 100644
--- a/de_DE.ISO8859-1/books/handbook/users/chapter.sgml
+++ b/de_DE.ISO8859-1/books/handbook/users/chapter.sgml
@@ -1,1089 +1,1104 @@
NeilBlakey-MilnerBeigetragen von RobertDrehmelÜbersetzt von Benutzer und grundlegende Account-VerwaltungÜbersichtEinen FreeBSD-Computer können mehrere Benutzer zur selben
Zeit benutzen, allerdings kann immer nur einer vor der Konsole sitzen
Außer Sie verwenden, wie in besprochen, zusätzliche Terminals, über das Netzwerk können beliebig viele
Benutzer angemeldet sein. Jeder Benutzer muss einen Account
haben, um das System benutzen zu können.Nachdem Sie dieses Kapitel gelesen haben, werden Siedie verschiedenen Account-Typen von FreeBSD kennen,wissen, wie Accounts angelegt werden,wissen, wie Sie Accounts löschen,wie Sie Attribute eines Accounts, wie den Loginnamen oder
die Login-Shell ändern,wissen, wie Sie Limits für einen Account setzen, um
beispielsweise Ressourcen, wie Speicher oder CPU-Zeit,
einzuschränken,wie Sie mit Gruppen die Verwaltung der Accounts
vereinfachen.Vor dem Lesen dieses Kapitels sollten Siedie Grundlagen von &unix; und FreeBSD ()
verstanden haben.EinführungJeder Zugriff auf das System geschieht über Accounts und alle
Prozesse werden von Benutzern gestartet, also sind Benutzer- und
Account-Verwaltung von wesentlicher Bedeutung in FreeBSD-Systemen.Mit jedem Account eines FreeBSD-Systems sind bestimmte Informationen
verknüpft, die diesen Account identifizieren.LoginnamenDen Loginnamen geben Sie bei der Anmeldung ein, wenn Sie
dazu mit login: aufgefordert werden.
Loginnamen müssen auf dem System eindeutig sein, das
heißt auf einem System kann es nicht zwei Accounts mit
demselben Loginnamen geben. In &man.passwd.5; wird
beschrieben, wie ein gültiger Loginname gebildet wird.
Normalerweise sollten Sie Namen verwenden, die aus
Kleinbuchstaben bestehen und bis zu acht Zeichen lang sind.PasswortMit jedem Account ist ein Passwort verknüpft. Wenn
das Passwort leer ist, wird es bei der Anmeldung nicht
abgefragt. Das ist allerdings nicht zu empfehlen, daher sollte
jeder Account ein Passwort besitzen.User ID (UID)Die UID ist üblicherweise eine Zahl zwischen
0 und 65535Für UIDs und GIDs können Zahlen bis
einschließlich 4294967295 verwendet werden.
Allerdings können solche IDs erhebliche
Probleme mit Anwendungen verursachen, die
Annahmen über den Wertebereich der IDs
treffen., die einen
Account eindeutig identifiziert. Intern verwendet FreeBSD nur
die UID, Loginnamen werden zuerst in eine UID umgewandelt,
mit der das System dann weiter arbeitet. Das bedeutet, dass
Sie Accounts mit unterschiedlichen Loginnamen aber gleicher
UID einrichten können. Vom Standpunkt des Systems handelt
es sich dabei um denselben Account. In der Praxis werden Sie
diese Eigenschaft des Systems wahrscheinlich nicht
benutzen.Group ID (GID)Die GID ist üblicherweise eine Zahl zwischen 0 und
65536, die eine Gruppe
eindeutig identifiziert. Mit Gruppen kann der Zugriff auf
Ressourcen über die GID anstelle der UID geregelt werden.
Einige Konfigurationsdateien werden durch diesen Mechanismus
deutlich kleiner. Ein Account kann mehreren Gruppen
zugehören.Login-KlasseLogin-Klassen erweitern das Gruppenkonzept. Sie
erhöhen die Flexibilität des Systems in der Handhabung
der verschiedenen Accounts.Gültigkeit von PasswörternEin regelmäßiges Ändern des Passworts wird in
der Voreinstellung von FreeBSD nicht erzwungen. Sie
können allerdings einen Passwortwechsel nach einer
gewissen Zeit auf Basis einzelner Accounts erzwingen.Verfallszeit eines AccountsIn der Voreinstellung verfallen unter FreeBSD keine
Accounts. Wenn Sie Accounts einrichten, die nur für eine
bestimmte Zeit gültig sein sollen, beispielsweise Accounts
für Teilnehmer eines Praktikums, können Sie angeben,
wie lange der Account gültig sein soll. Nachdem die
angegebene Zeitspanne verstrichen ist, kann dieser Account
nicht mehr zum Anmelden verwendet werden, obwohl alle
Verzeichnisse und Dateien, die diesem Account gehören,
noch vorhanden sind.vollständiger BenutzernameFreeBSD identifiziert einen Account eindeutig über
den Loginnamen, der aber keine Ähnlichkeit mit dem
richtigen Namen des Benutzers haben muss. Der
vollständige Benutzername kann daher beim Einrichten eines
Accounts angegeben werden.HeimatverzeichnisDas Heimatverzeichnis gibt den vollständigen Pfad zu
dem Verzeichnis an, in dem sich der Benutzer nach erfolgreicher
Anmeldung befindet. Es ist üblich, alle
Heimatverzeichnisse unter
/home/Loginname
oder
/usr/home/Loginname
anzulegen. Im Heimatverzeichnis oder in dort angelegten
Verzeichnissen werden die Dateien eines Benutzers
gespeichert.Login-ShellGrundsätzlich ist die Schnittstelle zum System eine
Shell, von denen es viele unterschiedliche gibt. Die
bevorzugte Shell eines Benutzers kann seinem Account zugeordnet
werden.Es gibt drei Haupttypen von Accounts: Der
Superuser,
Systembenutzer und
Benutzer-Accounts. Der
Superuser-Account, normalerweise root genannt, wird
benutzt, um das System ohne Beschränkungen auf Privilegien zu
verwalten. Systembenutzer starten Dienste. Abschließend werden
Benutzer-Accounts von echten Menschen genutzt, die sich einloggen, Mails
lesen und so weiter.Der Superuser-AccountAccountsSuperuser (root)Der Superuser-Account, normalerweise root
genannt, ist vorkonfiguriert und erleichtert die Systemverwaltung, sollte
aber nicht für alltägliche Aufgaben wie das Verschicken und
Empfangen von Mails, Entdecken des Systems oder Programmierung benutzt
werden.Das ist so, da der Superuser im Gegensatz zu normalen
Benutzer-Accounts ohne Beschränkungen operiert und falsche
Anwendung des Superuser-Accounts in spektakulären Katastrophen
resultieren kann. Benutzer-Accounts sind nicht in der Lage, das System
versehentlich zu zerstören, deswegen ist es generell am besten
normale Benutzer-Accounts zu verwenden, solange man nicht
hauptsächlich die extra Privilegien benötigt.Kommandos, die Sie als Superuser eingeben, sollten Sie immer
doppelt und dreifach überprüfen, da ein
zusätzliches Leerzeichen oder ein fehlender Buchstabe irreparablen
Datenverlust bedeuten kann.Das erste, das Sie tun sollten, nachdem Sie dieses Kapitel gelesen
haben, ist einen unprivilegierten Benutzer für Ihre eigene normale
Benutzung zu erstellen, wenn Sie das nicht bereits getan haben. Das
trifft immer zu, egal ob Sie ein Mehrbenutzersystem oder ein System
laufen haben, welches Sie alleine benutzen. Später in diesem
Kapitel besprechen wir, wie man zusätzliche Accounts erstellt und
wie man zwischen dem normalen Benutzer und dem Superuser wechselt.System-AccountsAccountsSystem-AccountsSystembenutzer starten Dienste wie DNS, Mail-Server, Web-Server und so
weiter. Der Grund dafür ist die Sicherheit; wenn die Programme
von dem Superuser gestartet werden, können Sie ohne
Einschränkungen handeln.AccountsdaemonAccountsoperatorBeispiele von Systembenutzern sind daemon,
operator, bind (für den
Domain Name Service) und news und
www.Accountsnobodynobody ist der generische unprivilegierte
Systembenutzer. Bedenken Sie aber, dass je mehr Dienste
nobody benutzen, desto mehr Dateien und Prozesse
diesem Benutzer gehören und dieser Benutzer damit umso
privilegierter wird.Benutzer-AccountsAccountsBenutzer-AccountsBenutzer-Accounts sind das primäre Mittel des Zugriffs für
Menschen auf das System und isolieren Benutzer und Umgebung,
schützen die Benutzer davor, das System oder Daten anderer Benutzer
zu beschädigen und erlauben Benutzern ihre Umgebung selbst
einzurichten, ohne das sich dies auf andere auswirkt.Jede Person, die auf Ihr System zugreift, sollte ihren eigenen
Account besitzen. Das erlaubt Ihnen herauszufinden, wer was macht
und hält Leute davon ab, die Einstellungen der anderen zu
verändern oder Mails zu lesen, die nicht für sie bestimmt
waren.Jeder Benutzer kann sich eine eigene Umgebung mit alternativen
Shells, Editoren, Tastaturbelegungen und Sprachen einrichten.Accounts verändernAccountsverändernUnter &unix; gibt es verschiedene Kommandos, um Accounts zu
verändern. Die gebräuchlichsten Kommandos sind unten,
gefolgt von einer detaillierten Beschreibung, zusammengefasst.KommandoZusammenfassung&man.adduser.8;Das empfohlene Werkzeug, um neue Accounts zu
erstellen.&man.rmuser.8;Das empfohlene Werkzeug, um Accounts zu
löschen.&man.chpass.1;Ein flexibles Werkzeug, um Informationen in der
Account-Datenbank zu verändern.&man.passwd.1;Ein einfaches Werkzeug, um Passwörter von Accounts
zu ändern.&man.pw.8;Ein mächtiges und flexibles Werkzeug um alle
Informationen über Accounts zu ändern.adduserAccountserstellenadduser/usr/share/skel&man.adduser.8; ist ein einfaches Programm
um neue Benutzer hinzuzufügen. Es erstellt
passwd und group
Einträge für den
Benutzer, genauso wie ein home Verzeichnis, kopiert ein paar
vorgegebene Dotfiles aus /usr/share/skel und kann
optional dem Benutzer eine ,,Willkommen``-Nachricht zuschicken.Einen Benutzer unter &os; anlegen&prompt.root; adduser
Username: jru
Full name: J. Random User
Uid (Leave empty for default):
Login group [jru]:
Login group is jru. Invite jru into other groups? []: wheel
Login class [default]:
Shell (sh csh tcsh zsh nologin) [sh]: zsh
Home directory [/home/jru]:
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]:
Enter password:
Enter password again:
Lock out the account after creation? [no]:
Username : jru
Password : ****
Full Name : J. Random User
Uid : 1001
Class :
Groups : jru wheel
Home : /home/jru
Shell : /usr/local/bin/zsh
Locked : no
OK? (yes/no): yes
adduser: INFO: Successfully added (jru) to the user database.
Add another user? (yes/no): no
Goodbye!
&prompt.root;Wenn Sie das Passwort eingeben, werden weder Passwort noch
Sternchen angezeigt. Passen Sie auf, dass Sie das Passwort
korrekt eingeben.rmuserrmuserAccountslöschenBenutzen Sie &man.rmuser.8;, um einen Account
vollständig aus dem System zu entfernen.
&man.rmuser.8; führt die folgenden Schritte
durch:Entfernt den &man.crontab.1; Eintrag des Benutzers
(wenn dieser existiert).Entfernt alle &man.at.1; jobs, die dem Benutzer gehören.
Schließt alle Prozesse des Benutzers.Entfernt den Benutzer aus der lokalen Passwort-Datei des
Systems.Entfernt das Heimatverzeichnis des Benutzers (falls es dem
Benutzer gehört).Entfernt eingegange E-Mails des Benutzers
aus /var/mail.Entfernt alle Dateien des Benutzers aus temporären
Dateispeicherbereichen wie /tmp.Entfernt den Loginnamen von allen Gruppen, zu denen er
gehört, aus /etc/group.Wenn eine Gruppe leer wird und der Gruppenname mit dem
Loginnamen identisch ist, wird die Gruppe entfernt; das
ergänzt sich mit den einzelnen Benutzer-Gruppen, die von
&man.adduser.8; für jeden neuen Benutzer erstellt werden.
Der Superuser-Account kann nicht mit &man.rmuser.8; entfernt
werden, da dies in den meisten Fällen das System unbrauchbar
macht.Als Vorgabe wird ein interaktiver Modus benutzt, der
sicherzustellen versucht, dass Sie wissen, was Sie tun.Interaktives Löschen von Account mit
rmuser&prompt.root; rmuser jru
Matching password entry:
jru:*:1001:1001::0:0:J. Random User:/home/jru:/usr/local/bin/zsh
Is this the entry you wish to remove? y
Remove user's home directory (/home/jru)? y
Updating password file, updating databases, done.
Updating group file: trusted (removing group jru -- personal group is empty) done.
Removing user's incoming mail file /var/mail/jru: done.
Removing files belonging to jru from /tmp: done.
Removing files belonging to jru from /var/tmp: done.
Removing files belonging to jru from /var/tmp/vi.recover: done.
&prompt.root;chpasschpass&man.chpass.1; ändert Informationen der
Benutzerdatenbank wie Passwörter, Shells und persönliche
Informationen.Nur Systemadministratoren, mit Superuser-Rechten, können die
Informationen und Passwörter der anderen Benutzer mit
&man.chpass.1; verändern.Werden keine Optionen neben dem optionalen Loginnamen
angegeben, zeigt &man.chpass.1; einen Editor
mit Account-Informationen an und aktualisiert die
Account-Datenbank, wenn dieser verlassen wird.Unter &os; wird nach dem Verlassen des Editors
nach dem Passwort gefragt, es sei denn, man ist als Superuser
angemeldet.Interaktives chpass des Superusers#Changing user database information for jru.
Login: jru
Password: *
Uid [#]: 1001
Gid [# or name]: 1001
Change [month day year]:
Expire [month day year]:
Class:
Home directory: /home/jru
Shell: /usr/local/bin/zsh
Full Name: J. Random User
Office Location:
Office Phone:
Home Phone:
Other information:Der normale Benutzer kann nur einen kleinen Teil dieser
Informationen verändern und natürlich nur die Daten des
eigenen Accounts.Interaktives chpass eines normalen
Benutzers#Changing user database information for jru.
Shell: /usr/local/bin/tcsh
Full Name: J. Random User
Office Location:
Office Phone:
Home Phone:
Other information:&man.chfn.1; und &man.chsh.1; sind
nur Verweise auf &man.chpass.1; genauso wie
&man.ypchpass.1;, &man.ypchfn.1; und
&man.ypchsh.1;. NIS wird automatisch unterstützt,
deswegen ist es nicht notwendig das yp vor dem
Kommando einzugeben. NIS wird später
in besprochen.passwdpasswdAccountsPasswort wechseln&man.passwd.1; ist der übliche Weg, Ihr
eigenes Passwort als Benutzer zu ändern oder das Passwort eines
anderen Benutzers als Superuser.Um unberechtigte Änderungen zu verhindern,
muss bei einem Passwortwechsel zuerst das ursprüngliche
Passwort eingegeben werden.Wechseln des Passworts&prompt.user; passwd
Changing local password for jru.
Old password:
New password:
Retype new password:
passwd: updating the database...
passwd: done
&prompt.root; passwd jru
Changing local password for jru.
New password:
Retype new password:
passwd: updating the database...
passwd: doneAls Superuser das Passwort eines anderen Accounts
verändern&prompt.root; passwd jru
Changing local password for jru.
New password:
Retype new password:
passwd: updating the database...
passwd: doneWie bei &man.chpass.1; ist &man.yppasswd.1;
nur ein Verweis auf &man.passwd.1;. NIS wird von
jedem dieser Kommandos unterstützt.pwpw&man.pw.8; ist ein Kommandozeilenprogramm, mit
dem man Accounts und Gruppen erstellen, entfernen, verändern
und anzeigen kann. Dieses Kommando dient als Schnittstelle zu den
Benutzer- und Gruppendateien des Systems. &man.pw.8;
besitzt eine Reihe mächtiger Kommandozeilenschalter, die es
für die Benutzung in Shell-Skripten geeignet machen, doch
finden neue Benutzer die Bedienung des Kommandos komplizierter, als
die der anderen hier vorgestellten Kommandos.Benutzer einschränkenBenutzer einschränkenAccountseinschränkenWenn ein System von mehreren Benutzern verwendet wird, ist es
vielleicht notwendig, den Gebrauch des Systems zu beschränken.
FreeBSD bietet dem Systemadministrator mehrere Möglichkeiten
die System-Ressourcen, die ein einzelner Benutzer verwenden kann,
einzuschränken. Diese Limitierungen sind in zwei Kategorien
eingeteilt: Festplattenkontingente und andere
Ressourcenbeschränkungen.QuotasBenutzer einschränkenQuotasFestplatten QuotasFestplatten-Kontingente schränken den Plattenplatz, der
einem Benutzer zur Verfügung steht, ein. Sie bieten zudem,
ohne aufwändige Berechnung, einen schnellen Überblick
über den verbrauchten Plattenplatz.
Kontingente werden in diskutiert./etc/login.confDie Login-Klassen werden in /etc/login.conf
definiert. Auf die präzisen Semantiken gehen wir hier nicht
weiter ein, sie können jedoch in &man.login.conf.5;
nachgelesen werden. Es ist ausreichend zu sagen, dass jeder
Benutzer einer Login-Klasse zugewiesen wird (standardmäßig
default) und dass jede Login-Klasse mit einem Satz
von Login-Fähigkeiten verbunden ist. Eine Login-Fähigkeit
ist ein Name=Wert
Paar, in dem Name
die Fähigkeit bezeichnet und Wert
ein willkürlicher Text ist, der je nach Name
entsprechend verarbeitet wird. Login-Klassen und
-Fähigkeiten zu definieren, ist fast schon selbsterklärend
und wird auch in &man.login.conf.5; beschrieben.Das System verwendet die Datei
/etc/login.conf normalerweise nicht direkt,
sondern nur über die Datenbank
/etc/login.conf.db, da diese eine
schnellere Abfrage erlaubt. Der nachstehende Befehl erzeugt die
Datenbank /etc/login.conf.db aus der Datei
/etc/login.conf:&prompt.root; cap_mkdb /etc/login.confRessourcenbeschränkungen unterscheiden sich von normalen
Login-Fähigkeiten zweifach. Erstens gibt es für jede
Beschränkung ein aktuelles und ein maximales Limit. Das
aktuelle Limit kann vom Benutzer oder einer Anwendung beliebig
bis zum maximalen Limit verändert werden. Letzteres kann
der Benutzer nur heruntersetzen. Zweitens gelten die meisten
Ressourcenbeschränkungen für jeden vom Benutzer
gestarteten Prozess, nicht für den Benutzer selbst.
Beachten Sie jedoch, dass diese Unterschiede durch das spezifische
Einlesen der Limits und nicht durch das System der
Login-Fähigkeiten entstehen (das heißt,
Ressourcenbeschränkungen sind keine
Login-Fähigkeiten).Hier befinden sich die am häufigsten benutzten
Ressourcenbeschränkungen (der Rest kann zusammen mit den
anderen Login-Fähigkeiten in &man.login.conf.5; gefunden
werden):coredumpsizecoredumpsizeBenutzer einschränkencoredumpsizeDas Limit der Größe einer core-Datei, die
von einem Programm generiert wird, unterliegt aus
offensichtlichen Gründen anderen Limits der
Festplattenbenutzung (zum Beispiel filesize
oder Festplattenkontingenten). Es wird aber trotzdem
oft als weniger harte Methode zur Kontrolle des
Festplattenplatz-Verbrauchs verwendet: Da Benutzer die
core-Dateien nicht selbst erstellen, und sie oft nicht
löschen, kann sie diese Option davor retten, dass
ihnen kein Festplattenspeicher mehr zur Verfügung
steht, sollte ein großes Programm, wie
emacs, abstürzen.cputimecputimeBenutzer einschränkencputimeDie maximale Rechenzeit, die ein Prozess eines Benutzers
verbrauchen darf. Überschreitet der Prozess diesen Wert,
wird er vom Kernel beendet.Die Rechenzeit wird limitiert,
nicht die prozentuale Prozessorenbenutzung, wie es in
einigen Feldern in &man.top.1; und &man.ps.1; dargestellt
wird. Letzteres war zu der Zeit, als dies hier geschrieben
wurde nicht möglich und würde eher nutzlos sein:
Ein Compiler – ein wahrscheinlich legitimer
Vorgang – kann leicht fast 100% des Prozessors in
Anspruch nehmen.filesizefilesizeBenutzer einschränkenfilesizeHiermit lässt sich die maximale Größe einer Datei
bestimmen, die der Benutzer besitzen darf. Im Gegensatz zu
Festplattenkontingenten ist diese
Beschränkung nur für jede einzelne Datei gültig
und nicht für den Platz, den alle Dateien eines Benutzers
verwenden.maxprocmaxprocBenutzer einschränkenmaxprocDas ist die maximale Anzahl von Prozessen, die ein
Benutzer starten darf, und beinhaltet sowohl Vordergrund-
als auch Hintergrundprozesse. Natürlich darf dieser
Wert nicht höher sein als das System-Limit, das in
kern.maxproc angegeben ist. Vergessen
Sie auch nicht, dass ein zu kleiner Wert den Benutzer in
seiner Produktivität einschränken könnte;
es ist oft nützlich, mehrfach eingeloggt zu sein, oder
PipelinesPipeline =
Leitung.
Mit Pipes sind Verbindungen
zwischen zwei Sockets in meistens zwei verschiedenen
Prozessen gemeint.
zu verwenden. Ein paar Aufgaben, wie die Kompilierung eines
großen Programms, starten mehrere Prozesse (zum Beispiel
&man.make.1;, &man.cc.1; und andere).memorylockedmemorylockedBenutzer einschränkenmemorylockedDieses Limit gibt an, wie viel virtueller Speicher von einem
Prozess maximal im Arbeitsspeicher festgesetzt werden kann.
(siehe auch &man.mlock.2;). Ein paar systemkritische Programme,
wie &man.amd.8;, verhindern damit einen Systemzusammenbruch, der
auftreten könnte, wenn sie aus dem Speicher genommen werden.
memoryusememoryuseBenutzer einschränkenmemoryuseBezeichnet den maximalen Speicher, den ein Prozess benutzen
darf und beinhaltet sowohl Arbeitsspeicher-, als auch Swap-
Benutzung. Es ist kein allübergreifendes Limit für
den Speicherverbrauch, aber ein guter Anfang.openfilesopenfilesBenutzer einschränkenopenfilesMit diesem Limit lässt sich die maximale Anzahl
der von einem Prozess des Benutzers geöffneten Dateien
festlegen. In FreeBSD werden Dateien auch verwendet, um Sockets
und IPC-Kanäle
IPC steht für
Interprocess Communication.
darzustellen. Setzen Sie es deshalb nicht zu niedrig. Das
System-Limit ist im kern.maxfiles
&man.sysctl.8; definiert.sbsizesbsizeBenutzer einschränkensbsizeDieses Limit beschränkt den Netzwerk-Speicher, und damit
die mbufs, die ein Benutzer verbrauchen darf. Es stammt aus einer
Antwort auf einen DoS-Angriff, bei dem viele Netzwerk-Sockets
geöffnet wurden, kann aber generell dazu benutzt werden
Netzwerk-Verbindungen zu beschränken.stacksizeDas ist die maximale Größe, auf die der Stack
eines Prozesses heranwachsen darf. Das allein ist natürlich
nicht genug, um den Speicher zu beschränken, den ein Programm
verwenden darf. Es sollte deshalb in Verbindung mit anderen
Limits gesetzt werden.Beim Setzen von Ressourcenbeschränkungen sind noch andere
Dinge zu beachten. Nachfolgend ein paar generelle Tipps, Empfehlungen
und verschiedene Kommentare.Von /etc/rc beim Hochfahren des Systems
gestartete Prozesse werden der daemon
Login-Klasse zugewiesen.Obwohl das mitgelieferte /etc/login.conf
eine Quelle von vernünftigen Limits darstellt, können nur
Sie, der Administrator, wissen, was für Ihr System angebracht
ist. Ein Limit zu hoch anzusetzen könnte Ihr System für
Missbrauch öffnen, und ein zu niedriges Limit der
Produktivität einen Riegel vorschieben.Benutzer des X-Window Systems (X11) sollten wahrscheinlich
mehr Ressourcen zugeteilt bekommen als andere Benutzer. X11
beansprucht selbst schon eine Menge Ressourcen, verleitet die
Benutzer aber auch, mehrere Programme gleichzeitig laufen zu
lassen.Bedenken Sie, dass viele Limits für einzelne Prozesse
gelten und nicht für den Benutzer selbst. Setzt man
zum Beispiel openfiles auf 50, kann jeder
Prozess des Benutzers bis zu 50 Dateien öffnen. Dadurch
ist die maximale Anzahl von Dateien, die von einem Benutzer
geöffnet werden können, openfiles
mal maxproc. Das gilt auch für den
Speicherverbrauch.Weitere Informationen über
Ressourcenbeschränkungen, Login-Klassen und -Fähigkeiten
enthalten die Hilfeseiten
&man.cap.mkdb.1;, &man.getrlimit.2; und &man.login.conf.5;.GruppenGruppen/etc/groupsAccountsGruppenEine Gruppe ist einfach eine Zusammenfassung von Accounts.
Gruppen werden durch den Gruppennamen und die GID (group ID)
identifiziert. Der Kernel von FreeBSD (und den meisten anderen &unix;
Systemen) entscheidet anhand der UID und der Gruppenmitgliedschaft
eines Prozesses, ob er dem Prozess etwas erlaubt oder nicht. Im
Unterschied zur UID kann ein Prozess zu einer Reihe von Gruppen
gehören. Wenn jemand von der GID eines
Benutzers oder Prozesses spricht, meint er damit meistens die erste
Gruppe der Gruppenliste.Die Zuordnung von Gruppennamen zur GID steht in
/etc/group, einer Textdatei mit vier durch
Doppelpunkte getrennten Feldern. Im ersten Feld steht der
Gruppenname, das zweite enthält ein verschlüsseltes
Passwort, das dritte gibt die GID an und das vierte besteht aus einer
Komma separierten Liste der Mitglieder der Gruppe. Diese Datei kann
einfach editiert werden (natürlich nur, wenn Sie dabei keine
Syntaxfehler machen). Eine ausführliche Beschreibung der Syntax
dieser Datei finden Sie in &man.group.5;.Wenn Sie /etc/group nicht händisch
editieren möchten, können Sie &man.pw.8; zum Editieren
benutzen. Das folgende Beispiel zeigt das Hinzufügen einer
Gruppe mit dem Namen teamtwo:
- Hinzufügen einer Gruppe mit pw
+ Setzen der Mitgliederliste einer Gruppe mit &man.pw.8;&prompt.root; pw groupadd teamtwo
&prompt.root; pw groupshow teamtwo
teamtwo:*:1100:Die Zahl 1100 ist die GID der Gruppe
teamtwo. Momentan hat
teamtwo noch keine Mitglieder und ist daher
ziemlich nutzlos. Um das zu ändern, nehmen wir nun
jru in teamtwo
auf.Ein Gruppenmitglied mit pw
hinzufügen&prompt.root; pw groupmod teamtwo -M jru
&prompt.root; pw groupshow teamtwo
teamtwo:*:1100:jruAls Argument von geben Sie eine Komma
- separierte Liste von Mitgliedern an, die Sie in die Gruppe aufnehmen
- möchten. Aus den vorherigen Abschnitten ist bekannt, dass die
+ separierte Liste von Mitgliedern an, die in die Gruppe aufgenommen
+ werden sollen. Aus den vorherigen Abschnitten ist bekannt, dass die
Passwort-Datei ebenfalls eine Gruppe für jeden Benutzer
enthält. Das System teilt dem Benutzer automatisch eine Gruppe
zu, die aber vom Kommando von &man.pw.8;
nicht angezeigt wird. Diese Information wird allerdings von
&man.id.1; und ähnlichen Werkzeugen angezeigt. Das heißt,
dass &man.pw.8; nur /etc/group manipuliert,
es wird nicht versuchen, zusätzliche Informationen aus
/etc/passwd zu lesen.
+
+ Hinzufügen eines neuen Gruppenmitglieds mittels
+ &man.pw.8;
+
+ &prompt.root; pw groupmod teamtwo -m db
+&prompt.root; pw groupshow teamtwo
+teamtwo:*:1100:jru,db
+
+
+ Die Argumente zur Option ist eine durch Komma
+ getrennte Liste von Benutzern, die der Gruppe hinzugefügt werden
+ sollen. Anders als im vorherigen Beispiel werden diese Benutzer in die
+ Gruppe aufgenommen und ersetzen nicht die Liste der bereits bestehenden
+ Benutzer in der Gruppe.
+
Mit id die Gruppenzugehörigkeit
bestimmen&prompt.user; id jru
uid=1001(jru) gid=1001(jru) groups=1001(jru), 1100(teamtwo)Wie Sie sehen, ist jru Mitglied von
jru und teamtwo.Weitere Informationen entnehmen Sie bitte &man.pw.8;.
diff --git a/de_DE.ISO8859-1/books/handbook/vinum/chapter.sgml b/de_DE.ISO8859-1/books/handbook/vinum/chapter.sgml
index 3dd73042d9..5864ee11c9 100644
--- a/de_DE.ISO8859-1/books/handbook/vinum/chapter.sgml
+++ b/de_DE.ISO8859-1/books/handbook/vinum/chapter.sgml
@@ -1,1537 +1,1536 @@
GregLeheyUrsprünglich geschrieben von JohannKoisÜbersetzt von KayAbendrothDer Vinum Volume ManagerÜbersichtEgal, über welche und wieviele Festplatten Ihr System
auch verfügt, immer wieder werden Sie mit den folgenden
Problemen konfrontiert:Ihre Platten sind zu klein.Sie sind zu langsam.Ihre Platten sind unzuverlässig.Um derartige Probleme zu lösen, wurden verschiedene
Methoden entwickelt. Eine Möglichkeit bietet der
Einsatz von mehreren, manchmal auch redundant ausgelegten
Platten. Zusätzlich zur Unterstützung verschiedener
Erweiterungskarten und Controller für Hardware-RAID-Systeme
- enthält das FreeBSD-Basissystem auch den Vinum
+ enthält das &os;-Basissystem auch den Vinum
Volume Manager, einen Blockgerätetreiber, der die
Einrichtung virtueller Platten unterstützt. Bei
Vinum handelt es sich um einen
sogenannten Volume Manager, einen
virtuellen Plattentreiber, der obige drei Probleme löst.
Vinum bietet Ihnen größere Flexibilität,
Leistung und Zuverlässigkeit als die klassische
Datenspeicherung auf einzelne Festplatten. Dazu unterstützt
Vinum RAID-0, RAID-1 und RAID-5 (sowohl einzeln als auch in
Kombination).Dieses Kapitel bietet Ihnen einen Überblick über
potentielle Probleme der klassischen Datenspeicherung auf
Festplatten sowie eine Einführung in den Vinum
Volume Manager.
- Für FreeBSD 5.X wurde Vinum überarbeitet und
+ Für &os; 5.X wurde Vinum überarbeitet und
an die GEOM-Architektur () angepasst,
wobei die ursprünglichen Ideeen und Begriffe sowie die
auf der Platte benötigten Metadaten beibehalten wurden.
Die überarbeitete Version wird als
gvinum (für
GEOM-Vinum) bezeichnet. Die folgenden
Ausführungen verwenden den Begriff
Vinum als abstrakten Namen, unabhängig
davon, welche Variante implementiert wurde. Sämtliche
Befehlsaufrufe erfolgen über gvinum,
welches nun das Kernelmodul geom_vinum.ko
(statt vinum.ko) benötigt. Analog
- finden sich alle Gerätedateien nun unter
- /dev/gvinum statt unter
- /dev/vinum. Seit FreeBSD 6.x ist die
- alte Vinum-Implementierung nicht mehr im Basissystem
- enthalten.
+ finden sich alle Gerätedateien nun unter /dev/gvinum statt unter /dev/vinum. Seit &os; 6.x ist die
+ alte Vinum-Implementierung nicht mehr im Basissystem enthalten.Ihre Platten sind zu klein.VinumRAIDSoftwareFestplatten werden zwar immer größer, parallel
dazu steigt aber auch die Größe der zu speichernden
Daten an. Es kann also nach wie vor vorkommen, dass Sie ein
Dateisystem benötigen, welches die Größe Ihrer
Platten übersteigt. Zwar ist dieses Problem nicht mehr
so akut wie noch vor einigen Jahren, aber es existiert nach
wie vor. Einige Systeme lösen dieses Problem durch die
Erzeugung eines abstrakten Gerätes, das seine Daten auf
mehreren Platten speichert.Mögliche EngpässeModerne Systeme müssen häufig parallel auf
Daten zugreifen. Große FTP- und HTTP-Server
können beispielsweise Tausende von parallelen Sitzungen
verwalten und haben mehrere 100 MBit/s-Verbindungen
zur Außenwelt. Diese Bandbreite überschreitet
die durchschnittliche Transferrate der meisten Platten
bei weitem.Aktuelle Plattenlaufwerke können Daten mit bis zu
70 MB/s sequentiell übertragen, wobei dieser Wert
in einer Umgebung, in der viele unabhängige Prozesse auf
eine gemeinsame Platte zugreifen, die jeweils nur einen
Bruchteil dieses Wertes erreichen, von geringer Aussagekraft
ist. In solchen Fällen ist es interessanter, das Problem
vom Blickwinkel des Platten-Subsystems aus zu betrachten.
Der wichtigste Parameter ist dabei die Last, die eine
Übertragung auf dem Subsystem verursacht. Unter Last
versteht man dabei die Zeit, in der die Platte mit der
Übertragung der Daten beschäftigt ist.Bei jedem Plattenzugriff muss das Laufwerk zuerst die
Köpfe positionieren und auf den ersten Sektor warten, bis
er den Lesekopf passiert. Dann wird die Übertragung
gestartet. Diese Aktionen können als atomar betrachtet
werden, da es keinen Sinn macht, diese zu unterbrechen.Nehmen wir beispielsweise an,
dass wir 10 kB transferieren wollen. Aktuelle
hochperformante Platten können die Köpfe im Durchschnitt
in 3,5 ms positionieren und drehen sich mit maximal
15.000 U/min. Daher beträgt die durchschnittliche
Rotationslatenz (eine halbe Umdrehung) 2 ms.
Bei einer Transferrate von 70 MB/s dauert die eigentliche
Übertragung von 10 kB etwa 150 μs, fast
nichts im Vergleich zur Positionierungszeit. In einem solchen
Fall beträgt die effektive Transferrate nur etwas mehr
als 1 MB/s. Die Tranferrate ist also stark von der
Größe der zu tranferierenden Daten
abhängig.Die traditionelle und offensichtliche Lösung zur
Beseitigung dieses Flaschenhalses sind mehr
Spindeln. Statt einer einzigen großen Platte werden
mehrere kleinere Platten mit demselben Gesamtspeicherplatz
benutzt. Jede Platte ist in der Lage, unabhängig zu
positionieren und zu transferieren, weshalb der effektive
Durchsatz um einen Faktor nahe der Zahl der eingesetzten Platten
steigt.Obwohl die Platten Daten parallel transferieren können,
ist es nicht möglich, Anfragen gleichmäßig auf
die einzelnen Platten zu verteilen. Daher wird die Last auf
bestimmten Laufwerken immer höher sein als auf anderen
Laufwerken. Daraus ergibt sich auch, dass die exakte Verbesserung
des Datendurchsatzes immer kleiner ist als die Anzahl der
involvierten Platten.PlattenkonkatenationVinumKonkatenationDie gleichmäßige Verteilung der Last auf die einzelnen
Platten ist stark abhängig von der Art, wie die Daten auf die
Laufwerke aufgeteilt werden. In den folgenden Ausführungen
wird eine Platte als eine große Anzahl von Datensektoren
dargestellt, die durch Zahlen adressierbar sind (ähnlich
den Seiten eines Buches). Die naheliegendste Methode ist es,
die virtuelle Platte (wieder analog den Seiten eines Buches)
in Gruppen aufeinanderfolgender Sektoren zu unterteilen, die
jeweils der Größe der einzelnen physischen Platten
entsprechen. Diese Vorgehensweise wird als
Konkatenation bezeichnet und hat den
Vorteil, dass die Platten keine spezielle
Größenbeziehung haben müssen. Sie funktioniert
gut, solange der Zugriff gleichmäßig auf den
Adressraum der virtuellen Platte verteilt wird. Wenn sich der
Zugriff allerdings auf einen kleinen Bereich konzentriert, ist die
Verbesserung vernachlässigbar klein.
verdeutlicht die Verteilung der
Speichereinheiten in einer konkatenierten Anordnung.Striping von PlattenVinumStripingRAIDEin alternatives Mapping unterteilt den Adressraum in
kleinere, gleich große Komponenten und speichert diese
sequentiell auf verschiedenen Geräten. Zum Beispiel werden
die ersten 256 Sektoren auf der ersten Platte, die nächsten
256 Sektoren auf der zweiten Platte gespeichert und so
weiter. Nachdem die letzte Platte beschrieben wurde, wird dieser
Vorgang solange wiederholt, bis die Platten voll sind. Dieses
Mapping nennt man Striping oder
RAID-0.
RAID steht für Redundant
Array of Inexpensive Disks und bietet verschiedene
Formen der Fehlertorleranz, obwohl der letzte Begriff etwas
irreführend ist, da RAID keine Redundanz bietet.Striping erfordert einen etwas größeren Aufwand,
um die Daten zu
lokalisieren, und kann zusätzliche E/A-Last verursachen,
wenn eine Übertragung über mehrere Platten verteilt
ist. Auf der anderen Seite erlaubt es aber eine
gleichmäßigere Verteilung der Last auf die einzelnen
Platten. veranschaulicht
die Abfolge, in der Speichereinheiten in einer striped-Anordnung
alloziert werden.DatenintegritätDas dritte Problem, welches aktuelle Platten haben, ist ihre
Unzuverlässigkeit. Obwohl sich die Zuverlässigkeit
von Festplatten in den letzten Jahren stark verbessert hat,
handelt es sich bei ihnen nach wie vor um die Komponente eines
Servers, die am ehesten ausfällt. Fällt eine
Festplatte aus, können die Folgen katastrophal sein: Es
kann Tage dauern, bis eine Platte ersetzt und alle Daten
wiederhergestellt sind.disk mirroringVinumSpiegelungRAID-1Die traditionelle Art, dieses Problem anzugehen, war es,
Daten zu spiegeln, also zwei Kopien der
Daten auf getrennten Platten zu verwahren. Diese Technik wird
auch als RAID Level 1 oder
RAID-1 bezeichnet. Jeder Schreibzugriff
findet auf beiden Datenträgern statt. Ein Lesezugriff
kann daher von beiden Laufwerken erfolgen, sodass beim Ausfall
eines Laufwerks die Daten immer noch auf dem anderen
Laufwerk verfügbar sind.Spiegeln verursacht allerdings zwei Probleme:Es verursacht höhere Kosten, da doppelt so viel
Plattenspeicher wie bei einer nicht-redundanten
Lösung benötigt wird.Die Gesamtleistung des Systems sinkt, da
Schreibzugriffe auf beiden Laufwerken ausgeführt
werden müssen, daher wird im Vergleich zu einem
nicht gespiegelten Datenträger die doppelte
Bandbreite benötigt. Lesezugriffe hingegen sind
davon nicht betroffen, es sieht sogar so aus, als
würden diese schneller ausgeführt.RAID-5Eine alternative Lösung ist
Parity, das in den
RAID-Leveln 2, 3, 4 und 5
implementiert ist. Von diesen ist RAID-5
der interessanteste. So wie in VINUM implementiert, ist es
eine Variante einer gestripten Anordung, welche einen Block
- jedes Stripes als Paritätsblock für die anderen
+ jedes Stripes als Paritätsblock für einen der anderen
Blöcke verwendet. Wie in RAID-5
vorgeschrieben, ist die Position dieses Paritätsblockes
auf jedem Stripe unterschiedlich. Die Nummern in den
Datenblöcken geben die relativen Blocknummern an.Im Vergleich zur Spiegelung hat RAID-5 den Vorteil, dass
es signifikant weniger Speicherplatz benötigt.
Lesezugriffe sind vergleichbar schnell mit jenen bei einem
Striped-Aufbau, aber Schreibzugriffe sind deutlich langsamer
(etwa 25% der Lesegeschwindigkeit). Wenn eine Platte
ausfällt, kann das Array in einem "schwachen" Modus
weiterarbeiten: Ein Lesezugriff auf eine der übrigen
erreichbaren Platten wird normal ausgeführt, ein
Lesezugriff auf die ausgefallene Platte muss aber
zunächst mit dem zugehörigen Block aller
verbleibender Platten rückberechnet werden.Vinum-ObjekteUm die in den vorigen Abschnitte besprochenen Probleme zu
lösen, verwendet Vinum eine vierstufige
Objekthierarchie:Das auffälligste Objekt ist die virtuelle Platte,
die Volume genannt wird. Volumes
haben im Wesentlichen die gleichen Eigenschaften wie ein
&unix;-Laufwerk, obwohl es ein paar kleine Unterschiede
gibt. So existieren für Volumes beispielsweise keine
Größenbeschränkungen.Volumes bestehen aus einem oder mehreren
Plexus,
von denen jeder den gesamten Adressraum eines
Datenträgers repräsentiert. Diese Hierarchieebene
ist für die benötigte Redundanz der Daten
erforderlich. Stellen Sie sich die Plexus als
eigenständige Platten in einem gespiegelten
Array vor, von denen jede die gleichen Daten
enthält.Da Vinum im &unix;-Plattenspeicher-Framework arbeitet,
wäre es möglich, als Grundbaustein für
Multiplatten-Plexus &unix;-Partitionen zu verwenden. In
der Praxis ist dieser Ansatz aber zu unflexibel, da
&unix;-Platten nur eine begrenzte Anzahl von Partitionen
haben können. Daher unterteilt Vinum stattdessen
eine einzige &unix;-Partition (die
Platte) in zusammenhängende
Bereiche, die als Subdisks bezeichnet
werden und als Grundbausteine für einen Plexus
benutzt werden.Subdisks befinden sich auf
Vinum-Platten, eigentlich
&unix;-Partitionen. Vinum-Platten können eine
beliebige Anzahl von Subdisks haben und den gesamten
Speicher der Platte mit Ausnahme eines kleinen Bereiches
am Anfang der Platte (welcher zur Speicherung von
Konfigurations- und Statusinformationen verwenden wird)
verwenden.Der folgende Abschnitt beschreibt, wie diese Objekte
die von Vinum benötigten Funktionen zur
Verfügung stellen.Überlegungungen zur Größe eines VolumesPlexus können mehrere Subdisks beinhalten, die
über alle Platten der Vinum-Konfiguration verteilt sind.
Daraus folgt, dass die Größe einer Platte nicht die
Größe eines Plexus (und damit eines Volumes)
limitiert.Redundante DatenspeicherungVinum implementiert die Datenspiegelung, indem es ein
Volume auf mehrere Plexus verteilt. Jeder Plexus ist
dabei die Repräsentation der Daten eines Volumes.
Ein Volume kann aus bis zu acht Plexus bestehen.Obwohl ein Plexus die gesamten Daten eines Volumes
repräsentiert, ist es möglich, dass Teile der
Repräsentation physisch fehlen, entweder aufgrund des
Designs (etwa durch nicht definierte Subdisks für Teile
des Plexus) oder durch Zufall (als ein Ergebnis eines
Plattenfehlers). Solange wenigstens ein Plexus die gesamten
Daten für den kompletten Adressbereich des Volumes zur
Verfügung stellen kann, ist das Volume voll
funktionsfähig.Überlegungen zur LeistungSowohl Konkatenation als auch Striping werden von Vinum
auf der Plexus-Ebene realisiert:Ein konkatenierter Plexus benutzt
abwechselnd den Adressraum jeder Subdisk.Ein gestripter Plexus striped die
Daten über jede Subdisk. Die Subdisks müssen alle
die gleiche Größe haben, und es muss mindestens
zwei Subdisks in Reihenfolge geben, um ihn von einem
konkatenierten Plexus unterscheiden zu können.Wie ist ein Plexus aufgebaut?
- Die Version von Vinum, welche von FreeBSD-&rel.current;
+ Die Version von Vinum, welche von &os;-&rel.current;
bereitgestellt wird, implementiert zwei Arten von Plexus:Konkatenierte Plexus sind die flexibelsten: Sie
können aus einer beliebigen Anzahl von Subdisks
unterschiedlicher Größe bestehen. Der Plexus
kann erweitert werden, indem man zusätzliche Subdisks
hinzufügt. Sie brauchen weniger
CPU-Zeit als gestripte Plexus, obwohl
der Unterschied des CPU-Overheads nicht
messbar ist. Auf der anderen Seite sind sie aber sehr
anfällig für das Entstehen von "hot spots", wobei
eine Platte sehr aktiv ist, andere hingegen nahezu ungenutzt
sind.Der größte Vorteil eines gestripten
Plexus (RAID-0) ist die Verringerung von
"hot spots". Dies wird durch die Auswahl eines Stripes
optimaler Größe (etwa 256 kB) erreicht,
wodurch die Last gleichmäßig auf die Platten
verteilt werden kann. Nachteile dieser Vorgehensweise sind
ein (geringfügig) komplexerer Code sowie einige
Restriktionen für die Subdisks: Diese müssen alle
die gleiche Größe haben, und das Erweitern eines
Plexus durch das Hinzufügen neuer Subdisks ist so
kompliziert, dass es von Vinum derzeit nicht
unterstützt wird. Vinum fordert noch eine weitere
triviale Beschränkung: Ein gestripter Plexus muss
aus mindestens zwei Subdisks bestehen, da er ansonsten nicht
von einem konkatenierten Plexus unterscheidbar ist. fasst die Vor- und
Nachteile jedes Plexus-Aufbaus zusammen.
Vinum-Plexus - AufbauPlexus-TypMinimum an Subdisks?Kann Subdisks hinzufügen?Müssen die gleiche Größe
habenApplikationkonkateniert1janeinGroßer Datenspeicher mit maximaler
Platzierungsflexibilität und moderater
Leistunggestriped2neinjaHohe Leistung in Kombination mit
gleichzeitigem Zugriff
Einige BeispieleVinum verwaltet eine
Konfigurationsdatenbank für alle
einem individuellen System bekannten Objekte. Zu Beginn
erzeugt ein Benutzer mit &man.gvinum.8;
eine Konfigurationsdatenbank aus einer oder mehreren
Konfigurationsdateien. Vinum speichert danach eine Kopie der
Konfigurationsdatenbank in jedem von ihm kontrollierten
Slice (von Vinum als Device
bezeichnet). Da die Datenbank bei jedem Statuswechsel
aktualisiert wird, kann nach einem Neustart der Status
jedes Vinum-Objekts exakt wiederhergestellt werden.Die KonfigurationsdateiDie Konfigurationsdatei beschreibt individuelle
Vinum-Objekte. Die Beschreibung eines einfachen Volumes
könnte beispielsweise so aussehen:
drive a device /dev/da3h
volume myvol
plex org concat
sd length 512m drive aDiese Datei beschreibt vier Vinum-Objekte:Die drive-Zeile beschreibt eine
Plattenpartition (drive) sowie ihre
Position in Bezug auf die darunter liegende Hardware.
Die Partition hat dabei den symbolischen Namen
a. Diese Trennung von symbolischen
Namen und Gerätenamen erlaubt es, die Position von
Platten zu ändern, ohne dass es zu Problemen
kommt.Die volume-Zeile beschreibt ein
Volume. Dafür wird nur ein einziges Attribut, der
Name des Volumes, benötigt. In unserem Fall hat das
Volume den Namen myvol.Die plex-Zeile definiert einen
Plexus. Auch hier wird nur ein Parameter, und zwar die
Art des Aufbau, benötigt (in unserem Fall
concat). Es wird kein Name
benötigt, das System generiert automatisch einen
Namen aus dem Volume-Namen und dem Suffix
.px wobei
x die Nummer des Plexus innerhalb
des Volumes angibt. So wird dieser Plexus den Namen
myvol.p0 erhalten.Die sd-Zeile beschreibt eine
Subdisk. Um eine Subdisk einzurichten, müssen Sie
zumindest den Namen der Platte, auf der Sie die
Subdisk anlegen wollen, sowie die Größe der
Subdisk angeben. Analog zur Definition eines Plexus wird
auch hier kein Name benötigt: Das System weist
automatisch Namen zu, die aus dem Namen des Plexus und
dem Suffix .sx
gebildet werden, wobei x die Nummer
der Subdisk innerhalb des Plexus ist. Folglich gibt
Vinum dieser Subdisk den Namen
myvol.p0.s0.Nach dem Verarbeiten dieser Datei erzeugt &man.gvinum.8;
die folgende Ausgabe:
&prompt.root; gvinum -> create config1
Configuration summary
Drives: 1 (4 configured)
Volumes: 1 (4 configured)
Plexes: 1 (8 configured)
Subdisks: 1 (16 configured)
D a State: up Device /dev/da3h Avail: 2061/2573 MB (80%)
V myvol State: up Plexes: 1 Size: 512 MB
P myvol.p0 C State: up Subdisks: 1 Size: 512 MB
S myvol.p0.s0 State: up PO: 0 B Size: 512 MBDiese Ausgabe entspricht dem verkürzten
Ausgabeformat von &man.gvinum.8; und wird in
grafisch dargestellt.Dieses und die folgenden Beispiele zeigen jeweils ein
Volume, welches die Plexus enthält, die wiederum die
Subdisk enthalten. In diesem trivialen Beispiel enthält
das Volume nur einen Plexus, der wiederum nur aus einer
Subdisk besteht.Eine solche Konfiguration hätte allerdings keinen
Vorteil gegenüber einer konventionellen Plattenpartion.
Das Volume enthält nur einen einzigen Plexus, daher
gibt es keine redundante Datenspeicherung. Da der Plexus
außerdem nur eine einzige Subdisk enthält,
unterscheidet sich auch die Speicherzuweisung nicht von der
einer konventionellen Plattenpartition. Die folgenden
Abschnitte beschreiben daher verschiedene interessantere
Konfigurationen.Verbesserte Ausfallsicherheit durch SpiegelungDie Ausfallsicherheit eines Volumes kann durch
Spiegelung der Daten erhöht werden. Beim Anlegen eines
gespiegelten Volumes ist es wichtig, die Subdisks jedes
Plexus auf verschiedene Platten zu verteilen, damit ein
Plattenausfall nicht beide Plexus unbrauchbar macht. Die
folgende Konfiguration spiegelt ein Volume:
drive b device /dev/da4h
volume mirror
plex org concat
sd length 512m drive a
plex org concat
sd length 512m drive bBei diesem Beispiel war es nicht nötig, noch einmal
eine Platte a zu spezifizieren, da
Vinum die Übersicht über alle Objekte und seine
Konfigurationsdatenbank behält. Nach dem Abarbeiten
dieser Definition sieht die Konfiguration wie folgt aus:
Drives: 2 (4 configured)
Volumes: 2 (4 configured)
Plexes: 3 (8 configured)
Subdisks: 3 (16 configured)
D a State: up Device /dev/da3h Avail: 1549/2573 MB (60%)
D b State: up Device /dev/da4h Avail: 2061/2573 MB (80%)
V myvol State: up Plexes: 1 Size: 512 MB
V mirror State: up Plexes: 2 Size: 512 MB
P myvol.p0 C State: up Subdisks: 1 Size: 512 MB
P mirror.p0 C State: up Subdisks: 1 Size: 512 MB
P mirror.p1 C State: initializing Subdisks: 1 Size: 512 MB
S myvol.p0.s0 State: up PO: 0 B Size: 512 MB
S mirror.p0.s0 State: up PO: 0 B Size: 512 MB
S mirror.p1.s0 State: empty PO: 0 B Size: 512 MB stellt diese Struktur
grafisch dar.In diesem Beispiel enthält jeder Plexus die vollen
512 MB des Adressraumes. Wie im vorangegangenen Beispiel
enthält jeder Plexus nur eine Subdisk.Die Leistung optimierenDas gespiegelte Volume des letzten Beispieles ist
resistenter gegenüber Fehlern als ein ungespiegeltes
Volume, seine Leistung ist hingegen schlechter, da jeder
Schreibzugriff auf das Volume einen Schreibzugriff auf beide
Platten erfordert und damit mehr der insgesamt verfügbaren
Datentransferrate benötigt. Steht also die optimale
Leistung im Vordergrund, muss anders vorgegangen werden:
Statt alle Daten zu spiegeln, werden die Daten über
so viele Platten wie möglich gestriped. Die folgende
Konfiguration zeigt ein Volume
mit einem über vier Platten hinwegreichenden Plexus:
drive c device /dev/da5h
drive d device /dev/da6h
volume stripe
plex org striped 512k
sd length 128m drive a
sd length 128m drive b
sd length 128m drive c
sd length 128m drive dWie zuvor ist es nicht nötig, die Platten zu
definieren, die Vinum schon bekannt sind. Nach dem Abarbeiten
dieser Definition sieht die Konfiguration wie folgt aus:
Drives: 4 (4 configured)
Volumes: 3 (4 configured)
Plexes: 4 (8 configured)
Subdisks: 7 (16 configured)
D a State: up Device /dev/da3h Avail: 1421/2573 MB (55%)
D b State: up Device /dev/da4h Avail: 1933/2573 MB (75%)
D c State: up Device /dev/da5h Avail: 2445/2573 MB (95%)
D d State: up Device /dev/da6h Avail: 2445/2573 MB (95%)
V myvol State: up Plexes: 1 Size: 512 MB
V mirror State: up Plexes: 2 Size: 512 MB
V striped State: up Plexes: 1 Size: 512 MB
P myvol.p0 C State: up Subdisks: 1 Size: 512 MB
P mirror.p0 C State: up Subdisks: 1 Size: 512 MB
P mirror.p1 C State: initializing Subdisks: 1 Size: 512 MB
P striped.p1 State: up Subdisks: 1 Size: 512 MB
S myvol.p0.s0 State: up PO: 0 B Size: 512 MB
S mirror.p0.s0 State: up PO: 0 B Size: 512 MB
S mirror.p1.s0 State: empty PO: 0 B Size: 512 MB
S striped.p0.s0 State: up PO: 0 B Size: 128 MB
S striped.p0.s1 State: up PO: 512 kB Size: 128 MB
S striped.p0.s2 State: up PO: 1024 kB Size: 128 MB
S striped.p0.s3 State: up PO: 1536 kB Size: 128 MBDieses Volume wird in
dargestellt. Die Schattierung der Stripes zeigt die Position
innerhalb des Plexus-Adressraumes an. Die hellsten Stripes
kommen zuerst, die dunkelsten zuletzt.Ausfallsicherheit und LeistungMit entsprechender Hardware
ist es möglich, Volumes zu bauen, welche gegenüber
Standard-&unix;-Partitionen beides, nämlich erhöhte
Ausfallsicherheit und erhöhte Leistung, aufweisen
können. Eine typische Konfigurationsdatei könnte
etwa so aussehen:
volume raid10
plex org striped 512k
sd length 102480k drive a
sd length 102480k drive b
sd length 102480k drive c
sd length 102480k drive d
sd length 102480k drive e
plex org striped 512k
sd length 102480k drive c
sd length 102480k drive d
sd length 102480k drive e
sd length 102480k drive a
sd length 102480k drive bDie Subdisks des zweiten Plexus sind gegenüber denen
des ersten Plexus um zwei Platten verschoben. Dadurch wird
sichergestellt, dass Schreibzugriffe nicht auf den gleichen
Subdisks auftreten, auch wenn eine Übertragung über
zwei Platten geht. veranschaulicht die
Struktur dieses Volumes.ObjektbenennungWie oben beschrieben, weist Vinum den Plexus und
Subdisks Standardnamen zu, wenngleich diese überschrieben
werden können. Das Überschreiben dieser Standardnamen
wird allerdings nicht empfohlen. Erfahrungen mit dem VERITAS
Volume Manager (der eine willkürliche Benennung von
Objekten erlaubt) haben gezeigt, dass diese Flexibilität
keinen entscheidenden Vorteil bringt und zudem Verwirrung
stiften kann.Namen dürfen zwar alle nichtleeren Zeichen enthalten,
es ist aber sinnvoll, nur Buchstaben, Ziffern und den
Unterstrich zu verwenden. Die Namen von Volumes, Plexus und
Subdisks können bis zu 64 Zeichen lang sein, die Namen
von Platten dürfen hingegen nur bis zu 32 Zeichen lang
sein.
- Vinum-Objekten werden Gerätedateien in der
- /dev/gvinum-Hierarchie zugewiesen. Die
+ Vinum-Objekten werden Gerätedateien in der /dev/gvinum-Hierarchie zugewiesen. Die
weiter oben dargestellte Konfiguration würde Vinum dazu
veranlassen, die folgenden Gerätedateien zu erstellen:Dies trifft nur für die veraltete
Vinum-Implementierung zu.
- Die Kontrollgeräte
- /dev/vinum/control und
- /dev/vinum/controld, welche von
- &man.gvinum.8; beziehungsweise dem Vinum-Daemon
- verwendet werden.
+ Die Kontrollgeräte /dev/vinum/control und /dev/vinum/controld, welche von
+ &man.gvinum.8; beziehungsweise dem Vinum-Daemon verwendet
+ werden.Geräte-Einträge für jedes Volume.
Dieses sind die Hauptgeräte, die von Vinum benutzt
werden. Somit würde die Konfiguration von oben
folgende Geräte beinhalten:
- /dev/gvinum/myvol,
- /dev/gvinum/mirror,
- /dev/gvinum/striped,
- /dev/gvinum/raid5 sowie
- /dev/gvinum/raid10.
+ /dev/gvinum/myvol,
+ /dev/gvinum/mirror,
+ /dev/gvinum/striped,
+ /dev/gvinum/raid5 sowie
+ /dev/gvinum/raid10.Dies trifft nur für die veraltete
Vinum-Implementierung zu.
- Ein Verzeichnis /dev/vinum/drive
- mit Einträgen für jede Platte. Diese
- Einträge sind tatsächlich symbolische Links auf
- die korrespondierenden Plattendateien.
+ Ein Verzeichnis /dev/vinum/drive mit Einträgen
+ für jede Platte. Diese Einträge sind tatsächlich
+ symbolische Links auf die korrespondierenden Plattendateien.
- Alle Volumes bekommen direkte Einträge unter
- /dev/gvinum/.
+ Alle Volumes bekommen direkte Einträge unter /dev/gvinum/.
- Die Verzeichnisse
- /dev/gvinum/plex und
- /dev/gvinum/sd, die
- Gerätedateien für jeden Plexus sowie jede
- Subdisk enthalten.
+ Die Verzeichnisse /dev/gvinum/plex und /dev/gvinum/sd, die Gerätedateien
+ für jeden Plexus sowie jede Subdisk enthalten.Stellen Sie sich folgende Konfigurationsdatei vor:
drive drive1 device /dev/sd1h
drive drive2 device /dev/sd2h
drive drive3 device /dev/sd3h
drive drive4 device /dev/sd4h
volume s64 setupstate
plex org striped 64k
sd length 100m drive drive1
sd length 100m drive drive2
sd length 100m drive drive3
sd length 100m drive drive4Nach Abarbeitung dieser Datei erstellt &man.gvinum.8; die
- folgende Struktur unter /dev/gvinum:
+ folgende Struktur unter /dev/gvinum:
drwxr-xr-x 2 root wheel 512 Apr 13 16:46 plex
crwxr-xr-- 1 root wheel 91, 2 Apr 13 16:46 s64
drwxr-xr-x 2 root wheel 512 Apr 13 16:46 sd
/dev/vinum/plex:
total 0
crwxr-xr-- 1 root wheel 25, 0x10000002 Apr 13 16:46 s64.p0
/dev/vinum/sd:
total 0
crwxr-xr-- 1 root wheel 91, 0x20000002 Apr 13 16:46 s64.p0.s0
crwxr-xr-- 1 root wheel 91, 0x20100002 Apr 13 16:46 s64.p0.s1
crwxr-xr-- 1 root wheel 91, 0x20200002 Apr 13 16:46 s64.p0.s2
crwxr-xr-- 1 root wheel 91, 0x20300002 Apr 13 16:46 s64.p0.s3Es wird empfohlen, für Plexus und Subdisks keine
eigenen Namen zu vergeben. Dies gilt aber nicht für
Vinum-Platten. Durch die Benennung von Vinum-Platten
wird es erst möglich, eine Platte an einen anderen Ort zu
verschieben und sie trotzdem noch automatisch erkennen zu lassen.
Plattennamen können bis zu 32 Zeichen lang sein.Dateisysteme erstellenVolumes erscheinen (mit einer Ausnahme) dem System nicht
anders als Platten. Anders als &unix;-Platten partitioniert
Vinum seine Volumes nicht, weshalb diese auch keine
Partitionstabellen haben. Dies wiederum hat Modifikationen an
einigen Platten-Tools, insbesondere &man.newfs.8;, nötig
gemacht, welche bis dahin den letzten Buchstaben eines
Vinum-Volume-Namen als Partitionsbezeichner identifiziert haben.
Zum Beispiel könnte eine Platte einen Namen wie
- /dev/ad0a oder
- /dev/da2h haben. Diese Namen bedeuten,
- dass es sich um die erste Partition
+ /dev/ad0a oder
+ /dev/da2h haben. Diese Namen
+ bedeuten, dass es sich um die erste Partition
(a) der ersten (0) IDE-Platte
(ad) und respektive die achte
Partition (h) der dritten (2)
SCSI-Platte (da) handelt. Im Vergleich
- dazu könnte ein Vinum-Volume beispielsweise
- /dev/gvinum/concat heißen, ein Name,
+ dazu könnte ein Vinum-Volume beispielsweise /dev/gvinum/concat heißen, ein Name,
der in keiner Beziehung mit einem Partitionsnamen steht.Normalerweise interpretiert &man.newfs.8; den Namen einer
Platte und beschwert sich, wenn es ihn nicht versteht:&prompt.root; newfs /dev/gvinum/concat
newfs: /dev/gvinum/concat: can't figure out file system partitionUm nun ein Dateisystem auf diesem Volume anzulegen, benutzen
Sie &man.newfs.8;:&prompt.root; newfs /dev/gvinum/concatBei &os;-Versionen vor 5.0 benötigt
- &man.newfs.8; ein zusätzliches -v Flag und
- das alte Gerätenamen-Schema:
-
-
- &prompt.root; newfs -v /dev/vinum/concat
+ &man.newfs.8; ein zusätzliches Flag und
+ das alte Gerätenamen-Schema:
+
+ &prompt.root; newfs -v /dev/vinum/concatVinum konfigurierenDer GENERIC-Kernel enthät kein
Vinum. Es ist zwar möglich, einen speziellen Kernel zu
bauen, der Vinum beinhaltet, empfohlen wird aber, Vinum als
ein Kernelmodul (über kld) zu laden.
Dazu müssen Sie nicht einmal &man.kldload.8; benutzen,
da beim Start von &man.gvinum.8; automatisch überprüft
wird, ob das Modul bereits geladen wurde. Falls das Modul noch
nicht geladen wurde, wird es daraufhin geladen.InbetriebnahmeVinum speichert seine Konfigurationsinformationen auf den
Platten-Slices im Wesentlichen genauso ab wie in den
Konfigurationsdateien. Beim Lesen der Konfigurationsdatenbank
erkennt Vinum eine Anzahl von Schlüsselwörtern, die
in den Konfigurationsdateien nicht erlaubt sind. Zum Beispiel
könnte eine Platten-Konfiguration den folgenden Text
enthalten:volume myvol state up
volume bigraid state down
plex name myvol.p0 state up org concat vol myvol
plex name myvol.p1 state up org concat vol myvol
plex name myvol.p2 state init org striped 512b vol myvol
plex name bigraid.p0 state initializing org raid5 512b vol bigraid
sd name myvol.p0.s0 drive a plex myvol.p0 state up len 1048576b driveoffset 265b plexoffset 0b
sd name myvol.p0.s1 drive b plex myvol.p0 state up len 1048576b driveoffset 265b plexoffset 1048576b
sd name myvol.p1.s0 drive c plex myvol.p1 state up len 1048576b driveoffset 265b plexoffset 0b
sd name myvol.p1.s1 drive d plex myvol.p1 state up len 1048576b driveoffset 265b plexoffset 1048576b
sd name myvol.p2.s0 drive a plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 0b
sd name myvol.p2.s1 drive b plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 524288b
sd name myvol.p2.s2 drive c plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 1048576b
sd name myvol.p2.s3 drive d plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 1572864b
sd name bigraid.p0.s0 drive a plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 0b
sd name bigraid.p0.s1 drive b plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 4194304b
sd name bigraid.p0.s2 drive c plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 8388608b
sd name bigraid.p0.s3 drive d plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 12582912b
sd name bigraid.p0.s4 drive e plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 16777216bDie offensichtlichen Unterschiede sind hier die Anwesenheit
von Informationen über explizite Speicherorte und
Benennungen (beides ist zwar erlaubt, aber es wird dem Benutzer
davon abgeraten, es zu benutzen) und Informationen über die
Zustände (welche für den Benutzer nicht zur
Verfügung stehen). Vinum speichert keine Informationen
über Platten in den Konfigurationsinformationen, es findet
die Platten durch Scannen nach Vinum-Markierungen auf den
eingerichteten Laufwerken. Dies ermöglicht es,
Vinum-Platten auch dann noch korrekt zu identifizieren, wenn
sie schon andere &unix;-Platten-IDs zugewiesen bekommen
haben.Automatische InbetriebnahmeDiese Information bezieht sich nur auf die veraltete
Vinum-Implementierung. Gvinum
unterstützt eine automatische Inbetriebnahme immer,
wenn das Kernelmodul über &man.loader.conf.5; geladen ist.
Um das Gvinum Modul beim Hochfahren des
Systems zu laden, fügen Sie die Zeile
geom_vinum_load="YES" in
/boot/loader.conf ein.Um Vinum automatisch zu starten, wenn Sie Ihr System
starten, müssen Sie sicherstellen, dass Ihre
/etc/rc.conf (die in &man.rc.conf.5;
ausführlich beschrieben wird) folgende Zeile
enthält:start_vinum="YES" # set to YES to start vinumDurch diesen Eintrag wird das Vinum-kld
geladen, das alle Objekte startet, die in der Konfiguration
erwähnt werden. All dies wird vor dem Mounten der
Dateisysteme getan, so dass ein automatisches &man.fsck.8;
und Mounten der Dateisysteme auf Vinum-Volumes möglich
ist.Beim starten von Vinum durch den Befehl vinum
start liest Vinum die Konfigurationsdatenbank von
einer der Vinum-Platten. Unter normalen Umständen
enthält jede Platte eine identische Kopie der
Konfigurationsdatenbank, so dass es keine Rolle spielt, von
welcher der Platten diese eingelesen wird. Nach einem
Plattencrash muss Vinum allerdings zunächst feststellen,
welche der Platten zuletzt aktualisiert wurde und dann die
Konfiguration von dieser Platte lesen. Danach werden (falls
nötig) die Konfigurationen der "alten" Platten
aktualisiert.Vinum für das Root-Dateisystem benutzenAuf einem System, das mit Hilfe von Vinum
vollgespiegelte Dateisysteme hat, ist es wünschenswert, auch
das Root-Dateisystem zu spiegeln. Solch eine Konfiguration ist
allerdings weniger trivial als das Spiegeln eines
gewöhnlichen Dateisystems, weil:Das Root-Dateisystem in einer sehr frühen Phase
des Bootvorgangs verfügbar sein muss, und damit auch
die Vinum-Infrastruktur.Das Volume, welches das Root-Dateisystem enthält,
auch den Bootstrap und den Kernel enthält, die
wiederum nur mit den systemeigenen Tools (zum Beispiel
dem BIOS bei handelsüblichen PCs) gelesen werden
können und meist nicht dazu gebracht werden können,
Vinum zu verstehen.Im folgenden Abschnitt wird der Begriff
Root-Volume benutzt, um das Vinum-Volume zu
beschreiben, welches das Root-Dateisystem enthält. Es ist
eine gute Idee, für dieses Volume den Namen
"root" zu benutzen, aber es ist in keiner
Weise technisch nötig (Das folgende Beispiel geht allerdings
davon aus, dass dies der Fall ist.).Vinum für das Root-Dateisystem rechtzeitig
startenDamit dies gelingt, müssen Sie folgende Aufgaben
erledigen:Vinum muss zum Zeitpunkt des Bootvorganges im
Kernel zur Verfügung stehen. Deswegen ist die
Methode zum Start von Vinum, die in
beschrieben wird,
für diese Aufgabe nicht geeignet. Also muss
auch der start_vinum-Parameter
eigentlich nicht gesetzt werden,
wenn man das folgende Setup einrichtet. Die erste
Möglichkeit wäre es, Vinum statisch in den
Kernel zu kompilieren, so dass es ständig
verfügbar ist, was aber in der Regel nicht
erwünscht ist. Ebenso gibt es die Möglichkeit
/boot/loader
() das Vinum-Kernelmodul
früh genug laden zu lassen (und zwar noch bevor
der Kernel gestartet wird). Dies kann bewerkstelligt
werden, indem die Zeilegeom_vinum_load="YES"in die Datei /boot/loader.conf
eingetragen wird.Für Gvinum ist das oben
beschriebene Prozedere alles, was Sie tun müssen,
da der gesamte Startvorgang automatisch erledigt wird,
sobald das Kernelmodul geladen wurde. Der folgende Text
dokumentiert das Verhalten des ursprünglichen
Vinum-Systems.Vinum muss früh initialisiert werden, weil es
das Volume für das Root-Dateisystem bereitstellen
muss. In der Voreinstellung sucht das
Vinum-Kernelmodul nicht nach Laufwerken, die vielleicht
Vinum-Volumeninformationen enthalten könnten,
bis der Administrator (oder eines der Startskripte)
den Befehl vinum start
ausführt.Der folgende Absatz gibt einen Überblick
- über die nötigen Schritte für FreeBSD.
+ über die nötigen Schritte für &os;.
Durch Aufnahme der Zeilevinum.autostart="YES"in /boot/loader.confwird Vinum
beim Starten des Kernels dazu veranlasst, automatisch alle
Platten nach Vinuminformationen zu scannen.Beachten Sie, dass es nicht nötig ist, den Kernel
davon zu unterrichten, wo er nach dem Root-Dateisystem
suchen soll. /boot/loader holt sich
den Namen des Root-Gerätes aus
/etc/fstab und übergibt diesen
dann dem Kernel. Sobald es Zeit wird, das Root-Dateisystem
zu mounten, findet der Kernel anhand des Gerätenamens
heraus, welchen Treiber er fragen muss, um den Namen in die
interne Geräte-ID zu übersetzen
(major/minor-Nummer).Ein Vinum-basiertes Root-Volume dem Bootstrap
verfügbar machen
- Da der aktuelle FreeBSD-Bootstrap nur 7,5 KB Code
+ Da der aktuelle &os;-Bootstrap nur 7,5 KB Code
enthält und schon ohne Vinum die Aufgabe hat,
bestimmte Dateien (wie /boot/loader)
von einem UFS-Dateisystem zu lesen, ist es schier
unmöglich, ihm auch noch die Interna von Vinum
beizubringen, damit er die Vinum-Konfigurationsdaten
auslesen und die Elemente eines Boot-Volumes selbst
herausfinden könnte. Daher sind ein paar Tricks
nötig, um dem Bootstrap-Code die Illusion
einer Standard-"a"-Partition mit
einem Root-Dateisystem vorzugaukeln.Damit dies überhaupt möglich wird,
müssen die folgenden Bedingungen für das
Root-Dateisystem erfüllt sein:Das Root-Volume darf weder gestriped noch
RAID-5 sein.Das Root-Volume darf nicht mehr als eine konkatenierte
Subdisk pro Plexus enthalten.Beachten Sie, dass es möglich und
wünschenswert ist, mehrere Plexus zu haben, von denen
jeder eine Kopie des Root-Dateisystems enthält. Der
Bootstrap-Prozess wird hingegen nur einen dieser Plexus
benutzen, um den Bootstrap und alle Dateien zu finden, bis der
Kernel letztendlich das Root-Dateisystem selbst laden wird.
Jede einzelne Subdisk innerhalb dieser Plexus wird dann ihre
eigene Illusion der Partition "a" brauchen,
damit das entsprechende Gerät bootbar wird. Es ist nicht
unbedingt notwendig, dass sich jede dieser gefälschten
"a"-Partitionen auf seinem Gerät an
einem Ort befindet, der um den selben Wert verschoben ist wie
auf den anderen Geräten, die Plexus des Root-Dateisystems
enthalten. Um Unklarheiten zu verhindern, ist es jedoch eine
gute Idee, die Vinum-Volumes so zu erstellen, dass die
gespiegelten Geräte symmetrisch sind.Damit diese "a"-Partitionen eingerichtet
werden können, muss für alle Geräte, die Teil des
Root-Dateisystems sind, folgendes getan werden:Der Ort (Verschiebung vom Beginn des Gerätes) und
die Größe der Subdisk, die Teil des Root-Volumes
ist, muss untersucht werden:&prompt.root; gvinum l -rv rootBeachten Sie, dass Vinum-Verschiebungen und
-Größen in Bytes gemessen werden. Sie müssen
deshalb durch 512 geteilt werden, um die Blockanzahl zu
erhalten, wie sie das bsdlabel-Kommando
verwendet.Führen Sie den Befehl&prompt.root; bsdlabel -e devnamefür jedes Gerät, dass am Root-Volume beteiligt
ist, aus. devname muss entweder
der Name der Platte (wie da0), im
Falle einer Platte ohne Slice-Tabelle oder der Name des
Slices (wie ad0s1) sein.Wenn es schon eine "a"-Partition auf
dem Gerät (in der Regel wahrscheinlich ein
Prä-Vinum-Root-Dateisystem) gibt, sollte diese
umbenannt werden, damit sie weiterhin verfügbar bleibt
(nur für den Fall). Sie wird aber nicht länger
benutzt, um das System zu starten. Beachten Sie aber, dass
aktive Partitionen (wie ein gemountetes Root-Dateisystem)
nicht umbenannt werden können, sodass Sie entweder von
einem Fixit-Medium booten müssen, oder
aber mittels eines zweistufigen Prozesses (sofern Sie in einer
gespiegelten Umgebung arbeiten) zuerst die Platte
ändern, von der gerade nicht gebootet wurde.Nun muss die Verschiebung der Vinum-Partition (sofern
vorhanden) auf diesem Gerät mit der Veschiebung der
entsprechenden Root-Volume-Subdisk addiert werden. Das
Resultat wird der "offset"-Wert für
die neue "a"-Partition. Der
"size"-Wert für diese Partition
kann entsprechend der Berechnung ermittelt werden.
"fstype" sollte 4.2BSD
sein. Die "fsize"-,
"bsize"-, und
"cpg"- Werte sollten entsprechend dem
eigentlichen Dateisystem gewählt werden, obwohl sie in
diesem Kontext ziemlich unwichtig sind.Auf diese Art und Weise wird eine neue Partition
"a" etabliert, die die Vinum-Partition
auf diesem Gerät überschneidet. Beachte Sie, dass
das bsdlabel-Kommando diese
Überschneidung nur erlaubt, wenn die Partition richtig
mit dem "vinum"-fstype markiert ist.Das ist alles. Auf jedem Gerät befindet sich nun
eine gefälschte "a"-Partition, die
eine Kopie des Root-Volumes enthält. Es wird dringend
empfohlen, das Resultat dieser Konfiguration zu
überprüfen:&prompt.root; fsck -n /dev/devnameaDenken Sie stets daran, dass alle Dateien, die
Kontrollinformationen enthalten, nun relativ zum
Root-Dateisystem innerhalb des Vinum-Volumes sein müssen.
Denn ein neu eingerichtetes Vinum-Root-Dateisystem ist
möglicherweise inkompatibel zum gerade aktiven
Root-Dateisystem. Deshalb müssen insbesondere die
Dateien /etc/fstab und
/boot/loader.conf überprüft
werden.Beim nächsten Systemstart sollte der Bootstrap die
adäquaten Kontrollinformationen des neuen
Vinum-basierten Root-Dateisystems automatisch herausfinden und
entsprechend handeln. Am Ende des
Kernel-Initialisierungsprozesses (nachdem alle Geräte
angezeigt wurden) erhalten Sie bei einer erfolgreichen
Konfiguration eine Nachricht ähnlich der folgenden:Mounting root from ufs:/dev/gvinum/rootBeispiel eines Vinum-basierten Root-SetupsNachdem das Vinum-Root-Volume eingerichtet wurde,
könnte die Ausgabe von gvinum l -rv root
bespielsweise so aussehen:
...
Subdisk root.p0.s0:
Size: 125829120 bytes (120 MB)
State: up
Plex root.p0 at offset 0 (0 B)
Drive disk0 (/dev/da0h) at offset 135680 (132 kB)
Subdisk root.p1.s0:
Size: 125829120 bytes (120 MB)
State: up
Plex root.p1 at offset 0 (0 B)
Drive disk1 (/dev/da1h) at offset 135680 (132 kB)
Wichtig ist hier insbesondere ist der Wert
- 135680 für die Verschiebung (relativ
- zur Partition /dev/da0h). Das entspricht
+ 135680 für die Verschiebung (relativ zur
+ Partition /dev/da0h). Das entspricht
beim Einsatz von bsdlabel 265
512-Byte-Plattenblöcken. Dieses Root-Volume ist ebenso
245760 512-Byte-Blöcke groß.
- /dev/da1h enthält die zweite Kopie
- dieses Root-Volumes und ist symmetrisch aufgebaut.
+ /dev/da1h enthält die
+ zweite Kopie dieses Root-Volumes und ist symmetrisch aufgebaut.
Das Bsdlabel für diese Geräte könnte
so aussehen:
...
8 partitions:
# size offset fstype [fsize bsize bps/cpg]
a: 245760 281 4.2BSD 2048 16384 0 # (Cyl. 0*- 15*)
c: 71771688 0 unused 0 0 # (Cyl. 0 - 4467*)
h: 71771672 16 vinum # (Cyl. 0*- 4467*)
Wie man leicht feststellen kann, entspricht der Parameter
"size" der gefälschten
"a"-Partition dem ausgewiesenen Wert von
oben, während der Parameter
"offset" gleich der Summe der Verschiebung
innerhalb der Vinum-Partition "h" und der
Verschiebung innerhalb des Geräts (oder Slice) ist. Dies
ist ein typischer Aufbau, der nötig ist, um die in
beschriebenen Probleme zu
vermeiden. Die gesamte Partition "a" befindet
sich in "h", die alle Vinum-Daten für
dieses Gerät enthält.Beachten Sie, dass in dem oben beschriebenen Beispiel das
gesamte Gerät Vinum gewidmet ist und keine
Prä-Vinum-Partition zurückgelassen wurde, da es sich
im Beispiel um eine neu eingerichtete Platte handelt, die nur
für die Vinum-Konfiguration bestimmt war.FehlerbehebungDer folgende Abschnitt beschreibt einige bekannte
Probleme und Fallstricke bei der Vinum-Konfiguration sowie
deren Behebung.Der System-Bootstrap lädt zwar, das System startet
aber nicht.Wenn aus irgendeinem Grund das System nicht mit dem Booten
fortfährt, kann man den Bootstrap während der
10-Sekunden-Warnung durch Drücken der
Leertaste unterbrechen. Die
loader-Variablen (wie
vinum.autostart) können mittels des
show-Kommandos untersucht, und mit
set oder unset
geändert werden.Wenn das einzige Problem das Fehlen des
Vinum-Kernelmoduls in der Liste der automatisch zu ladenden
Module ist, hilft ein einfaches
load geom_vinum.Danach können Sie den Bootvorgang mit
boot -as fortsetzen. Die Optionen
fordern den Kernel auf, nach dem zu
mountenden Root-Dateisystem zu fragen (),
und den Bootvorgang im Single-User-Modus
() zu beenden, in dem das
Root-Dateisystem schon schreibgeschützt gemountet ist.
Auf diese Weise wird keine Dateninkonsistenz zwischen den
Plexus riskiert, auch wenn nur ein Plexus eines
Multi-Plexus-Volumes gemountet wurde.Beim Prompt, das nach einem Root-Dateisystem fragt,
kann jedes Gerät angegeben werden, dass ein
gültiges Root-Dateisystem hat. Wenn
/etc/fstab richtig konfiguriert
wurde, sollte die Vorgabe etwas wie
ufs:/dev/gvinum/root sein. Eine typische
Alternative würde etwas wie
ufs:da0d sein, welches eine
hypothetische Partition sein könnte, die ein
Pre-Vinum-Root-Dateisystem enthält. Vorsicht sollte
walten, wenn eine der alias"a"-Partitionen hier eingegeben wird, die
eigentlich Referenzen auf die Subdisks des
Vinum-Root-Dateisystems sind, da so nur ein Stück eines
gespiegelten Root-Gerätes gemountet werden würde.
Wenn das Dateisystem später zum Lesen und Schreiben
gemountet werden soll, ist es nötig, die anderen Plexus
des Vinum-Root-Volumes zu entfernen, weil diese Plexus
andernfalls inkonsistente Daten enthalten würden.Nur der primäre Bootstrap lädtWenn das Laden von /boot/loader
fehlschlägt, aber der primäre Bootstrap dennoch
lädt (sichtbar an dem einzelnen Strich in der linken
Spalte des Bildschirms gleich nachdem der Bootprozess
startet), kann man versuchen, den primären Bootstrap
an diesem Punkt durch Benutzen der
Leertaste zu unterbrechen. Dies wird
den Bootstrap in der zweiten Phase stoppen (siehe dazu auch
). Hier kann nun der Versuch
unternommen werden, von einer anderen Partition zu booten,
wie beispielsweise dem vorhergehenden Root-Dateisystem,
das von "a" verschoben wurde.Nichts bootet, der Bootstrap hängt sich aufDiese Situation wird vorkommen, wenn der Bootstrap durch
die Vinum-Installation zerstört worden ist.
Unglücklicherweise lässt Vinum am Anfang seiner
Partition nur 4 KB frei und schreibt dahinter seine
Kopfinformationen. Allerdings benötigen Stufe-Eins-
und -Zwei-Bootstraps plus dem dazwischen eingebetteten
bsdlabel momentan 8 KB.
Demzufolge wird die Vinum-Installation, wenn die
Vinum-Partition mit der Verschiebung 0 (innerhalb eines
Slice oder einer Platte, die zum Start bestimmt waren)
eingerichtet wurde, den Bootstrap zerstören.Analog wird eine anschließende
Reinstallation eines Bootstrap (zum Beispiel durch Booten
eines Fixit-Mediums) mit
bsdlabel -B, wie in
beschrieben, den Vinum-Kopf
zerstören und Vinum wird seine Platte(n) nicht mehr
finden können. Obwohl keine eigentlichen
Vinum-Konfigurationsdaten oder Daten in den Vinum-Volumes
zerstört werden und es möglich wäre, alle
Daten wiederherzustellen, indem die exakt gleichen
Vinum-Konfigurationsdaten noch einmal eingegeben werden,
bleibt die Situation schwer zu bereinigen, da es nötig
ist, die gesamte Vinum-Partition um mindestens
4 KB nach hinten zu verschieben, damit Bootstrap
und Vinum-Kopf nicht mehr kollidieren.