Index: head/de_DE.ISO8859-1/books/handbook/audit/chapter.xml
===================================================================
--- head/de_DE.ISO8859-1/books/handbook/audit/chapter.xml (revision 48791)
+++ head/de_DE.ISO8859-1/books/handbook/audit/chapter.xml (revision 48792)
@@ -1,854 +1,853 @@
Security Event AuditingTomRhodesGeschrieben von RobertWatsonDanielSeuffertÜbersetzt von EinleitungAUDITSecurity Event AuditingMAC&os; bietet Unterstützung für Sicherheits-Auditing.
Ereignis-Auditing bietet zuverlässige, feingranulierte und
konfigurierbare Aufzeichnung einer Vielzahl von
sicherheitsrelevanten Systemereignissen einschliesslich
Benutzereingaben, Konfigurationsänderungen sowie Datei- und
Netzwerkzugriffen. Diese Log-Datensätze können
unschätzbar wertvoll sein für direkte
Systemüberwachung, Einbruchserkennung und
Post-Mortem-Analyse. &os; implementiert &sun;s öffentlich
zugängliches Basic Security Module (BSM)
Application Programming Interface (API) und
Dateiformat, und kann mit den Audit-Implementierungen von
&sun; &solaris; und &apple; &macos; X zusammenarbeiten.Dieses Kapitel konzentriert sich auf die Installation
und Konfiguration des Ereignis-Auditings. Es erklärt
Audit-Richtlinien und stellt ein Beispiel einer
Audit-Konfiguration vor.Nach dem Lesen dieses Kapitels werden Sie
Folgendes wissen:Was Ereignis-Auditing ist und wie es
funktioniert.Wie man Ereignis-Auditing in &os; für Benutzer
und Prozesse konfiguriert.Wie man den Audit-Pfad mittels Audit-Reduktion und
Revisionswerkzeugen überprüft.Vor dem Lesen dieses Kapitels sollten Sie:Sowohl &unix; als auch &os;-Basismechanismen
beherrschen ().Mit den grundlegenden Mechanismen der
Kernel-Konfiguration und -Kompilierung vertraut sein ().Mit den Maßnahmen zur Sicherung von &os;
vertraut sein ().Die Audit-Funktionalität in &os; hat einige bekannte
Einschränkungen. Nicht alle sicherheitsrelevanten
System-Ereignisse sind auditierbar, und einige
Anmelde-Mechanismen, wie beispielsweise
Xorg-basierte
Bildschirm-Manager und Dienste von Drittanbietern,
konfigurieren das Auditing für Benutzeranmeldungen nicht
korrekt.Das Sicherheits-Auditing ist in der Lage, sehr
detaillierte Log-Dateien von Systemaktivitäten zu erzeugen.
Auf einem ausgelasteten System kann die Pfad-Datei sehr groß
werden, wenn sie für hohe Auflösung konfiguriert ist, und im
Extremfall pro Woche um mehrere Gigabyte anwachsen.
Administratoren sollten daher den benötigten Plattenplatz in
Verbindung mit umfangreichen Audit-Konfigurationen
berücksichtigen. So kann es wünschenswert sein, ein eigenes
Dateisystem für /var/audit einzusetzen, damit
andere Dateisysteme nicht betoffen sind, wenn das Dateisystem
des Audit voll läuft.SchlüsselbegriffeDie folgenden Begriffe stehen im Zusammenhang mit
Ereignis-Auditing:event: ein auditierbares Ereignis
ist jedes Ereignis, das mit dem Audit-Subsystem
aufgezeichnet werden kann. Beispiele für
sicherheitsrelevante Systemereignisse sind etwa das Anlegen
von Dateien, das Erstellen einer Netzwerkverbindung oder
eine Benutzeranmeldung. Ereignisse sind entweder
attributierbar, können also zu einen
authentifizierten Benutzer zurückverfolgt werden, oder
sind nicht-attributierbar. Nicht-attributierbare Ereignisse erfolgen
daher vor der Authentifizierung im Anmeldeprozess
(beispielsweise die Eingabe eines falschen Passworts).class: benannte Zusammenstellungen
von zusammengehörenden Ereignissen, die in
Auswahl-Ausdrücken benutzt werden.
Häufig genutzte Klassen von Ereignissen schließen
file creation (fc, Anlegen von Dateien),
exec (ex, Ausführung) und
login_logout (lo, Anmeldung-Abmeldung)
ein.record: ein
Audit-Logeintrag, der ein Sicherheitsereignis
enthält. Jeder Datensatz enthält einen
Ereignistyp, Informationen über den Gegenstand
(Benutzer), welcher die Aktion durchführt, Datums- und
Zeitinformationen, Informationen über jedes Objekt oder
Argument sowie den Zustand hinsichtlich Erfolg oder
Scheitern der Operation.trail: eine Log-Datei bestehend aus einer Reihe von
Audit-Datensätzen, die Sicherheitsereignisse
beschreiben. Pfade sind in grober
zeitlicher Reihenfolge bezüglich des Zeitpunktes,
an welchem ein Ereignis beendet wurde. Nur authorisierte
Prozesse dürfen Datensätze zum Audit-Pfad
hinzufügen.selection expression: eine
Zeichenkette, welche eine Liste von
Präfixen und Audit-Ereignisklassennamen enthält,
um Ereignisse abzugleichen.preselection: der Prozess, durch
den das System erkennt, welche Ereignisse
von Interesse für den Administrator sind, um die
Erzeugung von Datensätze zu verhindern, welche nicht
von Belang sind. Die Konfiguration der Vorauswahl benutzt
eine Reihe von Auswahl-Ausdrücken, um zu erkennen,
welche Klassen von Ereignissen für welche Benutzer
aufgezeichnet werden sollen sowie globale Einstellungen,
welche sowohl auf authorisierte
als auch unauthorisierte Prozesse angewendet werden.reduction: Die Reduzierung ist
der Prozess, durch den Datensätze von bestehenden
Audit-Pfaden ausgewählt werden für Speicherung,
Ausdruck oder Analyse. Ebenso der Prozess, durch den
unerwünschte Datensätze aus dem Audit-Pfad
entfernt werden. Mittels Reduzierung können
Administratoren Richtlinien für die Speicherung von
Audit-Daten vorgeben. Zum Beispiel können
ausführliche Audit-Pfade für einen Monat
gespeichert werden, um danach den Pfad für
archivarische Zwecke auf die Anmeldeinformationen
zu reduzieren.Audit KonfigurationUserspace-Untersützung für Ereignis-Auditing ist Bestandteil
des &os;-Betriebssystems. Kernel-Unterstützung kann durch
Hinzufügen der folgenden Zeile in
/etc/rc.conf aktiviert werden:auditd_enable="YES"Starten Sie anschließend den Audit-Daemon:&prompt.root; service auditd startBenutzer, die es bevorzugen einen angepassten Kernel zu
kompilieren, müssen folgende Zeile in die
Kernelkonfigurationsdatei aufnehmen:options AUDITEreignis-AuswahlausdrückeAuswahlausdrücke werden an einigen Stellen
der Audit-Konfiguration benützt, um zu bestimmen,
welche Ereignisse auditiert werden sollen. Die Ausdrücke
enthalten eine Liste der Ereignisklassen, welche verglichen
werden sollen, jede mit einem Präfix, welches anzeigt,
ob verglichene Datensätze akzeptiert oder ignoriert
werden sollen und optional, um anzuzeigen, ob der Eintrag
beabsichtigt, erfolgreiche oder fehlgeschlagene Operationen
zu vergleichen. Auswahlausdrücke werden von links nach
rechts ausgewertet und zwei Ausdrücke werden durch
Aneinanderhängen miteinander kombiniert. fasst die
Audit-Ereignisklassen zusammen:
Audit-EreignisklassenName der KlasseBeschreibungAktionallallVergleicht alle Ereisnisklassen.adadministrativeAdministrative Aktionen, ausgeführt auf dem System
als Ganzes.apapplicationAktionen definiert für Applikationen.clfile closeAudit-Aufrufe für den Systemaufruf
close.exexecAusführung des Audit-Programms. Auditierung von
Befehlszeilen-Argumenten und Umgebungsvariablen wird
gesteuert durch &man.audit.control.5; mittels der
argv und
envv-Parameter gemäß der
Richtlinien-Einstellungen.fafile attribute accessAuditierung des Zugriffs auf Objektattribute wie
&man.stat.1; und &man.pathconf.2;.fcfile createAudit-Ereignisse, bei denen eine Datei als
Ergebnis angelegt wird.fdfile deleteAudit-Ereignisse, bei denen Dateilöschungen
vorkommen.fmfile attribute modifyAudit-Ereignisse, bei denen Dateiattribute geändert
werden, wie &man.chown.8;, &man.chflags.1; und
&man.flock.2;.frfile readAudit-Ereignisse, bei denen Daten gelesen oder
Dateien zum lesen geöffnet werden.fwfile writeAudit-Ereignisse, bei denen Daten geschrieben oder
Dateien geschrieben oder verändert werden.ioioctlNutzung des Systemaufrufes
ioctl durch Audit.ipipcAuditierung verschiedener Formen von
Inter-Prozess-Kommunikation einschließlich POSIX-Pipes
und System V IPC-Operationen.lologin_logoutAudit-Ereignisse von &man.login.1; und
&man.logout.1;.nanon attributableAuditierung nicht-attributierbarer
Ereignisse.noinvalid classKein Abgleich von Audit-Ereignissen.ntnetworkAudit-Ereignisse in Zusammenhang mit
Netzwerkaktivitäten wie &man.connect.2; und
&man.accept.2;ototherAuditierung verschiedener Ereignisse.pcprocessAuditierung von Prozess-Operationen wie
&man.exec.3; und &man.exit.3;.
Diese Ereignisklassen können angepasst werden durch
Modifizierung der Konfigurationsdateien
audit_class und
audit_event.Jede Audit-Klasse ist kombiniert mit
einem Präfix, welches anzeigt, ob
erfolgreiche/gescheiterte Operationen abgebildet werden, und
ob der Eintrag den Abgleich hinzufügt oder entfernt
für die Klasse und den Typ.
fasst die verfügbaren Präfixe zusammen.
Präfixe für Audit-EreignisklassenPräfixAktion+Auditiert erfolgreiche Ereignisse in dieser
Klasse.-Auditiert fehlgeschlagene Ereignisse in dieser
Klasse.^Auditiert weder erfolgreiche noch fehlgeschlagene
Ereignisse.^+Auditiert keine erfolgreichen Ereignisse in dieser
Klasse.^-Auditiert keine fehlgeschlagenen Ereignisse in
dieser Klasse.
Wenn kein Präfix vorhanden ist, werden sowohl erfolgreiche
als auch fehlgeschlagene Ereignisse auditiert.Das folgende Beispiel einer Auswahl-Zeichenkette
wählt erfolgreiche und gescheiterte
Anmelde/Abmelde-Ereignisse aus, aber nur erfolgreich beendete
Ausführungs-Ereignisse:lo,+exKonfigurationsdateienDie folgenden Konfigurationsdateien für
Sicherheits-Auditing befinden sich in
/etc/security.audit_class: enthält die
Definitionen der Audit-Klassen.audit_control: steuert die
Eigenschaften des Audit-Subsystems, wie
Standard-Audit-Klassen, Mindestfestplattenspeicher auf
dem Audit-Log-Volume und die maximale Größe des
Audit-Trails.audit_event: Namen und
Beschreibungen der Audit-Ereignisse, und eine Liste
von Klassen mit den dazugehörigen Ereignissen.audit_user: benutzerspezifische
Audit-Anforderungen, kombinierbar mit den globalen
Standardeinstellungen bei der Anmeldung.audit_warn: ein anpassbares
Skript, das von &man.auditd.8; verwendet wird, um in
bestimmten Situationen Warnmeldungen zu generieren,
z.B. wenn der Platz für Audit-Protokolle knapp wird, oder
wenn die Datei des Audit-Trails rotiert wurde.Konfigurationsdateien von Audit sollten sorgfältig
bearbeitet und gepflegt werden, da Fehler in der
Konfiguration zu einer fehlerhaften Protokollierung der
Ereignisse führen können.In den meisten Fällen werden Administratoren nur
audit_control und
audit_user änpassen müssen. Die erste
Datei steuert systemweite Audit-Eigenschaften, sowie
Richtlinien. Die zweite Datei kann für die Feinabstimmung bei
der Auditierung von Benutzern verwendet werden.Die audit_control-DateiDie audit_control-Datei legt eine
Anzahl Vorgabewerte fest:dir:/var/audit
dist:off
flags:lo,aa
minfree:5
naflags:lo,aa
policy:cnt,argv
filesz:2M
expire-after:10MDie Option wird genutzt, um eines
oder mehrere Verzeichnisse festzulegen, in welchen
Audit-Protokolle gespeichert werden. Gibt es mehrere
Verzeichniseinträge, werden diese in der
angegebenen Reihenfolge genutzt, bis sie jeweils
gefüllt sind. Es ist üblich, Audit so zu
konfigurieren, dass die Audit-Logs auf einem dedizierten
Dateisystem abgelegt werden, um Wechselwirkungen zwischen
dem Audit-Subsystem und anderen Subsystemen zu verhindern,
falls das Dateisystem voll läuft.Das -Feld legt die systemweite
Standard-Vorauswahl-Maske für attributierbare (direkt
einem Benutzer zuordenbare) Ereignisse fest. Im
obigen Beispiel werden alle gescheiterten und erfolgreichen
Anmelde- und Abmelde-Ereignisse für alle Benutzer
aufgezeichnet.Die Option definiert den
minimalen Prozentsatz an freiem Plattenplatz für das
Dateisystem, in welchem der Audit-Pfad abgespeichert wird.
Wenn diese Schwelle überschritten ist, wird ein
Warnhinweis erzeugt. Das obige Beispiel legt den minimalen
freien Platz auf zwanzig Prozent fest.Die -Option bestimmt diejenigen
Audit-Klassen, für die nicht-attributierbare Ereignisse
aufgezeichnet werden sollen (beispielsweise Anmeldeprozesse
und System-Daemonen.Die Option legt eine durch Kommata
getrennte Liste von policy-Flags fest, welche verschiedene
Aspekte des Audit-Verhaltens steuern. Der vorgegebene Flag
cnt zeigt an, dass das System trotz eines
Audit-Fehlers weiterlaufen soll (dieses Flag wird dringend
angeraten). Ein anderes, häufig genutztes Flag ist
argv, welches dazu führt, dass
Befehlszeilen-Argumente für den Systemauruf
&man.execve.2; als Teil der Befehlsausführung
aufgezeichnet werden.Die -Option spezifiziert die
maximale Größe in Bytes, welche eine
Audit-Pfad-Datei wachsen darf, bevor sie automatisch beendet
und rotiert wird. Die Standardvorgabe 0
setzt die automatische Log-Rotation ausser Kraft. Falls die
angeforderte Dateigröße größer Null
und gleichzeitig unterhalb des Minimums von 512K ist, dann
wird die Angabe verworfen und ein Log-Hinweis wird
erzeugt.Die Datei audit_userDie audit_user-Datei erlaubt es dem
Administrator, weitere Audit-Erfordernisse für bestimmte
Benutzer festzulegen. Jede Zeile konfiguriert das Auditing
für einen Benutzer über zwei Felder: Das erste Feld
ist alwaysaudit, welches eine Ansammlung
von Ereignissen vorgibt, welche immer für diesen Benutzer
aufgezeichnet werden. Das zweite Feld
neveraudit legt eine Menge an Ereignissen
fest, die niemals für diesen Benutzer auditiert werden
sollen.Das folgende Beispiel einer
audit_user-Datei zeichnet
Anmelde/Abmelde-Ereignisse, erfolgreiche
Befehlsausführungen für den Benutzer
root, Anlegen von Dateien und
erfolgreiche Befehlsausführungen für den Benutzer
www auf. Falls das Beispiel zusammen
mit der vorstehend als Beispiel gezeigten Datei
audit_control benutzt wird, dann ist
der Eintrag lo für root überflüssig und
Anmelde/Abmelde-Ereignisse werden für www ebenfalls
aufgezeichnet.root:lo,+ex:no
www:fc,+ex:noAdministration des Audit-SubsystemsAudit-Pfade betrachtenAudit-Pfade werden im binären BSM-Format
gespeichert, daher benötigen Sie spezielle Werkzeuge, um
derartige Dateien zu ändern oder Sie in Textdateien zu
konvertieren. Der
Befehl &man.praudit.1; wandelt alle Pfad-Dateien in ein
einfaches Textformat um. Der Befehl &man.auditreduce.1; kann
genutzt werden, um die Pfad-Dateien für Analyse, Ausdruck,
Archivierung oder andere Zwecke zu reduzieren. Eine Reihe von
Auswahl-Parametern werden von &man.auditreduce.1; unterstützt,
einschliesslich Ereignistyp, Ereignisklasse, Benutzer, Datum
oder Uhrzeit des Ereignisses und den Dateipfad oder das
Objekt, mit dem gearbeitet wurde.Das Dienstprogramm &man.praudit.1; schreibt zum Beispiel
den gesamten Inhalt einer angegebenen Audit-Protokolldatei in
eine simple Textdatei:&prompt.root; praudit /var/audit/AUDITFILEAUDITFILE
ist hier die zu schreibende Protokolldatei.Audit-Pfade bestehen aus einer Reihe von Datensätzen, die
wiederum aus Kürzeln (token) gebildet werden, die von
&man.praudit.1; fortlaufend zeilenweise ausgegeben werden.
Jedes Kürzel ist von einem bestimmten Typ, z.B. enthält
header einen audit-Datensatz-Header oder
path enthält einen Dateipfad von einer
Suche. Hier ein Beispiel eines
execve-Ereignisses:header,133,10,execve(2),0,Mon Sep 25 15:58:03 2006, + 384 msec
exec arg,finger,doug
path,/usr/bin/finger
attribute,555,root,wheel,90,24918,104944
subject,robert,root,wheel,root,wheel,38439,38032,42086,128.232.9.100
return,success,0
trailer,133Dieser Audit stellt einen erfolgreichen
execve-Aufruf dar, in welchem der Befehl
finger doug ausgeführt wurde. Das
Kürzel des Argumentes enthält die Befehlszeile,
welche die Shell an den Kernel weiterleitet. Das Kürzel
path enthält den Pfad zur
ausführbaren Datei (wie vom Kernel wahrgenommen). Das
Kürzel attribute beschreibt die
Binärdatei (insbesondere den Datei-Modus, der genutzt
werden kann, um zu bestimmen, ob setuid auf die Applikation
angewendet wurde). Das Kürzel subject
beschreibt den untergeordneten Prozess und speichert daher in
Aufeinanderfolge Audit-Benutzer-ID, effektive Benutzer-ID und
Gruppen-ID, wirkliche Benutzer-ID und Grppen-ID, Process-ID,
Session- ID, Port-ID und Anmelde-Adresse. Beachten Sie, dass
Audit-Benutzer-ID und wirkliche Benutzer-ID abweichen: Der Benutzer
robert wurde zum Benutzer
root, bevor er diesen Befehl
ausführte, aber er wird auditiert mit dem
ursprünglich authentifizierten Benutzer. Schließlich zeigt
das Kürzel return die erfolgreiche
Ausführung an und trailer schließt
den Datensatz ab.&man.praudit.1; unterstützt auch die Ausgabe im
XML-Format (die sie über die Option
auswählen können).Audit-Pfade reduzierenDa Audit-Protokolldateien sehr groß sein können,
wird ein Administrator höchstwahrscheinlich eine Auswahl
an Datensätzen verwenden, wie z.B. alle Datensätze
zu einem bestimmten Benutzer:&prompt.root; auditreduce -u trhodes /var/audit/AUDITFILE | prauditDies wird alle Audit-Datensätze des Benutzers
trhodes auswählen,
die in
AUDITFILE
gespeichert sind.Delegation von Rechten für Audit-ReviewsMitglieder der Gruppe audit haben die Erlaubnis,
- Audit-Pfade in /var/audit zu lesen;
+ Audit-Pfade in /var/audit zu lesen;
standardmässig ist diese Gruppe leer, daher
kann nur der Benutzer root die Audit-Pfade
lesen. Benutzer können der Gruppe
audit hinzugefügt werden, um
Rechte für Audit-Reviews zu gewähren. Da die
Fähigkeit, Inhalte von Audit-Protokolldateien zu verfolgen,
tiefgreifende Einblicke in das Verhalten von Benutzern und
Prozessen erlaubt, wird empfohlen, dass die Gewährung von
Rechten für Audit-Reviews mit Bedacht erfolgt.Aktive Überwachung mittles Audit-PipesAudit-Pipes sind nachgebildete (geklonte)
Pseudo-Geräte im Dateisystem des Gerätes, welche es
Applikationen erlauben, die laufenden Audit-Datensätze
anzuzapfen. Dies ist vorrangig für Autoren von Intrusion
Detection Software und Systemüberwachungsprogrammen von
Bedeutung. Allerdings ist für den Administrator das
Audit-Pipe-Gerät ein angenehmer Weg, aktive
Überwachung zu gestatten, ohne Gefahr von Problemen durch
Besitzerrechte der Audit-Pfad-Datei oder Unterbrechung des
Stroms von Ereignissen durch Log-Rotation. Um den laufenden
Audit-Ereignisstrom zu verfolgen, geben Sie bitte folgende
Befehlszeile ein:&prompt.root; praudit /dev/auditpipeIn der Voreinstellung kann nur der Benutzer
root auf die
Audit-Pipe-Geräte-Knotenpunkte zugreifen. Um sie allen
Mitgliedern der Gruppe audit
zugänglich zu machen, fügen Sie eine
devfs-Regel in
devfs.rules hinzu:add path 'auditpipe*' mode 0440 group auditLesen Sie &man.devfs.rules.5; für weitere
Informationen, wie das devfs-Dateisystem konfiguriert
wird.Es ist sehr leicht, Rückmeldungszyklen von
Audit-Ereignissen hervorzurufen, in welcher das Betrachten
des Resultates eines Audit-Ereignisses in die Erzeugung von
mehr Audit-Ereignissen mündet. Wenn zum Beispiel der gesamte
Netzwerk-I/O auditiert wird, während &man.praudit.1; in
einer SSH-Sitzung gestartet wurde, dann wird ein
kontinuierlicher, mächtiger Strom von Audit-Ereignissen
erzeugt, da jedes ausgegebene Ereignis wiederum neue
Ereignisse erzeugt. Es ist anzuraten, &man.praudit.1; an
einem Audit-Pipe-Gerät nur von Sitzungen anzuwenden (ohne
feingranuliertes I/O-Auditing), um dies zu vermeiden.Rotation von Audit-Pfad-DateienAudit-Pfade werden nur vom Kernel geschrieben und nur
vom Audit-Daemon &man.auditd.8; verwaltet. Administratoren
sollten nicht versuchen, &man.newsyslog.conf.5; oder andere
Werkzeuge zu benutzen, um Audit-Protokolldateien direkt zu
rotieren. Stattdessen sollte das &man.audit.8;
Management-Werkzeug benutzt werden, um die Auditierung zu
beenden, das Audit-System neu zu konfigurieren und eine
Log-Rotation durchzuführen. Der folgende Befehl veranlasst den
Audit-Daemon, eine neue Protokolldatei anzulegen und dem
Kernel zu signalisieren, die neue Datei zu nutzen. Die alte
Datei wird beendet und umbenannt. Ab diesem Zeitpunkt kann
sie vom Administrator bearbeitet werden.&prompt.root; audit -nFalls der &man.auditd.8;-Daemon gegenwärtig nicht läuft,
wird dieser Befehl scheitern und eine Fehlermeldung wird
ausgegeben.Das Hinzufügen der folgenden Zeile in
/etc/crontab wird die Log-Rotation alle
zwölf Stunden durch &man.cron.8; erzwingen:0 */12 * * * root /usr/sbin/audit -nDie Änderung wird wirksam, sobald Sie die neue
/etc/crontab gespeichert haben.Die automatische Rotation der Audit-Pfad-Datei in
Abhängigkeit von der Dateigröße ist möglich
durch die Angabe der Option in
&man.audit.control.5;. Dieser Vorgang ist im Abschnitt
Konfigurationsdateien dieses Kapitels beschrieben.Komprimierung von Audit-PfadenDa Audit-Pfad-Dateien sehr groß werden können,
ist es oft wünschenswert, Pfade zu komprimieren oder
anderweitig zu archivieren, sobald sie vom Audit-Daemon
geschlossen wurden. Das Skript
audit_warn kann genutzt werden, um
angepasste Aktionen für eine Vielzahl von audit-bezogenen
Ereignissen auszuführen, einschliesslich der sauberen
Beendigung von Audit-Pfaden, wenn diese geschlossen werden.
Zum Beispiel kann man die folgenden Zeilen in das
audit_warn-Skript aufnehmen, um
Audit-Pfade beim Beenden zu komprimieren:#
# Compress audit trail files on close.
#
if [ "$1" = closefile ]; then
gzip -9 $2
fiAndere Archivierungsaktivitäten können das
Kopieren zu einem zentralen Server, die Löschung der alten
Pfad-Dateien oder die Reduzierung des alten Audit-Pfades durch
Entfernung nicht benötigter Datensätze
einschliessen. Das Skript wird nur dann ausgeführt, wenn
die Audit-Pfad-Dateien sauber beendet wurden, daher wird es
nicht auf Pfaden laufen, welche durch ein unsauberes Herunterfahren
des Systems nicht beendet wurden.
Index: head/de_DE.ISO8859-1/books/handbook/cutting-edge/chapter.xml
===================================================================
--- head/de_DE.ISO8859-1/books/handbook/cutting-edge/chapter.xml (revision 48791)
+++ head/de_DE.ISO8859-1/books/handbook/cutting-edge/chapter.xml (revision 48792)
@@ -1,3296 +1,3296 @@
&os; aktualisierenJimMockUmstrukturiert und aktualisiert von JordanHubbardIm Original von Poul-HenningKampJohnPolstraNikClaytonMartinHeinenÜbersetzt von Übersicht&os; wird zwischen einzelnen Releases ständig weiter
entwickelt. Manche Leute bevorzugen die offiziellen Release-Versionen,
während andere wiederum lieber auf dem aktuellen Stand der
Entwicklung bleiben möchten. Wie dem auch sei, sogar offizielle
Release-Versionen werden oft mit Sicherheitsaktualisierungen und
anderen kritischen Fehlerbereinigungen versorgt. Unabhängig von
der eingesetzten Version bringt &os; alle nötigen Werkzeuge mit,
um das System aktuell zu halten und es innerhalb verschiedener
Versionen zu aktualisieren. Dieses Kapitel beschreibt, wie man
einem Entwicklungssystem folgen kann, sowie die
grundlegenden Werkzeuge um &os; zu aktualisieren.Nachdem Sie dieses Kapitel gelesen haben, werden Siewissen, welche Werkzeuge verwendet werden können, um das
System und die Port-Sammlung zu aktualisieren.wissen, wie das System mit
freebsd-update,
Subversion oder
CTM aktualisiert wird.wissen, wie man das aktuell installierte System mit einer
ursprünglichen Version vergleicht.wissen, wie die installierte Dokumentation mit
Subversion oder
Dokumentations-Ports
aktualisiert wird.den Unterschied zwischen den beiden Entwicklungszweigen
&os.stable; und &os.current; kennen.wissen, wie das komplette Basissystem neu gebaut und
installiert wird.Bevor Sie dieses Kapitel lesen, sollten Siedas Netzwerk richtig konfiguriert haben
().wissen, wie Software Dritter installiert wird
().In diesem Kapitel wird svn verwendet,
um die &os; Quellen zu beziehen und zu aktualisieren. Um es
zu verwenden, muss zuerst der Port oder das Paket
devel/subversion installiert werden.&os;-UpdateTomRhodesGeschrieben von ColinPercivalBasierend auf bereitgestellten Mitschriften von BenedictReuschlingÜbersetzt von Updating and Upgradingfreebsd-updateupdating-upgradingDas Einspielen von Sicherheitsaktualisierungen ist ein wichtiger
Bestandteil bei der Wartung von Computersoftware, besonders wenn es um
das Betriebssystem geht. Für lange Zeit war dieser Prozess unter
&os; nicht einfach. Fehlerbehebungen mussten auf den Quellcode
angewendet werden, danach wurde der Code zu neuen Binärdateien
übersetzt und schliesslich mussten diese Dateien neu installiert
werden.Das ist seit längerem nicht mehr der Fall, da &os; jetzt ein
Werkzeug namens freebsd-update enthält. Dieses
Werkzeug bringt zwei getrennte Funktionen mit sich. Die erste Funktion
ermöglicht die Anwendung von Sicherheitsaktualisierungen im
Binärformat auf das &os; Basissystem, ohne dieses neu zu
übersetzen und zu installieren. Die zweite Funktion
unterstützt Aktualisierungen zwischen Haupt- und
Unterversionen.Binäre Aktualisierungen sind für alle Architekturen und
Releases verfügbar, die aktuell vom &os; Security Team betreut
werden. Vor
der Aktualisierung auf eine neue Release-Version sollten die aktuellen
Ankündigungen zu dem Release gelesen werden, da diese wichtige
Informationen zu der gewünschten Version enthalten. Release
Ankündigungen finden Sie unter http://www.FreeBSD.org/releases/.Wenn eine crontab existiert, welche die
Eigenschaften von &man.freebsd-update.8; verwendet, muss diese
deaktiviert werden, bevor die folgende Aktion gestartet wird.Die KonfigurationsdateiManche Anwender möchten sicherlich Einstellungen in der
Standard-Konfigurationsdatei unter
/etc/freebsd-update.conf vornehmen, um
bessere Kontrolle über den
gesamten Prozess zu besitzen. Die Optionen sind gut dokumentiert,
jedoch benötigen die folgenden ein paar zusätzliche
Erklärungen:# Components of the base system which should be kept updated.
Components src world kernelDieser Parameter kontrolliert, welche Teile von &os; auf dem
aktuellen Stand gehalten werden sollen. In der Voreinstellung
wird der Quellcode, das gesamte Basissystem sowie der Kernel
aktualisiert. Die Komponenten sind die gleichen wie während
der Installation. Das hinzufügen von
world/games erlaubt es,
Aktualisierungen für Spiele anzuwenden.
Die Verwendung von src/bin erlaubt es, den
Quellcode in src/bin aktuell zu
halten.Die beste Einstellung ist, diese Option so zu belassen, da eine
Änderung es bedingt, dass man als Benutzer jede Komponente
auflisten muss, die aktualisiert werden soll. Dies könnte
katastrophale Folgen nach sich ziehen, da der Quellcode und die
Binärdateien dadurch nicht mehr synchron wären.# Paths which start with anything matching an entry in an IgnorePaths
# statement will be ignored.
IgnorePathsFügen Sie Pfade wie /bin oder /sbin hinzu, um diese speziellen
Verzeichnisse während des Aktualisierungsprozesses unberührt
zu lassen. Diese Option kann verwendet werden, um zu verhindern, dass
freebsd-update lokale Änderungen
überschreibt.# Paths which start with anything matching an entry in an UpdateIfUnmodified
# statement will only be updated if the contents of the file have not been
# modified by the user (unless changes are merged; see below).
UpdateIfUnmodified /etc/ /var/ /root/ /.cshrc /.profileAktualisiert nur unmodifizierte Konfigurationsdateien in
den angegebenen Verzeichnissen. Jede
Änderung, die der Benutzer daran vorgenommen hat, wird die
automatische Aktualisierung dieser Dateien ungültig machen.
Es gibt eine weitere Option KeepModifiedMetadata,
die freebsd-update instruiert, die Änderungen
während der Zusammenführung zu speichern.# When upgrading to a new &os; release, files which match MergeChanges
# will have any local changes merged into the version from the new release.
MergeChanges /etc/ /var/named/etc/Eine Liste von Verzeichnissen mit Konfigurationsdateien, in denen
freebsd-update Zusammenführungen versuchen
soll. Dieser Verschmelzungsprozess von Dateien ist eine Serie von
&man.diff.1;-Korrekturen, ähnlich wie &man.mergemaster.8;, aber
mit weniger Optionen. Die Änderungen werden entweder akzeptiert,
oder öffnen einen Editor, oder freebsd-update bricht
ab. Im Zweifelsfall sichern Sie /etc und
akzeptieren einfach die Änderungen. Lesen Sie , um Informationen über
mergemaster zu erhalten.# Directory in which to store downloaded updates and temporary
# files used by &os; Update.
# WorkDir /var/db/freebsd-updateIn diesem Verzeichnis werden alle Korrekturen und
temporären Dateien abgelegt. Im Falle einer
Versionsaktualisierung sollte diesem Verzeichnis mindestens
ein Gigabyte Festplattenspeicher zur Verfügung stehen.# When upgrading between releases, should the list of Components be
# read strictly (StrictComponents yes) or merely as a list of components
# which *might* be installed of which &os; Update should figure out
# which actually are installed and upgrade those (StrictComponents no)?
# StrictComponents noWenn diese Option auf yes gesetzt ist, wird
freebsd-update annehmen, dass die
Components-Liste vollständig ist und nicht
versuchen, Änderungen ausserhalb dieser Liste zu tätigen.
Tatsächlich wird freebsd-update versuchen, jede
Datei zu aktualisieren, die zu der Components-Liste
gehört.SicherheitsaktualisierungenSicherheitsaktualisierungen für &os; können wie folgt
heruntergeladen und installiert werden:&prompt.root; freebsd-update fetch
&prompt.root; freebsd-update installWenn während Aktualisierung Korrekturen am Kernel
angewendet werden, muss das System neu gestartet werden, damit
der korrigierte Kernel gebootet wird. Andernfalls sollte das
System aktualisiert sein und freebsd-update
kann als nächtlicher &man.cron.8;-Job laufen, indem folgender
Eintrag in /etc/crontab hinzugefügt
wird:@daily root freebsd-update cronDieser Eintrag besagt, dass
freebsd-update einmal am Tag ausgeführt
wird. Wenn es über ausgeführt wird,
prüft freebsd-update lediglich, ob
Aktualisierungen vorliegen. Wenn Korrekturen existieren,
werden diese automatisch auf die lokale Festplatte
heruntergeladen, aber nicht eingespielt. Der root-Benutzer bekommt eine
Nachricht, damit die Korrekturen überprüft und manuell
installiert werden können.Wenn etwas schief geht, kann
freebsd-update den letzten Satz von
Änderungen mit folgendem Befehl rückgängig machen:&prompt.root; freebsd-update rollbackSobald dieser Vorgang abgeschlossen ist, sollte das System neu
gestartet werden, wenn der Kernel oder ein beliebiges Kernelmodul
geändert wurde. Dies ermöglicht es &os;, die neuen
Binärdateien in den Hauptspeicher zu laden.Das freebsd-update-Werkzeug kann nur den
GENERIC-Kernel automatisch aktualisieren. Wenn
ein angepasster Kernel verwendet wird, muss dieser neu
erstellt und installiert werden, nachdem
freebsd-update den Rest der Aktualisierungen
durchgeführt hat. Allerdings wird
freebsd-update den
GENERIC-Kernel in
/boot/GENERIC erkennen und aktualisieren,
selbst wenn dies nicht der aktuell verwendete Kernel des
Systems ist.Es ist eine gute Idee, immer eine Kopie des
GENERIC-Kernels in /boot/GENERIC aufzubewahren. Das wird
bei der Diagnose von verschiedenen Problemen eine grosse Hilfe sein,
sowie bei der Durchführung von Versionsaktualisierungen mit
freebsd-update, wie in beschrieben ist.Solange die Standardkonfiguration in
/etc/freebsd-update.conf nicht geändert
wurde, wird freebsd-update die aktualisierten
Quellcodedateien des Kernels zusammen mit dem Rest der Neuerungen
installieren. Die erneute Übersetzung und Installation eines
neuen, angepassten Kernels kann dann auf die übliche
Art und Weise durchgeführt werden.Die Aktualisierungen, die über
freebsd-update verteilt werden, betreffen nicht
immer den Kernel. Es ist nicht notwendig, den angepassten
Kernel neu zu erstellen, wenn die Kernelquellen nicht durch die
Ausführung von freebsd-update install
geändert wurden. Allerdings wird
freebsd-update immer
/usr/src/sys/conf/newvers.sh aktualisieren.
Der aktuelle Patch-Level, der mit der
-p-Nummer bei uname -r
ausgegeben wird, wird aus dieser Datei ausgelesen.
Die Neuinstallation des angepassten Kernels, selbst wenn
sich daran nichts geändert hat, erlaubt es &man.uname.1;, den
aktuellen Patch-Level des Systems korrekt wiederzugeben. Dies ist
besonders hilfreich, wenn mehrere Systeme gewartet werden, da es
eine schnelle Einschätzung der installierten Aktualisierungen in
jedem einzelnen System ermöglicht.Aktualisierungen an Haupt- und UnterversionenAktualisierungen einer Unterversion zur nächsten in
&os; ist beispielsweise die Aktualisierung von &os; 9.0
auf &os; 9.1. In der Regel funktionieren die
installierten Anwendungen weiterhin problemlos nach der
Aktualisierung einer Unterversion.Eine Aktualisierung der Hauptversion ist besipielsweise
die Aktualisierung von &os; 8.X auf &os; 9.X.
Dieser Prozess entfernt alte Objekt-Dateien und Bibliotheken,
was dazu führt, dass die meisten Anwendungen von
Drittherstellern nicht mehr funktionieren. Nach der
Aktualisierung auf eine neue Hauptversion wird empfohlen, dass
alle installierten Ports entweder entfernt und neu
installiert werden, oder mit einem Werkzeug wie
ports-mgmt/portmaster aktualisiert werden.
Um die Neuerstellung aller installierten Anwendungen zu
erwzingen, benutzen Sie folgenden Befehl:&prompt.root; portmaster -fDies sorgt dafür, dass alles korrekt neu installiert wird.
Beachten Sie, dass das Setzen der
BATCH-Umgebungsvariable auf yes
während dieses Prozesses auf jede Eingabe mit
ja antwortet, was es nicht mehr notwendig macht,
manuell eingreifen zu müssen.Umgang mit angepassten KernelnWenn ein angepasster Kernel verwendet wird, ist der
Aktualisierungsprozess ein wenig aufwändiger und das
Vorgehen variiert je nach Version von &os;.Angepasste Kernel unter &os; 8.X und
früherEine Kopie des GENERIC-Kernel
wird benötigt und sollte in
/boot/GENERIC abgelegt sein. Wenn
der GENERIC-Kernel nicht im
System vorhanden ist, kann er über eine der folgenden
Methoden bezogen werden:Wenn ein angepasster Kernel erstmalig gebaut
wurde, ist der Kernel in
/boot/kernel.old in Wirklichkeit
der GENERIC-Kernel. Benennen Sie
dieses Verzeichnis in
/boot/GENERIC um.Angenommen, ein direkter Zugriff auf die
Maschine ist möglich, so kann eine Kopie des
GENERIC-Kernels von den
Installationsmedien installiert werden. Benutzen
Sie dazu folgende Befehle:&prompt.root; mount /cdrom
&prompt.root; cd /cdrom/X.Y-RELEASE/kernels
&prompt.root; ./install.sh GENERICErsetzen Sie X.Y-RELEASE
durch die aktuelle Version des verwendeten Releases. Der
GENERIC-Kernel wird standardmäßig
in /boot/GENERIC
installiert.Falls alle obigen Schritte fehlschlagen, kann der
GENERIC-Kernel folgendermaßen
aus den Quellen neu gebaut und installiert
werden:&prompt.root; cd /usr/src
&prompt.root; env DESTDIR=/boot/GENERIC make kernel __MAKE_CONF=/dev/null SRCCONF=/dev/null
&prompt.root; mv /boot/GENERIC/boot/kernel/* /boot/GENERIC
&prompt.root; rm -rf /boot/GENERIC/bootDamit dieser Kernel als
GENERIC-Kernel von
freebsd-update erkannt wird, darf
die GENERIC-Konfigurationsdatei
in keiner Weise geändert worden sein. Es wird
ebenfalls empfohlen, dass dieser ohne irgendwelche
speziellen Optionen erstellt wird.Der Neustart in den
GENERIC-Kernel ist zu diesem
Zeitpunkt nicht notwendig.Angepasste Kernel unter &os; 9.X und
späterWenn ein angepasster Kernel erstmalig gebaut
wurde, ist der Kernel in
/boot/kernel.old in Wirklichkeit
der GENERIC-Kernel. Benennen Sie
einfach dieses Verzeichnis in
/boot/GENERIC um.Angenommen, ein direkter Zugriff auf die Maschine
ist möglich, so kann eine Kopie des
GENERIC-Kernels von den
Installationsmedien installiert werden. Benutzen Sie
dazu folgende Befehle:&prompt.root; mount /cdrom
&prompt.root; cd /cdrom/usr/freebsd-dist
&prompt.root; tar -C/ -xvf kernel.txz boot/kernel/kernelWenn die oben genannten Optionen nicht verwendet
werden können, kann der
GENERIC-Kernel aus den Quellen
neu gebaut und installiert werden:&prompt.root; cd /usr/src
&prompt.root; make kernel __MAKE_CONF=/dev/null SRCCONF=/dev/nullDamit dieser Kernel als
GENERIC-Kernel von
freebsd-update erkannt wird, darf
die GENERIC-Konfigurationsdatei
in keiner Weise geändert worden sein. Es wird
ebenfalls empfohlen, dass dieser ohne irgendwelche
speziellen Optionen erstellt wird.Der Neustart in den
GENERIC-Kernel ist zu diesem
Zeitpunkt nicht notwendig.Die Aktualisierung durchführenAktualisierungen an Haupt- und Unterversionen können
durchgeführt werden, wenn man
freebsd-update eine Release-Version als
Ziel übergibt. Beispielsweise wird das folgende Kommando
das System auf &os; 9.1 aktualisieren:&prompt.root; freebsd-update -r 9.1-RELEASE upgradeNachdem das Kommando empfangen wurde, überprüft
freebsd-update die Konfigurationsdatei
und das aktuelle System, um die nötigen Informationen für
die Systemaktualisierung zu sammeln. Eine Bildschirmausgabe
wird anzeigen, welche Komponenten erkannt und welche nicht
erkannt wurden. Zum Beispiel:Looking up update.FreeBSD.org mirrors... 1 mirrors found.
Fetching metadata signature for 9.0-RELEASE from update1.FreeBSD.org... done.
Fetching metadata index... done.
Inspecting system... done.
The following components of FreeBSD seem to be installed:
kernel/smp src/base src/bin src/contrib src/crypto src/etc src/games
src/gnu src/include src/krb5 src/lib src/libexec src/release src/rescue
src/sbin src/secure src/share src/sys src/tools src/ubin src/usbin
world/base world/info world/lib32 world/manpages
The following components of FreeBSD do not seem to be installed:
kernel/generic world/catpages world/dict world/doc world/games
world/proflibs
Does this look reasonable (y/n)? yAn diesem Punkt wird freebsd-update
versuchen, alle notwendigen Dateien für die Aktualisierung
herunter zu laden. In manchen Fällen wird der Benutzer mit
Fragen konfrontiert, um festzustellen, was installiert
werden soll oder auf welche Art und Weise fortgesetzt
werden soll.Wenn ein angepasster Kernel benutzt wird, produziert der
vorherige Schritt eine Warnung ähnlich zu der
folgenden:WARNING: This system is running a "
MYKERNEL" kernel, which is not a
kernel configuration distributed as part of FreeBSD 9.0-RELEASE.
This kernel will not be updated: you MUST update the kernel manually
before running "/usr/sbin/freebsd-update install"Diese Warnung kann an dieser Stelle problemlos ignoriert
werden. Der aktualisierte
GENERIC-Kernel wird als ein
Zwischenschritt im Aktualisierungsprozess verwendet.Nachdem alle Korrekturen auf das lokale System
heruntergeladen wurden, werden diese eingespielt.
Dieser Prozess kann eine gewisse Zeit in Anspruch nehmen,
abhängig von der Geschwindigkeit und Auslastung der
Maschine. Konfigurationsdateien werden ebenfalls
zusammengefügt. Dieser Teil der Prozedur
verlangt einige Benutzereingaben, da eine Datei
möglicherweise von Hand zusammengefasst werden muss oder ein
Editor erscheint auf dem Bildschirm zum manuellen
bearbeiten. Die Ergebnisse von jeder erfolgreichen
Zusammenfassung werden dem Benutzer angezeigt, während der
Prozess weiter läuft. Eine fehlgeschlagene oder ignorierte
Zusammenfassung wird den Prozess sofort beenden. Benutzer
sollten eine Sicherung von /etc anlegen
und wichtige Dateien später manuell vereinen, beispielsweise
master.passwd oder
group.Das System ist zu diesem Zeitpunkt noch nicht
verändert worden, da alle Korrekturen und Vereinigungen
in einem anderen Verzeichnis vorgenommen wurden. Wenn
alle Korrekturen erfolgreich eingespielt, alle
Konfigurationsdateien zusammengefügt wurden und es den
Anschein hat, dass der Prozess problemlos verlaufen wird,
müssen die Änderungen vom Anwender noch angewendet und auf
die Platte geschrieben werden:&prompt.root; freebsd-update installDer Kernel und die Module werden zuerst aktualisiert.
Zu diesem Zeitpunkt muss die Maschine neu gestartet werden.
Wenn das System einen angepassten Kernel verwendet, benutzen
Sie &man.nextboot.8;, um den Kernel für den nächsten
Neustart auf /boot/GENERIC zu
setzen:&prompt.root; nextboot -k GENERICBevor das System mit dem
GENERIC-Kernel neu gestartet wird,
vergewissern Sie sich, dass für den Neustart alle
benötigten Treiber enthalten sind. Falls auf die
Maschine aus der Ferne zugegriffen wird, stellen Sie
sicher, dass das System ordnungsgemäß an das Netzwerk
angeschlossen ist. Achten Sie besonders darauf, dass wenn
der angepasste Kernel Funktionalität beinhaltet, die
normalerweise von Kernelmodulen zur Verfügung gestellt
werden, dass diese temporär über
/boot/loader.conf in den
GENERIC-Kernel übernommen werden.
Zudem wird empfohlen, nicht benötigte Dienste, eingehängte
Platten und verbundene Netzlaufwerke zu deaktivieren, bis
der Aktualisierungsprozess abgeschlossen ist.Die Maschine sollte nun mit dem aktualisierten Kernel neu
gestartet werden:&prompt.root; shutdown -r nowSobald das System wieder online ist, muss
freebsd-update erneut gestartet werden.
Der Zustand des Prozesses wurde zuvor gesichert und deshalb
wird freebsd-update nicht von vorne
beginnen, jedoch alle alten gemeinsam genutzten
Bibliotheken und Objektdateien löschen.&prompt.root; freebsd-update installAbhängig davon, ob irgendwelche Bibliotheksversionen
erhöht wurden, kann es sein, dass nur zwei
Installationsphasen anstatt drei durchlaufen
werden.Neubau der Ports nach einer Aktualisierung auf eine
HauptversionNach der Aktualisierung auf eine Hauptversion, muss
jegliche Drittanbieter-Software neu erstellt und
installiert werden. Dies ist notwendig, da die
installierte Software möglicherweise Abhängigkeiten zu
Bibliotheken enthält, die während der Aktualisierung
entfernt wurden. Dieser Prozess kann mit einem Werkzeug wie
ports-mgmt/portmaster automatisiert
werden:&prompt.root; portmaster -fSobald dies abgeschlossen ist, beenden Sie den
Aktualisierungsprozess mit einem letzten Aufruf von
freebsd-update. Geben Sie den folgenden
Befehl ein, um alle losen Enden des Aktualisierungsprozesses
miteinander zu verknüpfen:&prompt.root; freebsd-update installWenn der GENERIC-Kernel temporär
Verwendung fand, ist dies der richtige Zeitpunkt, einen neuen,
angepassten Kernel zu bauen und über die übliche
Methode zu installieren.Booten Sie anschließend die Maschine in die neue &os;-Version.
Der Prozess ist damit abgeschlossen.Vergleich des Systemzustandsfreebsd-update kann verwendet werden,
um den Zustand der installierten &os;-Version gegenüber
einer bekannten und funktionierenden Kopie zu vergleichen.
Diese Option vergleicht die aktuelle Version von
Systemwerkzeugen, Bibliotheken und Konfigurationsdateien. Um
diesen Vergleich zu starten, geben Sie den folgenden Befehl
ein:&prompt.root; freebsd-update IDS >> outfile.idsObwohl der Befehlsname IDS lautet,
ist dies kein Ersatz für ein echtes Intrusion Detection
System wie security/snort. Da
freebsd-update seine Daten auf Platte
ablegt, ist die Möglichkeit von Verfälschungen
offensichtlich. Obwohl diese Möglichkeit durch die
Verwendung von kern.securelevel oder die
Ablage von Daten auf einem Nur-Lese Dateisystem eingedämmt
werden kann, besteht eine bessere Lösung darin, das System
gegen ein gesichertes Medium, wie eine
DVD oder einen externen, separat
aufbewahrten USB-Plattenspeicher, zu
vergleichen.Das System wird nun überprüft, und eine lange Liste
von Dateien zusammen mit den &man.sha256.1;-Hashwerten, sowohl
der von der Release-Version bekannte Wert als auch der des
aktuell installierten Systems, in
outfile.ids geschrieben.Die Zeilen in der Ausgabe sind extrem lang, aber das
Ausgabeformat kann einfach verarbeitet werden. Um
beispielsweise eine Liste von allen Dateien zu erhalten, die
sich vom aktuellen Release unterscheiden, geben Sie das
folgende Kommando ein:&prompt.root; cat outfile.ids | awk '{ print $1 }' | more
/etc/master.passwd
/etc/motd
/etc/passwd
/etc/pf.confDiese Beispielausgabe wurde abgeschnitten, da noch viele
weitere Dateien vorhanden sind. Einige Dateien wurden auf
natürliche Art verändert. /etc/passwd
wurde beispielsweise geändert, um Benutzer zum System
hinzuzufügen. Andere Dateien, wie Kernelmodule, unterscheiden
sich, weil freebsd-update diese
aktualisiert hat. Um bestimmte Dateien oder Verzeichnisse
auszuschließen, fügen Sie diese an die
IDSIgnorePaths-Option in
/etc/freebsd-update.conf an.Diese Vorgehensweise kann als Teil einer ausgeklügelten
Aktualisierungsmethode benutzt werden, unabhängig von der zuvor
angesprochenen Variante.Portsnap: Ein Werkzeug zur Aktualisierung der Ports-SammlungTomRhodesGeschrieben von ColinPercivalBasierend auf bereitgestellten Mitschriften von BenedictReuschlingÜbersetzt von Updating and UpgradingPortsnapUpdating and UpgradingDas Basissystem von &os; enthält &man.portsnap.8; zum
Aktualisieren der Ports-Sammlung. Dieses Programm verbindet
sich mit einem entfernten Rechner, überprüft den
Sicherungsschlüssel und lädt eine neue Kopie der Ports-Sammlung
herunter. Der Schlüssel wird verwendet, um die Integrität aller
heruntergeladenen Dateien zu prüfen. Um die aktuellsten Dateien
der Ports-Sammlung herunter zu laden, geben Sie das folgende
Kommando ein:&prompt.root; portsnap fetch
Looking up portsnap.FreeBSD.org mirrors... 9 mirrors found.
Fetching snapshot tag from geodns-1.portsnap.freebsd.org... done.
Fetching snapshot metadata... done.
Updating from Tue May 22 02:12:15 CEST 2012 to Wed May 23 16:28:31 CEST 2012.
Fetching 3 metadata patches.. done.
Applying metadata patches... done.
Fetching 3 metadata files... done.
Fetching 90 patches.....10....20....30....40....50....60....70....80....90. done.
Applying patches... done.
Fetching 133 new ports or files... done.Dieses Beispiel zeigt, dass &man.portsnap.8; mehrere
Korrekturen für die aktuellen Ports-Daten gefunden und
verifiziert hat. Es zeigt auch, dass das Programm zuvor schon
einmal gestartet wurde. Wäre es das erste Mal, würde nur die
Ports-Sammlung heruntergeladen werden.Wenn &man.portsnap.8; die fetch-Operation
erfolgreich abgeschlossen hat, befinden sich die Ports-Sammlung
und die dazugehörigen Korrekturen, welche die Überprüfung
bestanden haben, auf dem lokalen System. Wenn
portsnap das erste Mal ausgeführt wird,
muss portsnap extract aufgerufen werden,
um die Ports-Sammlung zu installieren:&prompt.root; portsnap extract
/usr/ports/.cvsignore
/usr/ports/CHANGES
/usr/ports/COPYRIGHT
/usr/ports/GIDs
/usr/ports/KNOBS
/usr/ports/LEGAL
/usr/ports/MOVED
/usr/ports/Makefile
/usr/ports/Mk/bsd.apache.mk
/usr/ports/Mk/bsd.autotools.mk
/usr/ports/Mk/bsd.cmake.mk
...Um eine bereits installierte Ports-Sammlung zu
aktualisieren, verwenden Sie
portsnap update:&prompt.root; portsnap updateDer Prozess ist jetzt abgeschlossen und Anwendungen können
mittels der aktuellen Ports-Sammlung installiert oder aktualisiert
werden.Die Operationen fetch und
extract oder update können
auch nacheinander ausgeführt werden:&prompt.root; portsnap fetch updateDieser Befehl lädt die aktuelle Version der Ports-Sammlung
herunter und aktualisiert anschließend die lokale Version unter
/usr/ports.Aktualisieren der DokumentationssammlungBenedictReuschlingÜbersetzt von Updating and UpgradingDocumentationUpdating and UpgradingDokumentation ein wichtiger Bestandteil des &os;
Betriebssystems. Obwohl eine aktuelle Version der &os;
Dokumentation jederzeit auf der &os; Webseite
verfügbar ist, verfügen manche Benutzer nur über eine langsame
oder überhaupt keine Netzwerkverbindung. Es gibt mehrere
Möglichkeiten, die lokale Kopie der Dokumentation durch die
aktuelle &os;-Dokumentationssammlung zu aktualisieren.Verwenden von Subversion um
die Dokumentation zu aktualisierenDie Dokumentationsquellen von &os; können mittels
svn aktualisiert werden. Dieser
Abschnitt beschreibt:Die Installation der Dokumentations-Werkzeugsammlung,
welche die Werkzeuge enthält, die nötig sind, um die &os;
Dokumentation aus den Quellen neu zu erstellen.Das Herunterladen einer Kopie der
Dokumentationsquellen nach /usr/doc,
unter Verwendung von
svn.Den Bau der &os; Dokumentation aus den Quellen und
die Installation unter
/usr/share/doc.Manche der Optionen zum Erstellen, die vom System zum
Bauen der Dokumentation unterstützt werden, z.B. die
Optionen welche nur ein paar der unterschiedlichen
Sprachübersetzungen der Dokumentation erstellen oder die
Optionen, die ein bestimmtes Ausgabeformat
auswählen.svn und die Werkzeugsammlung
der Dokumentation installierenDie Erstellung der &os; Dokumentation aus den Quellen
benötigt eine große Anzahl an Werkzeugen, die nicht Teil des
&os; Basissystems sind, da sie eine große Menge
Plattenplatz verbrauchen und nicht von allen &os;-Anwendern
benötigt werden. Sie sind daher nur für diejenigen Benutzer
sinnvoll, die aktiv neue Dokumentation für &os; schreiben
oder häufig die Dokumentation aus den Quellen
aktualisieren.Alle benötigten Werkzeuge, einschließlich
svn sind im Meta-Port
textproc/docproj vorhanden, der
vom &os; Documentation Project entwickelt wurde.Wenn Sie die Dokumentation nicht als &postscript; oder PDF
benötigen, können Sie alternativ die Installation des
textproc/docproj-nojadetex-Ports
in Erwägung ziehen. Diese Version der
Dokumentations-Werkzeugsammlung enthält alles ausser das
teTeX-Textsatzsystem.
teTeX ist eine sehr grosse Sammlung an
Werkzeugen, deshalb ist es vernünftig, deren Installation
auszulassen, wenn die Ausgabe von PDF nicht unbedingt gebraucht
wird.Die Dokumentationsquellen aktualisierenIn diesem Beispiel wird svn
verwendet, um eine saubere Kopie der Dokumentationsquellen
über das HTTPS-Protokoll zu holen:&prompt.root; svn checkout https://svn.freebsd.org/doc/head/doc/head /usr/docBenutzen Sie dazu einen der Spiegel aus Subversion Mirror Sites.Es dauert eine Weile, wenn die Dokumentationsquellen das allererste
Mal heruntergeladen werden. Lassen Sie es laufen, bis es fertig
ist.Zukünftige Aktualisierungen der Dokumentationsquellen
können wie folgt durchgeführt werden:&prompt.root; svn update /usr/docNachdem die Quellen einmal ausgecheckt wurden, wird durch
/usr/doc/Makefile ein alternativer Weg
unterstützt, die Dokumentation zu aktualisieren. Geben Sie
dazu die folgenden Befehle ein:&prompt.root; cd /usr/doc
&prompt.root; make updateEinstellbare Optionen der DokumentationsquellenDas System zum aktualisieren und erstellen der
&os;-Dokumentationssammlung unterstützt ein paar Optionen,
welche den Prozess der Aktualisierung von Teilen der
Dokumentation oder einer bestimmten Übersetzung erleichtert.
Diese Optionen können entweder systemweit in
/etc/make.conf gesetzt, oder als
Kommandozeilenoptionen an &man.make.1; übergeben
werden.Zu den Optionen gehören:DOC_LANGEine Liste von Sprachen und Kodierungen, die gebaut
und installiert werden sollen, z.B.
en_US.ISO8859-1, um nur die englische
Dokumentation zu erhalten.FORMATSEin einzelnes Format oder eine Liste von Ausgabeformaten, das
gebaut werden soll. Momentan werden html,
html-split, txt,
ps, pdf,
und rtf unterstützt.DOCDIRWohin die Dokumentation installiert werden soll. Der
Standardpfad ist /usr/share/doc.Für weitere make-Variablen, die als
systemweite Optionen in &os; unterstützt werden, lesen Sie
&man.make.conf.5;.Für weitere make-Variablen, die vom
System zum Erstellen der &os;-Dokumentation unterstützt
werden, lesen Sie die Fibel für
neue Mitarbeiter
des &os;-Dokumentationsprojekts.Die &os;-Dokumentation aus den Quellen
installierenSobald ein aktueller Schnappschuss der
Dokumentationsquellen nach /usr/doc
heruntergeladen wurde, ist alles bereit für eine
Aktualisierung der bestehenden Dokumentation.Eine komplette Aktualisierung aller Sprachen, definiert in
DOC_LANG, kann durch folgende Eingabe
erreicht werden:&prompt.root; cd /usr/doc
&prompt.root; make install cleanWenn nur eine Aktualisierung einer bestimmten Sprache
gewünscht wird, kann &man.make.1; in einem sprachspezifischen
Unterverzeichnis von /usr/doc
aufgerufen werden:&prompt.root; cd /usr/doc/en_US.ISO8859-1
&prompt.root; make update install cleanDie zu installierenden Ausgabeformate können durch das
Setzen von FORMATS angegeben werden:&prompt.root; cd /usr/doc
&prompt.root; make FORMATS='html html-split' install cleanInformationen zum Bearbeiten und Einreichen von
Korrekturen finden Sie in der Fibel für
neue Mitarbeiter des
&os;-Dokumentationsprojekts.Verwendung von Dokumentations-PortsMarcFonvieilleBasierend auf der Arbeit von Updating and Upgradingdocumentation packageUpdating and UpgradingIm vorherigen Abschnitt wurde eine Methode gezeigt, wie
die &os;-Dokumentation aus den Quellen gebaut werden kann.
Allerdings sind quellbasierte Aktualisierungen möglicherweise
nicht für alle &os;-Systeme geeignet oder praktikabel. Das
Erstellen der Dokumentationsquellen benötigt eine große Anzahl
an Werkzeugen, Programmen und Hilfsmitteln, die
documentation toolchain, einen gewissen
Grad an Vertrautheit mit svn,
ausgecheckte Quellen von einem Repository, sowie ein paar
manuelle Schritte, um diese ausgecheckten Quellen zu bauen.
Dieser Abschnitt beschreibt eine alternative Methode, in der
die Ports-Sammlung verwendet wird und die es
ermöglicht:vorgefertigte Schnappschüsse der Dokumentation
herunterzuladen und zu installieren, ohne vorher die
Werkzeugsammlung der Dokumentation installieren zu
müssen.die Dokumentationsquellen herunterzuladen und durch
das Ports-System erstellen zu lassen, was die Schritte zum
Auschecken und Erstellen etwas erleichtert.Diese beiden Methoden der Aktualisierung der
&os;-Dokumentation werden durch eine Menge von
Dokumentations-Ports unterstützt, die von
&a.doceng; monatlich aktualisiert wird. Diese sind in der
&os; Ports-Sammlung unter der Kategorie docs gelistet
(http://www.freshports.org/docs/).Erstellen und Installieren von Dokumentations-PortsDie Dokumentations-Ports nutzen das Ports-System, um das
Erstellen von Dokumentation wesentlich einfacher zu machen. Es
automatisiert den Prozess des Auscheckens der Dokumentationsquellen,
aufrufen von &man.make.1; mit den passenden Umgebungsvariablen und
Kommandozeilenoptionen und macht die Installation und Deinstallation
von Dokumentation so einfach wie die Installation von jedem anderen
Port oder Paket.Als zusätzliche Eigenschaft zeichnen sie eine
Abhängigkeit zur
Dokumentations-Werkzeugsammlung auf,
wenn die Dokumentations-Ports lokal erstellt werden,
weshalb diese auch automatisch mitinstalliert wird.Die Dokumentations-Ports sind wie folgt organisiert:Der Master-Port,
misc/freebsd-doc-en, der alle
englischen Dokumentations-Ports installiert.Der Alles-in-Einem-Port,
misc/freebsd-doc-all, welcher die
komplette Dokumentation in allen verfügbaren Sprachen
erstellt und installiert.Es gibt noch einen Slave-Port für
jede Übersetzung, beispielsweise
misc/freebsd-doc-hu für Dokumentation
in ungarischer Sprache.Um die englische Dokumentation zu bauen im getrennten
HTML-Format in
/usr/local/share/doc/freebsd zu
installieren, installieren Sie den folgenden Port:&prompt.root; cd /usr/ports/misc/freebsd-doc-en
&prompt.root; make install cleanGebräuchliche Schalter und OptionenEs gibt viele Optionen, die das Standardverhalten der
Dokumentations-Ports verändern. Dazu gehören:WITH_HTMLErstellt das HTML-Format mit einer einzigen
HTML-Datei pro Dokument. Die formatierte
Dokumentation wird als Datei mit dem Namen
article.html, oder
gegebenenfalls book.html,
zuzüglich der Bilder gespeichert.WITH_PDFErstellt das &adobe; Portable Document Format
(PDF). Die formatierte Dokumentation wird als Datei
mit dem Namen article.pdf, oder
gegebenenfalls als book.pdf
gespeichert.DOCBASELegt den Pfad fest, wohin die Dokumentation
installiert werden soll. Die Voreinstellung ist
/usr/local/share/doc/freebsd.Der Standardpfad zum Verzeichnis unterscheidet
sich von dem Verzeichnis, das von
svn verwendet wird.
Das liegt daran, dass Ports üblicherweise in
/usr/local installiert
werden. Dies kann durch die Verwendung von
PREFIX überschrieben
werden.Dieses Beispiel verwendet Variablen, um die ungarische
Dokumentation als PDF zu installieren:&prompt.root; cd /usr/ports/misc/freebsd-doc-hu
&prompt.root; make -DWITH_PDF DOCBASE=share/doc/freebsd/hu install cleanVerwendung von Dokumentations-PaketenDas Erstellen der Dokumentations-Ports aus den Quellen, wie im
vorherigen Abschnitt beschrieben, benötigt die lokale
Installation der Dokumentations-Werkzeugsammlung und ein wenig
Festplattenspeicher für das Bauen der Ports. Sollten die
Ressourcen zum Bauen der Dokumentations-Werkzeugsammlung nicht zur
Verfügung stehen, oder weil das erstellen zuviel Plattenplatz
benötigen würde, ist es trotzdem möglich, bereits
zuvor gebaute Schnappschüsse der Dokumentations-Ports zu
installieren.&a.doceng; erstellt monatliche Schnappschüsse der
Dokumentations-Pakete von &os;. Diese Binärpakete können
mit jedem der mitgelieferten Paketwerkzeuge installiert werden,
beispielsweise &man.pkg.add.1;, &man.pkg.delete.1; und so
weiter.Wenn Binärpakete zu Einsatz kommen, wird die
&os;-Dokumentation in allen verfügbaren
Formaten in der gegebenen Sprache installiert.Zum Beispiel installiert das folgende Kommando das aktuelle,
vorgefertigte Paket der ungarischen Dokumentation:&prompt.root; pkg_add -r hu-freebsd-docPakete verwenden ein Format, welches sich von dem
Namen des dazugehörigen Ports unterscheidet:
lang-freebsd-doc.
lang entspricht hier der
Kurzform des Sprachcodes, z.B. hu für
Ungarisch, oder zh_cn für vereinfachtes
Chinesisch.Dokumentations-Ports aktualisierenDokumentations-Ports können wie jeder andere Port
aktualisiert werden. Beispielsweise aktualisiert das
folgende Kommando die installierte ungarische Dokumentation
mittels ports-mgmt/portmaster unter
Verwendung von Paketen:&prompt.root; portmaster -PP hu-freebsd-docEinem Entwicklungszweig folgen-CURRENT-STABLE&os; besitzt zwei Entwicklungszweige: &os.current; und
&os.stable;. Dieser Abschnitt beschreibt beide Zweige und
erläutert, wie Sie ein System auf dem aktuellen Stand eines
Zweiges halten. Zuerst wird &os.current; vorgestellt, dann
&os.stable;.&os.current;&os.current; ist die Spitze der Entwicklung von &os;.
Benutzer von &os.current; sollten über sehr gute technische
Fähigkeiten verfügen und in der Lage sein, schwierige Probleme
alleine zu lösen. Wenn &os; neu für Sie ist, verwenden Sie
besser &os.stable;.Was ist &os.current;?Snapshot&os.current; besteht aus den neuesten Quellen des
&os;-Systems. Es enthält Sachen, an denen gerade
gearbeitet wird, experimentelle Änderungen und
Übergangsmechanismen, die im nächsten offiziellen
Release der Software enthalten sein können oder nicht.
Obwohl &os.current; täglich von vielen Entwicklern gebaut
wird, gibt es Zeiträume, in denen sich das System nicht
bauen lässt. Diese Probleme werden so schnell wie
möglich behoben, aber ob Sie mit &os.current;
Schiffbruch erleiden oder die gewünschten Verbesserungen
erhalten, kann von dem Zeitpunkt abhängen, an dem
der Quelltext synchronisiert wurde.Wer braucht &os.current;?&os.current; wird hauptsächlich für drei
Interessengruppen zur Verfügung gestellt:Entwickler, die an einem Teil des Quellbaums arbeiten und
daher über die aktuellen Quellen verfügen
müssen.Tester, die bereit sind, Zeit in das Lösen von
Problemen zu investieren und sicherstellen, dass
&os.current; so stabil wie möglich bleibt. Diese Tester
machen Vorschläge zu Änderungen oder der
generellen Entwicklung von &os; und stellen Patches
bereit, um diese Vorschläge zu realisieren.Für Leute, die die Entwicklung im Auge behalten
wollen, oder die Quellen zu Referenzzwecken benutzen
wollen. Auch diese Gruppe macht Vorschläge oder steuert
Quellcode bei.Was &os.current; nicht ist!Der schnellste Weg, neue Funktionen vor dem
offiziellen Release auszuprobieren. Bedenken Sie, dass
neue Funktionen noch nicht im vollen Umfang getestet
wurden und daher höchstwahrscheinlich Fehler
enthalten.Ein schneller Weg, um an Fehlerbehebungen (engl.
bug fixes) zu kommen.
Jede Fehlerbehebung führt mit gleicher
Wahrscheinlichkeit neue Fehler ein, mit der sie alte
behebt.In keiner Weise
offiziell unterstützt.Benutzen von &os.current;Lesen Sie die Mailinglisten &a.current.name; und
&a.svn-src-head.name;. Dies ist
notwendig, um die Kommentare
über den akutellen Status des Systems und wichtige
Mitteilungen zum aktuellen Zustand von &os.current; zu
erfahren.Die &a.svn-src-head.name; Mailingliste erfasst die
Commit-Logs für jede Änderung und enthält alle
relevanten Informationen zu möglichen
Seiteneffekten.Um diese Listen zu abonnieren, besuchen Sie
&a.mailman.lists.link;, klicken Sie auf die gewünschte
Liste und folgen Sie den Anweisungen. Wenn Sie die
Änderungen am gesamten Quellbaum verfolgen möchten,
abonnieren Sie die &a.svn-src-all.name; Liste.Beschaffen Sie sich die Quellen von einem
&os;-Spiegel, mit einer
der folgenden Methoden:Benutzen Sie svn, um
den gewünschten Entwicklungs- oder Release-Zweig
auszuchecken. Dies ist die empfohlene Methode für den
Zugang zur Entwicklung von &os;. Checken Sie den
-CURRENT Quelltext aus dem
head-Zweig von einem der
Subversion Mirror
Sites aus. Aufgrund der Größe des
Repositories ist es empfehlenswert, nur die
gewünschten Teilbäume auszuchecken.Benutzen Sie CTM,
wenn Sie über eine schlechte Internet-Anbindung
verfügen. CTM ist eine
Option, aber es ist nicht so zuverlässig wie
Subversion. Aus diesem
Grund ist Subversion die
empfohlene Methode für jedes System mit
Internet-Anbindung.Wenn Sie die Quellen einsetzen und nicht nur darin
lesen wollen, besorgen Sie sich die
kompletten Quellen von &os.current;
und nicht nur ausgesuchte Teile. Der Grund hierfür ist,
dass die verschiedenen Teile der Quellen voneinander
abhängen. Es ist ziemlich sicher, dass Sie in
Schwierigkeiten geraten, wenn Sie versuchen, nur einen
Teil der Quellen zu übersetzen.Lesen Sie /usr/src/Makefile
sehr aufmerksam, bevor Sie
-CURRENTübersetzen
&os.current; übersetzen.
Wenn Sie &os; das erste Mal aktualisieren, sollten Sie
sowohl einen Kernel als auch
das System neu installieren. Lesen Sie die
Mailingliste &a.current; und
/usr/src/UPDATING, um über
Änderungen im Installationsverfahren, die manchmal vor
der Einführung eines neuen Releases notwendig sind,
informiert zu sein.Seien Sie aktiv! Benutzer von &os.current; werden
aufgefordert ihre Verbesserungsvorschläge oder
Fehlerbehebungen einzureichen. Verbesserungsvorschläge,
die Code enthalten, werden übrigens begeistert
entgegengenommen!&os.stable;Was ist &os.stable;?-STABLE&os.stable; ist der Entwicklungszweig, auf dem Releases
erstellt werden. Dieser Zweig ändert sich langsamer als
&os.current; und alle Änderungen hier sollten zuvor in
&os.current; ausgetestet sein. Beachten Sie, dass dies
immer noch ein Entwicklungszweig ist und
daher zu jedem Zeitpunkt die Quellen von &os.stable; verwendbar
sein können oder nicht. &os.stable; ist Teil des
Entwicklungsprozesses und nicht für Endanwender
gedacht.Wer braucht &os.stable;?Wer daran interessiert ist den &os;-Entwicklungsprozess
zu verfolgen oder dazu beizutragen, insbesondere im Hinblick
auf das nächste Hauptversion, der sollte es in Erwägung
ziehen, &os.stable; zu benutzen.Auch wenn sicherheitsrelevante Fehlerbehebungen in den
&os.stable; Zweig einfließen, müssen Sie deswegen
noch lange nicht &os.stable; verfolgen. Jeder &os;
Sicherheitshinweis beschreibt für jedes betroffene Release,
wie der sicherheitsrelevante Fehler behoben wird.
Eine vollständige Beschreibung der
Sicherheitspolitik für alte &os; Releases entnehmen Sie
http://www.FreeBSD.org/security/.Obwohl wir versuchen sicherzustellen, dass der
&os.stable; Zweig sich jederzeit übersetzen lässt und
lauffähig ist, können wir dafür keine Garantie übernehmen.
Auch wenn Neuentwicklungen in &os.current; stattfinden, ist
es jedoch so, dass mehr Leute &os.stable; anstelle von
&os.current; benutzen und es daher unvermeidlich ist, dass
Fehler und Grenzfälle erst in &os.stable; auffallen.Aus diesen Gründen empfehlen wir Ihnen
nicht blindlings &os.stable; zu
benutzen. Es ist besonders wichtig, dass &os.stable; zuerst
sorgfältig in einer Testumgebung getestet wird, bevor die
Produktion auf &os.stable; migriert.Benutzer, die keine Ressourcen haben, um diese Tests
durchzuführen wird empfohlen, das aktuelle &os;-Release zu
verwenden und den binären Update-Mechanismus zu nutzen, um
auf neue Releases zu migrieren.Benutzen von &os.stable;-STABLEbenutzenLesen Sie Mailingliste &a.stable.name;, damit Sie über
Abhängigkeiten beim Bau von &os.stable; und Sachen, die
besondere Aufmerksamkeit erfordern, informiert sind.
Umstrittene Fehlerbehebungen oder Änderungen werden von
den Entwicklern auf dieser Liste bekannt gegeben. Dies
erlaubt es den Benutzern, Einwände gegen die
vorgeschlagenen Änderungen vorzubringen.Abonnieren Sie die passende
SVN-Liste für den jeweiligen
Branch, den Sie verfolgen. Wenn Sie beispielsweise den Zweig
9-STABLE verfolgen, lesen Sie die &a.svn-src-stable-9.name;.
Diese Liste enthält zu jeder Änderung das Commit-Log,
das Informationen zu möglichen Seiteneffekten
enthält.Um diese Listen zu abonnieren, besuchen Sie die
Seite &a.mailman.lists.link;. Klicken Sie auf die
gewünschte Liste und folgenden Sie den Anweisungen.
Wenn Sie daran interessiert sind, Änderungen am gesamten
Quellbaum zu verfolgen, abonnieren Sie
&a.svn-src-all.name;.Wenn Sie ein neues System installieren und dazu einen
der monatlich aus &os.stable; erzeugten Snapshots verwenden
wollen, sollten Sie zuerst die Snapshot Website auf
aktuelle Informationen überprüfen. Alternativ
können Sie auch das neueste &os.stable;-Release von
den Spiegeln beziehen
und das System nach den folgenden Anweisungen
aktualisieren.Es stehen mehrere Methoden zur Verfügung, um ein
System mit einem älteren Release von einem der
&os;-Spiegel zu
aktualisieren.Benutzen Sie svn, um
den gewünschten Entwicklungs- oder Release-Zweig
auszuchecken. Dies ist die empfohlene Methode für
den Zugang zur Entwicklung von &os;. Die Zweige
umfassen head, für den aktuellen
Entwicklungszweig, sowie weitere Zweige die auf der
Release Engineering Seite
beschrieben sind, wie beispielsweise
stable/9 oder
releng/9.0. Das bevorzugte
URL-Präfix für Subversion
zum Auschecken des Basissystems ist
http://svn.freebsd.org/base/.
Aufgrund der Größe des Repositories ist es
empfehlenswert, nur die gewünschten Teilbäume
auszuchecken.-STABLEmit CTM synchronisierenWenn Sie über keine schnelle Internet-Anbindung
verfügen, sollten Sie die Nutzung von
CTM in Betracht
ziehen.Benutzen Sie Subversion,
wenn Sie schnellen Zugriff auf die Quellen brauchen und
die Bandbreite keine Rolle spielt, andernfalls benutzen
Sie CTM.Lesen Sie /usr/src/Makefile
sehr aufmerksam, bevor Sie &os.stable; übersetzen. Wenn
Sie &os; das erste Mal aktualisieren, sollten Sie sowohl
einen Kernel als auch das
System neu installieren.
Lesen Sie die Mailingliste &a.stable; und
/usr/src/UPDATING, um über
Änderungen im Installationsverfahren, die manchmal vor
der Einführung eines neuen Releases notwendig sind,
informiert zu sein.Synchronisation der QuellenSie können eine Internet-Verbindung (oder E-Mail) dazu
nutzen, Teile von &os;, wie die Quellen zu einzelnen Projekten, oder
das Gesamtsystem, aktuell zu halten. Die primären Dienste dafür
sind Subversion und
CTM.Obwohl es möglich ist, nur Teile des Quellbaums zu
aktualisieren, ist die einzige unterstütze Migrationsprozedur,
den kompletten Quellbaum zu aktualisieren und alles neu zu
übersetzen. Dazu zählen alle Userland-Programme in
/bin und /sbin,
sowie die Kernelquellen. Wird hingegen nur ein Teil der
Quellen, zum Beispiel nur der Kernel oder nur die Programme
aus dem Userland aktualisiert, treten Probleme auf, die von
Übersetzungsfehlern über Kernel-Panics bis hin zu
Beschädigung von Daten reichen können.SubversionSubversion benutzt die
Pull-Methode
Von engl. to pull =
ziehen. Der Client holt sich bei dieser
Methode die Dateien ab., um die Quellen zu aktualisieren. Der Benutzer,
oder ein cron-Skript, ruft das Programm
svn auf, das die Quellen aktualisiert.
Subversion ist die empfohlene
Methode, um die lokalen Quellen zu aktualisieren. Mit beiden
Methoden erhalten Sie aktuelle Updates zu einem genau von Ihnen
bestimmten Zeitpunkt. Es ist einfach, die Prozedur auf
bestimmte Dateien oder Verzeichnisse einschränken. Die Updates
werden zur Laufzeit generiert.CTMCTM vergleicht die Quellen nicht
mit denen auf einem Server. Stattdessen läuft auf
dem Server ein Skript, das Änderungen an Dateien gegenüber
seinem vorigen Lauf bemerkt, die Änderungen komprimiert, mit
einer Sequenznummer versieht und für das Verschicken per E-Mail
kodiert. Dabei werden nur druckbare ASCII-Zeichen verwendet.
Wenn Sie diese CTM-Deltas erhalten haben, können
Sie sie mit &man.ctm.rmail.1; benutzen, welches die Deltas
dekodiert, verifiziert und dann die Änderungen an den Quellen
vornimmt. Dieses Verfahren ist viel effizienter als
Subversion und erzeugt auch weniger
Last auf den Servern, da es die
Push-Methode
Von engl. to push =
schieben. Der Server schickt dem
Client die Dateien. verwendet.Es gibt noch weitere Unterschiede. Wenn ein Benutzer
unabsichtlich Teile des Archivs löschen, wird das von
Subversion erkannt und repariert.
CTM leistet das nicht. Wenn ein
Benutzer Teile des Quellbaums gelöscht hat und keine Sicherung
besitzt, muss er von neuem, das heißt vom letzten
Basis-Delta, starten und die Änderungen wieder
mit CTM nachziehen.Das komplette Basissystem neu bauenBau des BasissystemsSobald der lokalen Quellbaum mit einer bestimmten &os;
Version, z.B. &os.stable; oder &os.current; synchronisiert
wurde, kann dieser dazu benutzt werden das System neu zu
bauen.Erstellen Sie eine Sicherungskopie!Es kann nicht oft genug betont werden, wie wichtig es ist,
das System zu sichern, bevor die
nachfolgenden Schritte ausgeführt werden. Obwohl der Neubau
des Systems eine einfache Aufgabe ist, kann dennoch vorkommen,
dass Fehler im Quellbaum dazu führen, dass das System nicht
mehr bootet.Stellen Sie sicher, dass Sie eine Sicherung erstellt haben
und über ein startfähiges Installationsmedium verfügen.
Wahrscheinlich werden die Medien nicht benötigt, aber
gehen Sie auf Nummer sicher!Abonnieren Sie die richtige MailinglisteMailinglisteDie &os.stable; und &os.current; Zweige befinden sich in
ständiger Entwicklung. Die Leute, die zu
&os; beitragen, sind Menschen und ab und zu machen sie
Fehler.Manchmal sind diese Fehler harmlos und lassen das System
eine Warnung ausgeben. Die Fehler können allerdings auch
katastrophal sein und dazu führen, dass das System nicht mehr
booten kann, oder Dateisysteme beschädigt werden.Wenn Probleme auftauchen, wird ein heads up
an die passende Mailingliste geschickt, welches das Problem
erklärt und die betroffenen Systeme benennt. Eine
all clear Meldung wird versendet, wenn das
Problem gelöst ist.Benutzer, die &os.stable; oder &os.current; benutzen und
nicht die Mailinglisten &a.stable; beziehungsweise &a.current;
lesen, bringen sich nur unnötig in Schwierigkeiten.Verwenden Sie nicht make worldEinige ältere Dokumentationen empfehlen
make world für den Neubau.
Das Kommando überspringt jedoch wichtige Schritte und sollte
nur von Experten verwendet werden. In fast allen Fällen ist
make world falsch. Benutzen Sie
stattdessen die nachstehende Anleitung.Richtig aktualisierenBevor das System aktualisiert wird, lesen Sie
/usr/src/UPDATING, um die für
die Quellcodeversion nötigen Aufgaben zu erledigen, bevor
das System neu gebaut wird. Danach kann das System mit den
folgenden Schritten aktualisiert werden.Bei den hier dargestellten Aktualisierungsschritten wird
davon ausgegangen, dass momentan eine alte &os;-Version
verwendet wird, die aus einem alten Compiler, Kernel, sowie
einem alten Basissystem und veralteten Konfigurationsdateien
besteht. Mit Basissystem sind hier die
zentralen Binärdateien, Bibliotheken und Entwicklerdateien
gemeint. Der Compiler ist Teil des
Basissystems, beinhaltet aber ein paar
Besonderheiten.Es wird außerdem davon ausgegangen, dass bereits die
Quellen für ein neues System bezogen wurden. Falls die
Quellen nicht auf dem aktuellen Stand sind, lesen Sie
, um detaillierte Hilfe über die
Aktualisierung der Quellen zu erhalten.Die Aktualisierung des Systems aus den Quellen ist ein
wenig ausgetüftelter als es zunächst den Anschein hat. Die
Entwickler von &os; haben es über die Jahre für Nötig
befunden, den vorgeschlagenen Ablauf ziemlich stark zu
verändern, da neue Arten von unvermeidlichen Abhängigkeiten
mit der Zeit ans Licht kamen. Der übrige Teil dieses
Abschnitts beschreibt die Überlegungen hinter der aktuell
empfohlenen Aktualisierungsreihenfolge.Jede erfolgreiche Aktualisierung muss sich mit den folgenden
Sachverhalten auseinandersetzen:Der alte Compiler ist aufgrund von Fehlern
möglicherweise nicht in der Lage, den neuen Kernel zu
übersetzen. Deshalb sollte der neue Kernel mit dem neuen
Compiler übersetzt werden, was bedeutet, dass der neue
Compiler vor dem neuen Kernel gebaut werden muss. Das
bedeutet nicht unbedingt, dass der neue Compiler auch
installiert werden muss, bevor
der neue Kernel gebaut wird.Das neue Basissystem benötigt eventuell neue
Eigenschaften des Kernels. Also muss der neue Kernel installiert
sein, bevor das neue Basissystem installiert wird.Diese ersten beiden Sachverhalte sind die Grundlage für die
zentrale Sequenz von buildworld,
buildkernel,
installkernel und
installworld, die in den folgenden
Abschnitten beschrieben wird. Weitere Gründe für diese
Vorgehensweise sind hier aufgeführt:Das alte Basissystem wird möglicherweise nicht korrekt
mit dem neuen Kernel funktionieren, weshalb das neue
Basissystem sofort nach der Installation des neuen Kernels
installiert werden muss.Manche Änderungen an der Konfiguration müssen
erledigt worden sein, bevor das neue Basissystem installiert wird,
jedoch können andere die Funktionalität des alten
Basissystems beeinträchtigen. Aus diesem Grund sind zwei
verschiedene Schritte notwendig, um eine Aktualisierung der
Konfiguration durchzuführen.Der Aktualisierungsprozess ersetzt zum Grossteil Dateien oder
fügt neue hinzu, bestehende Dateien werden nicht
gelöscht. In wenigen Ausnahmefällen kann dies Probleme
verursachen. Aus diesem Grund wird der Aktualisierungsprozess
manchmal bestimmte Dateien zum manuellen Löschen vorschlagen.
Dies wird eventuell in der Zukunft automatisch
durchgeführt.Diese Bedenken haben zu der folgenden Reihenfolge geführt.
Beachten Sie, dass der genaue Ablauf für bestimmte
Aktualisierungen zusätzliche Schritte nach sich zieht, jedoch
sollte der Kernprozess davon nicht beeinträchtigt werden:make
buildworldDieser Schritt übersetzt zuerst den neuen Compiler und
ein paar damit zusammenhängende Werkzeuge und verwendet dann
den neuen Compiler, um den Rest des Basissystems zu erstellen.
Das Ergebnis landet dann in /usr/obj.make
buildkernelDieser Ansatz nutzt den neuen
Compiler, der in /usr/obj abgelegt
ist, um vor falschen Compiler-Kernel-Kombinationen zu
schützen.make
installkernelPlatziert den neuen Kernel und Kernelmodule auf der Platte,
was es erlaubt, mit dem frisch aktualisierten Kernel zu
starten.Starten Sie das System neu in den Single-User-Modus.Der Single-User-Modus minimiert Probleme mit der
Aktualisierung von Programmen, die bereits gestartet sind. Ebenso
minimiert es Probleme, die mit der Verwendung des alten
Basissystems und des neuen Kernels zu tun haben
könnten.mergemaster -pDieser Schritt aktualisiert ein paar initiale
Konfigurationsdateien als Vorbereitung für das neue
Basissystem. Beispielsweise fügt es neue Benutzergruppen
zum System oder neue Benutzernamen in die Passwortdatenbank hinzu.
Dies wird oftmals benötigt, wenn neue Gruppen oder bestimmte
Systembenutzerkonten seit der letzten Aktualisierung hinzu gekommen
sind, so dass der installworld-Schritt
in der Lage ist, auf dem neu installierten System die Benutzer
oder Systemgruppennamen ohne Probleme zu verwenden.make
installworldKopiert das Basissystem aus
/usr/obj. Der neue Kernel und das
neue Basissystem sind jetzt auf der Platte
installiert.mergemasterAktualisiert die verbleibenden Konfigurationsdateien,
da nun das neue Basissystem auf der Platte ist.Starten Sie das System neu.Ein kompletter Systemneustart ist notwendig, um den neuen
Kernel und das neue Basissystem mit den neuen
Konfigurationsdateien zu laden.Beachten Sie, dass wenn Sie von einem Release des gleichen
&os;-Zweigs auf ein aktuelleres Release des gleichen Zweigs, z.B.
von 9.0 auf 9.1, aktualisieren, dann ist diese Vorgehensweise nicht
unbedingt notwendig, da Sie nur sehr unwahrscheinlich in
ungünstige Kombinationen zwischen Compiler, Kernel, Basissystem
und den Konfigurationsdateien geraten werden. Die ältere
Vorgehensweise von make
world, gefolgt von der Erstellung
und Installation des neuen Kernels funktioniert möglicherweise
gut genug, um kleinere Aktualisierungen vorzunehmen.Wenn Sie allerdings zwischen Hauptversionen aktualisieren wollen
und befolgen diese Schritte nicht, sollten Sie sich auf Probleme
gefasst machen.Es ist auch wichtig zu wissen, dass viele Aktualisierungen
spezielle und zusätzliche Schritte benötigen, wie
beispielsweise das umbenennen oder löschen von bestimmten
Dateien vor installworld. Lesen Sie
/usr/src/UPDATING gründlich, besonders am
Ende, wo die aktuell vorgeschlagene Aktualisierungssequenz
explizit aufgelistet ist.Diese Prozedur hat sich mit der Zeit weiterentwickelt, da die
Entwickler es für unmöglich erachtet haben, bestimmte
Arten von Kombinationsproblemen vollständig auszuschliessen.
Hoffentlich wird die aktuelle Aktualisierungsprozedur für lange
Zeit stabil bleiben.Als Zusammenfassung ist hier nochmal die aktuell vorgeschlagene
Vorgehensweise für die Aktualisierung von &os; aus den Quellen
aufgelistet:&prompt.root; cd /usr/src
&prompt.root; make buildworld
&prompt.root; make buildkernel
&prompt.root; make installkernel
&prompt.root; shutdown -r nowEs gibt einige, sehr seltene Situationen, in denen Sie
mergemaster -p zusätzlich
ausführen müssen, bevor Sie das System mit
buildworld bauen. Diese Situationen
werden in UPDATING beschrieben. Solche
Situationen treten aber in der Regel nur dann auf, wenn das
&os;-System um eine oder mehrere Hauptversionen aktualisiert
wird.Nachdem installkernel erfolgreich
abgeschlossen wurde, starten Sie das System durch die Eingabe
von boot -s am Loaderprompt im
Single-User-Modus. Danach führen Sie die folgenden Kommandos
aus:&prompt.root; mount -u /
&prompt.root; mount -a -t ufs
&prompt.root; adjkerntz -i
&prompt.root; mergemaster -p
&prompt.root; cd /usr/src
&prompt.root; make installworld
&prompt.root; mergemaster
&prompt.root; rebootLesen Sie bitte weiterDie folgenden Abschnitte beschreiben detailliert
die einzelnen Schritte, insbesondere wenn eine angepasste
Kernelkonfiguration verwendet wird.Lesen Sie /usr/src/UPDATINGLesen Sie vor der Aktualisierung
/usr/src/UPDATING. Die Datei enthält
wichtige Informationen zu potentiellen Problemen, und gibt die
Reihenfolge vor, in der bestimmte Kommandos gestartet werden
müssen. Die Anweisungen in UPDATING sind
aktueller als die in diesem Handbuch. Im Zweifelsfall folgen
Sie bitte den Anweisungen aus
UPDATING.Das Lesen von UPDATING ersetzt nicht das
Abonnieren der richtigen Mailingliste. Die beiden Voraussetzungen
ergänzen sich, es reicht nicht aus, nur eine zu
erfüllen.Überprüfen Sie
/etc/make.confmake.confDie verfügbaren &man.make.1;-Optionen werden in
&man.make.conf.5; und
/usr/share/examples/etc/make.conf
dargestellt. Diese Einstellungen können in
/etc/make.conf hinzugefügt werden, um das
Verhalten von &man.make.1; beim Übersetzen von Programmen zu
beeinflussen. Änderungen an einigen Einstellungen können
weitreichende und unerwartete Auswirkungen nach sich ziehen.
Lesen Sie die Kommentare in diesen beiden Ressourcen und
beachten Sie, dass die Standardwerte aus einer Kombination von
Leistung und Sicherheit gewählt wurden.Die in /etc/make.conf gesetzten
Optionen wirken sich bei jedem Aufruf von &man.make.1; aus,
einschließlich der Übersetzung von Programmen aus der
Ports-Sammlung, vom Benutzer geschriebene C-Programme oder
beim Bau des &os;-Betriebssystems./etc/src.conf überprüfen/etc/src.conf/etc/src.conf kontrolliert den Bau
des Betriebssystems aus dem Quellcode. Im Gegensatz zu
/etc/make.conf greifen die Optionen in
/etc/src.conf nur dann, wenn das
&os; Betriebssystem selbst gebaut wird. Die vielen Optionen
für diese Datei werden in &man.src.conf.5; beschrieben.
Seien Sie vorsichtig mit dem Entfernen von scheinbar nicht
mehr benötigten Kernelmodulen und Optionen. Manchmal gibt es
unerwartete oder subtile Wechselwirkungen.Aktualisieren Sie die Dateien in
/etc/etc enthält den Großteil der
Konfigurationsdateien des Systems und Skripten, die beim Start
des Systems ausgeführt werden. Einige dieser Skripten ändern
sich bei einer Migration auf eine neue &os;-Version.Einige der Konfigurationsdateien, wie beispielsweise
/etc/group, werden für den Normalbetrieb
des Systems gebraucht.Es gab Fälle, in denen die Installationsroutine von
make installworld auf bestimmte
Accounts oder Gruppen angewiesen war. Bei einer
Aktualisierung ist es jedoch wahrscheinlich, dass diese
Accounts oder Gruppen noch nicht existieren. In einigen
Fällen prüft make buildworld ob die
Accounts oder Gruppen vorhanden sind.Um dieses Problem zu umgehen, rufen Sie
&man.mergemaster.8; im prä-buildworld-Modus auf, der mit
aktiviert wird. In diesem Modus werden
nur Dateien verglichen, die für den Erfolg von
buildworld oder
installworld essentiell
sind.Um im System nach Dateien zu suchen die der Gruppe
gehören, die umbenannt oder gelöscht werden soll:&prompt.root; find / -group GID -printDieses Kommando zeigt alle Dateien an, die der Gruppe
GID gehören. Dies kann entweder
ein Gruppenname oder eine numerische ID sein.Wechseln Sie in den Single-User-ModusSingle-User-ModusSie können das System im Single-User-Modus übersetzen.
Bei der Installation des Systems werden viele wichtige
Dateien, wie die Standard-Systemprogramme, die Bibliotheken
und Include-Dateien, verändert. Sie bringen sich in
Schwierigkeiten, wenn Sie diese Dateien auf einem laufenden
System verändern, besonders dann, wenn zu dieser Zeit Benutzer
auf dem System aktiv sind.MehrbenutzermodusBei dieser Methode übersetzen Sie das System im
Mehrbenutzermodus und wechseln anschließend für die
Installation in den Single-User-Modus. Wenn Sie diese Methode
benutzen wollen, warten Sie mit den folgenden Schritten, bis
der Bau des Systems abgeschlossen ist. Wechseln Sie dann in
den Single-User-Modus, um
installkernel oder
installworld auszuführen.Mit dem folgenden Kommando kann ein laufendes System in
den Single-User-Modus gebracht werden:&prompt.root; shutdown nowAlternativ können Sie das System mit der Option
single user in den Single-User-Modus booten.
Geben Sie dann die folgenden Befehle am Single-User-Modus
Shell-Prompt ein:&prompt.root; fsck -p
&prompt.root; mount -u /
&prompt.root; mount -a -t ufs
&prompt.root; swapon -aDie Kommandos überprüfen die Dateisysteme,
hängen / wieder beschreibbar ein,
hängen dann alle anderen UFS Dateisysteme aus
/etc/fstab ein und aktivieren den
Swap-Bereich.Zeigt die CMOS-Uhr die lokale Zeit und nicht GMT an
(dies erkennen Sie daran, dass &man.date.1; die falsche
Zeit und eine falsche Zeitzone anzeigt), setzen Sie das
folgende Kommando ab:&prompt.root; adjkerntz -iDies stellt sicher, dass die Zeitzone richtig
eingestellt ist.Entfernen Sie /usr/objDie neu gebauten Teile des Systems werden in der Voreinstellung
unter /usr/obj gespeichert. Die Verzeichnisse
dort spiegeln die Struktur unter
/usr/src.Um den make buildworld Prozess zu
beschleunigen und Ärger aufgrund von Abhängigkeiten zu
vermeiden, können Sie dieses Verzeichnis entfernen.Einige Dateien unter /usr/obj haben
vielleicht die -Option gesetzt, die
zuvor mit &man.chflags.1; entfernt werden muss:&prompt.root; cd /usr/obj
&prompt.root; chflags -R noschg *
&prompt.root; rm -rf *Übersetzen der Quellen des BasissystemsSichern der AusgabenEs ist ratsam, die Ausgaben von &man.make.1; in einer
Datei zu sichern. Wenn etwas schief geht, kann eine Kopie
der Fehlermeldung zu einer der &os;-Mailinglisten gesendet
werden.Dazu können Sie einfach das Kommando &man.script.1;
benutzen, dem Sie beim Aufruf als Parameter den Dateinamen
für die Ausgaben mitgeben. Setzen Sie das Kommando
unmittelbar vor dem Neubau ab und geben Sie
exit ein, wenn der Bau abgeschlossen
ist:&prompt.root; script /var/tmp/mw.out
Script started, output file is /var/tmp/mw.out
&prompt.root; make TARGET… Ausgaben des Kommandos …
&prompt.root; exit
Script done, …Sichern Sie die Ausgaben nicht in
/tmp, da dieses Verzeichnis beim
nächsten Reboot aufgeräumt werden kann. Ein geeigneteres
Verzeichnis ist /var/tmp, oder das
Heimatverzeichnis von root.Übersetzen des BasissystemsWechseln Sie in das Verzeichnis, in dem die Quellen liegen
(in der Voreinstellung ist das
/usr/src):&prompt.root; cd /usr/srcmakeBenutzen Sie &man.make.1;, um das Basissystem neu zu
bauen. Dieses Kommando liest Anweisungen aus einem
Makefile, wechles beschreibt, wie die
Programme, aus denen &os; besteht, zu bauen sind und in
welcher Reihenfolge diese zu bauen sind.Ein typischer Aufruf von make sieht wie
folgt aus:&prompt.root; make -x -DVARIABLEtargetIn diesem Beispiel ist
eine Option,
die an &man.make.1; weitergegeben wird. Eine Liste gültiger
Optionen finden Sie in &man.make.1;.Das Verhalten eines Makefiles wird von
Variablen bestimmt. Mit
setzen Sie
eine Variable. Diese Variablen sind dieselben, die auch in
/etc/make.conf gesetzt werden, dies ist nur
ein alternativer Weg, Variablen zu setzen.Um zu verhindern, dass die profiled
Bibliotheken gebaut werden, rufen Sie make wie
folgt auf:&prompt.root; make -DNO_PROFILE targetDieser Aufruf entspricht dem folgenden Eintrag in
/etc/make.conf:NO_PROFILE= true # Avoid compiling profiled librariesJedes Makefile definiert einige
Ziele, die festlegen, was genau zu tun ist. Mit
target wählen Sie eins dieser
Ziele aus.Einige Ziele im Makefile werden
verwendet, um den Bauprozess in eine Reihe von
Einzelschritten zu unterteilen.Im Regelfall müssen &man.make.1; keine Parameter
mitgegeben werden, so dass die Kommandozeile wie folgt
aussehen wird:&prompt.root; make targettarget steht dabei für
die verschiedenen Ziele. Das erste Ziel sollte immer
buildworld sein.Mit buildworld wird ein
kompletter Baum unterhalb von /usr/obj
gebaut, der mit installworld auf
dem System installiert werden kann.Über separate Optionen zu verfügen, ist aus mehreren
Gründen nützlich. Erstens können Sie das System gefahrlos
auf einem laufenden System bauen, da die Bauprozedur vom
Rest des Systems isoliert ist. Das System lässt sich im
Mehrbenutzermodus ohne negative Seiteneffekte bauen. Die
Installation mit installworld
sollte aber immer noch im Single-User-Modus erfolgen.Zweitens kann NFS benutzt werden, um mehrere Maschinen
in einem Netzwerk zu aktualisieren. Um die Maschinen
A, B und
C zu aktualisieren, lassen Sie
make buildworld und
make installworld auf
A laufen. Auf den Maschinen
B und C
können Sie die Verzeichnisse /usr/src
und /usr/obj von
A einhängen und brauchen dort nur
noch make installworld auszuführen, um
die Bauresultate zu installieren.Obwohl das Ziel world noch
existiert, sollte es wirklich nicht mehr benutzt
werden.Benutzen Sie stattdessen:&prompt.root; make buildworldMit können Sie
make anweisen, mehrere Prozesse zu
starten. Besonders effektiv ist das auf
Mehrprozessor-Systemen. Da aber der Übersetzungsprozess
hauptsächlich von I/O statt der CPU bestimmt wird, ist diese
Option auch auf Einprozessor-Systemen nützlich.Auf einem typischen Einprozessor-System können Sie den
folgenden Befehl eingeben:&prompt.root; make -j4 buildworld&man.make.1; wird dann bis zu vier Prozesse gleichzeitig
laufen lassen. Erfahrungsberichte aus den Mailinglisten zeigen,
dass dieser Aufruf typischerweise den besten
Geschwindigkeitsgewinn bringt.Wenn Sie ein Mehrprozessor-System besitzen und SMP im
Kernel konfiguriert ist, probieren Sie Werte zwischen 6 und
10 aus.LaufzeitenBau des BasissystemsLaufzeitenDie Laufzeit eines Baus wird von vielen Faktoren
beeinflusst, ein aktuelles System benötigt aber etwa
zwei Stunden um &os.stable; zu bauen. Der Bau von
&os.current; dauert etwas länger.Übersetzen und Installation des KernelsKernelÜbersetzenKompilieren Sie einen neuen Kernel, um den vollen Nutzen
aus dem System zu ziehen. Praktisch gesehen ist das sogar
notwendig, da sich einige Datenstrukturen geändert haben und
Programme wie &man.ps.1; und &man.top.1; nur mit einem Kernel
zusammen arbeiten, der auch zu dem entsprechenden Quellcode
passt.Am einfachsten und sichersten bauen Sie dazu den
GENERIC Kernel. Obwohl der
GENERIC Kernel vielleicht nicht alle
Geräte unterstützt, sollte er alles enthalten, um das System
in den Single-User-Modus zu booten. Dies ist auch ein guter
Test, um zu sehen, dass das System ordnungsgemäß funktioniert.
Nachdem das System mit GENERIC gebootet
wurde und sichergestellt ist, dass das System funktioniert,
kann ein neuer Kernel basierend auf einer angepassten
Konfigurationsdatei erstellt werden.In &os; müssen Sie das
Basissystem neu bauen,
bevor Sie einen neuen Kernel erstellen.Verwenden Sie
KERNCONF=MYKERNEL,
um einen Kernel mit einer vorhandenen, angepassten
Konfigurationsdatei zu erstellen:&prompt.root; cd /usr/src
&prompt.root; make buildkernel KERNCONF=MYKERNEL
&prompt.root; make installkernel KERNCONF=MYKERNELWenn kern.securelevel einen Wert
größer als 1 besitzt
und der Kernel mit
noschg oder ähnlichen Optionen geschützt
ist, müssen Sie installkernel im
Single-User-Modus ausführen. Andernfalls laufen diese beiden
Kommandos problemlos im Mehrbenutzermodus. Weitere
Informationen über kern.securelevel finden
Sie in &man.init.8;. Optionen, die auf Dateien gesetzt werden
können, werden in &man.chflags.1; detailliert
erläutert.Booten Sie in den Single-User-ModusSingle-User-ModusBooten Sie in den Single-User-Modus, um zu prüfen ob der
neue Kernel funktioniert. Folgen Sie dazu den Anweisungen aus
.Installation des SystemsNun kann das neue System mit
installworld installiert
werden:&prompt.root; cd /usr/src
&prompt.root; make installworldWenn mit make buildworld Variablen
verwendet werden, müssen dieselben Variablen auch bei
make installworld angegeben werden. Auf
die anderen Optionen trifft das nur bedingt zu:
darf mit
installworld nicht benutzt
werden.Haben Sie zum Bauen die folgende Kommandozeile
verwendet:&prompt.root; make -DNO_PROFILE buildworlddann installieren Sie das Ergebnis mit:&prompt.root; make -DNO_PROFILE installworldAndernfalls würde das System bei der Installation
versuchen, die profiled Bibliotheken, die
aber gar nicht gebaut wurden, zu installieren.Aktualisieren der von make installworld
ausgelassenen DateienNeue oder geänderte Konfigurationsdateien aus einigen
Verzeichnissen, besonders /etc,
/var und /usr werden
bei der Installationsprozedur nicht berücksichtigt.Diese Dateien können einfach mit &man.mergemaster.8;
aktualisiert werden. Sichern Sie
/etc für den Fall, dass während der
Aktualisierung etwas schief geht.mergemasterTomRhodesBeigetragen von mergemaster&man.mergemaster.8; ist ein Bourne-Shell Skript, das
dabei behilflich ist die Unterschiede zwischen den
Konfigurationsdateien in /etc und denen
im Quellbaum unter /usr/src/etc zu
finden. mergemaster ist der empfohlene
Weg, die Systemkonfiguration mit dem Quellbaum
abzugleichen.Um zu beginnen, rufen Sie mergemaster
auf. Ausgehend von / wird
mergemaster einen virtuellen Root-Baum
aufbauen und darin die neuen Konfigurationsdateien ablegen.
Diese Dateien werden dann mit den auf dem System
installierten Dateien verglichen. Unterschiede zwischen den
Dateien werden im &man.diff.1;-Format dargestellt. Neue
oder geänderte Zeilen werden mit
gekennzeichnet. Zeilen die gelöscht oder ersetzt werden,
sind mit gekennzeichnet. Das
Anzeigeformat wird in &man.diff.1; genauer erklärt.&man.mergemaster.8; zeigt Ihnen jede geänderte Datei an
und Sie haben die Wahl, die neue Datei (in
mergemaster wird sie temporäre Datei
genannt) zu löschen, sie unverändert zu installieren,
den Inhalt der neuen Datei mit dem Inhalt der alten Datei
abzugleichen, oder die &man.diff.1; Ausgabe noch einmal zu
sehen.Wenn Sie die temporäre Datei löschen, geht
mergemaster davon aus, dass Sie die
aktuelle Datei unverändert behalten möchten. Wählen Sie die
Option nur dann, wenn Sie keinen Grund sehen, die aktuelle
Datei zu ändern.Wenn Sie die temporäre Datei installieren, wird Ihre
aktuelle Datei mit der neuen Datei überschrieben. Sie
sollten alle unveränderten Konfigurationsdateien auf diese
Weise aktualisieren.Wenn Sie sich entschließen den Inhalt beider Dateien
abzugleichen, wird ein Texteditor aufgerufen, in dem Sie
beide Dateien nebeneinander betrachten können. Mit der
Taste l übernehmen Sie die aktuelle Zeile
der links dargestellten Datei, mit der Taste
r übernehmen Sie die Zeile der rechts
dargestellten Datei. Das Ergebnis ist eine Datei, die aus
Teilen der beiden ursprünglichen Dateien besteht und
installiert werden kann. Dieses Verfahren wird gewöhnlich
bei veränderten Dateien genutzt.Haben Sie sich entschieden die Differenzen noch einmal
anzuzeigen, zeigt &man.mergemaster.8; dieselbe Ausgabe, die
bereits vor der Eingabeaufforderung ausgegeben wurde.Wenn &man.mergemaster.8; alle Systemdateien abgearbeitet
hat, werden weitere Optionen abgefragt. Sie werden unter
Umständen gefragt, ob die Passwort-Datei neu gebaut werden
soll. Am Ende haben Sie die Möglichkeit, die restlichen
temporären Dateien zu löschen.Manueller Abgleich der KonfigurationsdateienWenn Sie den Abgleich lieber selbst ausführen wollen,
beachten Sie bitte, dass Sie nicht einfach die Dateien aus
/usr/src/etc nach /etc
kopieren können. Einige dieser Dateien müssen zuerst
installiert werden, bevor sie benutzt werden
können. Das liegt daran, dass
/usr/src/etc keine exakte Kopie von
/etc ist. Zudem gibt es Dateien, die sich
in /etc befinden aber nicht in
/usr/src/etc.Wenn Sie, wie empfohlen, mergemaster
benutzen, können Sie direkt in den nächsten
Abschnitt
wechseln.Am einfachsten ist es, wenn Sie die neuen Dateien in ein
temporäres Verzeichnis installieren und sie nacheinander auf
Differenzen zu den bestehenden Dateien durchsehen.Sichern Sie die Inhalte von /etcEs wird empfohlen, zuerst das bestehende
/etc an einen sicheren Ort zu
kopieren:&prompt.root; cp -Rp /etc /etc.oldMit wird rekursiv kopiert und
erhält die Attribute der kopierten
Dateien, wie Zugriffszeiten und Eigentümer.Erstellen Sie ein temporäres Verzeichnis für
die Installation der neuen Dateien in
/etc.&prompt.root; mkdir /var/tmp/root
&prompt.root; cd /usr/src/etc
&prompt.root; make DESTDIR=/var/tmp/root distrib-dirs distributionDie obigen Kommandos bauen die nötige
Verzeichnisstruktur auf und installieren die neuen Dateien in
diese Struktur. Unterhalb von /var/tmp/root
wurden einige leere Verzeichnisse angelegt, die Sie am besten wie
folgt entfernen:&prompt.root; cd /var/tmp/root
&prompt.root; find -d . -type d | xargs rmdir 2>/dev/nullDadurch werden alle leeren Verzeichnisse entfernt. Um
die Warnungen über nicht leere Verzeichnisse zu
unterdrücken, wurde die Standardfehlerausgabe nach
/dev/null umgeleitet./var/tmp/root enthält nun alle
Dateien, die unterhalb von /
installiert werden sollten. Sie müssen nun jede dieser
Dateien mit den schon existierenden Dateien des Systems
vergleichen.Einige der installierten Dateien unter
/var/tmp/root beginnen mit einem
.. Verwenden Sie ls -a um
sicherzustellen, dass Sie alle derartigen Dateien
finden.Benutzen Sie &man.diff.1;, um zwei Dateien zu
vergleichen:&prompt.root; diff /etc/shells /var/tmp/root/etc/shellsDieses Kommando zeigt die Unterschiede zwischen der
installierten Version von /etc/shells
und der neuen Version in
/var/tmp/root/etc/shells. Entscheiden
Sie anhand der Unterschiede, ob Sie beide Dateien
abgleichen, oder die alte Version durch die neue Version
ersetzen wollen.Versehen Sie das temporäre Verzeichnis
/var/tmp/root mit einem
ZeitstempelWenn das System oft neu gebaut wird, muss auch
/etc genauso oft aktualisiert werden.
Dies kann mit der Zeit ein bisschen mühsam werden.Um diesen Prozess zu beschleunigen, behalten Sie
eine Kopie der Dateien, die zuletzt nach
/etc installiert wurden.Folgen Sie der normalen Prozedur um das System zu
bauen. Wenn Sie /etc und die anderen
Verzeichnisse aktualisieren wollen, geben Sie dem
temporären Verzeichnis einen Namen, der das aktuelle
Datum enthält.&prompt.root; mkdir /var/tmp/root-20130214
&prompt.root; cd /usr/src/etc
&prompt.root; make DESTDIR=/var/tmp/root-20130214 \
distrib-dirs distributionGleichen Sie die Änderungen entsprechend der
Anleitung von oben ab. Wenn Sie fertig sind,
entfernen Sie das Verzeichnis
/var/tmp/root-20130214nicht.Nachdem die neuen Quellen heruntergeladen und
gebaut haben, folgen Sie Schritt 1. Erstellen Sie
ein neues Verzeichnis mit einem aktuellen Datum.
Dieses Beispiel verwendet
/var/tmp/root-20130221.Vergleichen Sie die Unterschiede, die sich in
einer Woche ergeben haben, indem Sie &man.diff.1;
rekursiv anwenden:&prompt.root; cd /var/tmp
&prompt.root; diff -r root-20130214 root-20130221Üblicherweise sind diese Differenzen kleiner, als
die Differenzen zwischen
/var/tmp/root-20130221/etc und
/etc. Da die angezeigten Differenzen
kleiner sind, ist es jetzt einfacher den Abgleich der
Dateien in /etc
durchzuführen.Wenn Sie fertig sind, können Sie das ältere der
beiden /var/tmp/root-*
Verzeichnisse entfernen:&prompt.root; rm -rf /var/tmp/root-20130214Wiederholen Sie diesen Prozess jedes Mal wenn Sie
Dateien in /etc abgleichen
müssen.Benutzen Sie &man.date.1;, um die Verzeichnisnamen
automatisch zu erzeugen:&prompt.root; mkdir /var/tmp/root-`date "+%Y%m%d"`Das System neu startenNachdem Sie sich davon überzeugt haben, dass alle Dateien
an der richtigen Stelle sind, starten Sie das System mit
&man.shutdown.8; neu:&prompt.root; shutdown -r nowHerzlichen Glückwunsch! Sie haben gerade erfolgreich ein
&os; System aktualisiert.Es ist leicht einen Teil des Systems wiederherzustellen,
für den Fall, dass Ihnen ein kleiner Fehler unterlaufen ist.
Wenn beispielsweise während des Updates oder Abgleichs
/etc/magic aus Versehen gelöscht wurde,
wird &man.file.1; nicht mehr funktionieren. In diesem Fall
kann das Problem mit dem folgenden Kommando behoben
werden:&prompt.root; cd /usr/src/usr.bin/file
&prompt.root; make all installFragenMuss ich wirklich immer alles neu bauen, wenn sich
etwas geändert hat?Darauf gibt es keine einfache Antwort. Was zu tun ist,
hängt von den Änderungen ab. Es lohnt
wahrscheinlich nicht, alles neu zu bauen, wenn sich bei einem
svn-Lauf nur die folgenden
Dateien geändert haben:src/games/cribbage/instr.csrc/games/sail/pl_main.csrc/release/sysinstall/config.csrc/release/sysinstall/media.csrc/share/mk/bsd.port.mkIn diesem Fall können Sie in die entsprechenden
Unterverzeichnisse wechseln und dort make all
install ausführen. Wenn sich allerdings etwas
Wichtiges, wie src/lib/libc/stdlib,
geändert hat, sollten Sie die Welt oder
mindestens die statisch gelinkten Teile des Systems
neu bauen.Letztendlich ist das Ihre Entscheidung. Sie sind
vielleicht damit zufrieden, das System alle zwei Wochen neu
zu bauen und in der Zwischenzeit die anfallenden
Änderungen zu sammeln. Wenn Sie sich zutrauen, alle
Abhängigkeiten zu erkennen, bauen Sie vielleicht auch
nur die geänderten Sachen neu.Das hängt auch noch davon ab, wie oft
Sie ein Update durchführen wollen und ob Sie &os.stable;
oder &os.current; benutzen.Der Bau bricht mit vielen
Signal 11-Fehlern (oder anderen
Signalnummern) ab. Was ist da passiert?Signal 11Normalerweise zeigen diese Meldungen Hardwarefehler
an. Ein Neubau der Welt ist ein guter Belastungstest
für die Hardware und zeigt oft Probleme mit dem Speicher
auf. Dies äußert sich darin, dass der Compiler mit
seltsamen Signalen abbricht.Es liegt garantiert ein Hardwarefehler vor, wenn
make neu gestartet wird und an einer
anderen Stelle abbricht.In diesem Fall können nur einzelne Komponenten des
Systems getauscht werden, um zu bestimmen, welche
Komponente den Fehler verursacht.Kann /usr/obj entfernt werden,
wenn ich fertig bin?Kurze Antwort: Ja.In /usr/obj werden alle Dateien
abgelegt, die während der Übersetzungsphase erstellt
wurden. Dieses Verzeichnis wird in einem der ersten
Schritte von make buildworld
entfernt. Es macht daher wenig Sinn, dieses Verzeichnis
zu behalten. Zudem wird ungefähr 2 GB
Plattenspeicher freigegeben, wenn dieses Verzeichnis
gelöscht wird.Erfahrene Benutzer können
make buildworld anweisen, diesen
Schritt zu überspringen. Nachfolgende Bauprozeduren
werden dadurch erheblich schneller, da die meisten
Quelldateien nicht mehr neu übersetzt werden müssen.
Dafür können aber subtile Abhängigkeitsprobleme
entstehen, die dazu führen, dass der Bau auf
merkwürdige Weise abbrechen kann. Dies führt häufig zu
unnötigen Diskussionen auf den &os; Mailinglisten, wenn
sich jemand über einen kaputten Bau beschwert, aber
nicht sieht, dass er Probleme hat, weil er eine
Abkürzung genommen hat.Kann ein abgebrochener Bau weitergeführt
werden?Das hängt davon ab, wieweit der Bauprozess
fortgeschritten ist.Üblicherweise werden durch
make buildworld essentielle
Werkzeuge, wie &man.gcc.1; und &man.make.1;,
und die Systembibliotheken neu erstellt. Die neu
erstellten Werkzeuge und Bibliotheken werden dann
benutzt, um sich selbst noch einmal zu bauen, und wieder
installiert. Anschließend wird das Gesamtsystem,
einschließlich der normalen Benutzerprogramme wie
&man.ls.1; und &man.grep.1;, mit den neu erstellten
Systemdateien gebaut.Während der letzten Phase können Sie relativ
gefahrlos folgende Kommandos ausführen:… Fehler beheben …
&prompt.root; cd /usr/src
&prompt.root; make -DNO_CLEAN allDiese Variablen verhindern,
dass make buildworld die vorher erstellten
Dateien löscht.Das Sie sich im letzten Schritt der Bauprozedur
befinden, erkennen Sie daran, dass Sie in der Ausgabe
von make buildworld die folgenden
Zeilen finden:--------------------------------------------------------------
Building everything..
--------------------------------------------------------------Wenn diese Meldung nicht angezeigt wird, oder Sie
sich nicht sicher sind, dann ist es besser, noch einmal
ganz von Vorne anzufangen.Wie kann ich den Bauprozess beschleunigen?Bauen Sie im Single-User-Modus.Legen Sie /usr/src und
/usr/obj in getrennte Dateisysteme auf
unterschiedliche Festplatten. Benutzen Sie nach
Möglichkeit auch getrennte Platten-Controller.Alternativ können diese Dateisysteme mit
&man.ccd.4; auf mehrere Festplatten verteilt
werden.Deaktivieren Sie den Bau der
profiled-Bibliotheken, indem Sie
NO_PROFILE=true in
/etc/make.conf
aufnehmen.Benutzen Sie make zusammen
mit ,
um mehrere Prozesse parallel laufen zu lassen.
Normalerweise beschleunigt dies den Bauprozess
auf Einprozessor- und Mehrprozessorsystemen.Das Dateisystem /usr/src
kann mit der Option
eingehangen werden. Dies verhindert, dass die
Zugriffszeiten der Dateien aktualisiert
werden.&prompt.root; mount -u -o noatime /usr/srcDas Beispiel geht davon aus, dass sich
/usr/src auf einem separaten
Dateisystem befindet. Wenn es Teil des
/usr Dateisystems ist,
muss dieses Dateisystem als Mountpoint angegeben
werden.Das Dateisystem, in dem sich
/usr/obj befindet, kann mit
eingehangen werden, so dass
Schreibzugriffe auf die Platte asynchron
stattfinden. Das heißt ein Schreibzugriff ist
sofort beendet, die Daten werden allerdings erst
einige Sekunden später geschrieben. Dadurch können
Schreibzugriffe zusammengefasst werden, was einen
erheblichen Geschwindigkeitszuwachs mit sich bringen
kann.Beachten Sie, dass dies das Dateisystem
anfälliger für Fehler macht. Im Fall eines
Stromausfalls besteht eine erhöhte
Wahrscheinlichkeit, dass das Dateisystem beim
Start der Maschine zerstört ist.Wenn /usr/obj das einzige
Verzeichnis auf auf diesem Dateisystem ist, stellt
das kein Problem dar. Wenn sich allerdings auf
diesem Dateisystem noch andere wertvolle Daten
befinden, stellen Sie sicher, dass Sie über
aktuelle Sicherungen verfügen.&prompt.root; mount -u -o async /usr/objErsetzen Sie /usr/obj durch
den Mountpoint des entsprechenden Dateisystems, wenn es
sich nicht auf einem eigenen Dateisystem
befindet.Was mache ich, wenn etwas nicht funktioniert?Stellen Sie sicher, dass sich in Ihrer Umgebung
keine Reste eines vorherigen Baus befinden:&prompt.root; chflags -R noschg /usr/obj/usr
&prompt.root; rm -rf /usr/obj/usr
&prompt.root; cd /usr/src
&prompt.root; make cleandir
&prompt.root; make cleandirJa, make cleandir muss wirklich
zweimal aufgerufen werden.Danach starten Sie den Bauprozess wieder mit
make buildworld.Wenn Sie immer noch Probleme haben, schicken Sie die
Fehlermeldungen und die Ausgabe von uname
-a an die Mailingliste &a.de.questions;. Bereiten
Sie sich darauf vor, weitere Fragen zu Ihrer Umgebung zu
beantworten.Veraltete Dateien, Verzeichnisse und Bibliotheken
löschenAntonShterenlikhtBasiert auf Notizen von Veraltete Dateien, Verzeichnisse und Bibliotheken
löschenAufgrund der ständigen Weiterentwicklung von &os; kann es
dazu kommen, dass Dateien und deren Inhalte obsolet werden, weil
deren Funktionalität entweder in anderen Dateien implementiert
wurde, sich die Versionsnummer der Bibliothek geändert hat
oder deren Funktion nicht mehr benötigt wird. Dies kann
sowohl Dateien und Verzeichnisse, aber auch Bibliotheken
betreffen. Diese veralteten Dateien sollten daher entfernt
werden, wenn das System aktualisiert wird. Der Vorteil besteht
darin, dass das System von nicht mehr benötigten Dateien
befreit wird. Falls die obsolete Bibliothek Sicherheits- oder
Stabilitätsprobleme aufweist, sollte das System ebenfalls
aktualisiert werden, um das System sicher zu halten und/oder
durch die fehlerhafte Bibliothek verursachte Systemabstürze zu
vermeiden. Veraltete Dateien, Verzeichnisse und Bibliotheken
sind in der Datei
/usr/src/ObsoleteFiles.inc aufgelistet.
Verwenden Sie die folgenden Anweisungen, um diese Dateien
während der Systemaktualisierung zu entfernen.Folgen Sie den Anweisungen von
. Nachdem Sie
make installworld
sowie mergemaster erfolgreich ausgeführt
haben, überprüfen Sie das System auf veraltete Dateien und
Bibliotheken:&prompt.root; cd /usr/src
&prompt.root; make check-oldWerden dabei veraltete Dateien gefunden, können diese
mit dem folgenden Kommando entfernt werden:&prompt.root; make delete-oldWeitere interessante
targets finden Sie in
/usr/src/Makefile.Bei jeder Datei wird nachgefragt, ob Sie diese wirklich
löschen wollen. Es ist aber auch möglich, alle
Dateien automatisch löschen zu lassen. Dies erreichen Sie,
indem Sie die Umgebungsvariable
BATCH_DELETE_OLD_FILES setzen:&prompt.root; make -DBATCH_DELETE_OLD_FILES delete-oldAlternativ können Sie auch yes
einsetzen und somit die Antwort yes
an die einzelnen Abfragen weiterreichen:&prompt.root; yes | make delete-oldWarnungDas Löschen veralteter Dateien kann dazu führen,
dass Programme, die auf diese Dateien angewiesen sind, nicht mehr
funktionieren. Dies gilt insbesondere für veraltete
Bibliotheken. In den meisten Fällen ist es dann notwendig,
Programme, Ports und Bibliotheken, welche die veraltete
Bibliothek verwenden, neu zu bauen, bevor Sie den Befehl
make
delete-old-libs
ausführen.Die Ports-Sammlung enthält Werkzeuge, die Ihnen beim
Prüfen von Bibliothek-Abhängigkeiten helfen können:
sysutils/libchk
sowie sysutils/bsdadminscripts.Veraltete Bibliotheken können zu Konflikten mit neueren
Bibliotheken führen und beispielsweise folgende
Meldungen verursachen:/usr/bin/ld: warning: libz.so.4, needed by /usr/local/lib/libtiff.so, may conflict with libz.so.5
/usr/bin/ld: warning: librpcsvc.so.4, needed by /usr/local/lib/libXext.so, may conflict with librpcsvc.so.5Um diese Probleme zu lösen, müssen Sie zuerst
herausfinden, welcher Port die Bibliothek installiert hat:&prompt.root; pkg_info -W /usr/local/lib/libtiff.so
/usr/local/lib/libtiff.so was installed by package tiff-3.9.4
&prompt.root; pkg_info -W /usr/local/lib/libXext.so
/usr/local/lib/libXext.so was installed by package libXext-1.1.1,1Danach deinstallieren Sie den Port und bauen ihn neu, um ihn
danach erneut zu installieren. Dieser Vorgang kann durch den
Einsatz von ports-mgmt/portmaster automatisiert
werden. Nachdem alle Ports neu gebaut wurden und keine alten
alten Bibliotheken mehr verwenden werden, können Sie die alten
Bibliotheken endgültig entfernen:&prompt.root; make delete-old-libsInstallation mehrerer MaschinenMikeMeyerBeigetragen von Wenn Sie mehrere Maschinen alle auf dem gleichen Stand
halten wollen, ist es eine Verschwendung von
Ressourcen, die Quellen auf jeder Maschine vorzuhalten und zu
übersetzen. Die Lösung dazu ist, eine Maschine den
Großteil der Arbeit durchführen zu lassen und den anderen
Maschinen das Ergebnis mit NFS zur Verfügung zu stellen. Dieser
Abschnitt zeigt Ihnen wie das geht.VoraussetzungenStellen Sie zuerst eine Liste der Maschinen zusammen, die auf
demselben Stand sein sollen. Wir nennen diese Maschinen die
Baugruppe. Jede dieser Maschinen kann mit
einem eigenen Kernel laufen, doch sind die Programme des Userlands
auf allen Maschinen gleich. Wählen Sie aus der Baugruppe eine
Maschine aus, auf der der Bau durchgeführt wird, den
Bau-Master. Dies sollte eine Maschine sein,
die über die nötigen Ressourcen für
make buildworld und
make installworld verfügt.
Sie brauchen auch eine
Testmaschine, auf der Sie die Updates testen,
bevor Sie sie in Produktion installieren. Dies sollte eine
Maschine, eventuell der Bau-Master, sein, die über einen
längeren Zeitraum nicht zur Verfügung stehen kann.Alle Maschinen der Baugruppe müssen
/usr/obj und /usr/src von
derselben Maschine an gleichem Ort einhängen. Idealerweise
befinden sich die beiden Verzeichnisse auf dem Bau-Master auf
verschiedenen Festplatten, sie können allerdings auch auf dem
Bau-Master über NFS zur Verfügung gestellt werden. Wenn
Sie mehrere Baugruppen haben, sollte sich
/usr/src auf einem Bau-Master befinden und
über NFS für den Rest der Maschinen zur Verfügung
gestellt werden.Stellen Sie sicher, dass
/etc/make.conf und
/etc/src.conf auf allen Maschinen einer
Baugruppe mit der Datei des Bau-Masters übereinstimmt. Der
Bau-Master muss jeden Teil des Systems bauen, den irgendeine
Maschine der Baugruppe benötigt. Auf dem Bau-Master
müssen in /etc/make.conf alle zu bauenden
Kernel mit der Variablen KERNCONF bekannt gegeben
werden. Geben Sie dabei den Kernel des Bau-Masters zuerst an.
Für jeden zu bauenden Kernel muss auf dem Bau-Master die
entsprechende Konfigurationsdatei unter
/usr/src/sys/arch/conf
abgelegt werden.Installation des BasissystemsBauen Sie auf dem Bau-Master, wie in beschrieben, den Kernel und die
Welt, installieren Sie aber nichts. Wechseln Sie auf die
Testmaschine und installieren Sie den gerade gebauten Kernel.
Wenn diese Maschine /usr/src und
/usr/obj über NFS bekommt, müssen Sie das
Netzwerk im Single-User-Modus aktivieren und die beiden
Dateisysteme einhängen. Am einfachsten ist dies, wenn Sie
auf der Testmaschine vom Mehrbenutzermodus mit
shutdown now in den Single-User-Modus
wechseln. Sie können dann mit der normalen Prozedur den neuen
Kernel und das System installieren und anschließend
mergemaster laufen lassen. Wenn Sie damit
fertig sind, können Sie die Maschine wieder in den
Mehrbenutzermodus booten.Nachdem Sie sichergestellt haben, dass die Testmaschine
einwandfrei funktioniert, wiederholen Sie diese Prozedur für
jede Maschine in der Baugruppe.Die Ports-SammlungDasselbe Verfahren können Sie auch für die
Ports-Sammlung anwenden. Zuerst müssen alle Maschinen einer
Baugruppe /usr/ports von derselben Maschine
über NFS zur Verfügung gestellt bekommen. Setzen Sie
dann ein Verzeichnis für die Quellen auf, das sich alle
Maschinen teilen. Dieses Verzeichnis können Sie in
/etc/make.conf mit der Variablen
DISTDIR angeben. Das Verzeichnis sollte
für den Benutzer beschreibbar sein, auf den der Benutzer
root vom NFS Subsystem abgebildet wird. Jede
Maschine sollte noch WRKDIRPREFIX auf ein
lokales Bauverzeichnis setzen. Wenn Sie vorhaben, Pakete zu bauen
und zu verteilen, sollten Sie PACKAGES auf ein
Verzeichnis mit den gleichen Eigenschaften wie
DISTDIR setzen.
Index: head/de_DE.ISO8859-1/books/handbook/disks/chapter.xml
===================================================================
--- head/de_DE.ISO8859-1/books/handbook/disks/chapter.xml (revision 48791)
+++ head/de_DE.ISO8859-1/books/handbook/disks/chapter.xml (revision 48792)
@@ -1,3695 +1,3694 @@
SpeichermedienBerndWarkenÜbersetzt von MartinHeinenÜbersichtDieses Kapitel behandelt die Benutzung von Laufwerken unter
&os;. Hierzu zählen SCSI- und
IDE-Geräte, CD- und
DVD-Medien, speicherbasierte Laufwerke und
USB-Geräte.Nachdem Sie dieses Kapitel gelesen haben, werden Sie Folgendes
wissen:Wie Sie zusätzliche Laufwerke zu einem &os;-System
hinzufügen.Wie Sie unter &os; die Partition einer Festplatte
vergrößern.Wie Sie &os; zur Verwendung von
USB-Speichermedien konfigurieren.Wie Sie CD- und
DVD-Medien unter &os; benutzen.Wie Sie die unter &os; erhältlichen Backup-Programme
benutzen.Wie Sie RAM-Disks einrichten.Was Dateisystem-Schnappschüsse sind und wie sie
effizient eingesetzt werden.Wie Sie mit Quotas die Benutzung von Laufwerken
einschränken können.Wie Sie Festplatten und Swap verschlüsseln, um Daten
vor Angreifern zu schützen.Wie Sie ein hochverfügbares Speichernetzwerk
konfigurieren.Bevor Sie dieses Kapitel lesen,sollten Sie wissen, wie Sie einen
neuen &os;-Kernel konfigurieren
und installieren können.Hinzufügen von LaufwerkenDavidO'BrianIm Original von LaufwerkehinzufügenDieser Abschnitt beschreibt, wie Sie ein neues
SATA-Laufwerk zu einer Maschine
hinzufügen, die momentan nur ein Laufwerk hat. Dazu schalten
Sie zuerst den Rechner aus und installieren das Laufwerk
entsprechend der Anleitungen Ihres Rechners, Ihres Controllers
und des Laufwerkherstellers. Starten Sie das System neu und
melden Sie sich als Benutzer
root an.Kontrollieren Sie /var/run/dmesg.boot,
um sicherzustellen, dass das neue Laufwerk gefunden wurde. In
diesem Beispiel erscheint das neu hinzugefügte
SATA-Laufwerk als
ada1.PartitionengpartIn diesem Beispiel wird eine einzige große Partition auf der
Festplatte erstellt. Verwendet wird das GPT-Partionsschema,
welches gegenüber dem älteren und weniger vielseitigen
MBR-Schema bevorzug wird.Wenn die hinzugefügte Festplatte nicht leer ist, können
alte Partitionsinformationen mit
gpart delete entfernt werden. Details
finden Sie in &man.gpart.8;.Zuerst wird das Partitionsschema erstellt und dann eine
einzelne Partition angefügt:&prompt.root; gpart create -s GPT ada1
&prompt.root; gpart add -t freebsd-ufs ada1Je nach Anwendung kann es wünschenswert sein, mehrere
kleinere Partitionen zu haben. In &man.gpart.8; finden Sie
Optionen zum Erstellen von kleineren Partitionen.Ein Dateisystem wird auf der neuen, leeren Festplatte
erstellt:&prompt.root; newfs -U /dev/ada1p1Ein leeres Verzeichnis wird als Mountpunkt erstellt, also
ein Speicherort für die Montage der neuen Festplatte im
originalen Dateisystem:&prompt.root; mkdir /newdiskAbschließend wird ein Eintrag in
/etc/fstab hinzugefügt, damit die neue
Festplatte automatisch beim Start eingehängt wird:/dev/ada1p1 /newdisk ufs rw 2 2Die neue Festplatte kann manuell montiert werden, ohne das
System neu zu starten:&prompt.root; mount /newdiskPartitionen vergrößernAllanJudeBeigetragen von BjörnHeidottingÜbersetzt von PartitionenvergrößernDie Kapazität einer Festplatte kann sich ohne Änderungen
an bereits vorhandenen Daten erhöhen. Dies geschieht
üblicherweise mit virtuellen Maschinen, wenn sich herausstellt,
dass die virtuelle Festplatte zu klein ist und vergrößert werden
soll. Zuweilen wird auch ein Abbild einer Platte auf einen
USB-Stick geschrieben, ohne dabei die volle
Kapazität zu nutzen. Dieser Abschnitt beschreibt, wie man
Platten vergrößert, bzw. erweitert, um die
Vorteile der erhöhten Kapazität zu nutzen.Überprüfen Sie /var/run/dmesg.boot, um
den Gerätenamen der Festplatte zu bestimmen, die vergrößert
werden soll. In diesem Beispiel gibt es nur eine
SATA-Festplatte im System, so dass die Platte
als ada0 angezeigt wird.PartitionengpartUm die aktuelle Konfiguration der Partitionen auf der
Festplatte anzuzeigen:&prompt.root; gpart show ada0
=> 34 83886013 ada0 GPT (48G) [CORRUPT]
34 128 1 freebsd-boot (64k)
162 79691648 2 freebsd-ufs (38G)
79691810 4194236 3 freebsd-swap (2G)
83886046 1 - free - (512B)Wenn die Festplatte mit dem
GPT-Partitionsschema formatiert
wurde kann es vorkommen, dass sie als
corrupted angezeigt wird, weil sich die
Sicherung der GPT-Partitionstabellen nicht
mehr am Ende des Laufwerks befinden. Reparieren Sie in so
einem Fall die Partitionstabelle mit
gpart:&prompt.root; gpart recover ada0
ada0 recoveredNun steht der zusätzliche Speicherplatz zur Verfügung und
kann verwendet werden, um eine neue Partition anzulegen oder
eine bestehende Partition zu erweitern:&prompt.root; gpart show ada0
=> 34 102399933 ada0 GPT (48G)
34 128 1 freebsd-boot (64k)
162 79691648 2 freebsd-ufs (38G)
79691810 4194236 3 freebsd-swap (2G)
83886046 18513921 - free - (8.8G)Partitionen können nur auf zusammenhängenden, freien
Speicherplatz vergrößert werden. In diesem Beispiel wird die
letzte Partition der Platte als Swap-Speicher genutzt, aber die
zweite Partition ist die, dessen Größe verändert werden soll.
Weil der Swap-Speicher nur temporäre Daten enthält, kann er
gefahrlos ausgehangen, gelöscht und nachdem die Partition
vergrößert wurde, neu erstellt werden.&prompt.root; swapoff /dev/ada0p3
&prompt.root; gpart delete -i 3ada0
ada0p3 deleted
&prompt.root; gpart show ada0
=> 34 102399933 ada0 GPT (48G)
34 128 1 freebsd-boot (64k)
162 79691648 2 freebsd-ufs (38G)
79691810 22708157 - free - (10G)Es besteht die Gefahr von Datenverlust, wenn die
Partitionstabelle eines eingehangenen Dateisystems verändert
wird. Es empfiehlt sich daher, die folgenden Schritte auf
einem ausgehangenen Dateisystem durchzuführen, während die
Umsetzung über eine Live-CD-ROM oder
von einem USB-Gerät erfolgt. Wenn es
jedoch absolut notwendig ist, kann ein eingehangenes
Dateisystem auch vergrößert werden, nachdem die
Sicherheitsfunktionen von GEOM deaktiviert wurden:&prompt.root; sysctl kern.geom.debugflags=16Vergrößern Sie die Partition und lassen Sie Platz, um die
Swap-Partition in der gewünschten Größe neu erstellen zu können.
Dies ändert nur die Größe der Partition. Das Dateisystem
innerhalb der Partition wird in einem separaten Schritt
erweitert.&prompt.root; gpart resize -i 2 -a 4k -s 47Gada0
ada0p2 resized
&prompt.root; gpart show ada0
=> 34 102399933 ada0 GPT (48G)
34 128 1 freebsd-boot (64k)
162 98566144 2 freebsd-ufs (47G)
98566306 3833661 - free - (1.8G)Erstellen Sie die Swap-Partition neu:&prompt.root; gpart add -t freebsd-swap -a 4k ada0
ada0p3 added
&prompt.root; gpart show ada0
=> 34 102399933 ada0 GPT (48G)
34 128 1 freebsd-boot (64k)
162 98566144 2 freebsd-ufs (47G)
98566306 3833661 3 freebsd-swap (1.8G)
&prompt.root; swapon /dev/ada0p3Erweitern Sie das UFS-Dateisystem, um die
Kapazität der vergrößerten Partition zu nutzen:Ab &os; 10.0-RELEASE ist es möglich, ein eingehangenes
Dateisystem zu erweitern. Bei älteren Versionen muss das
Dateisystem zuvor ausgehangen werden.&prompt.root; growfs /dev/ada0p2
Device is mounted read-write; resizing will result in temporary write suspension for /.
It's strongly recommended to make a backup before growing the file system.
OK to grow file system on /dev/ada0p2, mounted on /, from 38GB to 47GB? [Yes/No] Yes
super-block backups (for fsck -b #) at:
80781312, 82063552, 83345792, 84628032, 85910272, 87192512, 88474752,
89756992, 91039232, 92321472, 93603712, 94885952, 96168192, 97450432Sowohl die Partition als auch das Dateisystem wurden jetzt
vergrößert, um den neu zur Verfügung stehenden Speicherplatz zu
nutzen.USB SpeichermedienMarcFonvieilleBeigetragen von USBSpeichermedienDer Universal Serial Bus (USB) wird
von vielen externen Speichern benutzt: Festplatten,
USB-Thumbdrives sowie von
CD- und DVD-Brennern.
&os; bietet Unterstützung für Geräte mit USB
1.x, 2.0 und 3.0.Die Unterstützung fürUSB 3.0 ist mit
einiger Hardware, einschließlich Haswell (Lynx Point)
Chipsätzen, nicht kompatibel. Wenn &os; beim Booten mit dem
Fehler failed with error 19 abbricht,
müssen Sie xHCI/USB3 im BIOS
deaktivieren.Unterstützung für USB-Massenspeicher ist
im GENERIC-Kernel enthalten. Für einen
angepassten Kernel müssen die nachstehenden Zeilen in der
Kernelkonfigurationsdatei enthalten sein:device scbus>>>>>>># SCSI bus (required for ATA/SCSI)
device da>>>>>>># Direct Access (disks)
device pass>>>>># Passthrough device (direct ATA/SCSI access)
device uhci>>>>># provides USB 1.x support
device ohci>>>>># provides USB 1.x support
device ehci>>>>># provides USB 2.0 support
device xhci>>>>># provides USB 3.0 support
device usb>>>>>># USB Bus (required)
device umass>>>># Disks/Mass storage - Requires scbus and da
device cd>>>>>>># needed for CD and DVD burners&os; benutzt den &man.umass.4;-Treiber, der das
SCSI-Subsystem verwendet um auf
USB-Geräte zuzugreifen. Da alle
USB-Geräte vom System als
SCSI-Geräte erkannt werden, dürfen Sie
nicht
in die Kernelkonfigurationsdatei aufnehmen, wenn es sich bei
dem Gerät um einen CD- oder
DVD-Brenner handelt.Der übrige Abschnitt beschreibt, wie Sie überprüfen können
ob ein USB-Gerät von &os; erkannt wird und
wie Sie das Gerät so konfigurieren, dass es verwendet werden
kann.Konfiguration von GerätenUm die USB-Konfiguration zu testen,
schließen Sie das USB-Gerät an. Verwenden
Sie dmesg um zu überprüfen, ob das Gerät in
den Systemmeldungen erscheint. Dies sollte in etwa so
aussehen:umass0: <STECH Simple Drive, class 0/0, rev 2.00/1.04, addr 3> on usbus0
umass0: SCSI over Bulk-Only; quirks = 0x0100
umass0:4:0:-1: Attached to scbus4
da0 at umass-sim0 bus 0 scbus4 target 0 lun 0
da0: <STECH Simple Drive 1.04> Fixed Direct Access SCSI-4 device
da0: Serial Number WD-WXE508CAN263
da0: 40.000MB/s transfers
da0: 152627MB (312581808 512 byte sectors: 255H 63S/T 19457C)
da0: quirks=0x2<NO_6_BYTE>Fabrikat, Gerätedatei (da0),
Geschwindigkeit und Kapazität werden je nach Gerät
unterschiedlich sein.Da ein USB-Gerät als
SCSI-Gerät erkannt wird, kann
camcontrol benutzt werden, um die mit dem
System verbundenen USB-Massenspeicher
anzuzeigen:&prompt.root; camcontrol devlist
<STECH Simple Drive 1.04> at scbus4 target 0 lun 0 (pass3,da0)Alternativ kann usbconfig benutzt
werden, um die Geräte aufzulisten. Weitere Informationen zu
diesem Kommando finden Sie in &man.usbconfig.8;.&prompt.root; usbconfig
ugen0.3: <Simple Drive STECH> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (2mA)Wenn das Gerät noch nicht formatiert ist, finden Sie in
Informationen, wie Sie
USB-Laufwerke formatieren und Partitionen
einrichten. Wenn das Laufwerk bereits ein Dateisystem
enthält, kann es von root nach den Anweisungen in
eingehängt werden.Aus Sicherheitsgründen sollten Sie Benutzern, denen Sie
nicht vertrauen, das Einhängen (z.B. durch die unten
beschriebene Aktivierung von vfs.usermount)
beliebiger Medien verbieten. Die meisten Dateisysteme
wurden nicht entwickelt, um sich vor böswilligen Geräten
zu schützen.Um auch normalen Anwendern das Einhängen des Laufwerks zu
gestatten, könnten Sie beispielsweise mit &man.pw.8; alle
potentiellen Benutzer dieser Gerätedateien in die Gruppe
operator aufnehmen.
Außerdem muss sichergestellt werden, dass operator
Schreib- und Lesezugriff auf diese Gerätedateien haben.
Hierfür werden die folgenden Zeilen in
/etc/devfs.rules hinzugefügt:[localrules=5]
add path 'da*' mode 0660 group operatorVerfügt das System über interne
SCSI-Laufwerke, so verändern Sie die
zweite Zeile wie folgt:add path 'da[3-9]*' mode 0660 group operatorDies wird die ersten drei
SCSI-Laufwerke (da0
bis da2) davon ausschließen, in die
Gruppe operator
aufgenommen zu werden. Ersetzen Sie 3
durch die Anzahl der SCSI-Laufwerke.
Weitere Informationen zu dieser Datei finden Sie in
&man.devfs.rules.5;.Aktivieren Sie nun die Regeln
in /etc/rc.conf:devfs_system_ruleset="localrules"Als nächstes müssen Sie das System anweisen, auch
normalen Benutzern das mounten von Dateisystemen zu erlauben,
indem Sie die folgende Zeile in
/etc/sysctl.conf hinzufügen:vfs.usermount=1Da diese Einstellung erst nach einem Neustart wirksam
wird, können Sie diese Variable mit sysctl
auch direkt setzen:&prompt.root; sysctl vfs.usermount=1
vfs.usermount: 0 -> 1Zuletzt müssen Sie noch ein Verzeichnis anlegen, in
das das USB-Laufwerk eingehängt werden
soll. Dieses Verzeichnis muss dem Benutzer gehören, der das
USB-Laufwerk in den Verzeichnisbaum
einhängen will. Dazu legen Sie als root ein
Unterverzeichnis
- /mnt/username
+ /mnt/username
an, wobei Sie username
durch den Login des jeweiligen Benutzers sowie
usergroup durch die primäre
Gruppe des Benutzers ersetzen:&prompt.root; mkdir /mnt/username
&prompt.root; chown username:usergroup /mnt/usernameWenn Sie nun beispielsweise einen
USB-Stick
anschließen, wird automatisch die Gerätedatei
/dev/da0s1 erzeugt. Ist das Gerät mit
einem FAT-Dateisystem formatiert, kann es
der Benutzer mit dem folgenden Befehl in den Verzeichnisbaum
einhängen:&prompt.user; mount -t msdosfs -o -m=644,-M=755 /dev/da0s1 /mnt/usernameBevor das Gerät entfernt werden kann,
muss es abgehängt werden:&prompt.root; umount /mnt/usernameNach Entfernen des Geräts stehen in den Systemmeldungen
Einträge, ähnlich der folgenden:umass0: at uhub3, port 2, addr 3 (disconnected)
da0 at umass-sim0 bus 0 scbus4 target 0 lun 0
da0: <STECH Simple Drive 1.04> s/n WD-WXE508CAN263 detached
(da0:umass-sim0:0:0:0): Periph destroyedErstellen und Verwenden
von CDsMikeMeyerBeigesteuert von CD-ROMsbrennenCDs besitzen einige Eigenschaften, die
sie von konventionellen Laufwerken unterscheiden. Sie wurden
so entworfen, dass sie ununterbrochen, ohne Verzögerungen
durch Kopfbewegungen zwischen den Spuren, gelesen werden
können. CDs besitzen Spuren, aber damit
ist der Teil Daten gemeint, der ununterbrochen gelesen wird,
und nicht eine physikalische Eigenschaft der
CD. Das ISO
9660-Dateisystem wurde entworfen, um mit diesen Unterschieden
umzugehen.ISO 9660DateisystemeISO 9660CD-BrennerATAPIDie &os; Ports-Sammlung bietet einige Werkzeuge zum
Brennen und Kopieren von Audio- und
Daten-CDs. Dieses Kapitel beschreibt die
Verwendung von mehreren Kommandozeilen-Werkzeugen. Wenn Sie
eine graphische Oberfläche zum Brennen von
CDs benutzen, können Sie
sysutils/xcdroast oder
sysutils/k3b installieren.Unterstützte GeräteMarcFonvielleBeigetragen von CD-BrennerATAPI/CAM TreiberDer GENERIC-Kernel enthält
Unterstützung für SCSI,
USB und ATAPI
CD Lesegeräte und Brenner. Wird ein
angepasster Kernel erstellt, unterscheiden sich die Optionen
für die Kernelkonfigurationsdatei je nach Art des
Geräts.Für einen SCSI-Brenner müssen
folgende Optionen vorhanden sein:device scbus # SCSI bus (required for ATA/SCSI)
device da # Direct Access (disks)
device pass # Passthrough device (direct ATA/SCSI access)
device cd # needed for CD and DVD burnersFür einen USB-Brenner müssen folgende
Optionen vorhanden sein:device scbus # SCSI bus (required for ATA/SCSI)
device da # Direct Access (disks)
device pass # Passthrough device (direct ATA/SCSI access)
device cd> # needed for CD and DVD burners
device uhci # provides USB 1.x support
device ohci # provides USB 1.x support
device ehci # provides USB 2.0 support
device xhci # provides USB 3.0 support
device usb # USB Bus (required)
device umass # Disks/Mass storage - Requires scbus and daFür einen ATAPI-Brenner müssen
folgende Optionen vorhanden sein:device ata # Legacy ATA/SATA controllers
device scbus # SCSI bus (required for ATA/SCSI)
device pass # Passthrough device (direct ATA/SCSI access)
device cd # needed for CD and DVD burnersUnter &os; Versionen kleiner 10.x wird auch diese
Option in der Kernelkonfigurationsdatei benötigt, falls
der Brenner ein ATAPI-Gerät ist:device atapicamAlternativ kann folgende Zeile in
/boot/loader.conf hinzugefügt werden,
um den Treiber beim Booten automatisch zu laden:atapicam_load="YES"Hierzu ist ein Neustart des Systems erforderlich, da
dieser Treiber nur beim Booten geladen werden kann.Mit dmesg können Sie prüfen, ob das
Gerät von &os; erkannt wurde. Unter &os; Versionen kleiner
10.x lautet der Gerätename acd0
anstelle von cd0.&prompt.user; dmesg | grep cd
cd0 at ahcich1 bus 0 scbus1 target 0 lun 0
cd0: <HL-DT-ST DVDRAM GU70N LT20> Removable CD-ROM SCSI-0 device
cd0: Serial Number M3OD3S34152
cd0: 150.000MB/s transfers (SATA 1.x, UDMA6, ATAPI 12bytes, PIO 8192bytes)
cd0: Attempt to query device size failed: NOT READY, Medium not present - tray closedEine CD brennenUnter &os; kann cdrecord zum Brennen
von CDs benutzt werden. Dieses Programm
wird aus dem Port oder Paket
sysutils/cdrecordinstalliert.Obwohl cdrecord viele Optionen besitzt,
ist die grundlegende Benutzung sehr einfach. Geben Sie den
Namen der zu brennenden ISO-Datei an. Wenn das System über
mehrere Brenner verfügt, müssen Sie auch den Namen des
Gerätes angeben:&prompt.root; cdrecord dev=deviceimagefile.isoBenutzen Sie um den Gerätenamen
des Brenners zu bestimmen. Die Ausgabe könnte wie folgt
aussehen:CD-ROMbrennen&prompt.root; cdrecord -scanbus
ProDVD-ProBD-Clone 3.00 (amd64-unknown-freebsd10.0) Copyright (C) 1995-2010 Jörg Schilling
Using libscg version 'schily-0.9'
scsibus0:
0,0,0 0) 'SEAGATE ' 'ST39236LW ' '0004' Disk
0,1,0 1) 'SEAGATE ' 'ST39173W ' '5958' Disk
0,2,0 2) *
0,3,0 3) 'iomega ' 'jaz 1GB ' 'J.86' Removable Disk
0,4,0 4) 'NEC ' 'CD-ROM DRIVE:466' '1.26' Removable CD-ROM
0,5,0 5) *
0,6,0 6) *
0,7,0 7) *
scsibus1:
1,0,0 100) *
1,1,0 101) *
1,2,0 102) *
1,3,0 103) *
1,4,0 104) *
1,5,0 105) 'YAMAHA ' 'CRW4260 ' '1.0q' Removable CD-ROM
1,6,0 106) 'ARTEC ' 'AM12S ' '1.06' Scanner
1,7,0 107) *Benutzen Sie die drei durch Kommas separierten Zahlen, die
für den CD-Brenner angegeben sind, als
Argument für . Im Beispiel ist das
Yamaha-Gerät 1,5,0, so dass die passende
Eingabe ist. Einfachere Wege das
Argument anzugeben, sowie Informationen über Audiospuren und
das Einstellen der Geschwindigkeit, sind in der Manualpage von
cdrecord beschrieben.Alternativ können Sie den folgenden Befehl ausführen, um
die Geräteadresse des Brenners zu ermitteln:&prompt.root; camcontrol devlist
<MATSHITA CDRW/DVD UJDA740 1.00> at scbus1 target 0 lun 0 (cd0,pass0)Verwenden Sie die numerischen Werte für
scbus, target und
lun. Für dieses Beispiel wäre
1,0,0 als Gerätename zu verwenden.Daten auf ISO-Dateisystem
schreibenDie Datendateien müssen vorbereitet sein, bevor sie auf
eine CD gebrannt werden. In &os; wird
mkisofs vom Paket oder Port
sysutils/cdrtools installiert. Dieses
Programm kann aus einem &unix; Verzeichnisbaum ein
ISO 9660-Dateisystem erzeugen. Im
einfachsten Fall müssen Sie lediglich den Namen der zu
erzeugenden ISO-Datei und den Pfad zu den
Dateien angeben, die auf dem ISO
9660-Dateisystem platziert werden:&prompt.root; mkisofs -o imagefile.iso/path/to/treeDateisystemeISO 9660Bei diesem Kommando werden die Dateinamen auf Namen
abgebildet, die den Restriktionen des ISO
9660-Dateisystem entsprechen. Dateien, die diesem Standard
nicht entsprechen bleiben unberücksichtigt.DateisystemeJolietEs gibt einige Optionen, um die Beschränkungen dieses
Standards zu überwinden. Die unter &unix; Systemen üblichen
Rock-Ridge-Erweiterungen werden durch
aktiviert und aktiviert die von
µsoft; Systemen benutzten Joliet-Erweiterungen.Für CDs, die nur auf &os;-Systemen verwendet werden
sollen, kann genutzt werden, um alle
Beschränkungen für Dateinamen aufzuheben. Zusammen mit
wird ein Abbild des Dateisystems,
identisch zu angegebenen &os;-Dateibaum erstellt, selbst wenn
dies den ISO 9660 Standard verletzt.CD-ROMbootbare erstellenDie letzte übliche Option ist .
Sie wird benutzt, um den Ort eines Bootimages einer
El Torito bootbaren CD anzugeben. Das Argument
zu dieser Option ist der Pfad zu einem Bootimage ausgehend
von der Wurzel des Baumes, der auf die CD geschrieben werden
soll. In der Voreinstellung erzeugt
mkisofs ein ISO-Image im
Diskettenemulations-Modus. Dabei
muss das Image genau 1200, 1440 oder 2880 KB groß
sein. Einige Bootloader, darunter der auf den &os; Installationsmedien
verwendete, kennen keinen Emulationsmodus. Daher sollte
in diesen Fällen verwendet werden.
Wenn /tmp/myboot ein bootbares
&os;-System enthält, dessen Bootimage sich in
/tmp/myboot/boot/cdboot befindet, dann
würde folgendes Kommando
/tmp/bootable.iso erstellen:&prompt.root; mkisofs -R -no-emul-boot -b boot/cdboot -o /tmp/bootable.iso /tmp/mybootDas resultierende ISO-Abbild kann als
speicherbasiertes Laufwerk eingehängt werden:&prompt.root; mdconfig -a -t vnode -f /tmp/bootable.iso -u 0
&prompt.root; mount -t cd9660 /dev/md0 /mntJetzt können Sie überprüfen, dass
/mnt und /tmp/myboot
identisch sind.Sie können das Verhalten von mkisofs
mit einer Vielzahl von Optionen beeinflussen. Details dazu
entnehmen Sie bitte &man.mkisofs.8;.Es ist möglich eine Daten-CD in eine
Datei zu kopieren, die einem Image entspricht, das mit
mkisofs erstellt wurde. Verwenden Sie
dazu dd mit dem Gerätenamen als
Eingabedatei und den Namen der ISO als
Ausgabedatei:&prompt.root; dd if=/dev/cd0 of=file.iso bs=2048Das resultierende Abbild kann auf eine
CD gebrannt werden, wie in beschrieben.Einhängen von Daten-CDsSobald ein Abbild auf eine CD gebrannt
wurde, kann es durch Angabe des Dateisystemtyp, des
CD-Laufwerks und des Mountpunktes
eingehangen werden:&prompt.root; mount -t cd9660 /dev/cd0/mntDa mount davon ausgeht, dass ein
Dateisystem vom Typ ufs ist, würde die
Fehlermeldung Incorrect super block
erscheinen, wenn Sie beim Einhängen einer
Daten-CD auf die Angabe
-t cd9660 verzichten.Auf diese Weise können Daten-CDs
von jedem Hersteller verwendet werden. Es kann allerdings zu
Problemen mit CDs kommen, die verschiedene
ISO 9660-Erweiterungen benutzen. So
speichern Joliet-CDs alle Dateinamen unter
Verwendung von zwei Byte langen Unicode-Zeichen. Tauchen
statt bestimmter Zeichen nur Fragezeichen auf, so
muss über die Option der benötigte
Zeichensatz angegeben werden. Weitere Informationen zu
diesem Problem finden Sie in &man.mount.cd9660.8;.Damit der Kernel diese Zeichenkonvertierung (festgelegt
durch die Option ) erkennt, müssen Sie
das Kernelmodul cd9660_iconv.ko laden.
Dazu fügen Sie folgende Zeile in
loader.conf ein:cd9660_iconv_load="YES"Danach müssen Sie allerdings Ihr System neu starten.
Alternativ können Sie das Kernelmodul auch direkt
über kldload laden.Manchmal werden Sie die Meldung
Device not configured erhalten, wenn
Sie versuchen, eine DatenCD einzuhängen.
Für gewöhnlich liegt das daran, dass das Laufwerk meint es sei
keine CD eingelegt, oder dass das Laufwerk
auf dem Bus nicht erkannt wird. Es kann einige Sekunden
dauern, bevor das Laufwerk merkt, dass eine
CD eingelegt wurde. Seien Sie also
geduldig.Manchmal wird ein
SCSI-CD nicht
erkannt, weil es keine Zeit hatte, auf das Zurücksetzen des
Busses zu antworten. Um dieses Problem zu lösen, fügen Sie
die folgende Zeile in die Kernelkonfiguration ein und
erstellen Sie einen angepassten Kernel nach den Anweisungen in
:options SCSI_DELAY=15000Die Zeile bewirkt, dass nach dem Zurücksetzen des
SCSI-Busses beim Booten 15 Sekunden
gewartet wird, um dem
CD-Laufwerk genügend Zeit zu geben,
darauf zu antworten.Es ist möglich eine Datei auch direkt auf eine
CD zu brennen, ohne vorher auf ihr ein
ISO 9660-Dateisystem einzurichten. Man
sagt auch, Daten werden roh auf die CD
gebrannt. Einige Leute nutzen dies, um Datensicherungen
durchzuführen.Eine auf diese Weise gefertigte
Daten-CD kann nicht in das Dateisystem
eingehangen werden. Um auf die Daten einer solchen
CD zuzugreifen, müssen die Daten vom rohen
Gerät gelesen werden. Beispielsweise würde dieser Befehl eine
komprimierte tar-Datei auf dem zweiten
CD-Laufwerk in das aktuelle Verzeichnis
extrahieren:&prompt.root; tar xzvf /dev/cd1Um eine Daten-CD in das System
einzuhängen, müssen die Daten mit mkisofs
geschrieben werden.Kopieren von Audio-CDsUm eine Kopie einer Audio-CD zu
erstellen, kopieren Sie die Stücke der CD
in einzelne Dateien und brennen diese Dateien dann auf eine
leere CD. beschreibt, wie eine
Audio-CD kopiert und gebrannt wird. Wenn
die Version älter als &os; 10.0 ist und ein
ATAPI-Gerät verwendet wird, muss zunächst
das Modul nach den Anweisungen in
geladen werden.Eine Audio-CD kopierenDer Port oder das Paket
sysutils/cdrtools installiert
cdda2wav. Mit diesem Kommando können
Audiodaten in das aktuelle Verzeichnis extrahiert werden,
wobei jede Datei in eine separate
WAV-Datei geschrieben wird:&prompt.user; cdda2wav -vall -B -OwavWenn das System nur über ein
CD-Laufwerk verfügt, muss der
Gerätename nicht angegeben werden. Lesen Sie die
Manualpage von cdda2wav für
Anweisungen, wie ein Gerät spezifiziert wird und weitere
verfügbare Optionen für dieses Kommando.Die erzeugten .wav Dateien
schreiben Sie mit cdrecord auf eine
leere CD:&prompt.user; cdrecord -v dev=2,0 -dao -useinfo *.wavDas Argument von gibt das
verwendete Gerät an, das wie in
ermittelt werden kann.DVDs benutzenMarcFonvieilleBeigetragen von AndyPolyakovMit Beiträgen von DVDbrennenNach der CD ist die
DVD die nächste Generation optischer
Speichermedien. Auf einer DVD können
mehr Daten als auf einer CD gespeichert
werden. DVDs werden als Standardmedium für
Videos verwendet.Für beschreibbare DVDs existieren fünf
Medienformate:DVD-R: Dies war das erste verfügbare Format.
Das Format wurde vom DVD-Forum
festgelegt. Die Medien sind nur einmal beschreibbar.DVD-RW: Dies ist die
wiederbeschreibbare Version des DVD-R Standards. Eine
DVD-RW kann ungefähr
1000 Mal beschrieben werden.DVD-RAM: Dies ist ein
wiederbeschreibbares Format, das wie ein Wechsellaufwerk
betrachtet werden kann. Allerdings sind die Medien nicht
kompatibel zu den meisten
DVD-ROM-Laufwerken und
DVD-Video-Spielern, da das
DVD-RAM-Format nur von wenigen Brennern
unterstützt wird. Informationen zur Nutzung von
DVD-RAM finden Sie in
.DVD+RW: Ist ein
wiederbeschreibbares Format, das von der DVD+RW
Alliance festgelegt wurde. Eine
DVD+RW kann ungefähr 1000 Mal
beschrieben werden.DVD+R: Dieses Format ist die nur einmal beschreibbare
Variante des DVD+RW Formats.Auf einer einfach beschichteten DVD
können 4.700.000.000 Bytes gespeichert werden. Das
sind 4,38 GB oder 4485 MB (1 Kilobyte
sind 1024 Bytes).Die physischen Medien sind unabhängig von
der Anwendung. Ein DVD-Video ist eine spezielle
Anordnung von Dateien, die auf irgendein Medium,
beispielsweise DVD-R, DVD+R oder DVD-RW
geschrieben werden kann. Bevor Sie ein Medium auswählen,
müssen Sie sicherstellen, dass der Brenner und der
DVD-Spieler mit dem Medium umgehen können.KonfigurationBenutzen Sie &man.growisofs.1;, um DVDs
zu beschreiben. Das Kommando ist Bestandteil von
sysutils/dvd+rw-tools, und kann mit allen
DVD-Medien umgehen.Diese Werkzeuge verwenden das
SCSI-Subsystem, um auf die Geräte
zuzugreifen. Daher muss ATAPI/CAM-Unterstützung
geladen, oder statisch in den Kernel kompiliert werden.
Sollte der Brenner jedoch die
USB-Schnittstelle nutzen, wird diese
Unterstützung nicht benötigt. Weitere Informationen zur
Konfiguration von USB-Geräten finden Sie in
.Für ATAPI-Geräte müssen ebenfalls
DMA-Zugriffe aktiviert werden. Dazu wird die folgende Zeile
in /boot/loader.conf eingefügt:hw.ata.atapi_dma="1"Bevor Sie dvd+rw-tools
benutzen, lesen Sie bitte die
Hardware-Informationen auf der Seite Hardware
Compatibility Notes.Für eine grafische Oberfläche sollten Sie sich
sysutils/k3b ansehen, das eine
benutzerfreundliche Schnittstelle zu &man.growisofs.1; und
vielen anderen Werkzeugen bietet.Daten-DVDs brennen&man.growisofs.1; erstellt mit dem Programm
mkisofs das Dateisystem
und brennt anschließend die DVD. Vor dem
Brennen braucht daher kein Abbild der Daten erstellt zu
werden.Wenn Sie von den Daten im Verzeichnis
/path/to/data eine
DVD+R oder eine DVD-R brennen wollen, benutzen Sie
das nachstehende Kommando:&prompt.root; growisofs -dvd-compat -Z /dev/cd0 -J -R /path/to/dataIn diesem Beispiel wird an
&man.mkisofs.8; durchgereicht und dient zum Erstellen
des Dateisystems (hier: ein ISO-9660-Dateisystem mit
Joliet- und Rock-Ridge-Erweiterungen). Weiteres
entnehmen Sie bitte der Hilfeseite &man.mkisofs.8;.Die Option wird für die erste
Aufnahme einer Single- oder Multisession benötigt. Ersetzen
Sie /dev/cd0 mit dem Gerätenamen
des DVD-Gerätes. Die Nutzung von
schließt das Medium, weitere
Daten können danach nicht mehr angehängt werden. Dies sollte
auch eine eine bessere Kompatibilität mit anderen
DVD-ROM-Laufwerken bieten.Um ein vorher erstelltes Abbild der Daten zu brennen,
beispielsweise imagefile.iso,
verwenden Sie:&prompt.root; growisofs -dvd-compat -Z /dev/cd0=imagefile.isoDie Schreibgeschwindigkeit hängt von den
verwendeten Medium sowie dem verwendeten Gerät ab
und sollte automatisch gesetzt werden. Um die
Schreibgeschwindigkeit vorzugeben, verwenden Sie
. Beispiele finden Sie in
&man.growisofs.1;.Um größere Dateien als 4.38GB zu unterstützen, ist es
notwendig ein UDF/ISO-9660 Hybrid-Dateisystem zu erstellen.
Dieses Dateisystem muss mit zusätzlichen Parametern
bei &man.mkisofs.8; und
allen relevanten Programmen, wie beispielsweise
&man.growisofs.1;) erzeugt werden. Dies ist nur notwendig,
wenn Sie ein ISO-Image erstellen oder direkt auf eine DVD
schreiben wollen. DVDs, die in dieser Weise hergestellt
worden sind, müssen als UDF-Dateisystem mit
&man.mount.udf.8; eingehangen werden. Sie sind nur auf
Betriebssystemen, die UDF unterstützen brauchbar, ansonsten
sieht es so aus, als ob sie kaputte Dateien enthalten
würden.Um diese Art von ISO-Datei zu erstellen:&prompt.user; mkisofs -R -J -udf -iso-level 3 -o imagefile.iso/path/to/dataUm Daten direkt auf eine DVD zu brennen, geben Sie den
folgenden Befehl ein:&prompt.root; growisofs -dvd-compat -udf -iso-level 3 -Z /dev/cd0 -J -R /path/to/dataWenn ein ISO-Abbild bereits große Dateien enthält, sind
keine weiteren Optionen für &man.growisofs.1; notwendig, um
das Abbild auf die DVD zu brennen.Achten Sie darauf, eine aktuelle Version von
sysutils/cdrtools zu verwenden, welche
&man.mkisofs.8; enthält, da ältere Versionen keinen Support
für große Dateien enthalten. Falls die neueste Version
nicht funktioniert, installieren Sie
sysutils/cdrtools-devel und lesen Sie
&man.mkisofs.8;.DVD-Videos brennenDVDDVD-VideoEin DVD-Video ist eine spezielle Anordnung von Dateien,
die auf den ISO-9660 und den micro-UDF (M-UDF) Spezifikationen
beruht. Da DVD-Video auf eine bestimmte Datei-Hierarchie
angewiesen ist, müssen DVDs mit speziellen
Programmen wie multimedia/dvdauthor
erstellt werden.Ist bereits ein Abbild des Dateisystems eines
DVD-Videos vorhanden, kann es auf die gleiche Weise wie jedes
andere Abbild gebrannt werden. Wenn
dvdauthor verwendet wurde, um die
DVD zu erstellen und die Resultate in
/path/to/video liegen, kann das folgende
Kommando verwendet werden, um ein DVD-Video zu brennen:&prompt.root; growisofs -Z /dev/cd0 -dvd-video /path/to/video wird an &man.mkisofs.8;
weitergereicht, um die Datei-Hierarchie für ein DVD-Video zu
erstellen. Weiterhin bewirkt diese Option, dass
&man.growisofs.1; mit aufgerufen
wird.DVD+RW-Medien benutzenDVDDVD+RWIm Gegensatz zu CD-RW-Medien müssen
DVD+RW-Medien
erst formatiert werden, bevor sie benutzt werden können.
Es wird empfohlen &man.growisofs.1;
einzusetzen, da das Programm Medien automatisch formatiert,
wenn es erforderlich ist. Es ist jedoch möglich, auch
dvd+rw-format zu nutzen, um die
DVD+RW zu formatieren:&prompt.root; dvd+rw-format /dev/cd0Dieser Vorgang muss nur einmal durchgeführt werden. Denken
Sie daran, dass nur neue DVD+RWs formatiert werden müssen.
Anschließend können DVD+RWs, wie gewohnt
gebrannt werden.Wenn Sie auf einer DVD+RW ein neues
Dateisystem erstellen wollen, brauchen Sie die
DVD+RW vorher nicht zu
löschen. Überschreiben Sie einfach das vorige Dateisystem
indem Sie eine neue Session anlegen:&prompt.root; growisofs -Z /dev/cd0 -J -R /path/to/newdataDas DVD+RW-Format erlaubt es, Daten an
eine vorherige Aufnahme anzuhängen. Dazu wird eine neue
Session mit der schon bestehenden zusammengeführt.
Es wird keine Multi-Session geschrieben, sondern
&man.growisofs.1; vergrößert
das ISO-9660-Dateisystem auf dem Medium.Das folgende Kommando fügt weitere Daten zu
einer vorher erstellten DVD+RW
hinzu:&prompt.root; growisofs -M /dev/cd0 -J -R /path/to/nextdataWenn Sie eine DVD+RW erweitern,
verwenden Sie dieselben &man.mkisofs.8;-Optionen wie beim
Erstellen der DVD+RW.Verwenden Sie , um bessere
Kompatibilität mit DVD-ROM-Laufwerken zu
gewährleisten. Zu einem DVD+RW-Medium
können Sie mit dieser Option auch weiterhin Daten
hinzufügen.Um das Medium zu löschen, verwenden Sie:&prompt.root; growisofs -Z /dev/cd0=/dev/zeroDVD-RW-Medien benutzenDVDDVD-RWEine DVD-RW kann mit zwei Methoden
beschrieben werden:
Sequential-Recording oder
Restricted-Overwrite. Voreingestellt
ist Sequential-Recording.Eine neue DVD-RW kann direkt
beschrieben werden; sie muss nicht vorher formatiert werden.
Allerdings muss eine DVD-RW, die mit
Sequential-Recording aufgenommen wurde, zuerst gelöscht
werden, bevor eine neue Session aufgenommen werden
kann.Der folgende Befehl löscht eine DVD-RW
im Sequential-Recording-Modus:&prompt.root; dvd+rw-format -blank=full /dev/cd0Das vollständige Löschen mit
dauert mit einem
1x Medium ungefähr eine Stunde. Wenn die
DVD-RW im Disk-At-Once-Modus (DAO)
aufgenommen wurde, kann sie mit
schneller gelöscht werden. Um eine
DVD-RW im DAO-Modus zu brennen, benutzen
Sie das folgende Kommando:&prompt.root; growisofs -use-the-force-luke=dao -Z /dev/cd0=imagefile.isoDie Option
sollte nicht erforderlich sein, da &man.growisofs.1;
den DAO-Modus automatisch erkennt.Der Restricted-Overwrite-Modus sollte mit jeder
DVD-RW verwendet werden, da er flexibler
als der voreingestellte Sequential-Recording-Modus
ist.Um Daten auf eine DVD-RW im
Sequential-Recording-Modus zu schreiben, benutzen Sie dasselbe
Kommando wiefür die anderen
DVD-Formate:&prompt.root; growisofs -Z /dev/cd0 -J -R /path/to/dataUm weitere Daten zu einer Aufnahme hinzuzufügen, benutzen
Sie mit &man.growisofs.1;. Werden die
Daten im Sequential-Recording-Modus hinzugefügt, wird eine
neue Session erstellt. Das Ergebnis ist ein
Multi-Session-Medium.Eine DVD-RW im
Restricted-Overwrite-Modus muss nicht gelöscht werden, um eine
neue Session aufzunehmen. Das Medium kann einfach mit
überschrieben werden. Mit
kann das ISO-9660-Dateisystem, wie mit
einer DVD+RW, vergrößert werden.
Die DVD enthält danach eine Session.Benutzen sie das nachstehende Kommando, um den
Restricted-Overwrite-Modus einzustellen:&prompt.root; dvd+rw-format /dev/cd0Das folgende Kommando stellt den Modus wieder auf
Sequential-Recording zurück:&prompt.root; dvd+rw-format -blank=full /dev/cd0Multi-SessionNur wenige DVD-ROM-Laufwerke
unterstützen Multi-Session-DVDs und lesen meist nur die erste
Session. Mehrere Sessions werden von DVD+R, DVD-R und
DVD-RW im Sequential-Recording-Modus
unterstützt. Im Modus Restricted-Overwrite gibt nur eine
Session.Wenn das Medium noch nicht geschlossen ist, erstellt
das nachstehende Kommando eine neue Session auf einer
DVD+R, DVD-R oder DVD-RW im
Sequential-Recording-Modus:&prompt.root; growisofs -M /dev/cd0 -J -R /path/to/nextdataWird dieses Kommando mit DVD+RW- oder
DVD-RW-Medien im Restricted-Overwrite-Modus
benutzt, werden die neuen Daten mit
den Daten der bestehenden Session zusammengeführt. Das Medium
enthält danach eine Session. Nutzen Sie diese Methode, um
neue Daten zu einer bestehenden Session hinzuzufügen.Für den Anfang und das Ende einer Session wird auf dem
Medium zusätzlicher Platz verbraucht. Um den Speicherplatz
auf dem Medium optimal auszunutzen, sollten Sie daher
Sessions mit vielen Daten hinzufügen. Auf ein DVD+R-Medium
passen maximal 154 Sessions, 2000 Sessions auf ein
DVD-R-Medium und 127 Sessions auf eine DVD+R Double
Layer.Weiterführendesdvd+rw-mediainfo
/dev/cd0 zeigt
Informationen über eine im Laufwerk liegende
DVD an.Weiteres zu dvd+rw-tools
finden Sie in &man.growisofs.1;, auf der dvd+rw-tools
Web-Seite und in den Archiven der cdwrite-Mailingliste.Wenn Sie einen Problembericht zur Nutzung der
dvd+rw-tools erstellen, fügen Sie
immer die Ausgabe von dvd+rw-mediainfo
hinzu.DVD-RAMDVDDVD-RAMDVD-RAM-fähige Brenner nutzten die
SCSI- oder
ATAPI-Schnittstelle. Für
ATAPI-Geräte muss der DMA-Modus
aktiviert werden, indem die folgende Zeile in
/boot/loader.conf hinzugefügt
wird:hw.ata.atapi_dma="1"Eine DVD-RAM kann mit einer
Wechselplatte verglichen werden. Wie diese, muss auch eine
DVD-RAM vor dem ersten
Einsatz formatiert werden. In diesem Beispiel wird das
gesamte Medium mit dem Standard-UFS2-Dateisystem
formatiert:&prompt.root; dd if=/dev/zero of=/dev/acd0 bs=2k count=1
&prompt.root; bsdlabel -Bw acd0
&prompt.root; newfs /dev/acd0Denken Sie dabei daran, dass Sie gegebenenfalls die
Gerätedatei (hier acd0) an
Ihre Konfiguration anpassen müssen.Nachdem die DVD-RAM formatiert ist,
kann sie wie eine normale Festplatte gemountet
werden:&prompt.root; mount /dev/acd0/mntDanach kann schreibend und lesend auf das
DVD-RAM Medium zugegriffen werden.Disketten benutzenDieser Abschnitt beschreibt die Formatierung von
3,5 Zoll Disketten in &os;.Disketten formatierenBevor eine Diskette benutzt werden kann, muss sie
(low-level) formatiert werden, was normalerweise der
Hersteller schon gemacht hat. Sie können die Diskette
allerdings noch einmal formatieren, um das Medium zu
überprüfen. Benutzen Sie &man.fdformat.1;, um Disketten
unter &os; zu formatieren. Achten Sie dabei auf
Fehlermeldungen, die schlechte Speichermedien
anzeigen.Um eine Diskette zu formatieren, legen Sie eine
3,5 Zoll Diskette in das erste Diskettenlaufwerk ein
und führen das folgende Kommando aus:&prompt.root; /usr/sbin/fdformat -f 1440 /dev/fd0Nach dem Formatieren muss auf der Diskette ein
Disklabel erstellt werden, um die Größe und Geometrie der
Diskette zu erkennen. Eine Liste der unterstützten
Geometrien finden Sie in
/etc/disktab.Erstellen Sie nun das Label mit &man.bsdlabel.8;:&prompt.root; /sbin/bsdlabel -B -w /dev/fd0 fd1440Auf der Diskette kann nun ein Dateisystem erstellt
werden (high-level Formatierung). Das Dateisystem der
Diskette kann entweder UFS oder FAT sein, wobei FAT für
Disketten in der Regel die bessere Wahl ist.Um die Diskette mit FAT zu formatieren, geben Sie
folgendes Kommando ein:&prompt.root; /sbin/newfs_msdos /dev/fd0Die Diskette kann nun benutzt werden. Um die Diskette
zu verwenden, kann sie mit &man.mount.msdosfs.8; eingehängt
werden. Man kann auch emulators/mtools aus
der Ports-Sammlung installieren, um mit der Diskette zu
arbeiten.DatensicherungDie Planung und Umsetzung einer Backup-Strategie ist
unerlässlich, um Daten in bestimmten Situationen
wiederherstellen zu können, zum Beispiel bei Plattendefekten,
versehentlichem Löschen von Dateien, willkürlicher Korrumpierung
von Dateien oder der vollständigen Zerstörung des Systems und
der Backups, die am gleichen Ort aufbewahrt werden.Die Art und der Zeitplan des Backups kann variieren,
abhängig von der Wichtigkeit der Daten, der benötigten
Granularität zur Wiederherstellung von Dateien und der
Dauer einer akzeptablen Ausfallzeit. Zu den möglichen
Backup-Strategien gehören unter anderem:Die Archivierung des kompletten Systems auf externen
Datenträgern. Dieser Ansatz schützt zwar vor allen oben
aufgeführten Problemen, ist aber zeitaufwändig und unbequem
bei der Wiederherstellung, insbesondere für nicht
privilegierte Benutzer.Dateisystem-Snapshots sind nützlich bei der
Wiederherstellung von gelöschten Dateien, bzw. früheren
Versionen von Dateien.Kopien ganzer Dateisysteme oder Festplatten, die mit
einem anderen System im Netzwerk mittels
net/rsync synchronisiert werden.Hardware oder Software RAID, was im
Falle von Plattendefekten die Ausfallzeit minimiert oder
vermeidet.Üblicherweise wird eine Mischung aus verschiedenen
Strategien verwendet. Es kann zum Beispiel ein Sicherungsplan
erstellt und automatisiert werden, um eine wöchentliche,
vollständige Systemsicherung, ergänzt mit stündlichen
ZFS-Snapshots, zu erstellen. Darüber hinaus könnte man
eine manuelle Sicherung einzelner Verzeichnisse oder Dateien
machen, bevor diese bearbeitet oder gelöscht werden.Dieser Abschnitt beschreibt einige Programme, die zur
Erstellung und Verwaltung von Sicherungen unter &os; verwendet
werden können.Sicherung von DateisystemenBackup-Softwaredump / restoredumprestoreDie traditionellen &unix;-Programme zum Sichern und
Wiederherstellen von Dateisystemen sind &man.dump.8; und
&man.restore.8;. Diese Programme arbeiten auf der Block-Ebene
der Festplatte, also unterhalb des Abstraktionslevels von
Dateien, Links und Verzeichnissen, die die Grundlage des
Dateisystemkonzepts bilden. Im Gegensatz zu anderen
Backup-Programmen sichert dump ein ganzes
Dateisystem und nicht nur einen Teil des Dateisystems, oder
einen Verzeichnisbaum, der mehr als ein Dateisystem umfasst.
Anstatt Dateien oder Verzeichnisse zu schreiben, schreibt
dump die Blöcke, aus denen die Dateien und
Verzeichnisse bestehen.Wird dump benutzt, um das
Root-Verzeichnis zu sichern, werden
/home, /usr und
viele andere Verzeichnisse nicht gesichert, da dies
normalerweise Mountpunkte für andere Dateisysteme oder
symbolische Links zu diesen Dateisystemen sind.Wenn restore zum Extrahieren von Daten
verwendet wird, werden temporäre Dateien standardmäßig in
/tmp abgelegt. Wenn Sie von einer Platte
mit einem kleinen /tmp-Verzeichnis
zurücksichern, setzen Sie die Umgebungsvariable
TMPDIR auf ein Verzeichnis mit mehr freiem
Speicherplatz, damit die Wiederherstellung gelingt.Beachten Sie bei der Verwendung von
dump, dass es einige Eigenarten aus den
frühen Tagen der Version 6 von AT&T &unix; (ca. 1975)
beibehalten hat. Die Standardparameter gehen davon aus, dass
auf einem 9-Spur-Band gesichert wird, und nicht auf ein
anderes Medium oder auf Sicherungsbänder mit hoher Dichte.
Diese Standardwerte müssen auf der Kommandozeile überschrieben
werden..rhostsEs ist möglich, das Dateisystem über das Netzwerk auf
einem anderen Rechner zu sichern, oder auf einem Bandlaufwerk
eines anderen Rechners. Obwohl die Programme &man.rdump.8;
und &man.rrestore.8; für diese Zwecke benutzt werden können,
gelten sie als nicht sicher.Verwenden Sie stattdessen dump und
restore in einer sichereren Weise über eine
SSH-Verbindung. In diesem Beispiel wird
eine vollständige, komprimierte Sicherung von
/usr erstellt, das
anschließend an einen bestimmten Host über eine
SSH-Verbindung gesendet wird.dump mit ssh
benutzen&prompt.root; /sbin/dump -0uan -f - /usr | gzip -2 | ssh -c blowfish \
targetuser@targetmachine.example.com dd of=/mybigfiles/dump-usr-l0.gzIn diesem Beispiel wird RSH gesetzt, um
über eine SSH-Verbindung eine Sicherung auf
ein Bandlaufwerk eines entfernten Systems zu schreiben:dump über ssh
mit gesetzter RSH benutzen&prompt.root; env RSH=/usr/bin/ssh /sbin/dump -0uan -f tatargetuser@targetmachine.example.com:/dev/sa0 /usrSicherung von VerzeichnissenBackup-SoftwaretarEinige integrierte Werkzeuge stehen zur Sicherung
und Wiederherstellung von bestimmten Dateien und
Verzeichnissen bei Bedarf zur Verfügung.Wenn es um die Sicherung von Dateien in einem Verzeichnis
geht, ist &man.tar.1; eine gute Wahl. Dieses Werkzeug stammt
aus Version 6 von AT&T &unix; und erwartet standardmäßig
eine rekursive Sicherung auf ein lokales Band. Es können
jedoch Optionen angegeben werden, um den Namen einer
Sicherungsdatei zu bestimmen.tarIn diesem Beispiel wird eine komprimierte Sicherung des
aktuellen Verzeichnisses nach
/tmp/mybackup.tgz gespeichert. Achten
Sie bei der Sicherungsdatei darauf, dass sie nicht in dem
Verzeichnis gepeichert wird, welches gesichert werden
soll.Das aktuelle Verzeichnis mit tar
sichern&prompt.root; tar czvf /tmp/mybackup.tgz .Um eine komplette Sicherung wiederherzustellen, wechseln
Sie mit cd in das Verzeichnis, in dem Sie
die Daten wiederherstellen möchten und geben Sie den Namen der
Sicherungsdatei an. Beachten Sie, dass dabei alle Dateien in
dem Verzeichnis überschrieben werden. Im Zweifel sichern Sie
besser in einem temporären Verzeichnis, oder geben Sie den
Verzeichnisnamen bei der Wiederherstellung an.Wiederherstellung mit tar in das
aktuelle Verzeichnis&prompt.root; tar xzvf /tmp/mybackup.tgzEs gibt dutzende Optionen, die in &man.tar.1; beschrieben
werden. Das Programm unterstützt auch die Verwendung von
Ausschlußmustern, um bestimmte Dateien von der Sicherung oder
Wiederherstellung von Verzeichnissen auszuschließen.Backup-SoftwarecpioUm bestimmte, aufgelistete Dateien und Verzeichnisse zu
sichern, ist &man.cpio.1; eine gute Wahl. Im Gegensatz zu
tar weiß cpio nicht
wie ein Verzeichnisbaum durchlaufen wird. Daher ist es auf
eine Liste von zu sichernden Dateien angewiesen.So kann beispielsweise eine Liste von Dateien mit
ls oder find erzeugt
werden. Dieses Beispiel erstellt eine rekursive Liste des
aktuellen Verzeichnisses, die dann über eine Pipe an
cpio übergeben wird, um eine Sicherung
namens /tmp/mybackup.cpio zu
erstellen.Rekursive Sicherung des aktuellen Verzeichnisses mit
ls und cpio&prompt.root; ls -R | cpio -ovF /tmp/mybackup.cpioBackup-SoftwarepaxpaxPOSIXIEEE&man.pax.1; ist ein Programm, welches versucht die
Funktionen von tar und
cpio zu kombinieren. Über die Jahre
hinweg sind die verschiedenen Versionen von
tar und cpio leicht
inkompatibel geworden. Daher hat &posix;
pax geschaffen, welches versucht viele
der unterschiedlichen cpio- und
tar-Formate zu lesen und zu schreiben,
außerdem einige neue, eigene Formate.Für die vorangegangenen Beispiele wäre ein äquivalenter
Aufruf von pax:Das aktuelle Verzeichnis mit pax
sichern&prompt.root; pax -wf /tmp/mybackup.pax .Bandmedien benutzenBandmedienObwohl sich Bandmedien mit der Zeit weiterentwickelt
haben, verwenden moderne Backup-Systeme in der Regel
Offsite-Backups in Verbindung
mit lokalen Wechseldatenträgern. &os; unterstützt alle
SCSI-Bandlaufwerke, wie etwa
LTO und DAT. Zusätzlich
gibt es begrenzte Unterstützung für SATA-
und USB-Bandlaufwerke.Für SCSI-Bandlaufwerke nutzt &os; den
&man.sa.4; Treiber, der die Schnittstellen
/dev/sa0, /dev/nsa0
und /dev/esa0 bereitstellt. Der Name des
physikalischen Geräts ist /dev/sa0.
Wird /dev/nsa0 benutzt, dann wird die
Backup-Anwendung nach dem Schreibvorgang das Band nicht
zurückspulen, was es ermöglicht, mehr als eine Datei auf das
Band zu schreiben. Die Verwendung von
/dev/esa0 wirft das Band aus, nachdem das
Gerät geschlossen wurde.&os; nutzt mt für die Steuerung der
Operationen des Bandlaufwerks, wie die Suche nach Dateien auf
einem Band, oder um Kontrollmarkierungen auf ein Band zu
schreiben. Beispielsweise können die ersten drei Dateien auf
einem Band erhalten bleiben, indem sie übersprungen werden,
bevor eine neue Datei auf das Band geschrieben wird&prompt.root; mt -f /dev/nsa0 fsf 3Dieses Werkzeug unterstützt viele Operationen. Weitere
Einzelheiten finden Sie in &man.mt.1;.Um eine Datei mit tar auf ein Band zu
schreiben, geben Sie den Namen des Bandlaufwerks und den
Dateinamen an:&prompt.root; tar cvf /dev/sa0 fileWiederherstellung von Dateien aus dem
tar-Archiv von Band in das aktuelle
Verzeichnis:&prompt.root; tar xvf /dev/sa0Benutzen Sie dump, um ein
UFSDateisystem zu sichern. Dieses Beispiel
sichert /usr, ohne danach das Band
zurückzuspulen:&prompt.root; dump -0aL -b64 -f /dev/nsa0 /usrInteraktive Wiederherstellung von Dateien aus einer
&man.dump.8;-Datei von Band in das aktuelle
Verzeichnis:&prompt.root; restore -i -f /dev/nsa0Backup-Software von DrittanbieternBackup-SoftwareDie &os; Ports-Sammlung enthält viele Programme von
Drittanbietern, die verwendet werden können um die zeitliche
Erstellung von Sicherungen zu planen, zu vereinfachen und
bequemer zu machen. Viele dieser Programme basieren auf dem
Client-Server-Modell und können benutzt werden, um die
Sicherung von einzelnen Systemen oder allen Rechnern in einem
Netzwerk zu automatisieren.Zu den bekannten Programmen gehören
Amanda,
Bacula,
rsync und
duplicity.Die Wiederherstellung in einem NotfallZusätzlich zu den regelmäßigen Sicherungen empfiehlt es
sich, die folgenden Schritte im Rahmen eines Notfallplans
durchzuführen.bsdlabelErstellen Sie einen Ausdruck der Ausgabe
der folgenden Kommandos:gpart showmore /etc/fstabdmesgLive-CDBewahren Sie diesen Ausdruck und eine Kopie des
Installationsmediums an einem sicheren Ort auf. Im Falle
einer Wiederherstellung im Notfall, starten Sie von dem
Installationsmedium und wählen Sie
Live CD, um eine Rettungs-Shell zu
starten. Dieser Rettungmodus kann verwendet werden, um den
aktuellen Stand des Systems anzuzeigen, und wenn nötig,
Festplatten zu formatieren und Daten aus den Sicherungen
wiederherzustellen.Das Installationsmedium für
&os;/&arch.i386; &rel2.current;-RELEASE enthält
keine Rettungs-Shell. Laden Sie für diese Version ein
Abbild der Livefs CD von ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/&arch.i386;/ISO
IMAGES/&rel2.current;/&os;-&rel2.current;-RELEASE-&arch.i386;-livefs.iso.Als nächstes testen Sie die Rettungs-Shell und die
Sicherungen. Dokumentieren Sie diesen Ablauf. Bewahren
Sie diese Notizen zusammen mit den Medien, den Ausdrucken
und den Sicherungen auf. Diese Notizen können Ihnen im
Notfall helfen eine versehentliche Zerstörung der
Sicherungen zu verhindern, während Sie unter Stress eine
Wiederherstellung durchführen.Als zusätzliche Sicherheitsvorkehrung kann jeweils
die letzte Sicherung an einem entfernten Standort
aufbewahrt werden. Dieser Standort sollte räumlich von
den Computern und Festplatten durch eine erhebliche
Entfernung getrennt sein.Speicherbasierte LaufwerkeMarcFonvieilleVerbessert und neu strukturiert von Neben physikalischen Laufwerken unterstützt &os;
auch speicherbasierte Laufwerke. Eine mögliche Verwendung für
ein speicherbarsiertes Laufwerk ist der Zugriff auf ein
ISO-Dateisystem, jedoch ohne vorher
die Daten auf eine CD oder
DVD zu brennen und dann das Medium
einzuhängen.&os; verwendet den &man.md.4; Treiber um Unterstützung für
speicherbasierte Laufwerke bereitzustellen. Dieser Treiber ist
bereits im GENERIC-Kernel enthalten. Wenn
Sie eine angepasste Kernelkonfigurationsdatei verwenden, stellen
Sie sicher, dass folgende Zeile enthalten ist:device mdEin- und Aushängen von bestehenden AbbildernLaufwerkespeicherbasierteUm ein bestehendes Abbild eines Dateisystems einzuhängen,
verwenden Sie mdconfig zusammen mit dem
Namen der ISO-Datei und einer freien
Gerätenummer. Benutzen Sie dann diese Gerätenummer, um das
Abbild in einen existierenden Mountpunkt einzuhängen. Sobald
dies erledigt ist, erscheinen die Dateien des Abbildes
unterhalb des Mountpunktes. Dieses Beispiel wird
diskimage.iso an das speicherbasierte
Laufwerk /dev/md0 binden und dann in
/mnt einhängen:&prompt.root; mdconfig -f diskimage.iso -u 0
&prompt.root; mount /dev/md0/mntWenn keine Gerätenummer mit angegeben
ist, wird von &man.md.4; automatisch eine
ungenutzte Gerätenummer zugewiesen. Das zugewiesene Gerät
wird auf der Standardausgabe ausgegeben (zum Beispiel
md4). Weitere Informationen zu diesem
Kommando und dessen Optionen finden Sie in
&man.mdconfig.8;.Laufwerkespeicherbasiertes Laufwerk aushängenWenn ein speicherbasiertes Laufwerk nicht mehr in Gebrauch
ist, sollten seine belegten Ressourcen wieder an das System
zurückgegeben werden. Hängen Sie zuerst das Dateisystem aus,
dann verwenden Sie mdconfig, um die Platte
vom System zu trennen und die Ressourcen freizugeben.&prompt.root; umount /mnt
&prompt.root; mdconfig -d -u 0Um festzustellen, ob noch irgendwelche speicherbasierten
Laufwerke am System angeschlossen sind, benutzen Sie
mdconfig -l.Ein datei- oder speicherbasiertes Laufwerk
erzeugenLaufwerkespeicherbasierte&os; unterstützt auch speicherbasierte Laufwerke, bei
denen der verwendete Speicher entweder einer Festplatte, oder
einem Bereich im Arbeitsspeicher zugewiesen wird. Die erste
Methode ist gemeinhin als dateibasiertes Dateisystem, die
zweite als speicherbasiertes Dateisystem bekannt. Beide Typen
können mit mdconfig erzeugt werden.Um ein speicherbasiertes Dateisystem zu erstellen, geben
Sie den Typ swap sowie die gewünschte Größe
des Laufwerks an. Dieses Beispiel erzeugt ein 5 MB
großes Laufwerk an der Gerätenummer 1. Das
Laufwerk wird mit dem UFS-Dateisystem
formatiert, bevor es eingehängt wird:&prompt.root; mdconfig -a -t swap -s 5m -u 1
&prompt.root; newfs -U md1
/dev/md1: 5.0MB (10240 sectors) block size 16384, fragment size 2048
using 4 cylinder groups of 1.27MB, 81 blks, 192 inodes.
with soft updates
super-block backups (for fsck -b #) at:
160, 2752, 5344, 7936
&prompt.root; mount /dev/md1/mnt
&prompt.root; df /mnt
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/md1 4718 4 4338 0% /mntUm ein dateibasiertes Dateisystem zu erstellen,
muss zunächst ein Stück Speicher auf der Festplatte reserviert
werden. Dieses Beispiel erzeugt eine 5 KB große Datei
namens newimage:&prompt.root; dd if=/dev/zero of=newimage bs=1k count=5k
5120+0 records in
5120+0 records outAls nächstes muss diese Datei an ein speicherbasiertes
Laufwerk gebunden, gelabelt und mit dem
UFS-Dateisystem formatiert werden. Danach
können Sie das Laufwerk einhängen und die Größe
überprüfen:&prompt.root; mdconfig -f newimage -u 0
&prompt.root; bsdlabel -w md0 auto
&prompt.root; newfs md0a
/dev/md0a: 5.0MB (10224 sectors) block size 16384, fragment size 2048
using 4 cylinder groups of 1.25MB, 80 blks, 192 inodes.
super-block backups (for fsck -b #) at:
160, 2720, 5280, 7840
&prompt.root; mount /dev/md0a /mnt
&prompt.root; df /mnt
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/md0a 4710 4 4330 0% /mntEs benötigt mehrere Befehle, um ein datei- oder
speicherbasiertes Dateisystem mit mdconfig
zu erstellen. &os; enthält auch mdmfs, das
ein speicherbasiertes Laufwerk automatisch konfigurieren,
formatieren und einhängen kann. Nachdem beispielsweise
newimage mit dd
erstellt wurde, hätte auch der folgende Befehl benutzt werden
können, anstelle der oben verwendeten Kommandos
bsdlabel, newfs und
mount:&prompt.root; mdmfs -F newimage -s 5m md0/mntUm hingegen ein speicherbasiertes Laufwerk mit
mdmfs zu erstellen, wird dieser Befehl
benutzt:&prompt.root; mdmfs -s 5m md1/mntWenn die Gerätenummer nicht angegeben wird, wählt
mdmfs automatisch ein ungenutztes
Gerät aus. Weitere Einzelheiten über mdmfs
finden Sie in &man.mdmfs.8;.Schnappschüsse von DateisystemenTomRhodesBeigetragen von Schnappschüssevon DateisystemenZusammen mit
Soft Updates bietet &os;
eine weitere Funktion: Schnappschüsse von Dateisystemen.UFS-Schnappschüsse sind Dateien, die ein Abbild eines
Dateisystems enthalten und müssen auf dem jeweiligen Dateisystem
erstellt werden. Pro Dateisystem darf es maximal
20 Schnappschüsse, die im Superblock vermerkt werden,
geben. Schnappschüsse bleiben erhalten, wenn das Dateisystem
abgehangen, neu eingehangen oder das System neu gestartet wird.
Wenn ein Schnappschuss nicht mehr benötigt wird, kann er
mit &man.rm.1; gelöscht werden. Es ist egal, in welcher
Reihenfolge Schnappschüsse gelöscht werden. Es kann allerdings
vorkommen, dass nicht der gesamte Speicherplatz wieder
freigegeben wird, da ein anderer Schnappschuss einen Teil der
entfernten Blöcke für sich beanspruchen kann.Das unveränderliche -Dateiflag
wird nach der Erstellung des Snaphshots von &man.mksnap.ffs.8;
gesetzt. Durch die Verwendung von &man.unlink.1; ist es
allerdings möglich, einen Schnappschuss zu löschen.Schnappschüsse werden mit &man.mount.8; erstellt. Das
folgende Kommando legt einen Schnappschuss von
/var in /var/snapshot/snap
ab:&prompt.root; mount -u -o snapshot /var/snapshot/snap /varAlternativ kann der Schnappschuss auch mit
&man.mksnap.ffs.8; erstellt werden.&prompt.root; mksnap_ffs /var /var/snapshot/snapUm Schnappschüsse auf einem Dateisystem, beispielsweise
/var zu finden, kann man &man.find.1;
verwenden:&prompt.root; find /var -flags snapshotNachdem ein Schnappschuss erstellt wurde, können Sie
ihn für verschiedene Zwecke benutzen:Sie können den Schnappschuss für die
Datensicherung benutzen und ihn auf eine
CD oder ein Band schreiben.Die Intigrität des Schnappschusses kann mit &man.fsck.8;
geprüft werden. Wenn das Dateisystem zum Zeitpunkt der
Erstellung des Schnappschusses in Ordnung war, sollte
&man.fsck.8; immer erfolgreich durchlaufen.Sie können den Schnappschuss mit &man.dump.8;
sichern. Sie erhalten dann eine konsistente Sicherung des
Dateisystems zu dem Zeitpunkt, der durch den Zeitstempel des
Schnappschusses gegeben ist. Der Schalter
von &man.dump.8; erstellt für die
Sicherung einen Schnappschuss und entfernt diesen am Ende
der Sicherung wieder.Sie können einen Schnappschuss in den
Verzeichnisbaum einhängen und sich dann den Zustand des
Dateisystems zu dem Zeitpunkt ansehen, an dem der
Schnappschuss erstellt wurde. Der folgende Befehl
hängt den Schnappschuss
/var/snapshot/snap ein:&prompt.root; mdconfig -a -t vnode -o readonly -f /var/snapshot/snap -u 4
&prompt.root; mount -r /dev/md4 /mntDer eingefrorene Stand des
/var-Dateisystems ist nun unterhalb von
/mnt verfügbar. Mit Ausnahme der früheren
Schnappschüsse, die als leere Dateien auftauchen, wird zu
Beginn alles so aussehen, wie zum Zeitpunkt der Erstellung des
Schnappschusses. Der Schnappschuss kann wie folgt abgehängt
werden:&prompt.root; umount /mnt
&prompt.root; mdconfig -d -u 4Weitere Informationen über Soft Updates und
Schnappschüsse von Dateisystemen sowie technische Artikel finden
Sie auf der Webseite
von Marshall Kirk McKusick.Disk QuotasAccountingPlattenplatzDisk QuotasDisk Quotas erlauben dem Administrator, den Plattenplatz
und/oder die Anzahl der Dateien eines Benutzers oder der
Mitglieder einer Gruppe, auf Dateisystemebene zu beschränken.
Dadurch wird verhindert, dass ein Benutzer oder eine Gruppe von
Benutzern den ganzen verfügbaren Plattenplatz belegt.Dieser Abschnitt beschreibt die Konfiguration von Disk
Quotas für UFS-Dateisysteme. Lesen Sie
, wenn Sie Disk Quotas auf einem
ZFS-Dateisystem einrichten möchten.Disk Quotas aktivierenPrüfen Sie zunächst, ob der &os;-Kernel Disk Quotas
unterstützt:&prompt.user; sysctl kern.features.ufs_quota
kern.features.ufs_quota: 1In diesem Beispiel zeigt die 1 an, das
Quotas unterstützt werden. Falls 0
ausgegeben wird, fügen Sie folgende Zeile in die
Kernelkonfigurationsdatei ein, und folgen Sie den Anweisungen
in um den Kernel zu
aktualisieren:options QUOTAAls nächstes aktivieren Sie Disk Quotas in
/etc/rc.conf:quota_enable="YES"Disk QuotasüberprüfenNormalerweise wird beim Booten die Integrität der Quotas
auf allen Dateisystemen mit &man.quotacheck.8;
überprüft. Dieses Programm stellt sicher, dass die
Quota-Datenbank mit den Daten auf einem Dateisystem
übereinstimmt. Dies ist allerdings ein zeitraubender Prozess,
der die Zeit, die das System zum Booten braucht, signifikant
beeinflusst. Eine Variable in
/etc/rc.config erlaubt es, diesen Schritt
zu überspringen:check_quotas="NO"Zuletzt muss noch /etc/fstab
bearbeitet werden, um die Plattenquotas auf Dateisystemebene
zu aktivieren. Um Quotas pro Benutzer für ein Dateisystem zu
aktivieren, geben Sie für dieses Dateisystem
im Feld Optionen von
/etc/fstab an. Zum Beispiel:/dev/da1s2g /home ufs rw,userquota 1 2Um Quotas für Gruppen einzurichten, verwenden
Sie . Um Quotas für Benutzer
und Gruppen einzurichten, trennen Sie die Optionen durch
Kommata:/dev/da1s2g /home ufs rw,userquota,groupquota 1 2Quota-Dateien werden standardmäßig im Rootverzeichnis
des Dateisystems unter quota.user und
quota.group abgelegt. Weitere
Informationen finden Sie in &man.fstab.5;. Es wird nicht
empfohlen, Quota-Dateien an anderen Stellen zu
speichern.Sobald die Konfiguration abgeschlossen ist, starten Sie
das System neu.
/etc/rc wird dann automatisch die
richtigen Kommandos aufrufen, um die Quota-Dateien für
alle in /etc/rc.conf definierten Quotas
anzulegen.Normalerweise brauchen die Kommandos
&man.quotacheck.8;, &man.quotaon.8; oder
&man.quotaoff.8; nicht händisch aufgerufen werden,
obwohl man die entsprechenden Seiten im
Manual lesen sollte, um sich mit ihnen vertraut
zu machen.Setzen von Quota-LimitsDisk QuotasLimitsStellen Sie sicher, dass Quotas auch tatsächlich
aktiviert sind:&prompt.root; quota -vFür jedes Dateisystem, auf dem Quotas aktiviert sind,
sollte eine Zeile mit der Plattenauslastung und den
aktuellen Quota-Limits zu sehen sein.Mit edquota können nun
Quota-Limits zugewiesen werden.Mehrere Möglichkeiten stehen zur Verfügung, um Limits für
den Plattenplatz, den ein Benutzer oder eine Gruppe verbrauchen
kann, oder die Anzahl der Dateien, die angelegt werden dürfen,
festzulegen. Die Limits können auf dem Plattenplatz
(Block-Quotas), der Anzahl der Dateien (Inode-Quotas) oder
einer Kombination von beiden basieren.
Jedes Limit wird weiterhin in zwei Kategorien geteilt:
Hardlimits und Softlimits.HardlimitEin Hardlimit kann nicht überschritten werden.
Hat der Benutzer einmal ein Hardlimit erreicht, so kann er
auf dem betreffenden Dateisystem keinen weiteren Platz mehr
beanspruchen. Hat ein Benutzer beispielsweise ein Hardlimit
von 500 Kilobytes auf einem Dateisystem und benutzt davon
490 Kilobyte, so kann er nur noch 10 weitere Kilobytes
beanspruchen. Der Versuch, weitere 11 Kilobytes zu beanspruchen,
wird fehlschlagen.SoftlimitSoftlimits können für eine
befristete Zeit überschritten werden. Diese Frist
beträgt in der Grundeinstellung
eine Woche. Hat der Benutzer das Softlimit über die
Frist hinaus überschritten, so wird das Softlimit in
ein Hardlimit umgewandelt und der Benutzer kann
keinen weiteren Platz mehr beanspruchen. Wenn er einmal
das Softlimit unterschreitet, wird die Frist wieder
zurückgesetzt.Im folgenden Beispiel wird das Quota des Benutzerkonto
test bearbeitet.
Wenn edquota aufgerufen wird,
wird der in EDITOR definierte Editor
aufgerufen, um die Quota-Limts zu konfigurieren. Der
Standard-Editor ist vi.&prompt.root; edquota -u test
Quotas for user test:
/usr: kbytes in use: 65, limits (soft = 50, hard = 75)
inodes in use: 7, limits (soft = 50, hard = 60)
/usr/var: kbytes in use: 0, limits (soft = 50, hard = 75)
inodes in use: 0, limits (soft = 50, hard = 60)Für jedes Dateisystem, auf dem Quotas aktiv sind,
sind zwei Zeilen zu sehen. Eine repräsentiert die
Block-Quotas und die andere die Inode-Quotas. Um ein Limit zu
modifizieren, ändern Sie einfach den angezeigten Wert. Um
beispielsweise das Blocklimit von /usr
auf ein Softlimit von 500 und ein Hardlimit
von 600 zu erhöhen, ändern Sie die Zeile
wie folgt:/usr: kbytes in use: 65, limits (soft = 500, hard = 600)Die neuen Limits sind wirksam, sobald der Editor verlassen
wird.Manchmal ist es wünschenswert, die Limits für eine Reihe
von Benutzern zu setzen. Dazu weisen Sie zunächst einem
Benutzer das gewünschte Quota-Limit zu. Anschließend benutzen
Sie , um das Quota auf einen bestimmten
Bereich von Benutzer-IDs (UID) zu
duplizieren. Der folgende Befehl dupliziert die Quota-Limits
auf die UIDs 10000 bis
19999:&prompt.root; edquota -p test 10000-19999Weitere Informationen finden Sie in
&man.edquota.8;.Überprüfen von Quota-Limits und PlattennutzungDisk QuotasüberprüfenUm die
Limits oder die Plattennutzung individueller Benutzer und
Gruppen zu überprüfen, kann &man.quota.1; benutzt werden. Ein
Benutzer kann nur die eigenen Quotas und die Quotas der
Gruppe, der er angehört untersuchen. Nur der Superuser darf
sich alle Limits ansehen. Mit &man.repquota.8; erhalten Sie
eine Zusammenfassung von allen Limits und der
Plattenausnutzung für alle Dateisysteme, auf denen Quotas
aktiv sind.In der Ausgabe von &man.quota.1; werden Dateisysteme, auf
denen ein Benutzer keinen Platz verbraucht, nicht angezeigt,
auch wenn diesem Quotas zugewiesen wurden. Benutzen Sie
um solche Dateisysteme ebenfalls
anzuzeigen. Das folgende Beispiel zeigt die Ausgabe von
quota -v für einen Benutzer, der
Quota-Limits auf zwei Dateisystemen besitzt:Disk quotas for user test (uid 1002):
Filesystem usage quota limit grace files quota limit grace
/usr 65* 50 75 5days 7 50 60
/usr/var 0 50 75 0 50 60grace periodIm Dateisystem /usr liegt der Benutzer
momentan 15 Kilobytes über dem Softlimit von
50 Kilobytes und hat noch 5 Tage seiner Frist übrig.
Der Stern * zeigt an, dass der
Benutzer sein Limit überschritten hat.Quotas über NFSNFSQuotas werden von dem Quota-Subsystem auf dem
NFS-Server erzwungen. Der
&man.rpc.rquotad.8; Daemon stellt quota die
Quota Informationen auf dem NFS-Client
zur Verfügung, so dass Benutzer auf diesen Systemen ihre
Quotas abfragen können.Sie aktivieren rpc.rquotad auf dem
NFS-Server, indem Sie das Zeichen
# auf folgender Zeile in
/etc/inetd.conf entfernen:rquotad/1 dgram rpc/udp wait root /usr/libexec/rpc.rquotad rpc.rquotadAnschließend starten Sie inetd
neu:&prompt.root; service inetd restartPartitionen verschlüsselnLuckyGreenBeigetragen von shamrock@cypherpunks.toPartitionenverschlüsseln&os; bietet ausgezeichnete Möglichkeiten, Daten vor
unberechtigten Zugriffen zu schützen. Wenn das
Betriebssystem läuft, schützen Zugriffsrechte und
vorgeschriebene Zugriffskontrollen (MAC) (siehe )
die Daten. Die Zugriffskontrollen des Betriebssystems
schützen allerdings nicht vor einem Angreifer, der
Zugriff auf den Rechner hat. Der Angreifer
kann eine Festplatte in ein anderes System einbauen
und dort die Daten analysieren.Die für &os; verfügbaren kryptografischen Subsysteme,
GEOM Based Disk Encryption (gbde)
und geli sind in der Lage, Daten auf
Dateisystemen auch vor hoch motivierten Angreifern zu
schützen, die über erhebliche Mittel verfügen.
Dieser Schutz ist unabhängig von der Art und Weise, durch
die ein Angreifer Zugang zu einer Festplatte oder zu einem
Rechner erlangt hat. Im Gegensatz zu anderen
Verschlüsselungsmethoden, bei denen einzelne Dateien
verschlüsselt werden, verschlüsseln
gbde und geli
transparent ganze Dateisysteme. Auf der Festplatte werden dabei
keine Daten im Klartext gespeichert.Dieses Kapitel zeigt, wie ein verschlüsseltes Dateisystem
unter &os; erstellt wird. Zunächst wird der Ablauf für
gbde beschrieben und anschließend
das gleiche Beispiel für geli.Plattenverschlüsselung mit
gbdeDas Ziel von &man.gbde.4; ist es, einen Angreifer vor eine
große Herausforderung zu stellen, um an die Daten einer
Festplatte zu gelangen. Falls jedoch der Rechner
kompromittiert wurde, während er im Betrieb war und das
Speichergerät aktiv verbunden war, oder wenn der Angreifer
eine gültige Passphrase kennt, bietet dieses System keinen
Schutz für die Daten der Festplatte. Daher ist es wichtig,
für die physische Sicherheit zu sorgen, während das System im
Betrieb ist. Außerdem muss die Passphrase für den
Verschlüsselungsmechanismus geschützt werden.&man.gbde.4; besitzt einige Funktionen um die Daten,
die in einem Sektor gespeichert sind, zu schützen. Es benutzt
128-Bit AES im
CBC-Modus, um die Daten eines Sektors zu
verschlüsseln. Jeder Sektor einer Festplatte wird mit einem
anderen AES-Schlüssel verschlüsselt.
Weitere Informationen zum kryptographischen Design und wie die
Schlüssel für einen Sektor aus der gegebenen Passphrase
ermittelt werden, finden Sie in &man.gbde.4;.&os; enthält ein Kernelmodul für
gbde, das wie folgt geladen werden
kann:&prompt.root; kldload geom_bdeWenn Sie einen angepassten Kernel verwenden, stellen Sie
sicher, dass folgende Zeile in der Kernelkonfigurationsdatei
enthalten ist:options GEOM_BDEDas folgende Beispiel beschreibt, wie eine Partition
auf einer neuen Festplatte verschlüsselt wird. Die
Partition wird in /private
eingehangen.Eine Partition mit gbde
verschlüsselnInstallieren der FestplatteInstallieren Sie die Festplatte wie in
beschrieben. Im Beispiel
verwenden wir die Partition /dev/ad4s1c.
Die Gerätedateien
/dev/ad0s1*
sind Standard-Partitionen des &os;-Systems.&prompt.root; ls /dev/ad*
/dev/ad0 /dev/ad0s1b /dev/ad0s1e /dev/ad4s1
/dev/ad0s1 /dev/ad0s1c /dev/ad0s1f /dev/ad4s1c
/dev/ad0s1a /dev/ad0s1d /dev/ad4Verzeichnis für gbde-Lock-Dateien anlegen&prompt.root; mkdir /etc/gbdeDie Lock-Dateien sind für den Zugriff von
gbde auf verschlüsselte
Partitionen notwendig. Ohne die Lock-Dateien können
die Daten nur mit erheblichem manuellen Aufwand wieder
entschlüsselt werden (dies wird auch von der Software
nicht unterstützt). Jede verschlüsselte
Partition benötigt eine gesonderte Lock-Datei.Vorbereiten der gbde-PartitionEine von gbde benutzte
Partition muss einmalig initialisiert werden, bevor
sie benutzt werden kann. Das Programm öffnet eine Vorlage
im Standard-Editor, um verschiedene Optionen zu
konfigurieren. Setzen Sie sector_size
auf 2048, wenn Sie
UFS benutzen:&prompt.root; gbde init /dev/ad4s1c -i -L /etc/gbde/ad4s1c.lock# $FreeBSD: src/sbin/gbde/template.txt,v 1.1.36.1 2009/08/03 08:13:06 kensmith Exp $
#
# Sector size is the smallest unit of data which can be read or written.
# Making it too small decreases performance and decreases available space.
# Making it too large may prevent filesystems from working. 512 is the
# minimum and always safe. For UFS, use the fragment size
#
sector_size = 2048
[...]Sobald die Änderungen gespeichert werden, wird der
Benutzer zweimal aufgefordert, die zum Schutz der Daten
verwendete Passphrase einzugeben. Die Passphrase muss beide Mal gleich
eingegeben werden. Die Sicherheit der Daten hängt allein
von der Qualität der gewählten Passphrase ab. Die Auswahl
einer sicheren und leicht zu merkenden Passphrase wird auf
der Webseite
http://world.std.com/~reinhold/diceware.html
beschrieben.Bei der Initialisierung wird eine Lock-Datei für die
gbde-Partition erstellt. In
diesem Beispiel
/etc/gbde/ad4s1c.lock. Lock-Dateien
müssen die Dateiendung .lock aufweisen,
damit sie von /etc/rc.d/gbde, dem
Startskript von gbde, erkannt
werden.Lock-Dateien müssen immer zusammen mit den
verschlüsselten Dateisystemen gesichert werden. Ohne
die Lock-Datei können Sie allerdings nicht auf die
verschlüsselten Daten zugreifen.Einbinden der verschlüsselten Partition
in den Kernel&prompt.root; gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c.lockDieses Kommando fragt die Passphrase ab, die bei der
Initialisierung der verschlüsselten Partition eingegeben
wurde. Das neue verschlüsselte Gerät erscheint danach in
/dev als
/dev/device_name.bde:&prompt.root; ls /dev/ad*
/dev/ad0 /dev/ad0s1b /dev/ad0s1e /dev/ad4s1
/dev/ad0s1 /dev/ad0s1c /dev/ad0s1f /dev/ad4s1c
/dev/ad0s1a /dev/ad0s1d /dev/ad4 /dev/ad4s1c.bdeDateisystem auf dem verschlüsselten Gerät
anlegenNachdem die verschlüsselte Partition im Kernel
eingebunden ist, kann ein Dateisystem erstellt werden.
Dieses Beispiel erstellt ein
UFS-Dateisystem mit aktivierten Soft
Updates. Achten Sie darauf, die Partition mit der
Erweiterung
*.bde
zu benutzen:&prompt.root; newfs -U -O2 /dev/ad4s1c.bdeEinhängen der verschlüsselten PartitionLegen Sie einen Mountpunkt für das
verschlüsselte Dateisystem an. Hängen Sie anschließend
das Dateisystem ein:&prompt.root; mkdir /private
&prompt.root; mount /dev/ad4s1c.bde /privateÜberprüfen des verschlüsselten
DateisystemsDas verschlüsselte Dateisystem sollte jetzt erkannt
und benutzt werden können:&prompt.user; df -H
Filesystem Size Used Avail Capacity Mounted on
/dev/ad0s1a 1037M 72M 883M 8% /
/devfs 1.0K 1.0K 0B 100% /dev
/dev/ad0s1f 8.1G 55K 7.5G 0% /home
/dev/ad0s1e 1037M 1.1M 953M 0% /tmp
/dev/ad0s1d 6.1G 1.9G 3.7G 35% /usr
/dev/ad4s1c.bde 150G 4.1K 138G 0% /privateNach jedem Neustart müssen verschlüsselte
Dateisysteme dem Kernel wieder bekannt gemacht werden,
auf Fehler überprüft werden und eingehangen
werden. Für die dazu nötigen Schritte fügen Sie folgende
Zeilen in /etc/rc.conf hinzu:gbde_autoattach_all="YES"
gbde_devices="ad4s1c"
gbde_lockdir="/etc/gbde"Durch diese Argumente muss beim Systemstart auf der
Konsole die Passphrase eingegeben werden. Erst nach Eingabe
der korrekten Passphrase wird die verschlüsselte Partition
automatisch in den Verzeichnisbaum eingehängt. Weitere
Bootoptionen von gbde finden Sie
in &man.rc.conf.5;.sysinstall ist nicht
kompatibel mit
gbde-verschlüsselten Geräten.
Bevor sysinstall gestartet
wird, müssen alle *.bde Geräte vom
Kernel getrennt werden, da sonst der Kernel bei der
ersten Suche nach Geräten abstürzt. Um das verschlüsselte
Gerät aus dem Beispiel zu trennen, benutzen Sie das
folgende Kommando:&prompt.root; gbde detach /dev/ad4s1cPlattenverschlüsselung mit geliDanielGerzoBeigetragen von Mit geli steht eine alternative
kryptografische GEOM-Klasse zur Verfügung.
Dieses Werkzeug unterstützt unterschiedliche Fähigkeiten und
verfolgt einen anderen Ansatz für die Verschlüsselung.
geli bietet die folgenden
Funktionen:Die Nutzung des &man.crypto.9;-Frameworks. Wenn das
System über kryptografische Hardware verfügt, wird diese
von geli automatisch verwendet.Die Unterstützung verschiedener kryptografischer
Algorithmen, wie AES, Blowfish, und
3DES.Die Möglichkeit, die root-Partition zu
verschlüsseln. Um auf die verschlüsselte
root-Partition zugreifen zu können, muss beim
Systemstart die Passphrase eingegeben werden.Erlaubt den Einsatz von zwei voneinander unabhängigen
Schlüsseln.Es ist durch einfache Sektor-zu-Sektor-Verschlüsselung
sehr schnell.Die Möglichkeit, Master-Keys zu sichern und
wiederherzustellen. Wenn ein Benutzer seinen Schlüssel
zerstört, kann er über seinen zuvor gesicherten
Schlüssel wieder auf seine Daten zugreifen.geli erlaubt es, Platten mit
einem zufälligen Einmal-Schlüssel einzusetzen,
was für Swap-Partitionen und
temporäre Dateisysteme interessant ist.Weitere Funktionen und Anwendungsbeispiele finden Sie in
&man.geli.8;.Das folgende Beispiel beschreibt, wie eine
Schlüsseldatei erzeugt wird, die als Teil des Master-Keys für
den Verschlüsselungs-Provider verwendet wird, der unter
/private in den Verzeichnisbaum
eingehängt wird. Die Schlüsseldatei liefert zufällige Daten,
die für die Verschlüsselung des Master-Keys benutzt werden.
Zusätzlich wird der Master-Key durch eine Passphrase
geschützt. Die Sektorgröße des Providers beträgt 4 KB.
Das Beispiel beschreibt, wie Sie einen
geli-Provider aktivieren, ein vom ihm
verwaltetes Dateisystem erzeugen, es mounten, mit ihm arbeiten
und wie Sie es schließlich wieder unmounten und den Provider
deaktivieren.Eine Partition mit geli
verschlüsselnLaden der
geli-UnterstützungDie Unterstützung für geli wird
über ein ladbares Kernelmodul zur Verfügung gestellt.
Damit das Modul automatisch beim Booten geladen wird,
fügen Sie folgende Zeile in
/boot/loader.conf ein:geom_eli_load="YES"Um das Modul direkt zu laden:&prompt.root; kldload geom_eliStellen Sie bei einer angepassten
Kernelkonfigurationsdatei sicher, dass diese Zeilen
enthalten sind:options GEOM_ELI
device cryptoErzeugen des Master-KeysDie folgenden Befehle erzeugen einen Master-Key
(/root/da2.key), der durch eine
Passphrase geschützt ist. Die Datenquelle für die
Schlüsseldatei ist /dev/random. Um
eine bessere Leistung zu erzielen beträgt die Sektorgröße
des Providers (/dev/da2.eli)
4 KB:&prompt.root; dd if=/dev/random of=/root/da2.key bs=64 count=1
&prompt.root; geli init -s 4096 -K /root/da2.key /dev/da2
Enter new passphrase:
Reenter new passphrase:Es ist nicht zwingend nötig, sowohl eine Passphrase
als auch eine Schlüsseldatei zu verwenden. Die
einzelnen Methoden können auch unabhängig
voneinander eingesetzt werden.Wird für die Schlüsseldatei
- angegeben, wird dafür die
Standardeingabe verwendet. Das folgende Kommando erzeugt
beispielsweise drei Schlüsseldateien:&prompt.root; cat keyfile1 keyfile2 keyfile3 | geli init -K - /dev/da2Aktivieren des Providers mit dem erzeugten
SchlüsselUm den Provider zu aktivieren, geben Sie die
Schlüsseldatei, den Namen des Laufwerks und die Passphrase
an:&prompt.root; geli attach -k /root/da2.key /dev/da2
Enter passphrase:Dadurch wird ein neues Gerät mit der Erweiterung
.eli angelegt:&prompt.root; ls /dev/da2*
/dev/da2 /dev/da2.eliDas neue Dateisystem erzeugenAls nächstes muss das Gerät mit dem
UFS-Dateisystem formatiert und an einen
vorhandenen Mountpunkt eingehängt werden:&prompt.root; dd if=/dev/random of=/dev/da2.eli bs=1m
&prompt.root; newfs /dev/da2.eli
&prompt.root; mount /dev/da2.eli /privateDas verschlüsselte Dateisystem sollte jetzt erkannt
und benutzt werden können:&prompt.root; df -H
Filesystem Size Used Avail Capacity Mounted on
/dev/ad0s1a 248M 89M 139M 38% /
/devfs 1.0K 1.0K 0B 100% /dev
/dev/ad0s1f 7.7G 2.3G 4.9G 32% /usr
/dev/ad0s1d 989M 1.5M 909M 0% /tmp
/dev/ad0s1e 3.9G 1.3G 2.3G 35% /var
/dev/da2.eli 150G 4.1K 138G 0% /privateWenn Sie nicht mehr mit dem verschlüsselten
Dateisystem arbeiten und die unter /private eingehängte
Partition daher nicht mehr benötigen, sollten
Sie diese unmounten und den
geli-Verschlüsselungs-Provider
wieder deaktivieren:&prompt.root; umount /private
&prompt.root; geli detach da2.eli&os; verfügt über ein rc.d-Skript,
das dass Einhängen von verschlüsselten Geräten beim Booten
deutlich vereinfacht. Für dieses Beispiel, fügen Sie
folgende Zeilen in /etc/rc.conf
hinzu:geli_devices="da2"
geli_da2_flags="-k /root/da2.key"Dies konfiguriert /dev/da2 als
geli-Provider mit dem Master-Key
/root/da2.key. Das System wird den
Provider automatisch deaktivieren, bevor es heruntergefahren
wird. Während des Startvorgangs fordert das Skript die
Passphrase an, bevor der Provider aktiviert wird. Vor und
nach der Eingabeaufforderung für die Passphrase werden noch
weitere Kernelmeldungen angezeigt. Achten Sie sorgfältig
auf die Eingabeaufforderung zwischen den anderen Meldungen,
falls es zu Problemen beim Startvorgang kommt. Sobald die
richtige Passphrase eingegeben wurde, wird der Provider
aktiviert. Anschließend werden die Dateisysteme gemäß
/etc/fstab eingehängt. Lesen Sie
wenn Sie wissen möchten,
wie Sie ein Dateisystem konfigurieren, sodass es beim
booten automatisch gestartet wird.Den Auslagerungsspeicher verschlüsselnChristianBrüfferGeschrieben von AuslagerungsspeicherverschlüsselnWie die Verschlüsselung von Partitionen, wird auch der
Auslagerungsspeicher verschlüsselt, um sensible Informationen
zu schützen. Stellen Sie sich eine Anwendung vor, die mit
Passwörtern umgeht. Solange sich diese Passwörter im
Arbeitsspeicher befinden, werden sie nicht auf die Festplatte
geschrieben und nach einem Neustart gelöscht. Falls &os; jedoch
damit beginnt Speicher auszulagern, um Platz für andere
Anwendungen zu schaffen, können die Passwörter unverschlüsselt
auf die Festplatte geschrieben werden. Die Verschlüsselung des
Auslagerungsspeichers kann in solchen Situationen Abhilfe
schaffen.Dieser Abschnitt zeigt die Konfiguration eines
verschlüsselten Auslagerungsspeichers mittels &man.gbde.8; oder
&man.geli.8;. In den Beispielen repräsentiert
/dev/ada0s1b die Swap-Partition.Konfiguration eines verschlüsselten
AuslagerungsspeichersSwap-Partitionen werden standardmäßig nicht verschlüsselt.
Sie sollten daher alle sensiblen Daten im Auslagerungsspeicher
löschen, bevor Sie fortfahren. Führen Sie folgenden Befehl aus,
um die Swap-Partition mit Zufallsdaten zu überschreiben:&prompt.root; dd if=/dev/random of=/dev/ad0s1b bs=1mUm den Auslagerungsspeicher mit &man.gbde.8; zu
verschlüsseln, fügen Sie in /etc/fstab
das Suffix .bde an den Gerätenamen der
Swap-Partition hinzu:# Device Mountpoint FStype Options Dump Pass#
/dev/ad0s1b.bde none swap sw 0 0Wenn Sie &man.geli.8; benutzen, verwenden Sie stattdessen
das Suffix .eli, um den
Auslagerungsspeicher zu verschlüsseln:# Device Mountpoint FStype Options Dump Pass#
/dev/ad0s1b.eli none swap sw 0 0In der Voreinstellung verschlüsselt &man.geli.8; mit
dem AES-Algorithmus und einer
Schlüssellänge von 128 Bit. Diese Voreinstellungen
können mittels geli_swap_flags in
/etc/rc.conf angepasst werden. Die
folgende Zeile weist das rc.d-Skript
encswap an, &man.geli.8;-Swap-Partitionen
mit dem Blowfish-Algorithmus und einer Schlüssellänge von
128 Bit zu verschlüsseln. Zusätzlich wird die
Sektorgröße auf 4 Kilobyte gesetzt und
detach on last close aktiviert:geli_swap_flags="-e blowfish -l 128 -s 4096 -d"Eine Auflistung möglicher Optionen für
onetime finden Sie in der Manualpage von
&man.geli.8;.Überprüfung des verschlüsselten
AuslagerungsspeichersNachdem das System neu gestartet wurde, kann die korrekte
Funktion des verschlüsselten Auslagerungsspeichers mit
swapinfo geprüft werden.Wenn Sie &man.gbde.8; einsetzen, erhalten Sie eine
Meldung ähnlich der folgenden:&prompt.user; swapinfo
Device 1K-blocks Used Avail Capacity
/dev/ad0s1b.bde 542720 0 542720 0%Wenn Sie &man.geli.8; einsetzen, erhalten Sie hingegen
eine Ausgabe ähnlich der folgenden:&prompt.user; swapinfo
Device 1K-blocks Used Avail Capacity
/dev/ad0s1b.eli 542720 0 542720 0%Highly Available Storage
(HAST)DanielGerzoBeigetragen von FreddieCashMit Beiträgen von Pawel JakubDawidekMichael W.LucasViktorPeterssonBenedictReuschlingÜbersetzt von HASThigh availabilityHochverfügbarkeit ist eine der Hauptanforderungen von
ernsthaften Geschäftsanwendungen und hochverfügbarer Speicher
ist eine Schlüsselkomponente in solchen Umgebungen. Highly
Available STorage (HAST) ist ein Framework
in &os;, welches die transparente Speicherung der gleichen
Daten über mehrere physikalisch getrennte Maschinen ermöglicht,
die über ein TCP/IP-Netzwerk verbunden sind.
HAST kann als ein netzbasiertes RAID1
(Spiegel) verstanden werden und ist dem DRBD®-Speichersystem
der GNU/&linux;-Plattform ähnlich. In Kombination mit anderen
Hochverfügbarkeitseigenschaften von &os; wie
CARP, ermöglicht es HAST,
hochverfügbare Speichercluster zu bauen, die in der Lage sind,
Hardwareausfällen zu widerstehen.Die Hauptmerkmale von HAST sind:Es kann zur Maskierung von
I/O-Fehlern auf lokalen Festplatten
eingesetzt werden.Dateisystem-unabhängig, was es erlaubt, jedes von &os;
unterstützte Dateisystem zu verwenden.Effiziente und schnelle Resynchronisation: es werden nur die
Blöcke synchronisiert, die während der Ausfallzeit eines
Knotens geändert wurden.Es kann in einer bereits bestehenden Umgebung eingesetzt
werden, um zusätzliche Redundanz zu erreichen.Zusammen mit CARP,
Heartbeat, oder anderen Werkzeugen, ist
es möglich, ein robustes und dauerhaftes Speichersystem zu
bauen.Nachdem Sie diesen Abschnitt gelesen haben, werden Sie
folgendes wissen:Was HAST ist, wie es funktioniert und
welche Eigenschaften es besitzt.Wie man HAST unter &os; aufsetzt und
verwendet.Wie man CARP und &man.devd.8;
kombiniert, um ein robustes Speichersystem zu bauen.Bevor Sie diesen Abschnitt lesen, sollten Sie:die Grundlagen von &unix; und &os; verstanden haben
().wissen, wie man Netzwerkschnittstellen und andere
Kernsysteme von &os; konfiguriert ().ein gutes Verständnis der &os;-Netzwerkfunktionalität
besitzen ().Das HAST-Projekt wurde von der &os;
Foundation mit Unterstützung der OMCnet Internet Service GmbH
und TransIP BV
gesponsert.HAST im EinsatzHAST bietet eine synchrone Replikation
auf Blockebene zwischen zwei Maschinen: einem
primary, auch bekannt als
master Knoten, sowie dem
secondary, oder slave
Knoten. Diese beiden Maschinen zusammen werden als Cluster
bezeichnet.Da HAST in einer
primär-sekundär-Konfiguration funktioniert, ist immer nur ein
Knoten des Clusters zu jeder Zeit aktiv. Der primäre Knoten,
auch active genannt, ist derjenige, der
alle I/O-Anfragen verarbeitet, die an die
HAST-Schnittstelle gesendet werden. Der
sekundäre Knoten wird automatisch vom primären Knoten aus
synchronisiert.Die physischen Komponenten des
HAST-Systems sind die lokale Platte am
Primärknoten und die entfernte Platte am
Sekundärknoten.HAST arbeitet synchron auf Blockebene,
was es für Dateisysteme und Anwendungen transparent macht.
HAST stellt gewöhnliche
GEOM-Provider in
/dev/hast/ für die Verwendung durch
andere Werkzeuge oder Anwendungen zur Verfügung. Es gibt
keinen Unterschied zwischen dem Einsatz von
HAST bereitgestellten Geräten und
herkömmlichen Platten oder Partitionen.Jede Schreib-, Lösch- oder Entleerungsoperation wird an
die lokale und über TCP/IP zu der entfernt
liegenden Platte gesendet. Jede Leseoperation wird von der
lokalen Platte durchgeführt, es sei denn, die lokale Platte
ist nicht aktuell oder es tritt ein
I/O-Fehler auf. In solchen Fällen wird die
Leseoperation an den Sekundärknoten geschickt.HAST versucht, eine schnelle
Fehlerbereinigung zu gewährleisten. Aus diesem Grund ist es
wichtig, die Synchronisationszeit nach dem Ausfall eines
Knotens zu reduzieren. Um eine schnelle Synchronisation zu
ermöglichen, verwaltet HAST eine Bitmap von
unsauberen Bereichen auf der Platte und synchronisiert nur
diese während einer regulären Synchronisation (mit Ausnahme
der initialen Synchronisation).Es gibt viele Wege, diese Synchronisation zu behandeln.
HAST implementiert mehrere Replikationsarten, um
unterschiedliche Methoden der Synchronisation zu realisieren:memsync: Dieser Modus meldet Schreiboperationen als
vollständig, wenn die lokale Schreiboperation beendet ist
und der entfernt liegende Knoten die Ankunft der Daten
bestätigt hat, jedoch bevor die Daten wirklich gespeichert
wurden. Die Daten werden auf dem entfernt liegenden Knoten
direkt nach dem Senden der Bestätigung gespeichert. Dieser
Modus ist dafür gedacht, Latenzen zu verringern und
zusätzlich eine gute Verlässlichkeit zu bieten.fullsync: Dieser Modus meldet
Schreiboperationen als vollständig, wenn sowohl die
lokale, als auch die entfernte Schreiboperation
abgeschlossen wurde. Dies ist der sicherste und
zugleich der langsamste Replikationsmodus. Er stellt
den momentanen Standardmodus dar.async: Dieser Modus meldet
Schreiboperationen als vollständig, wenn lokale
Schreibvorgänge abgeschlossen wurden. Dies ist der
schnellste und gefährlichste Replikationsmodus. Er
sollte nur verwendet werden, wenn die Latenz zu einem
entfernten Knoten bei einer Replikation zu hoch ist
für andere Modi.HAST-KonfigurationDas HAST-Framework besteht aus mehreren
Komponenten:Dem &man.hastd.8;-Daemon, welcher für
Datensynchronisation verantwortlich ist. Wenn dieser
Daemon gestartet wird, wird automatisch
geom_gate.ko geladen.Dem &man.hastctl.8; Management-Werkzeug.Der Konfigurationsdatei &man.hast.conf.5;. Diese
Datei muss vorhanden sein, bevor
hastd gestartet wird.Alternativ lässt sich die
GEOM_GATE-Unterstützung in den Kernel
statisch einbauen, indem folgende Zeile zur
Kernelkonfigurationsdatei hinzugefügt wird. Anschließend muss
der Kernel, wie in beschrieben,
neu gebaut werden:options GEOM_GATEDas folgende Beispiel beschreibt, wie man zwei Knoten als
master-slave / primary-secondary mittels
HAST konfiguriert, um Daten zwischen diesen
beiden auszutauschen. Die Knoten werden als
hasta mit der IP-Adresse
172.16.0.1 und hastb mit
der IP-Adresse
172.16.0.2 bezeichnet. Beide Knoten
besitzen eine dedizierte Festplatte
/dev/ad6 mit der gleichen Größe für den
HAST-Betrieb. Der
HAST-Pool, manchmal auch Ressource genannt,
oder der GEOM-Provider in
/dev/hast/ wird als
test bezeichnet.Die Konfiguration von HAST wird in
/etc/hast.conf vorgenommen. Diese Datei
sollte auf beiden Knoten gleich sein. Die einfachste Konfiguration
ist folgende:resource test {
on hasta {
local /dev/ad6
remote 172.16.0.2
}
on hastb {
local /dev/ad6
remote 172.16.0.1
}
}Fortgeschrittene Konfigurationsmöglichkeiten finden Sie in
&man.hast.conf.5;.Es ist ebenfalls möglich, den Hostnamen in den
remote-Anweisungen zu verwenden, falls
die Rechner aufgelöst werden können und in
/etc/hosts, oder im lokalen
DNS definiert sind.Sobald die Konfiguration auf beiden Rechnern vorhanden
ist, kann ein HAST-Pool erstellt werden.
Lassen Sie diese Kommandos auf beiden Knoten ablaufen, um die
initialen Metadaten auf die lokale Platte zu schreiben und
starten Sie anschliessend &man.hastd.8;:&prompt.root; hastctl create test
&prompt.root; service hastd onestartEs ist nicht möglich,
GEOM-Provider
mit einem bereits bestehenden Dateisystem zu verwenden, um
beispielsweise einen bestehenden Speicher in einen von
HAST verwalteten Pool zu konvertieren.
Dieses Verfahren muss einige Metadaten auf den Provider
schreiben und dafür würde nicht genug freier Platz zur
Verfügung stehen.Die Rolle eines HAST Knotens, primary
oder secondary, wird vom einem
Administrator, oder einer Software wie
Heartbeat, mittels
&man.hastctl.8; festgelegt. Auf dem primären Knoten
hasta geben Sie diesen Befehl ein:&prompt.root; hastctl role primary testGeben Sie folgendes Kommando auf dem sekundären Knoten
hastb ein:&prompt.root; hastctl role secondary testÜberprüfen Sie das Ergebnis mit hastctl
auf beiden Knoten:&prompt.root; hastctl status testÜberprüfen Sie die status-Zeile. Wird
hier degraded angezeigt, dann ist etwas mit
der Konfigurationsdatei nicht in Ordnung. Auf jedem Konten
sollte complete angezeit werden, was
bedeutet, dass die Synchronisation zwischen den beiden Knoten
gestartet wurde. Die Synchronisierung ist abgeschlossen, wenn
hastctl status meldet, dass die
dirty-Bereiche 0 Bytes betragen.Der nächste Schritt ist, ein Dateisystem auf dem
GEOM-Provider anzulegen und dieses ins
System einzuhängen. Dies muss auf dem
primary-Knoten durchgeführt werden.
Die Erstellung des Dateisystems kann ein paar Minuten dauern,
abhängig von der Größe der Festplatte. Dieses Beispiel
erstellt ein UFS-Dateisystem auf
/dev/hast/test:&prompt.root; newfs -U /dev/hast/test
&prompt.root; mkdir /hast/test
&prompt.root; mount /dev/hast/test/hast/testSobald das HAST-Framework richtig
konfiguriert wurde, besteht der letzte Schritt nun darin,
sicherzustellen, dass HAST während des
Systemstarts automatisch gestartet wird. Fügen Sie diese
Zeile in /etc/rc.conf hinzu:hastd_enable="YES"Failover-KonfigurationDas Ziel dieses Beispiels ist, ein robustes
Speichersystem zu bauen, welches Fehlern auf einem
beliebigen Knoten widerstehen kann. Wenn der
primary-Knoten ausfällt, ist der
secondary-Knoten da, um nahtlos
einzuspringen, das Dateisystem zu prüfen, einzuhängen und
mit der Arbeit fortzufahren, ohne dass auch nur ein
einzelnes Bit an Daten verloren geht.Um diese Aufgabe zu bewerkstelligen, wird das
Common Address Redundancy
Protocol (CARP)
benutzt, welches ein automatisches Failover auf der
IP-Schicht ermöglicht.
CARP erlaubt es mehreren Rechnern im
gleichen Netzsegment, die gleiche
IP-Adresse zu verwenden. Setzen Sie
CARP auf beiden Knoten des Clusters
anhand der Dokumentation in auf.
In diesem Beispiel hat jeder Knoten seine eigene
Management IP-Adresse und die geteilte
IP-Adresse
172.16.0.254. Der primäre
HAST-Knoten des Clusters muss der
CARP-Masterknoten sein.Der HAST-Pool, welcher im vorherigen Abschnitt
erstellt wurde, ist nun bereit für den Export über das
Netzwerk auf den anderen Rechner. Dies kann durch den Export
über NFS oder Samba
erreicht werden, indem die geteilte IP-Addresse
172.16.0.254 verwendet wird. Das einzige
ungelöste Problem ist der automatische Failover, sollte der
primäre Knoten einmal ausfallen.Falls die CARP-Schnittstelle
aktiviert oder deaktiviert wird, generiert das
&os;-Betriebssystem ein &man.devd.8;-Ereignis, was es
ermöglicht, Zustandsänderungen auf den
CARP-Schnittstellen zu überwachen. Eine
Zustandsänderung auf der
CARP-Schnittstelle ist ein Indiz dafür,
dass einer der Knoten gerade ausgefallen oder wieder
verfügbar ist. Diese Zustandsänderungen machen es möglich,
ein Skript zu starten, welches automatisch den HAST-Failover
durchführt.Um Zustandsänderungen auf der
CARP-Schnittstelle abzufangen, müssen
diese Zeilen in /etc/devd.conf auf
jedem Knoten hinzugefügt werden:notify 30 {
match "system" "IFNET";
match "subsystem" "carp0";
match "type" "LINK_UP";
action "/usr/local/sbin/carp-hast-switch master";
};
notify 30 {
match "system" "IFNET";
match "subsystem" "carp0";
match "type" "LINK_DOWN";
action "/usr/local/sbin/carp-hast-switch slave";
};Wenn auf dem System &os; 10 oder höher eingesetzt
wird, ersetzen Sie carp0 durch den
Namen der konfigurierten Schnittstelle für
CARP.Starten Sie &man.devd.8; auf beiden Knoten neu, um
die neue Konfiguration wirksam werden zu lassen:&prompt.root; service devd restartWenn die Schnittstelle
aktiviert oder deaktiviert wird, erzeugt das System eine
Meldung, was es dem &man.devd.8;-Subsystem ermöglicht, ein
automatisches Failover-Skript zu starten,
/usr/local/sbin/carp-hast-switch.
Weitere Informationen zu dieser Konfiguration finden Sie in
&man.devd.conf.5;.Es folgt ein Beispiel für ein automatisches
Failover-Skript:#!/bin/sh
# Original script by Freddie Cash <fjwcash@gmail.com>
# Modified by Michael W. Lucas <mwlucas@BlackHelicopters.org>
# and Viktor Petersson <vpetersson@wireload.net>
# The names of the HAST resources, as listed in /etc/hast.conf
resources="test"
# delay in mounting HAST resource after becoming master
# make your best guess
delay=3
# logging
log="local0.debug"
name="carp-hast"
# end of user configurable stuff
case "$1" in
master)
logger -p $log -t $name "Switching to primary provider for ${resources}."
sleep ${delay}
# Wait for any "hastd secondary" processes to stop
for disk in ${resources}; do
while $( pgrep -lf "hastd: ${disk} \(secondary\)" > /dev/null 2>&1 ); do
sleep 1
done
# Switch role for each disk
hastctl role primary ${disk}
if [ $? -ne 0 ]; then
logger -p $log -t $name "Unable to change role to primary for resource ${disk}."
exit 1
fi
done
# Wait for the /dev/hast/* devices to appear
for disk in ${resources}; do
for I in $( jot 60 ); do
[ -c "/dev/hast/${disk}" ] && break
sleep 0.5
done
if [ ! -c "/dev/hast/${disk}" ]; then
logger -p $log -t $name "GEOM provider /dev/hast/${disk} did not appear."
exit 1
fi
done
logger -p $log -t $name "Role for HAST resources ${resources} switched to primary."
logger -p $log -t $name "Mounting disks."
for disk in ${resources}; do
mkdir -p /hast/${disk}
fsck -p -y -t ufs /dev/hast/${disk}
mount /dev/hast/${disk} /hast/${disk}
done
;;
slave)
logger -p $log -t $name "Switching to secondary provider for ${resources}."
# Switch roles for the HAST resources
for disk in ${resources}; do
if ! mount | grep -q "^/dev/hast/${disk} on "
then
else
umount -f /hast/${disk}
fi
sleep $delay
hastctl role secondary ${disk} 2>&1
if [ $? -ne 0 ]; then
logger -p $log -t $name "Unable to switch role to secondary for resource ${disk}."
exit 1
fi
logger -p $log -t $name "Role switched to secondary for resource ${disk}."
done
;;
esacIm Kern führt das Skript die folgenden Aktionen durch,
sobald ein Knoten zum Master wird:Es ernennt den HAST-Pool als den
primären für einen gegebenen Knoten.Es prüft das Dateisystem, dass auf dem
HAST-Pool erstellt wurde.Es hängt den Pool ins System ein.Wenn ein Knoten zum Sekundären ernannt wird:Hängt es den HAST-Pool aus dem
Dateisystem aus.Degradiert es den HAST-Pool zum
sekundären.Dieses Skript ist nur ein Beispiel für eine mögliche
Lösung. Es behandelt
nicht alle möglichen Szenarien, die auftreten können und
sollte erweitert bzw. abgeändert werden, so dass z.B.
benötigte Dienste gestartet oder gestoppt werden.Für dieses Beispiel wurde ein
UFS-Dateisystem verwendet. Um die Zeit
für die Wiederherstellung zu verringern, kann ein
UFS mit Journal oder ein
ZFS-Dateisystem benutzt werden.Weitere detaillierte Informationen mit zusätzlichen
Beispielen können unter
http://wiki.FreeBSD.org/HAST abgerufen
werden.FehlerbehebungHAST sollte generell ohne Probleme
funktionieren. Jedoch kann es, wie bei jeder anderen Software auch,
zu gewissen Zeiten sein, dass sie sich nicht so verhält wie
angegeben. Die Quelle dieser Probleme kann unterschiedlich sein,
jedoch sollte als Faustregel gewährleistet werden, dass die
Zeit für alle Knoten im Cluster synchron läuft.Für die Fehlersuche bei HAST sollte
die Anzahl an Debugging-Meldungen von &man.hastd.8; erhöht
werden. Dies kann durch das Starten von
hastd mit -d erreicht
werden. Diese Option kann mehrfach angegeben werden, um die
Anzahl an Meldungen weiter
zu erhöhen. Sie sollten ebenfalls die Verwendung von
-F in Erwägung ziehen, was
hastd im Vordergrund startet.Auflösung des Split-brain-Zustandssplit-brain bezeichnet eine
Situation, in der beide Knoten des Clusters nicht in der
Lage sind, miteinander zu kommunizieren und dadurch beide
als primäre Knoten fungieren. Dies ist ein
gefährlicher Zustand, weil es beiden Knoten erlaubt ist,
Änderungen an den Daten vorzunehmen, die miteinander nicht
in Einklang gebracht werden können. Diese Situation muss
vom Systemadministrator händisch bereinigt werden.Der Administrator muss entscheiden, welcher Knoten die
wichtigeren Änderungen besitzt, oder die Zusammenführung
manuell durchführen. Anschließend kann
HAST die volle Synchronisation mit
dem Knoten durchführen, der die beschädigten Daten enthält.
Um dies zu tun, geben Sie folgende Befehle auf dem Knoten
ein, der neu synchronisiert werden muss:&prompt.root; hastctl role init test
&prompt.root; hastctl create test
&prompt.root; hastctl role secondary test
Index: head/de_DE.ISO8859-1/books/handbook/mirrors/chapter.xml
===================================================================
--- head/de_DE.ISO8859-1/books/handbook/mirrors/chapter.xml (revision 48791)
+++ head/de_DE.ISO8859-1/books/handbook/mirrors/chapter.xml (revision 48792)
@@ -1,2660 +1,2660 @@
Bezugsquellen für &os;CD-ROM und DVD Verleger&os;-CDs und -DVDsDie &os;-CDs und -DVDs werden von vielen Online-Händlern
angeboten:
&os; Mall, Inc.
2420 Sand Creek Rd C-1 #347Brentwood, CA94513USA
Telefon: +1 925 240-6652
Fax: +1 925 674-0821
E-Mail: info@freebsdmall.com
WWW: http://www.freebsdmall.com/
Dr. Hinner EDV
Kochelseestr. 11D-81371MünchenGermany
Telefon: (0177) 428 419 0
WWW: http://www.hinner.de/linux/freebsd.html
Linux Distro UK
42 Wharfedale RoadMargateCT9 2TBUnited Kingdom
WWW: https://linux-distro.co.uk
The Linux Emporium
The Techno Centre, Puma WayParksideCV1 2TTUnited Kingdom
Telefon: +44 (0)247 615 8121
Fax: +44 1491 837016
WWW: http://linuxemporium.co.uk
LinuxCenter.Ru
Galernaya Street, 55Saint-Petersburg190000Russia
Telefon: +7-812-3125208
E-Mail: info@linuxcenter.ru
WWW: http://linuxcenter.ru/shop/freebsdFTP-ServerDie offiziellen Quellen von &os; sind mit anonymous FTP
über ein weltweites Netz von FTP-Spiegeln erhältlich.
Obwohl ftp://ftp.FreeBSD.org/pub/FreeBSD/
über eine gute Anbindung verfügt, sollten Sie einen
Spiegel in Ihrer Nähe verwenden (insbesondere, wenn Sie
selber einen Spiegel einrichten wollen).Sie können &os; auch über anonymous FTP von den
folgenden Spiegeln beziehen. Wenn Sie &os; über anonymous
FTP beziehen wollen, wählen Sie bitte einen Spiegel in Ihrer
Nähe. Die unter Haupt-Spiegel aufgeführten
Spiegel stellen normalerweise das komplette &os;-Archiv
(alle momentan erhältlichen Versionen für jede
unterstützte Architektur) zur Verfügung. Wahrscheinlich
geht es aber schneller, wenn Sie einen Spiegel in Ihrer
Nähe benutzen. Die Länder-Spiegel stellen die neusten
Versionen für die beliebtesten Architekturen bereit,
sie stellen aber unter Umständen nicht das komplette
&os;-Archiv bereit. Auf alle Server kann mit
anonymous FTP zugegriffen werden, einige Server bieten
auch andere Zugriffsmethoden an. Die zur Verfügung
stehenden Zugriffsmethoden sind bei jedem Server in Klammern
angegeben.
&chap.mirrors.ftp.index.inc;
&chap.mirrors.lastmod.inc;
&chap.mirrors.ftp.inc;
Anonymous CVS (veraltet)WarnungCVS wurde vom Projekt als veraltet eingestuft. Die
Benutzung wird nicht weiter empfohlen. Nutzen Sie stattdessen
Subversion.CTMCTMMit CTM
Abkürzung für CVS Through eMail
können Sie einen
entfernten Verzeichnisbaum mit einem zentralen Baum
synchronisieren. Es wurde extra zum Synchronisieren der &os;
Quellen entwickelt, obwohl es mit der Zeit vielleicht auch andere
Anwendungen geben wird. Zurzeit existiert leider so gut wie keine
Dokumentation zum Erstellen der Deltas. Wenn Sie Hilfe
benötigen oder CTM für
andere Zwecke einsetzen wollen, wenden Sie sich bitte an
die Mailingliste &a.ctm-users.name;.Warum soll ich CTM benutzen?Mit CTM erhalten Sie eine lokale
Kopie des &os;-Quellbaums, den es in mehreren
Varianten gibt. Sie können das ganze
Repository oder nur einen Zweig spiegeln. Wenn Sie ein aktiver
&os;-Entwickler mit einer schlechten oder gar keiner TCP/IP
Verbindung sind, oder die Änderungen einfach automatisch
zugesandt bekommen wollen, dann ist CTM
das Richtige für Sie. Für die Zweige mit der
meisten Aktivität müssen Sie sich täglich bis zu drei
Deltas beschaffen, Sie sollten allerdings erwägen, die
Deltas automatisch über E-Mail zu beziehen. Die
Größe der Updates wird so klein wie möglich
gehalten. Normalerweise sind sie kleiner als 5 kB, manchmal
sind sie 10-50 kB groß (etwa jedes 10. Update) und ab
und an werden Sie auch einmal ein Update mit 100 kB oder
mehr erhalten.Sie sollten sich über die Vorbehalte gegen die
Verwendung der Quellen anstelle eines offiziellen Releases
bewusst sein. Das trifft besonders auf &os.current; zu, lesen
Sie dazu bitte den Abschnitt
&os.current;.Was brauche ich, um CTM zu
benutzen?Zwei Sachen: Das CTM Programm und
die initialen Deltas, von denen aus Sie auf die
aktuellen Stände kommen.CTM ist schon seit der
Version 2.0 Teil des &os;-Basissystems. Sie finden es in
/usr/src/usr.sbin/ctm, wenn Sie eine Kopie
der Quellen besitzen.Die Deltas, die CTM verarbeitet,
können Sie über FTP oder E-Mail beziehen. Wenn Sie
über einen FTP Zugang zum Internet verfügen, erhalten
Sie die Deltas unter der folgenden URL:ftp://ftp.FreeBSD.org/pub/FreeBSD/CTM/Die Deltas werden auch von
CTM Spiegeln
bereitgehalten.Wechseln Sie in das passende Verzeichnisse zum Beispiel
src-cur für &os.current; und laden Sie
sich von dort die Deltas herunter.Sie können die Deltas auch über E-Mail
beziehen.Abonnieren Sie dazu eine der
CTM-Verteilerlisten.
Über &a.ctm-src-cur.name; erhalten Sie den kompletten
Subversion-Baum, über
&a.ctm-src-cur.name; erhalten Sie &os.current; und über
&a.ctm-src-9.name; erhalten Sie den &os;
9.X-Zweig. Wenn Sie nicht wissen, wie Sie eine der
Mailinglisten abonnieren, folgen Sie einem der Verweise
von oben oder besuchen Sie die Seite &a.mailman.lists.link;.
Weitere Informationen erhalten Sie, wenn Sie dort
auf die gewünschte Liste klicken.Benutzen Sie ctm_rmail, um die
CTM Updates, die Sie per
E-Mail empfangen, auszupacken und anzuwenden. Wenn Sie diesen
Prozess automatisiert ablaufen lassen möchten,
können Sie dazu einen Eintrag in
/etc/aliases verwenden. Genauere
Informationen finden Sie in der Manualpage von
ctm_rmail.Sie sollten die Mailingliste &a.ctm-announce.name;
abonnieren, egal wie Sie die
CTM-Deltas erhalten.
Ankündigungen, die den Betrieb des
CTM-Systems betreffen, werden
nur auf dieser Liste bekannt gegeben. Klicken Sie
auf den Namen der Liste oder besuchen Sie die Seite
&a.mailman.lists.link;, um diese Liste zu abonnieren.Initialisieren von CTMBevor Sie die CTM Deltas benutzen
können, brauchen Sie einen Startpunkt, auf den die
nachfolgenden Deltas angewendet werden.Sie können natürlich mit einem leeren Verzeichnis
beginnen. In diesem Fall benötigen Sie ein
XEmpty-Delta, mit dem Sie den
CTM-Verzeichnisbaum initialisieren.
Wenn Sie Glück haben, finden Sie ein
XEmpty-Delta, mit dem sie beginnen können,
auf einer der CDs Ihrer Distribution.Da die Verzeichnisbäume mehrere Megabyte groß
sind, sollten Sie nach Möglichkeit etwas schon vorhandenes
benutzen. Wenn Sie eine -RELEASE CD besitzen, können Sie
die Quellen von dieser CD benutzen. Sie ersparen sich damit das
Übertragen großer Datenmengen.Die Deltas, mit denen Sie beginnen können, enthalten ein
X in ihrem Namen, wie in
src-cur.3210XEmpty.gz. Hinter dem
X wird der Startpunkt der Deltas
angegeben, in diesem Fall steht Empty
für ein leeres Verzeichnis. Nach etwa 100 Deltas wird ein
neues XEmpty-Delta erstellt.
Mit ungefähr 75 Megabyte komprimierter Daten sind diese
XEmpty-Deltas übrigens sehr
groß.Nachdem Sie Ihren Startpunkt festgelegt haben, benötigen
Sie alle Deltas mit einer höheren Nummer.Benutzen von CTMUm ein Delta einzuspielen, benutzen Sie das folgende
Kommando:&prompt.root; cd /Pfad/zu/den/Quellen
&prompt.root; ctm -v -v /Pfad/zu/den/Deltas/src-xxx.*CTM kann mit Deltas arbeiten, die
mit gzip komprimiert wurden. Sie brauchen die
Deltas vorher nicht mit gunzip zu
dekomprimieren und sparen damit Plattenplatz.Ihr Quellbaum wird erst dann verändert, wenn
CTM die Deltas sauber verarbeiten
kann. Die Integrität der Deltas und ihre Anwendbarkeit auf
den Quellbaum lassen sich durch die Angabe des Schalters
-c überprüfen,
CTM ändert in diesem Fall Ihren
Quellbaum nicht.CTM verfügt über weitere
Kommandozeilenoptionen, Informationen dazu finden Sie in der
Manualpage oder dem Quellcode.Das war schon alles. Um Ihre Quellen aktuell zu halten,
verwenden Sie CTM jedes Mal, wenn Sie
neue Deltas bekommen.Löschen Sie die Deltas nicht, wenn Sie diese nur schwer
wieder beschaffen können. Behalten Sie sie für den
Fall, das etwas passiert. Auch wenn Sie nur Disketten besitzen,
sollten Sie erwägen, die Deltas mit
fdwrite zu sichern.Umgang mit lokalen ÄnderungenEntwickler wollen mit den Dateien im Quellbaum
experimentieren und diese verändern. In beschränkter
Weise werden lokale Änderungen von
CTM unterstützt. Wenn
CTM die Datei foo
bearbeiten will, überprüft es zuerst ob die Datei
foo.ctm existiert. Wenn diese Datei
existiert, werden Änderungen in ihr anstatt in
foo vorgenommen.Mit diesem Verfahren ist eine leichte Handhabung lokaler
Änderungen möglich. Kopieren Sie die Dateien, die Sie
ändern möchten, in Dateien, die das Suffix
.ctm tragen. Sie können dann
ungestört mit dem Quellcode arbeiten, während
CTM die
.ctm Dateien aktualisiert.Weitere CTM-OptionenWas wird aktualisiert?Eine Liste der Änderungen, die
CTM an Ihrem Quellbaum vornehmen
wird, erhalten Sie, wenn Sie die Option
angeben.Das ist nützlich, wenn Sie Logs über die
Änderungen führen wollen, geänderte Dateien vor-
oder nachbearbeiten wollen, oder einfach ein bisschen
paranoid sind.Sicherungen vor einer Aktualisierung erstellenSie wollen vielleicht die Dateien, die durch eine
CTM Aktualisierung verändert
werden, sichern.Mit weisen Sie
CTM an, alle Dateien, die durch ein
CTM Delta verändert
würden, nach backup-file zu
sichern.Dateien ausschließenManchmal wollen Sie nur bestimmte Teile aktualisieren
oder nur bestimmte Dateien aus einer Folge
von Deltas extrahieren.Sie können die Liste der Dateien, mit denen
CTM arbeitet, einschränken,
indem Sie reguläre Ausdrücke mit den Optionen
und angeben.Wenn Sie eine aktuelle Kopie von
lib/libc/Makefile aus den gesicherten
CTM Deltas erhalten wollen, setzen
Sie das folgende Kommando ab:&prompt.root; cd /wo/Sie/es/auspacken/wollen/
&prompt.root; ctm -e '^lib/libc/Makefile' ~ctm/src-xxx.*Die Optionen und
werden in der Reihenfolge angewandt, in der sie auf der
Kommandozeile angegeben wurden. Eine Datei wird nur dann von
CTM verarbeitet, wenn dies nach der
Anwendung der Optionen und
noch erlaubt ist.Pläne für CTMMehrere:Hinzufügen eines Authentifizierungsmechanismus,
damit gefälschte CTM-Deltas
erkannt werden können.Aufräumen der
CTM-Optionen, die mit der Zeit
unübersichtlich und irreführend wurden.VerschiedenesEs gibt Deltas für die Ports-Sammlung, die
aber nicht intensiv genutzt werden.CTM-SpiegelDie CTM-Deltas können Sie mit anonymous FTP von den folgenden
Spiegeln beziehen. Versuchen Sie bitte einen Spiegel in Ihrer
Nähe zu benutzen.Bei Problemen wenden Sie sich bitte an die
Mailingliste &a.ctm-users.name;.Kalifornien, Bay Area, Offizieller Serverftp://ftp.FreeBSD.org/pub/FreeBSD/development/CTM/Südafrika, Backup-Server für alte Deltasftp://ftp.za.FreeBSD.org/pub/FreeBSD/CTM/Taiwan/R.O.C.ftp://ctm.tw.FreeBSD.org/pub/FreeBSD/development/CTM/ftp://ctm2.tw.FreeBSD.org/pub/FreeBSD/development/CTM/ftp://ctm3.tw.FreeBSD.org/pub/FreeBSD/development/CTM/Wenn die Liste keinen Spiegel in Ihrer Nähe enthält
oder Sie Probleme mit dem ausgewählten Spiegel haben, versuchen
Sie einen Spiegel mit einer Suchmaschine, wie
alltheweb, zu
finden.Benutzen von SubversionSubversionEinführungSeit Juli 2012 nutzt &os; Subversion
(svn) als primäres Versionskontrollsystem
zur Speicherung des gesamten &os; Quellcodes, der
Dokumentation und der Ports-Sammlung.Subversion ist hauptsächlich ein Werkzeug für
Entwickler. Die meisten Benutzer sollten FreeBSD
Update benutzen um ihr &os; zu aktualisieren, und
Portsnap
um ihre Ports-Sammlung aktuell zu halten.In Subversion werden URLs in
der Form von
protocol://hostname/path verwendet,
um ein Repository zu kennzeichnen. Die Spiegel können, wie
unten angegeben, verschiedene Protokolle unterstützen. Die
erste Komponente des Pfades ist das &os; Repository auf
welches zugegriffen wird. Es gibt drei verschiedene
Repositories. base für den Quellcode des
&os; Basissystems, ports für die
Ports-Sammlung und doc für die
Dokumentation. Als Beispiel spezifiziert die URL
svn://svn0.us-east.FreeBSD.org/ports/head/
den Hauptzweig des Port-Repositories auf dem Mirror
svn0.us-east.FreeBSD.org,
über das svn-Protokoll.InstallationSubversion muss installiert
werden, bevor Sie damit die Inhalte eines der Repositories
auschecken können. Wenn eine Kopie der Ports-Sammlung bereits
vorhanden ist, kann Subversion wie
folgt installiert werden:&prompt.root; cd /usr/ports/devel/subversion
&prompt.root;make install cleanIst die Ports-Sammlung nicht vorhanden, kann
Subversion als Paket installiert
werden:&prompt.root; pkg_add -r subversionWenn Sie pkgng verwenden, um
Pakete zu verwalten, können Sie
Subversion stattdessen so
installieren:&prompt.root; pkg install devel/subversionAusführen von SubversionDer svn Befehl wird verwendet, eine
Kopie der Quellen in ein lokales Verzeichnis zu holen. Die
Dateien in diesem Verzeichnis werden lokale
Arbeitskopie genannt.Wenn das lokale Verzeichnis bereits vorhanden ist, aber
nicht von svn erstellt wurde, benennen
Sie das Verzeichnis um oder löschen Sie es, bevor Sie
Inhalte auschecken. In ein bestehendes
nicht-svn Verzeichnis auszuchecken kann
zu Konflikten zwischen den vorhandenen Dateien und denen aus
dem Respository führen.Das Auschecken aus einem bestimmten Repository kann wie
folgt durchgeführt werden:&prompt.root; svn checkout svn-mirror/repository/branchlcwdirwobei:svn-mirror eine URL für
einen Mirror aus Subversion
Mirror Sites ist.repository eines der
Projekt-Repositories ist, z. B. base,
ports oder
doc.branch vom verwendeten
Repository abhängt. ports und
doc werden meist im
head Zweig aktualisiert, während
base die neueste Version von -CURRENT
unter head und die jeweilige neueste
Version des -STABLE Zweiges unter
stable/8 (für
8.x),
stable/9
(9.x) und
stable/10
(10.x) verwaltet wird.lcwdir das Zielverzeichnis
ist, in dem die Inhalte des angegebenen Zweiges plaziert
- werden sollen. Dies ist üblicherweise /usr/ports für
- ports, /usr/src für
- base, und /usr/doc für
- doc.
+ werden sollen. Dies ist üblicherweise
+ /usr/ports für
+ ports, /usr/src
+ für base, und
+ /usr/doc für
+ doc.
+
Dieses Beispiel checkt die Ports-Sammlung aus dem
Repositroy im Westen der USA über das HTTPS
- Protokoll aus, und speichert die Arbeitskopie unter /usr/ports. Wenn /usr/ports bereits vorhanden ist,
+ Protokoll aus, und speichert die Arbeitskopie unter
+ /usr/ports. Wenn
+ /usr/ports bereits vorhanden ist,
aber nicht von svn erstellt wurde, denken
Sie vor dem Auschecken daran, das Verzeichnis umzubenennen
oder zu löschen.&prompt.root; svn checkout https://svn0.us-west.FreeBSD.org/ports/head /usr/portsDies kann eine Weile dauern, da beim ersten Auschecken der
komplette Zweig vom entfernten Repository heruntergeladen
werden muss. Bitte haben Sie Geduld.Nach dem ersten Auschecken können Sie Ihre lokale
Arbeitskopie wie folgt aktualisieren:&prompt.root; svn update lcwdir
- Um /usr/ports
+ Um /usr/ports
aus dem oben erstellten Beispiel zu aktualisieren, benutzen
Sie:&prompt.root; svn update /usr/portsDas Update ist viel schneller als ein Auschecken, da nur
die Dateien übertragen werden müssen, die sich auch geändert
haben.Eine alternative Möglichkeit zur Aktualisierung Ihrer
Arbeitskopie nach dem Auschecken ist es, das bestehende
- Makefile in den Verzeichnissen /usr/ports, /usr/src, und /usr/doc zu nutzen. Setzen Sie
+ Makefile in den Verzeichnissen
+ /usr/ports,
+ /usr/src, und
+ /usr/doc zu nutzen. Setzen Sie
dazu SVN_UPDATE und benutzen Sie das
update Ziel. Zum Beispiel, um
- /usr/src zu
+ /usr/src zu
aktualisieren:&prompt.root; cd /usr/src
&prompt.root; make update SVN_UPDATE=yesWeiterführende InformationenWeitere Informationen über die Verwendung von
Subversion finden Sie im
Subversion Buch mit dem Namen Versionskontrolle mit
Subversion, oder in der Subversion Dokumentation.Subversion Mirror SitesSubversion RepositoryMirror SitesAlle Spiegel führen alle Repositories.Der Master &os; Subversion
Server, svn.FreeBSD.org
ist öffentlich zugänglich. Auf ihn kann allerdings nur lesend
zugegriffen werden. Dies kann sich in Zukunft ändern, solange
jedoch werden die Nutzer dazu aufgefordert, einen der
offiziellen Spiegel zu verwenden. Um das &os;
Subversion Repository über einen
Browser anzuzeigen, verwenden Sie http://svnweb.FreeBSD.org/.Das &os; svn Mirror Netzwerk befindet sich noch in den
Anfängen, und Veränderungen werden stattfinden. Verlassen Sie
sich also nicht darauf, dass diese Liste statisch ist.
Insbesondere werden sich die SSL-Zertifikate irgendwann
ändern.NameProtokolleStandortSSL-Fingerabdrucksvn.us-west.FreeBSD.orgsvn, http,
httpsUSA, KalifornienSHA1
1C:BD:85:95:11:9F:EB:75:A5:4B:C8:A3:FE:08:E4:02:73:06:1E:61svn0.us-east.FreeBSD.orgsvn, http,
https, rsyncUSA, New JerseySHA1
1C:BD:85:95:11:9F:EB:75:A5:4B:C8:A3:FE:08:E4:02:73:06:1E:61svn0.eu.FreeBSD.orgsvn, http
https, rsyncEuropa, UKSHA1
39:B0:53:35:CE:60:C7:BB:00:54:96:96:71:10:94:BB:CE:1C:07:A7HTTPS ist das bevorzugte Protokoll, es
schützt Sie vor anderen Computern, die vortäuschen, der
&os;-Mirror zu sein (gemeinhin bekannt als man in the
middle-Angriff), oder anderweitig versuchen schlechte
Daten an den Endnutzer zu senden.Bei der ersten Verbindung zu einem HTTPS
Mirror, wird der Benutzer aufgefordert, den Fingerabdruck des
Servers zu überprüfen:Error validating server certificate for 'https://svn0.us-west.freebsd.org:443':
- The certificate is not issued by a trusted authority. Use the
fingerprint to validate the certificate manually!
- The certificate hostname does not match.
Certificate information:
- Hostname: svnmir.ysv.FreeBSD.org
- Valid: from Jul 29 22:01:21 2013 GMT until Dec 13 22:01:21 2040 GMT
- Issuer: clusteradm, FreeBSD.org, (null), CA, US (clusteradm@FreeBSD.org)
- Fingerprint: 1C:BD:85:95:11:9F:EB:75:A5:4B:C8:A3:FE:08:E4:02:73:06:1E:61
(R)eject, accept (t)emporarily or accept (p)ermanently?Vergleichen Sie den Fingerabdruck mit dem in der obigen
Tabelle. Wenn der Fingerabdruck übereinstimmt, kann das
Sicherheitszertifikat des Server zeitweise oder dauerhaft
akzeptiert werden. Ein temporäres Zertifikat wird nach einer
einzigen Sitzung mit dem Server ablaufen, und die Überprüfung
wird bei der nächsten Verbindung wiederholt werden. Akzeptieren
Sie das Zertifikat dauerhaft, werden die
- Authentifizierungsinformationen in ~/.subversion/auth gespeichert, und
+ Authentifizierungsinformationen in
+ ~/.subversion/auth gespeichert, und
der Benutzer wird nicht wieder gefragt den Fingerabdruck zu
prüfen, solange bis das Zertifikat abgelaufen ist.Wenn HTTPS aufgrund von Firewall- oder
anderen Problemen nicht verwendet werden kann, dann ist
SVN die nächste Wahl. Sollte beides nicht
verfügbar sein, nutzen Sie HTTPBenutzen von CVSup (veraltet)EinführungCVSup ist eine Anwendung, die
Verzeichnisbäume von einem entfernten
CVS-Server bereitstellt und
aktualisiert. Die Quellen von &os; werden in einem
CVS-Repository auf einer
Entwicklungsmaschine in Kalifornien gepflegt. Mit
CVSup können sich &os;-Benutzer
den eigenen Quellbaum auf aktuellem Stand halten.Zum Aktualisieren benutzt CVSup die
Pull-Methode, bei der die Aktualisierungen vom Client angefragt
werden. Der Server wartet dabei passiv auf Anfragen von Clients,
das heißt er verschickt nicht unaufgefordert
Aktualisierungen. Somit gehen alle Anfragen vom Client aus und die
Benutzer müssen CVSup entweder
manuell starten oder einen cron Job einrichten, um
regelmäßig Aktualisierungen zu erhalten.CVSup in genau dieser Schreibweise
bezeichnet die Anwendung, die aus dem Client cvsup
und dem Server cvsupd besteht.
cvsup läuft auf den Maschinen der Benutzer,
cvsupd läuft auf jedem der
&os;-Spiegel.Mit csup gibt es in inzwischen
auch eine in C geschriebene Neuimplementierung von
CVSup. Der größte
Vorteil dieser neuen Version ist neben einer höheren
Geschwindigkeit der, dass dieses Programm nicht von der
Sprache Modula-3 abhängig ist und Sie daher dieses
Paket nicht mitinstallieren müssen.
csup ist bereits im Basissystem
enthalten und kann sofort verwendet werden.
Wollen Sie künftig csup
einsetzen, überspringen Sie in den folgenden
Ausführungen einfach den Abschnitt zur Installation von
CVSup und ersetzen alle Vorkommen
von CVSup durch
csup.Installation von CVSupCVSup können Sie leicht
installieren, wenn Sie das vorkompilierte Paket
net/cvsup aus der
Ports-Sammlung benutzen.
Alternativ können Sie
net/cvsup auch ausgehend von
den Quellen bauen, doch seien Sie gewarnt:
net/cvsup hängt vom
Modula-3 System ab, das viel Zeit und
Platz zum Herunterladen und Bauen braucht.Wenn Sie CVSup auf einer
Maschine ohne &xorg; (also
beispielsweise auf einem Server), benutzen, stellen Sie
bitte sicher, dass Sie den Port ohne das
CVSup-GUI,
(net/cvsup-without-gui)
verwenden.Konfiguration von CVSupDas Verhalten von CVSup wird mit
einer Konfigurationsdatei gesteuert, die
supfile genannt wird. Beispiele für
Konfigurationsdateien finden Sie in dem Verzeichnis
.Ein supfile enthält die folgenden
Informationen:Welche Dateien Sie
erhalten wollen.Welche Versionen der
Dateien Sie benötigen.Woher Sie die Dateien
beziehen wollen.Wo Sie die erhaltenen
Dateien speichern.Wo Sie die
Status-Dateien aufbewahren wollen.In den folgenden Abschnitten erstellen wir ein typisches
supfile indem wir nach und nach diese Punkte
klären. Zuerst beschreiben wir aber den Aufbau dieser
Konfigurationsdatei.Ein supfile ist eine Textdatei.
Kommentare beginnen mit einem # und gelten bis zum
Zeilenende. Leerzeilen und Zeilen, die nur Kommentare enthalten,
werden ignoriert.Die anderen Zeilen legen die Dateien fest, die ein Benutzer
erhalten will. Der Server organisiert verschiedene Dateien in
einer Sammlung, deren Name auf einer Zeile angegeben
wird. Nach dem Namen der Sammlung können mehrere durch
Leerzeichen getrennte Felder folgen, die die oben angesprochenen
Informationen festlegen. Es gibt zwei Arten von Feldern: Felder,
die Optionen festlegen und Felder mit Parametern.
Optionen bestehen aus einem Schlüsselwort, wie
oder und
stehen alleine. Ein Parameterfeld beginnt mit einem
Schlüsselwort, dem = und ein Parameter,
wie in ,
folgt. Dieses Feld darf keine Leerzeichen enthalten.In einem supfile werden normalerweise
mehrere Sammlungen angefordert. Die erforderlichen Felder
können explizit für jede Sammlung angegeben werden,
dann werden jedoch die Zeilen ziemlich lang. Außerdem ist
dieses Vorgehen sehr unhandlich, da die meisten Felder für
alle Sammlungen gleich sind. CVSup
bietet die Möglichkeit, Vorgaben für die Felder der
Sammlungen festzulegen. Zeilen, die mit der Pseudo-Sammlung
*default beginnen, legen Optionen und Parameter
für nachfolgende Sammlungen im supfile
fest. Der Vorgabewert kann in der Zeile einer bestimmten Sammlung
überschrieben werden. Durch Hinzufügen weiterer
*default Zeilen können die Vorgaben auch
mitten im supfile überschrieben oder
erweitert werden.Mit diesem Wissen können wir nun ein
supfile erstellen, das den Quellbaum von
&os;-CURRENT anfordert und
aktualisiert.Welche Dateien wollen Sie
empfangen?Dateien werden von CVSup in
Sammlungen organisiert. Die erhältlichen
Sammlungen werden später
beschrieben. Wir wollen den Quellbaum von &os; empfangen,
der in der Sammlung src-all enthalten ist.
Das supfile enthält pro Zeile eine
Sammlung, in diesem Fall also nur eine einzige Zeile:src-allWelche Versionen der Dateien
werden benötigt?Mit CVSup können Sie jede
Version der Quellen bekommen, da der
cvsupd-Server seine Daten direkt aus
dem CVS-Repository bezieht. Sie
können die benötigten Versionen in den
Parameterfeldern tag= und
angeben.Achten Sie darauf, dass Sie das richtige
tag=-Feld angeben. Einige Tags sind nur
für spezielle Sammlungen gültig. Wenn Sie ein
falsches Tag angeben oder sich verschreiben, wird
CVSup Dateien löschen, die
Sie wahrscheinlich gar nicht löschen wollten.
Achten Sie insbesondere bei den
ports-*-Sammlungen darauf,
ausschließlichtag=. zu verwenden.Mit tag= wird ein symbolischer Name aus
dem Repository angegeben. Es gibt zwei verschiedene Tags:
Tags, die Revisionen bezeichnen und Tags, die Zweige
bezeichnen. Die ersteren sind statisch und fest an eine
Revision gebunden. Ein Tag, das einen Zweig bezeichnet,
bezieht sich dagegen zu einem gegebenen Zeitpunkt immer auf
die aktuellste Revision. Da ein Tag eines Zweiges nicht an
eine bestimmte Revision gebunden ist, kann sich dessen
Bedeutung von heute auf morgen ändern. zählt für Benutzer
relevante Tags auf. Wenn Sie in der Konfigurationsdatei ein
Tag, wie RELENG_8, angeben, müssen Sie
diesem tag= vorstellen:
tag=RELENG_8. Denken Sie daran, dass
es für die Ports-Sammlung nur tag=.
gibt.Achten Sie darauf, dass Sie den Namen eines Tags
richtig angeben. CVSup kann nicht
zwischen richtigen und falschen Tags unterscheiden. Wenn Sie
sich bei der Angabe eines Tags vertippen, nimmt
CVSup an, Sie hätten ein
gültiges Tag angegeben, dem nur keine Dateien zugeordnet
sind. Die Folge davon ist, dass Ihre vorhandenen Quellen
gelöscht werden.Wenn Sie ein Tag angeben, das sich auf einen Zweig bezieht,
erhalten Sie die aktuellsten Revisionen der Dateien auf diesem
Zweig. Wenn Sie eine frühere Revision erhalten
möchten, können Sie diese im
Feld angeben. Einzelheiten dazu finden Sie in der Manualpage
von cvsup.Wir möchten gerne &os;-CURRENT beziehen und
fügen die folgende Zeile am Anfang
der Konfigurationsdatei ein:*default tag=.Eine wichtige Ausnahme ist wenn Sie weder ein
tag=-Feld noch ein date=-Feld
angeben. In diesem Fall erhalten Sie anstelle einer speziellen
Revision die wirklichen RCS-Dateien aus dem CVS-Repository
des Servers. Diese Vorgehensweise wird von Entwicklern
bevorzugt, da sie mit einem eigenen Repository leicht die
Entwicklungsgeschichte und Veränderungen von Dateien
verfolgen können. Dieser Vorteil muss allerdings mit
sehr viel Plattenplatz bezahlt werden.Woher sollen die Dateien
bezogen werden?Im host=-Feld wird angegeben, woher
cvsup die Dateien holen soll. Sie
können hier jeden der CVSup-Spiegel angeben, doch
sollten Sie einen Server in Ihrer Nähe auswählen.
Für dieses Beispiel wollen wir den erfundenen Server
cvsup99.FreeBSD.org
verwenden:*default host=cvsup99.FreeBSD.orgBevor Sie CVSup laufen
lassen, sollten Sie hier einen existierenden Server
einsetzen. Den zu verwendenden Server können Sie auf der
Kommandozeile mit
überschreiben.Wo sollen die Dateien
gespeichert werden?Im prefix=-Feld teilen Sie
cvsup mit, wo die Dateien gespeichert werden
sollen. In diesem Beispiel werden wir die Quelldateien direkt
im Verzeichnisbaum für Quellen
/usr/src ablegen. Das Verzeichnis
src ist schon in der Sammlung, die wir
beziehen enthalten, so dass wir die folgende Zeile
angeben:*default prefix=/usrWo sollen die
Statusinformationen von cvsup gespeichert
werden?cvsup legt in einem Verzeichnis
Statusinformationen ab, die festhalten, welche Versionen schon
empfangen wurden. Wir verwenden das Verzeichnis
/var/db:*default base=/var/dbWenn das Verzeichnis für die Statusinformationen nicht
existiert, sollten Sie es jetzt anlegen, da
cvsup ohne dieses Verzeichnis nicht
startet.Verschiedene Einstellungen:Eine weitere Zeile sollte normalerweise in jedem
supfile sein:*default release=cvs delete use-rel-suffix compressMit release=cvs wird angegeben,
dass der Server das &os;-Haupt-Repository abfragen soll,
was praktisch immer der Fall ist (die Ausnahmen werden in
diesem Text nicht diskutiert).delete erlaubt es
CVSup, Dateien zu löschen.
Diese Option sollten Sie immer angeben, damit
CVSup Ihren Quellbaum auch wirklich
aktuell halten kann. CVSup
löscht nur Dateien für die es auch verantwortlich
ist. Andere Dateien, die sich in einem Baum unter Kontrolle
von CVSup befinden, werden nicht
verändert.Wenn Sie wirklich etwas über das obskure
use-rel-suffix erfahren wollen, lesen Sie
bitte in der Manualpage nach, ansonsten geben Sie es einfach an
und vergessen es.Wenn Sie compress angeben, werden Daten
auf dem Kommunikationskanal komprimiert. Wenn Sie über
eine T1-Leitung oder eine schnellere Netzanbindung
verfügen, brauchen Sie diese Option vielleicht nicht. In
allen anderen Fällen beschleunigt sie aber den
Ablauf.Zusammenfassung:Das vollständige supfile unseres
Beispiels sieht nun so aus:*default tag=.
*default host=cvsup99.FreeBSD.org
*default prefix=/usr
*default base=/var/db
*default release=cvs delete use-rel-suffix compress
src-allDie refuse DateiCVSup benutzt die Pull-Methode, das
heißt wenn sich ein Client mit einem Server verbindet,
erhält er eine Liste der verfügbaren Sammlungen und
wählt aus diesen die herunterzuladenden Dateien aus. In der
Voreinstellung wählt der Client alle Dateien aus, die zu
einer gegebenen Sammlung und zu einem gegebenen Tag passen.
Um nur einen Teil des Baumes herunterzuladen, benutzen Sie die
refuse Datei.Mit einer refuse Datei können Sie
bestimmte Dateien einer Sammlung von der Übertragung
ausschließen. Der Ort der refuse ist
base/sup/refuse,
wobei base in Ihrem
supfile festgelegt wurde.
Wir verwenden das Verzeichnis
/var/db, der Ort der
refuse Datei ist daher
/var/db/sup/refuse.Das Format der refuse Datei ist einfach:
Sie enthält eine Liste der Dateien und Verzeichnisse, die Sie
nicht herunterladen wollen. Zum Beispiel:bin/
usr.bin/Die refuse Datei spart Anwendern von
CVSup, die über eine langsame
Internetanbindung verfügen oder deren Internetverbindung
zeitlich abgerechnet wird, Zeit, da sie Dateien, die sie
nicht benötigen, nicht mehr herunterladen müssen.
Weitere Informationen zu refuse Dateien und
anderen Eigenschaften von CVSup
entnehmen Sie bitte der Manualpage.Ausführen von CVSupWir können nun eine Aktualisierung mit der folgenden
Kommandozeile starten:&prompt.root; cvsup supfilesupfile gibt
dabei das eben erstelle supfile an. Wenn Sie
X11 benutzen, wird
cvsup ein GUI starten.
Drücken Sie go und schauen Sie
zu.Das Beispiel aktualisiert die Dateien im Verzeichnisbaum
/usr/src. Sie müssen
cvsup als
root starten,
damit Sie die nötigen Rechte haben, die Dateien zu
aktualisieren. Sie sind vielleicht ein bisschen nervös
weil Sie das Programm zum ersten Mal anwenden und möchten
zuerst einmal einen Testlauf durchführen. Legen Sie dazu ein
temporäres Verzeichnis an und übergeben es auf der
Kommandozeile von cvsup:&prompt.root; mkdir /var/tmp/dest
&prompt.root; cvsup supfile /var/tmp/destAktualisierungen werden dann nur in dem angegebenen
Verzeichnis vorgenommen. CVSup
untersucht die Dateien in /usr/src, wird
aber keine dieser Dateien verändern. Die veränderten Dateien
finden Sie stattdessen in
/var/tmp/dest/usr/src. Die Statusdateien
von CVSup werden ebenfalls nicht
geändert, sondern in dem angegebenen Verzeichnis abgelegt.
Wenn Sie Leseberechtigung in /usr/src
haben, brauchen Sie das Programm noch nicht einmal unter
root laufen zu
lassen.Wenn Sie X11 nicht benutzen wollen
oder keine GUIs mögen, sollten Sie
cvsup wie folgt aufrufen:&prompt.root; cvsup -g -L 2 supfile verhindert den Start des
GUIs. Wenn Sie kein
X11 laufen haben, passiert das
automatisch, ansonsten müssen Sie diesen Schalter
angeben.Mit gibt CVSup
Einzelheiten zu jeder Aktualisierung aus. Die Wortfülle der
Meldungen können Sie von bis
einstellen. In der Voreinstellung
werden nur Fehlermeldungen ausgegeben.Eine Zusammenfassung der Optionen von
CVSup erhalten Sie mit
cvsup -H. Genauere Informationen finden Sie in
der Manualpage von CVSup.Wenn Sie mit dem Ablauf der Aktualisierung zufrieden sind,
können Sie CVSup
regelmäßig aus &man.cron.8; ausführen. In diesem
Fall sollten Sie natürlich nicht das GUI
benutzen.CVSup SammlungenDie CVSup Sammlungen sind
hierarchisch organisiert. Es gibt wenige große Sammlungen,
die in kleinere Teilsammlungen unterteilt sind. Wenn Sie eine
große Sammlung beziehen, entspricht das dem Beziehen aller
Teilsammlungen. Der Hierarchie der Sammlung wird in der folgenden
Aufzählung durch Einrückungen dargestellt.Die am häufigsten benutzte Sammlung ist
src-all.cvs-all release=cvsDas &os;-Haupt-Repository einschließlich der
Kryptographie-Module.distrib release=cvsDateien, die zum Verteilen und Spiegeln von &os;
benötigt werden.projects-all release=cvsQuelltexte der verschiedenen &os;-Projekte.src-all release=cvsDie &os;-Quellen einschließlich der
Kryptographie-Module.src-base
release=cvsVerschiedene Dateien unter
/usr/src.src-bin
release=cvsBenutzer-Werkzeuge die im Einzelbenutzermodus
gebraucht werden
(/usr/src/bin).src-cddl
release=cvsWerkzeuge und Bibliotheken, die der
CDDL-Lizenz unterliegen
(/usr/src/cddl).src-contrib
release=cvsWerkzeuge und Bibliotheken, die nicht aus dem
&os; Project stammen und wenig verändert
übernommen werden.
(/usr/src/contrib).src-crypto release=cvsKryptographische Werkzeuge und Bibliotheken,
die nicht aus dem &os; Project stammen und
wenig verändert übernommen werden.
(/usr/src/crypto).src-eBones release=cvsKerberos und DES
(/usr/src/eBones). Wird
in aktuellen Releases von &os; nicht
benutzt.src-etc
release=cvsKonfigurationsdateien des Systems
(/usr/src/etc).src-games
release=cvsSpiele
(/usr/src/games).src-gnu
release=cvsWerkzeuge, die unter der GNU Public License
stehen (/usr/src/gnu).src-include
release=cvsHeader Dateien
(/usr/src/include).src-kerberos5
release=cvsKerberos5
(/usr/src/kerberos5).src-kerberosIV
release=cvsKerberosIV
(/usr/src/kerberosIV).src-lib
release=cvsBibliotheken
(/usr/src/lib).src-libexec
release=cvsSystemprogramme, die von anderen Programmen
ausgeführt werden
(/usr/src/libexec).src-release
release=cvsDateien, die zum Erstellen eines &os;
Releases notwendig sind
(/usr/src/release).src-rescue
release=cvsStatisch gelinkte Programme zur
Wiederherstellung eines defekten Systems.
Lesen Sie dazu auch die Manualpage
&man.rescue.8;
(/usr/src/rescue).src-sbin release=cvsWerkzeuge für den Einzelbenutzermodus
(/usr/src/sbin).src-secure
release=cvsKryptographische Bibliotheken und Befehle
(/usr/src/secure).src-share
release=cvsDateien, die von mehreren Systemen
gemeinsam benutzt werden können
(/usr/src/share).src-sys
release=cvsDer Kernel
(/usr/src/sys).src-sys-crypto
release=cvsKryptographie Quellen des Kernels
(/usr/src/sys/crypto).src-tools
release=cvsVerschiedene Werkzeuge zur Pflege von &os;
(/usr/src/tools).src-usrbin
release=cvsBenutzer-Werkzeuge
(/usr/src/usr.bin).src-usrsbin
release=cvsSystem-Werkzeuge
(/usr/src/usr.sbin).distrib release=selfDie Konfigurationsdateien des
CVSup Servers. Diese werden von
den CVSup benutzt.gnats release=currentDie GNATS Datenbank, in der Problemberichte verwaltet
werden.mail-archive release=currentDas Archiv der &os;-Mailinglisten.Weiterführende InformationenDie CVSup FAQ und weitere
Informationen über CVSup finden Sie
auf The CVSup Home Page.&os; spezifische Diskussionen über
CVSup finden auf der Mailingliste
&a.hackers; statt. Dort und auf der Liste &a.announce; werden neue
Versionen von CVSup
angekündigt.Bei Fragen und Problemberichten zu
CVSup lesen Sie bitte die
CVSup FAQ.CVSup-ServerDie folgende Aufzählung enthält
CVSup Server für &os;:
&chap.mirrors.cvsup.index.inc;
&chap.mirrors.lastmod.inc;
&chap.mirrors.cvsup.inc;
CVS-TagsWenn Sie Quellen mit CVS oder
CVSup erhalten oder aktualisieren wollen,
müssen Sie ein Tag angeben. Ein Tag kann einen bestimmten
&os;-Zweig oder einen bestimmten Zeitpunkt
(Release-Tag) bestimmen.Tags für ZweigeMit Ausnahme von HEAD (das immer
ein gültiges Tag ist), können die folgenden
Tags nur im src/-Quellbaum verwendet
werden. Die Quellbäume ports/,
doc/ und www/
sind nicht verzweigt.HEADSymbolischer Name für den Hauptzweig, auch
&os.current; genannt. Dies ist die Vorgabe, wenn keine
Revision angegeben wird.In CVSup wird dieses Tag mit
einem . (Punkt) bezeichnet.In CVS ist das die Vorgabe,
wenn Sie kein Tag oder eine Revision angeben. Außer
Sie wollen einen -STABLE Rechner auf -CURRENT aktualisieren,
ist es nicht ratsam, die -CURRENT
Quellen auf einem -STABLE Rechner einzuspielen.RELENG_9Der Entwicklungszweig für &os;-9.X, auch bekannt
als &os; 9-STABLE.RELENG_9_1Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für &os; 9.1
durchgeführt werden.RELENG_9_0Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für &os; 9.0
durchgeführt werden.RELENG_8Der Entwicklungszweig für &os;-8.X, auch bekannt
als &os; 8-STABLE.RELENG_8_3Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für &os; 8.3
durchgeführt werden.RELENG_8_2Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für &os; 8.2
durchgeführt werden.RELENG_8_1Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für &os; 8.1
durchgeführt werden.RELENG_8_0Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für &os; 8.0
durchgeführt werden.RELENG_7Der Entwicklungszweig für &os;-7.X, auch als
&os; 7-STABLE bekannt.RELENG_7_4Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für &os; 7.4
durchgeführt werden.RELENG_7_3Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für &os; 7.3
durchgeführt werden.RELENG_7_2Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für &os; 7.2
durchgeführt werden.RELENG_7_1Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für &os; 7.1
durchgeführt werden.RELENG_7_0Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für &os; 7.0
durchgeführt werden.RELENG_6Der Entwicklungszweig für &os;-6.X, auch als
&os; 6-STABLE bekannt.RELENG_6_4Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für &os; 6.4
durchgeführt werden.RELENG_6_3Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für &os; 6.3
durchgeführt werden.RELENG_6_2Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für &os; 6.2
durchgeführt werden.RELENG_6_1Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für &os; 6.1
durchgeführt werden.RELENG_6_0Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für &os; 6.0
durchgeführt werden.RELENG_5Der &os; 5.X Entwicklungszweig, der
auch &os; 5-STABLE genannt wird.RELENG_5_5Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für &os; 5.5
durchgeführt werden.RELENG_5_4Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für &os; 5.4
durchgeführt werden.RELENG_5_3Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für &os; 5.3
durchgeführt werden.RELENG_5_2Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für &os; 5.2 und
&os; 5.2.1 durchgeführt werden.RELENG_5_1Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für &os; 5.1 durchgeführt
werden.RELENG_5_0Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für &os; 5.0 durchgeführt
werden.RELENG_4Der &os; 4.X Entwicklungszweig,
der auch &os; 4-STABLE genannt wird.RELENG_4_11Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für &os; 4.11 durchgeführt
werden.RELENG_4_10Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für &os; 4.10 durchgeführt
werden.RELENG_4_9Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für &os; 4.9 durchgeführt
werden.RELENG_4_8Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für &os; 4.8 durchgeführt
werden.RELENG_4_7Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für &os; 4.7 durchgeführt
werden.RELENG_4_6Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für &os; 4.6 und
&os; 4.6.2 durchgeführt werden.RELENG_4_5Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für &os; 4.5 durchgeführt
werden.RELENG_4_4Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für &os; 4.4 durchgeführt
werden.RELENG_4_3Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für &os; 4.3 durchgeführt
werden.RELENG_3Der &os;-3.X Entwicklungszweig, der auch 3.X-STABLE
genannt wird.RELENG_2_2Der &os;-2.2.X Entwicklungszweig, der auch 2.2-STABLE
genannt wird.Release-TagsDiese Tags geben den Zeitpunkt an, an dem eine bestimme
&os;-Version veröffentlicht wurde. Das Erstellen einer
Release ist in den Dokumenten
Release Engineering
Information und
Release
Process beschrieben. Der
src-Baum benutzt
Tags, deren Namen mit RELENG_ anfangen.
Die Bäume ports
und doc benutzen
Tags, deren Namen mit RELEASE anfangen.
- Im Baum www werden
+ Im Baum www werden
keine Release-Tags verwendet.RELENG_9_2_0_RELEASE&os; 9.2RELENG_9_1_0_RELEASE&os; 9.1RELENG_9_0_0_RELEASE&os; 9.0RELENG_8_3_0_RELEASE&os; 8.3RELENG_8_2_0_RELEASE&os; 8.2RELENG_8_1_0_RELEASE&os; 8.1RELENG_8_0_0_RELEASE&os; 8.0RELENG_7_4_0_RELEASE&os; 7.4RELENG_7_3_0_RELEASE&os; 7.3RELENG_7_2_0_RELEASE&os; 7.2RELENG_7_1_0_RELEASE&os; 7.1RELENG_7_0_0_RELEASE&os; 7.0RELENG_6_4_0_RELEASE&os; 6.4RELENG_6_3_0_RELEASE&os; 6.3RELENG_6_2_0_RELEASE&os; 6.2RELENG_6_1_0_RELEASE&os; 6.1RELENG_6_0_0_RELEASE&os; 6.0RELENG_5_5_0_RELEASE&os; 5.5RELENG_5_4_0_RELEASE&os; 5.4RELENG_4_11_0_RELEASE&os; 4.11RELENG_5_3_0_RELEASE&os; 5.3RELENG_4_10_0_RELEASE&os; 4.10RELENG_5_2_1_RELEASE&os; 5.2.1RELENG_5_2_0_RELEASE&os; 5.2RELENG_4_9_0_RELEASE&os; 4.9RELENG_5_1_0_RELEASE&os; 5.1RELENG_4_8_0_RELEASE&os; 4.8RELENG_5_0_0_RELEASE&os; 5.0RELENG_4_7_0_RELEASE&os; 4.7RELENG_4_6_2_RELEASE&os; 4.6.2RELENG_4_6_1_RELEASE&os; 4.6.1RELENG_4_6_0_RELEASE&os; 4.6RELENG_4_5_0_RELEASE&os; 4.5RELENG_4_4_0_RELEASE&os; 4.4RELENG_4_3_0_RELEASE&os; 4.3RELENG_4_2_0_RELEASE&os; 4.2RELENG_4_1_1_RELEASE&os; 4.1.1RELENG_4_1_0_RELEASE&os; 4.1RELENG_4_0_0_RELEASE&os; 4.0RELENG_3_5_0_RELEASE&os;-3.5RELENG_3_4_0_RELEASE&os;-3.4RELENG_3_3_0_RELEASE&os;-3.3RELENG_3_2_0_RELEASE&os;-3.2RELENG_3_1_0_RELEASE&os;-3.1RELENG_3_0_0_RELEASE&os;-3.0RELENG_2_2_8_RELEASE&os;-2.2.8RELENG_2_2_7_RELEASE&os;-2.2.7RELENG_2_2_6_RELEASE&os;-2.2.6RELENG_2_2_5_RELEASE&os;-2.2.5RELENG_2_2_2_RELEASE&os;-2.2.2RELENG_2_2_1_RELEASE&os;-2.2.1RELENG_2_2_0_RELEASE&os;-2.2.0rsync-Serverrsync wird ähnlich wie
&man.rcp.1; verwendet, besitzt aber mehr Optionen und
verwendet das rsync remote-update Protokoll, das nur
geänderte Dateien überträgt und damit viel schneller
als ein normaler Kopiervorgang ist. rsync
ist sehr nützlich, wenn Sie einen &os;-FTP-Spiegel oder einen
CVS-Spiegel betreiben. Das Programm ist für viele
Betriebssysteme erhältlich, mit &os; können Sie den
Port net/rsync oder das fertige
Paket benutzen. Die folgenden Server stellen &os; über das
rsync Protokoll zur Verfügung:Großbritannienrsync://rsync.mirrorservice.org/Verfügbare Sammlungen:ftp.freebsd.org: Kompletter Spiegel des
&os;-FTP-Servers.Niederlandersync://ftp.nl.FreeBSD.org/Verfügbare Sammlungen:&os;: Kompletter Spiegel des
&os;-FTP-Servers.Russlandrsync://ftp.mtu.ru/Verfügbare Sammlungen:&os;: Kompletter Spiegel des
&os;-FTP-Servers.&os;-gnats: Die GNATS-Datenbank
zur Verwaltung von Problemberichten.&os;-Archive: Ein Spiegel des
&os;-Archive-FTP-Servers.Schwedenrsync://ftp4.se.freebsd.org/Verfügbare Sammlungen:&os;: Kompletter Spiegel des
&os;-FTP-Servers.Taiwanrsync://ftp.tw.FreeBSD.org/rsync://ftp2.tw.FreeBSD.org/rsync://ftp6.tw.FreeBSD.org/Verfügbare Sammlungen:&os;: Kompletter Spiegel des
&os;-FTP-Servers.Tschechische Republikrsync://ftp.cz.FreeBSD.org/Verfügbare Sammlungen:ftp: Unvollständiger Spiegel des
&os;-FTP-Servers.&os;: Vollständiger Spiegel des
&os;-FTP-Servers.USArsync://ftp-master.FreeBSD.org/Dieser Server darf nur von primären Spiegeln benutzt
werden.Verfügbare Sammlungen:&os;: Das Hauptarchiv des &os;
FTP Servers.acl: Die primäre ACL-Liste.rsync://ftp13.FreeBSD.org/Verfügbare Sammlungen:&os;: Kompletter Spiegel des
&os;-FTP-Servers.