Page MenuHomeFreeBSD

D11134.id.diff
No OneTemporary

D11134.id.diff

Index: head/de_DE.ISO8859-1/books/handbook/cutting-edge/chapter.xml
===================================================================
--- head/de_DE.ISO8859-1/books/handbook/cutting-edge/chapter.xml
+++ head/de_DE.ISO8859-1/books/handbook/cutting-edge/chapter.xml
@@ -5,7 +5,7 @@
$FreeBSD$
$FreeBSDde$
- basiert auf: r50201
+ basiert auf: r50251
-->
<chapter xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
@@ -283,8 +283,8 @@
Änderungen werden entweder akzeptiert, oder öffnen einen
Editor, oder <command>freebsd-update</command> bricht ab. Im
Zweifelsfall sichern Sie <filename>/etc</filename> und
- akzeptieren einfach die Änderungen. Lesen Sie <xref
- linkend="mergemaster"/>, um Informationen über
+ akzeptieren einfach die Änderungen. Lesen Sie
+ &man.mergemaster.8;, um Informationen über
<command>mergemaster</command> zu erhalten.</para>
<programlisting># Directory in which to store downloaded updates and temporary
@@ -1186,1183 +1186,471 @@
</listitem>
</orderedlist>
</sect2>
-
- <sect2 xml:id="stable">
- <title>&os.stable;</title>
-
- <para>&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
- <emphasis>immer noch</emphasis> 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.
- Benutzer, die nicht über die notwendigen Ressourcen zum
- Testen verfügen, sollten stattdessen eine aktuelle Version
- von &os; benutzen.</para>
-
- <para>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.</para>
-
- <para>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
- <emphasis>nicht</emphasis> 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.</para>
-
- <para>Um &os.stable; zu folgen:</para>
-
- <indexterm>
- <primary>-STABLE</primary>
- <secondary>benutzen</secondary>
- </indexterm>
-
- <orderedlist>
- <listitem>
- <para>Lesen 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.</para>
-
- <para>Abonnieren Sie die passende
- <application>svn</application>-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.</para>
-
- <para>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;.</para>
- </listitem>
-
- <listitem>
- <para>Wenn Sie ein neues System installieren und dazu
- einen der monatlich aus &os.stable; erzeugten Snapshots
- verwenden wollen, sollten Sie zuerst <link
- xlink:href="&url.base;/snapshots">
- www.freebsd.org/snapshots</link> auf aktuelle
- Informationen überprüfen. Alternativ können Sie auch
- das neueste &os.stable;-Release von den <link
- linkend="mirrors">&os; Spiegeln</link> beziehen.</para>
-
- <para>Um ein bestehendes &os;-System auf &os.stable; zu
- aktualisieren, benutzen Sie <link
- linkend="svn">svn</link>, um den gewünschten
- Entwicklungs- oder Release-Zweig auszuchecken. Die
- Zweige, wie beispielsweise <literal>stable/9</literal>,
- sind unter <link xlink:href="&url.base;/releng/">
- www.freebsd.org/releng</link> aufgeführt.</para>
- </listitem>
-
- <listitem>
- <para>Lesen Sie <filename>/usr/src/Makefile</filename>
- sehr aufmerksam bevor Sie &os.stable; aktualisieren und
- folgen Sie den Anweisungen in <xref
- linkend="makeworld"/>. Lesen Sie die
- Mailingliste &a.stable; und
- <filename>/usr/src/UPDATING</filename>, um über
- Änderungen im Installationsverfahren, die manchmal vor
- der Einführung eines neuen Releases notwendig sind,
- informiert zu sein.</para>
- </listitem>
- </orderedlist>
- </sect2>
</sect1>
- <sect1 xml:id="synching">
- <title>Synchronisation der Quellen</title>
+ <sect1 xml:id="updating-src">
+ <title>&os; aus den Quellen aktualisieren</title>
- <para>Es gibt verschiedene Methoden um die Quellen von &os;
- aktuell zu halten. Dieser Abschnitt beschreibt
- <application>Subversion</application>, den primären Dienst für
- diese Aufgabe.</para>
+ <para>Das Aktualisieren von &os; aus den Quellen bietet im
+ Vergleich zu binären Updates mehrere Vorteile. Der Quellcode
+ kann mit Optionen gebaut werden, um die Vorteile von
+ spezifischer Hardware zu nutzen. Teile des Basissystems können
+ mit veränderten Einstellungen gebaut, oder falls nicht
+ gewünscht, auch ganz ausgelassen werden.
+ Dieser Prozess dauert zwar länger als die Aktualisierung mit
+ binären Updates, ermöglicht aber eine vollständige Anpassung, um
+ eine individuelle Version von &os; zu erstellen.</para>
- <warning>
- <para>Obwohl es möglich ist, nur Teile des Quellbaums zu
- aktualisieren, ist die einzige unterstütze Prozedur,
- den kompletten Quellbaum zu aktualisieren und alles neu zu
- übersetzen. Dazu zählen alle Userland-Programme in
- <filename>/bin</filename> und <filename>/sbin</filename>,
- 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.</para>
- </warning>
+ <sect2 xml:id="updating-src-quick-start">
+ <title>Schnellstartanleitung</title>
- <indexterm>
- <primary>Subversion</primary>
- </indexterm>
+ <para>Diese kurze Referenz zeigt die typischen Schritte um &os;
+ aus den Quellen zu aktualisieren. Spätere Abschnitte
+ beschreiben die Prozedur im Detail.</para>
- <para><application>Subversion</application> benutzt die
- <foreignphrase>Pull</foreignphrase>-Methode, um die Quellen zu
- aktualisieren. Der Benutzer, oder ein
- <command>cron</command>-Skript, ruft das Programm
- <command>svn</command> auf, das die Quellen aktualisiert.
- <application>Subversion</application> ist die empfohlene
- Methode, um die lokalen Quellen zu aktualisieren, da
- aktuelle Updates zu einem vom Benutzer bestimmten Zeitpunkt
- herunterlädt. Zudem ist es einfach, die Prozedur auf bestimmte
- Dateien oder Verzeichnisse zu beschränken. Die angeforderten
- Updates werden zur Laufzeit auf dem Server generiert. Die
- Aktualisierung der Quellen wird in <xref linkend="svn"/>
- beschrieben.</para>
-
- <para>Wenn ein Benutzer unabsichtlich Teile des Archivs löscht,
- wird das von <application>Subversion</application> erkannt und
- bei der nächsten Aktualisierung repariert.</para>
- </sect1>
-
- <sect1 xml:id="makeworld">
- <title>Das Basissystem neu bauen</title>
-
- <indexterm>
- <primary>Bau des Basissystems</primary>
- </indexterm>
-
- <para>Sobald 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. Dieser Prozess wird auch als
- <quote>die Welt neu bauen</quote> bezeichnet.</para>
-
- <para><emphasis>Bevor</emphasis> das System neu gebaut wird,
- müssen die folgende Aufgaben erledigt werden:</para>
-
- <procedure>
- <title>Führen Sie diese Aufgaben aus, <emphasis>bevor</emphasis>
- das System neu gebaut wird</title>
-
- <step>
- <para>Sichern Sie alle wichtigen Daten auf ein anderes System
- oder auf Wechselmedien und überprüfen Sie die Integrität der
- Sicherungskopie. Zudem sollten Sie bootfähige
- Installationsmedien zur Hand haben. Es kann nicht oft genug
- betont werden, wie wichtig es ist, vor dem Neubau des
- Systems eine Sicherung zu machen. Während der Neubau des
- Systems eine einfache Aufgabe ist, wird es zwangsläufig
- einmal vorkommen, dass Fehler im Quellcode dazu führen, dass
- das System nicht mehr bootet. Wahrscheinlich wird die
- Sicherungskopie nicht benötigt, aber gehen Sie auf Nummer
- sicher!</para>
- </step>
-
- <step>
- <indexterm><primary>Mailingliste</primary></indexterm>
- <para>Lesen Sie die neuesten Einträge in &a.stable; oder
- &a.current;, je nachdem welchen Zweig Sie folgen.
- Informieren Sie sich über bekannte Probleme und welche
- Systeme davon betroffen sind. Wenn ein Problem für den
- von Ihnen synchronisierten Code besteht, warten Sie auf
- eine <quote>all clear</quote>-Nachricht, die besagt, dass
- das Problem behoben wurde. Synchronisieren Sie dann die
- Quellen neu um sicherzustellen, dass die lokale Version
- die benötigten Korrekturen hat.</para>
- </step>
-
- <step>
- <para>Lesen Sie <filename>/usr/src/UPDATING</filename> für
- zusätzliche Aufgaben, die für diese Version des Quellcodes
- notwendig sind. Diese Datei enthält wichtige Informationen
- über potentielle Probleme. Gegebenenfalls müssen einige
- Kommandos in einer bestimmten Reihenfolge ausgeführt werden.
- Manche Aktualisierungen erfordern bestimmte zusätzliche
- Schritte, die ausgeführt werden müssen, bevor das System neu
- gebaut wird, wie beispielsweise das umbenennen oder löschen
- von bestimmten Dateien. Diese Aufgaben sind am Ende der
- Datei aufgeführt. Die Anweisungen in
- <filename>UPDATING</filename> sind aktueller als die in
- diesem Handbuch. Im Zweifelsfall folgen Sie bitte den
- Anweisungen aus <filename>UPDATING</filename>.</para>
- </step>
- </procedure>
-
- <warning>
- <title>Verwenden Sie nicht <command>make world</command></title>
-
- <para>Einige ältere Dokumentationen empfehlen
- <command>make world</command> für den Neubau.
- Das Kommando überspringt jedoch wichtige Schritte und sollte
- nur von Experten verwendet werden. In fast allen Fällen ist
- <command>make world</command> falsch. Benutzen Sie
- stattdessen die nachstehende Anleitung.</para>
- </warning>
-
- <sect2 xml:id="canonical-build">
- <title>Übersicht</title>
-
- <para>Dieser Prozess geht davon aus, dass ein System von einer
- älteren Version von &os; auf eine neuere Version aktualisiert
- wird. Der Quellcode für die neue Version wurde nach den
- Anweisungen in <xref linkend="synching"/>
- synchronisiert.</para>
-
- <para>Das Basissystem enthält den &os;-Kernel, die
- zentralen Binärdateien, Bibliotheken und Entwicklerdateien
- sowie einen integrierten Compiler. Die Reihenfolge, in der
- diese Komponenten gebaut werden, ist wichtig.</para>
-
- <para>Beispielsweise könnte der alte Compiler aufgrund von
- Fehlern nicht in der Lage sein, den neuen Kernel zu
- übersetzen. Da der neue Kernel mit dem neuen Compiler
- übersetzt wird, muss der neue Compiler gebaut, aber nicht
- notwendigerweise <emphasis>installiert</emphasis> werden,
- bevor der neue Kernel gebaut wird.</para>
-
- <para>Das neue Basissystem ist eventuell auf neue Funktionen des
- Kernels angewiesen. Aus diesem Grund muss der neue Kernel
- installiert sein, bevor das neue Basissystem installiert
- wird.</para>
-
- <para>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.</para>
-
- <para>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
- Großteil Dateien oder fügt neue hinzu, bestehende Dateien
- werden nicht gelöscht. Da dieser Prozess Probleme verursachen
- kann, werden in <filename>/usr/src/UPDATING</filename>
- gegebenenfalls Dateien aufgelistet, die manuell entfernt
- werden müssen.</para>
-
- <para>Diese Bedenken haben zu einer empfohlenen
- Reihenfolge bei der Aktualisierung geführt, die im folgenden
- Prozess beschrieben wird.</para>
-
- <note>
- <para>Es ist ratsam, die Ausgaben von <command>make</command>
- in einer Datei zu sichern. Wenn etwas schief geht, kann
- eine Kopie der Fehlermeldung zu einer der &os;-Mailinglisten
- gesendet werden.</para>
-
- <para>Dazu können Sie einfach <command>script</command>
- benutzen, dem Sie beim Aufruf als Parameter den Dateinamen
- für die Ausgaben mitgeben. Sichern Sie die Ausgaben nicht
- nach <filename>/tmp</filename>, da dessen Inhalt beim
- nächsten Neustart vielleicht verloren geht. Ein besserer
- Platz ist <filename>/var/tmp</filename>. Setzen Sie dieses
- Kommando unmittelbar vor dem Neubau ab und geben Sie
- <userinput>exit</userinput> ein, wenn der Bau abgeschlossen
- ist:</para>
-
- <screen>&prompt.root; <userinput>script <replaceable>/var/tmp/mw.out</replaceable></userinput>
-Script started, output file is /var/tmp/mw.out</screen>
- </note>
-
<procedure>
- <title>Zusammenfassung des Aktualisierungsprozesses</title>
+ <step xml:id="updating-src-quick-start-preparing">
+ <title>Vorbereitungen</title>
- <para>Die verwendeten Kommandos sollten in der hier
- angegebenen Reihenfolge ausgeführt werden. Die Funktionen
- der einzelnen Kommandos werden in diesem Abschnitt
- beschrieben.</para>
+ <para>Wenn der Rechner zum ersten mal aktualisiert wird,
+ geben Sie folgendes Kommando ein:</para>
- <step>
- <para>Wenn der Bauprozess bereits einmal auf diesem
- System durchgeführt wurde, existiert vielleicht noch eine
- Kopie davon in <filename>/usr/obj</filename>. Um den
- neuen Bauprozess zu beschleunigen und Ärger aufgrund von
- Abhängigkeiten zu vermeiden, kann dieses Verzeichnis
- entfernt werden:</para>
+ <screen>&prompt.root; <userinput>etcupdate extract</userinput></screen>
- <screen>&prompt.root; <userinput>chflags -R noschg /usr/obj/*</userinput>
-&prompt.root; <userinput>rm -rf /usr/obj</userinput></screen>
- </step>
+ <para>Dies erstellt einen Kontrollpunkt zum späteren
+ Vergleich und Zusammenführen von
+ Systemeinstellungen.</para>
- <step>
- <para>Übersetzen Sie zuerst den neuen Compiler und
- ein paar damit zusammenhängende Werkzeuge. Verwenden Sie
- dann den neuen Compiler, um den Rest des Basissystems zu
- erstellen. Das Ergebnis wird in
- <filename>/usr/obj</filename> abgelegt.</para>
-
- <screen>&prompt.root; <userinput>cd /usr/src</userinput>
-&prompt.root; <userinput>make buildworld</userinput></screen>
+ <para><emphasis>Dieses Kommando muss auf dem Rechner nur
+ einmalig ausgeführt werden.</emphasis>
+ &man.etcupdate.8; benötigt nach dem ersten
+ <emphasis>extract</emphasis> keine weiteren
+ Aktualisierungen.</para>
</step>
<step>
- <para>Benutzen Sie den neuen Compiler aus
- <filename>/usr/obj</filename>, um sich vor falschen
- Compiler-Kernel-Kombinationen abzusichern. Dies ist
- notwendig, da sich einige Datenstrukturen geändert haben
- könnten und Programme wie &man.ps.1; und &man.top.1; nur
- mit einem Kernel zusammen arbeiten, der auch zu dem
- entsprechenden Quellcode passt.</para>
+ <title>Aktualisierung und Bauprozess</title>
- <screen>&prompt.root; <userinput>make buildkernel</userinput></screen>
- </step>
+ <screen>&prompt.root; <userinput>svn update /usr/src</userinput> <co xml:id="updating-src-qs-svnup"/>
+<emphasis>check <filename>/usr/src/UPDATING</filename></emphasis> <co xml:id="updating-src-qs-review-updating"/>
+&prompt.root; <userinput>cd /usr/src</userinput> <co xml:id="updating-src-qs-cd"/>
+&prompt.root; <userinput>make -j<replaceable>4</replaceable> buildworld</userinput> <co xml:id="updating-src-qs-buildworld"/>
+&prompt.root; <userinput>make -j<replaceable>4</replaceable> kernel</userinput> <co xml:id="updating-src-qs-kernel"/>
+&prompt.root; <userinput>shutdown -r now</userinput> <co xml:id="updating-src-qs-reboot"/>
+&prompt.root; <userinput>cd /usr/src</userinput> <co xml:id="updating-src-qs-cd2"/>
+&prompt.root; <userinput>make installworld</userinput> <co xml:id="updating-src-qs-installworld"/>
+&prompt.root; <userinput>etcupdate</userinput> <co xml:id="updating-src-qs-etcupdate"/>
+&prompt.root; <userinput>shutdown -r now</userinput> <co xml:id="updating-src-qs-shutdown"/></screen>
- <step>
- <para>Installieren Sie den neuen Kernel und die
- Kernelmodule, damit Sie den frisch aktualisierten Kernel
- starten können. Wenn <varname>kern.securelevel</varname>
- einen Wert größer als <literal>1</literal> besitzt
- <emphasis>und</emphasis> der Kernel mit
- <literal>noschg</literal> oder ähnlichen Optionen
- geschützt ist, müssen Sie zuerst in den Single-User-Modus
- wechseln. Andernfalls läuft dieses Kommando problemlos im
- Mehrbenutzermodus. Weitere Informationen über
- <varname>kern.securelevel</varname> finden Sie in
- &man.init.8;. Optionen, die auf Dateien gesetzt werden
- können, werden in &man.chflags.1; detailliert
- erläutert.</para>
+ <calloutlist>
+ <callout arearefs="updating-src-qs-svnup">
+ <para>Holt die neueste Version der Quellen.
+ <xref linkend="updating-src-obtaining-src"/> enthält
+ weitere Informationen zum Aktualisieren und Bauen der
+ Quellen.</para>
+ </callout>
- <screen>&prompt.root; <userinput>make installkernel</userinput></screen>
- </step>
+ <callout arearefs="updating-src-qs-review-updating">
+ <para><filename>/usr/src/UPDATING</filename> enthält
+ Anweisungen für alle manuellen Schritte, die vor oder
+ nach dem Bau der Quellen erforderlich sind.</para>
+ </callout>
- <step>
- <para>Starten Sie das System in den Single-User-Modus, damit
- Probleme mit der Aktualisierung von Programmen, die
- bereits gestartet sind, minimiert werden. Ebenso
- minimiert dieser Modus Probleme, die mit der Verwendung
- des alten Basissystems und des neuen Kernels zu tun
- haben.</para>
+ <callout arearefs="updating-src-qs-cd">
+ <para>Wechsel in das Bauverzeichnis.</para>
+ </callout>
- <screen>&prompt.root; <userinput>shutdown now</userinput></screen>
+ <callout arearefs="updating-src-qs-buildworld">
+ <para>Bau des Basissystems, mit Ausnahme des
+ Kernels.</para>
+ </callout>
- <para>Führen Sie folgende Befehle im Single-User-Modus aus,
- wenn das System mit einem
- <acronym>UFS</acronym>-Dateisystem formatiert ist:</para>
+ <callout arearefs="updating-src-qs-kernel">
+ <para>Bau und Installation des Kernels. Dieser Schritt
+ ist gleichbedeutend mit
+ <buildtarget>buildkernel</buildtarget> und
+ <buildtarget>installkernel</buildtarget>.</para>
+ </callout>
- <screen>&prompt.root; <userinput>mount -u /</userinput>
-&prompt.root; <userinput>mount -a -t ufs</userinput>
-&prompt.root; <userinput>swapon -a</userinput></screen>
+ <callout arearefs="updating-src-qs-installworld">
+ <para>Installation des Basissystems.</para>
+ </callout>
- <para>Wenn das System mit <acronym>ZFS</acronym> formatiert
- ist, führen Sie stattdessen folgende Befehle aus. In
- diesem Beispiel ist der Name des Pools
- <literal>zroot</literal>:</para>
+ <callout arearefs="updating-src-qs-etcupdate">
+ <para>Aktualisierung und Zusammenführung der
+ Konfigurationsdateien in
+ <filename>/etc</filename>.</para>
+ </callout>
- <screen>&prompt.root; <userinput>zfs set readonly=off zroot</userinput>
-&prompt.root; <userinput>zfs mount -a</userinput></screen>
+ <callout arearefs="updating-src-qs-shutdown">
+ <para>Neustart des Systems mit dem neu erstellten
+ Basissystem und Kernel.</para>
+ </callout>
+ </calloutlist>
</step>
-
- <step>
- <para>Optional: Wenn eine andere Tastaturbelegung als
- US-Englisch gewünscht wird, kann diese mit &man.kbdmap.1;
- angepasst werden:</para>
-
- <screen>&prompt.root; <userinput>kbdmap</userinput></screen>
- </step>
-
- <step>
- <para>Führen Sie folgenden Befehl aus, wenn die
- <acronym>CMOS</acronym>-Uhr auf die lokale Zeit
- eingestellt ist (dies ist der Fall, wenn die Ausgabe von
- &man.date.1; nicht die richtige Zeit anzeigt):</para>
-
- <screen>&prompt.root; <userinput>adjkerntz -i</userinput></screen>
- </step>
-
- <step>
- <para>Bei der Aktualisierung des Basissystems werden
- bestimmte Verzeichnisse, wie <filename>/etc</filename>,
- <filename>/var</filename> und <filename>/usr</filename>
- ausgelassen. Im nächsten Schritt werden ein paar
- Konfigurationsdateien zur Vorbereitung für das neue
- Basissystem aktualisiert. Der folgende Befehl
- aktualisiert lediglich Dateien, die für das Gelingen von
- <buildtarget>installworld</buildtarget> unerlässlich sind.
- Beispielsweise können neue Gruppen, Systembenutzerkonten,
- oder neue Startskripten erstellt werden, die seit der
- letzten Aktualisierung hinzugefügt wurden. Dieser Schritt
- ist notwendig, damit
- <buildtarget>installworld</buildtarget> in der Lage ist,
- die neuen Konten, Gruppen und Skripten zu verwenden.
- Weitere Informationen zu diesem Befehl finden Sie in
- <xref linkend="mergemaster"/>:</para>
-
- <screen>&prompt.root; <userinput>mergemaster -p</userinput></screen>
- </step>
-
- <step>
- <para>Installieren Sie das neue Basissystem und die
- Systemdateien aus <filename>/usr/obj</filename>:</para>
-
- <screen>&prompt.root; <userinput>cd /usr/src</userinput>
-&prompt.root; <userinput>make installworld</userinput></screen>
- </step>
-
- <step>
- <para>Aktualisieren Sie die verbleibenden
- Konfigurationsdateien:</para>
-
- <screen>&prompt.root; <userinput>mergemaster -iF</userinput></screen>
- </step>
-
- <step>
- <para>Löschen Sie veraltete Dateien. Dieser Schritt
- ist wichtig, da alte Dateien manchmal Probleme bereiten,
- falls sie nicht entfernt werden:</para>
-
- <screen>&prompt.root; <userinput>make delete-old</userinput></screen>
- </step>
-
- <step>
- <para>Nun wird ein Neustart benötigt, um den neuen Kernel
- und das neue Basissystem zu laden:</para>
-
- <screen>&prompt.root; <userinput>reboot</userinput></screen>
- </step>
-
- <step>
- <para>Stellen Sie sicher, dass alle Ports neu gebaut wurden,
- bevor die alten Bibliotheken entfernt werden. Folgen
- Sie dazu den Anweisungen aus <xref
- linkend="ports-upgrading"/>. Entfernen Sie anschließend
- alle veralteten Bibliotheken um Konflikte mit den neuen
- Bibliotheken zu vermeiden. Weitere Informationen zu
- diesem Schritt finden Sie
- in <xref linkend="make-delete-old"/>.</para>
-
- <screen>&prompt.root; <userinput>make delete-old-libs</userinput></screen>
- </step>
</procedure>
-
- <indexterm><primary>Single-User Modus</primary></indexterm>
-
- <para>Wenn Sie eine Ausfallzeit des Systems in Kauf nehmen
- können, sollten sie das System im Single-User Modus
- bauen. Die Neuinstallation des Systems verändert viele
- wichtige Systemdateien, Systemwerkzeuge, Bibliotheken und
- Include-Dateien. Ändern Sie diese Dateien auf einem laufenden
- System, insbesondere mit aktiven Nutzern, kann dies große
- Probleme verursachen.</para>
</sect2>
- <sect2 xml:id="src-updating">
- <title>Konfigurationsdateien</title>
+ <sect2 xml:id="updating-src-preparing">
+ <title>Vorbereitungen zum Aktualisieren aus den Quellen</title>
- <indexterm>
- <primary><filename>make.conf</filename></primary>
- </indexterm>
+ <para>Wenn der Rechner zum ersten Mal aus den Quellen
+ aktualisiert wird, lassen Sie
+ <command>etcupdate extract</command> laufen, um einen
+ Kontrollpunkt zum späteren Vergleich zu erstellen. Dieser
+ Schritt wird einmalig auf dem Rechner ausgeführt.</para>
- <para>Der Bauprozess verwendet verschiedene
- Konfigurationsdateien.</para>
-
- <para>Das <filename>Makefile</filename> in
- <filename>/usr/src</filename> legt fest, wie die Programme,
- aus denen &os; besteht, zu bauen sind und in welcher
- Reihenfolge diese zu bauen sind.</para>
-
- <para>Die verfügbaren Optionen für <command>make</command>
- werden in &man.make.conf.5; und
- <filename>/usr/share/examples/etc/make.conf</filename>
- beschrieben. Jede Option in
- <filename>/etc/make.conf</filename> beeinflusst das Verhalten
- von <command>make</command> beim Bau von Programmen. Die in
- <filename>/etc/make.conf</filename> gesetzten Optionen wirken
- sich bei jedem Aufruf von <command>make</command> aus,
- einschließlich beim Bau von Programmen aus der Ports-Sammlung,
- vom Benutzer geschriebene C-Programme oder beim Bau des
- &os;-Betriebssystems. Ä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.</para>
-
- <indexterm>
- <primary><filename>/etc/src.conf</filename></primary>
- </indexterm>
-
- <para>Der Bau des Betriebssystems aus dem Quellcode wird von
- <filename>/etc/src.conf</filename> kontrolliert. Im Gegensatz
- zu <filename>/etc/make.conf</filename> greifen die Optionen in
- <filename>/etc/src.conf</filename> 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.</para>
+ <para>Lesen Sie <filename>/usr/src/UPDATING</filename>. Jeder
+ manuelle Schritt, welcher vor oder nach der Aktualisierung
+ erforderlich ist, wird in dieser Datei beschrieben.</para>
</sect2>
- <sect2 xml:id="make-buildworld">
- <title>Variablen und Ziele</title>
+ <sect2 xml:id="updating-src-obtaining-src">
+ <title>Den Quellcode aktualisieren</title>
- <para>Ein typischer Aufruf von <command>make</command> sieht
- wie folgt aus:</para>
+ <para>Der Quellcode von &os; befindet sich in
+ <filename>/usr/src/</filename>. Die bevorzugte Methode zur
+ Aktualisierung dieser Quellen ist über das
+ Versionskontrollsystem <application>Subversion</application>.
+ Sie sollten sicherstellen, dass der Quellcode unter
+ Versionskontrolle steht:</para>
- <screen>&prompt.root; <userinput>make -<replaceable>x</replaceable> -D<replaceable>VARIABLE</replaceable> <replaceable>target</replaceable></userinput></screen>
+ <screen>&prompt.root; <userinput>svn info /usr/src</userinput>
+Path: /usr/src
+Working Copy Root Path: /usr/src
+...</screen>
- <para>In diesem Beispiel ist
- <option>-<replaceable>x</replaceable></option> eine Option,
- die an <command>make</command> übergeben wird. Eine Liste
- gültiger Optionen finden Sie in &man.make.1;.</para>
+ <para>Dies ist ein Hinweis darauf, dass
+ <filename>/usr/src/</filename> unter Versionskontrolle steht
+ und mit &man.svn.1; aktualisiert werden kann.</para>
- <para>Mit
- <option>-D<replaceable>VARIABLE</replaceable></option>
- setzen Sie eine Variable. Das Verhalten der
- <filename>Makefile</filename> wird von Variablen bestimmt.
- Diese sind etweder in <filename>/etc/make.conf</filename>
- eingetragen, oder können an <command>make</command> übergeben
- werden. Das folgende Beispiel setzt eine Variable, die
- verhindert, dass die <quote>profiled</quote> Bibliotheken
- gebaut werden:</para>
+ <screen xml:id="synching">&prompt.root; <userinput>svn update /usr/src</userinput></screen>
- <screen>&prompt.root; <userinput>make -DNO_PROFILE <replaceable>target</replaceable></userinput></screen>
+ <para>Dieser Vorgang kann einige Zeit in Anspruch nehmen, falls
+ das Verzeichnis nicht zuletzt aktualisiert wurde. Nach
+ Beendigung ist der Quellcode aktuell und der im nächsten
+ Abschnitt beschriebene Bauprozess kann beginnen.</para>
- <para>Dieser Aufruf entspricht dem folgenden Eintrag in
- <filename>/etc/make.conf</filename>:</para>
+ <note xml:id="updating-src-obtaining-src-checkout">
+ <title>Beschaffung des Quellcodes</title>
- <programlisting>NO_PROFILE= true # Avoid compiling profiled libraries</programlisting>
+ <para>Meldet die Ausgabe
+ <literal>'/usr/src' is not a working copy</literal>, dann
+ fehlen entweder Dateien, oder das Verzeichnis wurde mit
+ einer anderen Methode aktualisiert. Ein erneuter Checkout
+ der Quellen ist jetzt erforderlich.</para>
- <para>Das <quote>Ziel</quote> sagt <command>make</command>
- was zu tun ist und das <filename>Makefile</filename>
- definiert die verfügbaren Ziele. Einige Ziele werden
- verwendet, um den Bauprozess in eine Reihe von
- Einzelschritten zu unterteilen.</para>
+ <table xml:id="updating-src-obtaining-src-repopath">
+ <title>&os; Versionen und Repository-Pfade</title>
- <para>Über separate Optionen zu verfügen, ist aus mehreren
- Gründen nützlich. Erstens erlaubt dies einen Bauprozess,
- der die Komponenten des laufenden Systems nicht
- beeinträchtigt. Deswegen können Sie
- <command>buildworld</command> gefahrlos im Mehrbenutzermodus
- laufen lassen. Die Installation mit
- <buildtarget>installworld</buildtarget> sollte aber immer
- noch im Single-User-Modus erfolgen.</para>
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry>Ausgabe von <command>uname -r</command></entry>
+ <entry>Repository-Pfad</entry>
+ <entry>Beschreibung</entry>
+ </row>
+ </thead>
- <para>Zweitens kann, wie in <xref linkend="small-lan"/>
- beschrieeben, <acronym>NFS</acronym> benutzt werden, um
- mehrere Maschinen in einem Netzwerk zu aktualisieren.</para>
+ <tbody>
+ <row>
+ <entry><literal><replaceable>X.Y</replaceable>-RELEASE</literal></entry>
+ <entry><literal>base/releng/</literal><replaceable>X</replaceable></entry>
+ <entry>Die Release-Version inklusive kritischer
+ Sicherheits- und Bugfix-Patches. Dieser Zweig wird
+ für die meisten Benutzer empfohlen.</entry>
+ </row>
- <para>Mit <option>-j</option> können Sie
- <command>make</command> anweisen, mehrere Prozesse zu
- starten. Da der Übersetzungsprozess
- hauptsächlich von <acronym>I/O</acronym> statt der
- <acronym>CPU</acronym> bestimmt wird, ist diese Option für
- Einprozessor- und Mehrprozessor-Systeme nützlich.</para>
+ <row>
+ <entry><literal><replaceable>X.Y</replaceable>-STABLE</literal></entry>
+ <entry><literal>base/stable/</literal><replaceable>X</replaceable></entry>
+ <entry>
+ <para>Die Release-Version und alle weitere Versionen
+ auf diesem Zweig.
+ <emphasis>STABLE</emphasis> bezieht sich darauf,
+ dass die Binärschnittstelle
+ (<acronym>ABI</acronym>) sich nicht ändert, sodass
+ Anwendungen welche auf älteren Versionen erstellt
+ wurden weiterhin lauffähig sind. Eine Anwendung,
+ welche für &os;&nbsp;10.1 übersetzt wurde, läuft
+ auch auf &os;&nbsp;10-STABLE.</para>
- <para>Auf einem typischen Einprozessor-System können Sie den
- folgenden Befehl eingeben, um bis zu vier Prozesse
- gleichzeitig laufen zu lassen. Erfahrungsberichte aus den
- Mailinglisten zeigen, dass dieser Aufruf typischerweise den
- besten Geschwindigkeitsgewinn bringt:</para>
+ <para>STABLE-Zweige haben gelegentlich Fehler und
+ Inkompatibilitäten, welche den Benutzer
+ beeinträchtigen könnten. In der Regel werden
+ diese Fehler aber zügig behoben.</para>
+ </entry>
+ </row>
- <screen>&prompt.root; <userinput>make -j4 buildworld</userinput></screen>
+ <row>
+ <entry><literal><replaceable>X</replaceable>-CURRENT</literal></entry>
+ <entry><literal>base/head/</literal></entry>
+ <entry>Die neueste unveröffentlichte Version von
+ &os;. Der CURRENT-Zweig kann viele Fehler und
+ Inkompatibilitäten enthalten und wird daher nur für
+ fortgeschrittene Benutzer empfohlen.</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
- <para>Wenn Sie ein Mehrprozessor-System besitzen, probieren
- Sie Werte zwischen <literal>6</literal> und
- <literal>10</literal> aus.</para>
+ <para>Ermitteln Sie mit &man.uname.1; die verwendete
+ &os;-Version:</para>
- <indexterm>
- <primary>Bau des Basissystems</primary>
- <secondary>Laufzeiten</secondary>
- </indexterm>
+ <screen>&prompt.root; <userinput>uname -r</userinput>
+10.3-RELEASE</screen>
- <note>
- <para>Wenn mit <command>make buildworld</command> Variablen
- verwendet werden, müssen dieselben Variablen auch bei
- <command>make installworld</command> angegeben werden.
- Allerdings darf <option>-j</option> zusammen mit
- <buildtarget>installworld</buildtarget>
- <emphasis>nicht</emphasis> benutzt werden.</para>
+ <para>Basierend auf <xref
+ linkend="updating-src-obtaining-src-repopath"/> ist
+ <literal>base/releng/10</literal> der Repository-Pfad zur
+ Aktualisierung von <literal>10.3-RELEASE</literal>. Dieser
+ Pfad wird beim Auschecken der Quellen benutzt:</para>
- <para>Haben Sie zum Bauen die folgende Kommandozeile
- verwendet:</para>
+ <screen>&prompt.root; <userinput>mv /usr/src /usr/src.bak</userinput> <co xml:id="updating-src-obtaining-src-mv"/>
+&prompt.root; <userinput>svn checkout https://svn.freebsd.org/base/<replaceable>releng/10.3</replaceable> /usr/src</userinput> <co xml:id="updating-src-obtaining-src-checkout-cmd"/></screen>
- <screen>&prompt.root; <userinput>make -DNO_PROFILE buildworld</userinput></screen>
+ <calloutlist>
+ <callout arearefs="updating-src-obtaining-src-mv">
+ <para>Verschiebt das alte Verzeichnis. Wenn es keine
+ lokalen Änderungen in diesem Verzeichnis gibt, kann es
+ gelöscht werden.</para>
+ </callout>
- <para>dann installieren Sie das Ergebnis mit:</para>
-
- <screen>&prompt.root; <userinput>make -DNO_PROFILE installworld</userinput></screen>
-
- <para>Andernfalls würde das System bei der Installation
- versuchen, die <quote>profiled</quote> Bibliotheken, die
- aber gar nicht gebaut wurden, zu installieren.</para>
+ <callout arearefs="updating-src-obtaining-src-checkout-cmd">
+ <para>Der Pfad aus <xref
+ linkend="updating-src-obtaining-src-repopath"/> wird
+ der Repository-URL hinzugefügt. Der dritte Parameter
+ ist das lokale Zielverzeichnis für den Quellcode.</para>
+ </callout>
+ </calloutlist>
</note>
</sect2>
- <sect2 xml:id="mergemaster">
- <info>
- <title>Abgleich der Konfigurationsdateien</title>
+ <sect2 xml:id="updating-src-building">
+ <title>Den Quellcode bauen</title>
- <authorgroup>
- <author>
- <personname>
- <firstname>Tom</firstname>
- <surname>Rhodes</surname>
- </personname>
- <contrib>Beigetragen von </contrib>
- </author>
- </authorgroup>
- </info>
+ <para xml:id="makeworld">Die Welt, also das gesamte
+ Basissystem mit Ausnahme des Kernels, wird zuerst
+ übersetzt, um aktuelle Werkzeuge zum Erstellen des
+ Kernels bereitzustellen. Anschließend wird der
+ Kernel gebaut:</para>
- <indexterm><primary><command>mergemaster</command></primary></indexterm>
+ <screen>&prompt.root; <userinput>cd /usr/src</userinput>
+&prompt.root; <userinput>make buildworld</userinput>
+&prompt.root; <userinput>make buildkernel</userinput></screen>
- <para>&os; enthält das &man.mergemaster.8; Bourne-Shell
- Skript, welches dabei behilflich ist die Unterschiede zwischen
- den Konfigurationsdateien in <filename>/etc</filename> und
- denen unter <filename>/usr/src/etc</filename> zu finden.
- Dies ist der empfohlene Weg, die Systemkonfiguration mit dem
- Quellbaum abzugleichen.</para>
+ <para>Das Ergebnis wird in <filename>/usr/obj</filename>
+ abgelegt.</para>
- <para>Es ist ratsam, zuerst das bestehende
- <filename>/etc</filename> an einen sicheren Ort zu
- kopieren. Mit <option>-R</option> wird rekursiv kopiert und
- <option>-p</option> erhält die Zugriffszeiten und Eigentümer
- der Dateien:</para>
+ <para>Dies sind die grundlegenden Schritte. Weitere Optionen
+ zur Kontrolle des Bauprozesses sind nachfolgend
+ beschrieben.</para>
- <screen>&prompt.root; <userinput>cp -Rp /etc /etc.old</userinput></screen>
+ <sect3 xml:id="updating-src-building-clean-build">
+ <title>Umgebung für den Bauprozess säubern</title>
- <para>Beim Aufruf wird <command>mergemaster</command>
- ausgehend von <filename>/</filename> 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 <option>+</option>
- gekennzeichnet. Zeilen die gelöscht oder ersetzt werden,
- sind mit <option>-</option> gekennzeichnet. Das
- Anzeigeformat wird in &man.diff.1; genauer erklärt.</para>
+ <para>Einige Versionen von &os; hinterlassen bereits
+ übersetzten Code im temporären Objektverzeichnis
+ <filename>/usr/obj</filename>. Dies kann nachfolgende
+ Bauprozesse beschleunigen, da Code, der nicht verändert
+ wurde, nicht neu übersetzt werden muss. Um eine saubere
+ Umgebung für den Bauprozess zu schaffen, entfernen Sie
+ <filename>/usr/obj</filename> bevor Sie mit dem Bau
+ beginnen. Dies ist dasselbe wie
+ <command>make clean</command>, nur sehr viel
+ schneller:</para>
- <para>Als nächstes zeigt <command>mergemaster</command> jede
- geänderte Datei an und Sie haben die Wahl, die neue Datei
- (auch 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 Ausgabe noch einmal
- zu sehen.</para>
+ <screen>&prompt.root; <userinput>rm -rf /usr/obj/*</userinput></screen>
+ </sect3>
- <para>Wenn Sie die temporäre Datei löschen, geht
- <command>mergemaster</command> davon aus, dass Sie die
- aktuelle Datei unverändert behalten möchten. Die Auswahl
- dieser Option wird nicht empfohlen. Durch die Eingabe von
- <keycap>?</keycap> können Sie jederzeit die Hilfe am Prompt
- von <command>mergemaster</command> aufrufen. Wenn Sie eine
- Datei überspringen, wird <command>mergemaster</command>
- diese am Ende erneut präsentieren.</para>
+ <sect3 xml:id="updating-src-building-jobs">
+ <title>Anzahl der Prozesse einstellen</title>
- <para>Wenn Sie die temporäre Datei installieren, wird die
- aktuelle Datei mit der neuen Datei überschrieben. Sie
- sollten alle unveränderten Konfigurationsdateien auf diese
- Weise aktualisieren.</para>
+ <para>Eine höhere Anzahl an Prozessen kann die
+ Geschwindigkeit auf Mehrprozessor-Systemen verbessern.
+ Die Anzahl der Kerne lässt sich mit
+ <command>sysctl hw.cpu</command> bestimmen. Prozessoren
+ variieren ebenso, wie die verschiedenen Build-Systeme von
+ &os;. Sie müssen daher mehrere Versuche starten um zu
+ sehen, wie die Anzahl der Prozesse die Geschwindigkeit
+ beeinflusst. Als Ausgangspunkt können Sie die halbe bis
+ doppelte Anzahl der Kerne als Wert probieren. Die Anzahl
+ der Prozesse wird mit <option>-j</option> angegeben.</para>
- <para>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 <keycap>l</keycap> übernehmen Sie die aktuelle Zeile
- der links dargestellten Datei, mit der Taste
- <keycap>r</keycap> ü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.</para>
+ <example xml:id="updating-src-building-jobs-example">
+ <title>Die Anzahl der Prozesse erhöhen</title>
- <para>Haben Sie sich entschieden die Differenzen noch einmal
- anzuzeigen, werden nochmals die Unterschiede in beiden
- Dateien angezeigt.</para>
+ <para>Das Basissystem und den Kernel mit vier Prozessen
+ bauen:</para>
- <para>Wenn <command>mergemaster</command> 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.</para>
+ <screen>&prompt.root; <userinput>make -j4 buildworld buildkernel</userinput></screen>
+ </example>
+ </sect3>
- <!--
- <para>Wenn Sie den Abgleich lieber selbst ausführen wollen,
- beachten Sie bitte, dass Sie nicht einfach die Dateien aus
- <filename>/usr/src/etc</filename> nach <filename>/etc</filename>
- kopieren können. Einige dieser Dateien müssen zuerst
- <emphasis>installiert</emphasis> werden, bevor sie benutzt werden
- können. Das liegt daran, dass
- <filename>/usr/src/etc</filename> keine exakte Kopie von
- <filename>/etc</filename> ist. Zudem gibt es Dateien, die sich
- in <filename>/etc</filename> befinden aber nicht in
- <filename>/usr/src/etc</filename>.</para>
+ <sect3 xml:id="updating-src-building-only-kernel">
+ <title>Nur den Kernel erstellen</title>
- <para>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.</para>
+ <para>Wenn sich der Quellcode verändert hat, muss ein
+ <buildtarget>buildworld</buildtarget> ausgeführt
+ werden. Danach kann der Kernel mit
+ <buildtarget>buildkernel</buildtarget> übersetzt
+ werden. Um lediglich den Kernel zu übersetzen:</para>
- <warning>
- <title>Sichern Sie die Inhalte von <filename>/etc</filename></title>
+ <screen>&prompt.root; <userinput>cd /usr/src</userinput>
+&prompt.root; <userinput>make buildkernel</userinput></screen>
+ </sect3>
- <para>Es wird empfohlen, zuerst das bestehende
- <filename>/etc</filename> an einen sicheren Ort zu
- kopieren:</para>
+ <sect3 xml:id="updating-src-building-custom-kernel">
+ <title>Einen angepassten Kernel erstellen</title>
- <screen>&prompt.root; <userinput>cp -Rp /etc /etc.old</userinput></screen>
+ <para>Der &os; Standard-Kernel basiert auf einer
+ <emphasis>Konfigurationsdatei</emphasis> namens
+ <filename>GENERIC</filename>. Der
+ <filename>GENERIC</filename>-Kernel enthält die
+ gängigsten Gerätetreiber und Optionen. Manchmal ist es
+ aber sinnvoll oder gar notwendig, einen angepassten
+ Kernel zu erstellen, um Gerätetreiber oder Optionen
+ hinzuzufügen oder zu entfernen, um bestimmte Anforderungen
+ zu erfüllen.</para>
- <para>Mit <option>-R</option> wird rekursiv kopiert und
- <option>-p</option> erhält die Attribute der kopierten
- Dateien, wie Zugriffszeiten und Eigentümer.</para>
- </warning>
+ <para>Zum Beispiel könnte jemand, der einen kleinen
+ eingebetteten Rechner mit eingeschränktem
+ <acronym>RAM</acronym> entwickelt, nicht benötigte
+ Gerätetreiber oder Optionen entfernen, um den Kernel etwas
+ kleiner zu machen.</para>
- <para>Erstellen Sie ein temporäres Verzeichnis für
- die Installation der neuen Dateien in
- <filename>/etc</filename>.</para>
+ <para>Die Kernelkonfigurationsdateien befinden sich in
+ <filename>/usr/src/sys/<replaceable>arch</replaceable>/conf/</filename>,
+ wobei <replaceable>arch</replaceable> die Ausgabe von
+ <command>uname -m</command> ist. Auf den meisten Rechnern
+ ist dies <literal>amd64</literal>, demnach befinden sich die
+ Konfigurationsdateien in
+ <filename>/usr/src/sys/<replaceable>amd64</replaceable>/conf/</filename>.</para>
- <screen>&prompt.root; <userinput>mkdir /var/tmp/root</userinput>
-&prompt.root; <userinput>cd /usr/src/etc</userinput>
-&prompt.root; <userinput>make DESTDIR=/var/tmp/root distrib-dirs distribution</userinput></screen>
+ <para>Eine benutzerdefinierte Konfigurationsdatei kann durch
+ Kopieren der
+ <filename>GENERIC</filename>-Konfigurationsdatei erstellt
+ werden. In diesem Beispiel ist der neue Kernel für einen
+ Speicherserver, heißt also
+ <filename>STORAGESERVER</filename>:</para>
- <para>Die obigen Kommandos bauen die nötige
- Verzeichnisstruktur auf und installieren die neuen Dateien in
- diese Struktur. Unterhalb von <filename>/var/tmp/root</filename>
- wurden einige leere Verzeichnisse angelegt, die Sie am besten wie
- folgt entfernen:</para>
+ <screen>&prompt.root; <userinput>cd /usr/src/sys/amd64/conf</userinput>
+&prompt.root; <userinput>cp GENERIC STORAGESERVER</userinput></screen>
- <screen>&prompt.root; <userinput>cd /var/tmp/root</userinput>
-&prompt.root; <userinput>find -d . -type d | xargs rmdir 2&gt;/dev/null</userinput></screen>
+ <para>Jetzt kann <filename>STORAGESERVER</filename> bearbeitet
+ werden. Die Manualpage &man.config.5; zeigt, wie Treiber
+ und Optionen hinzugefügt oder entfernt werden.</para>
- <para>Dadurch werden alle leeren Verzeichnisse entfernt. Um
- die Warnungen über nicht leere Verzeichnisse zu
- unterdrücken, wurde die Standardfehlerausgabe nach
- <filename>/dev/null</filename> umgeleitet.</para>
+ <para>Der angepasste Kernel wird mit der Variablen
+ <varname>KERNCONF</varname>, die auf die
+ Kernelkonfigurationsdatei verweist, übersetzt:</para>
- <para><filename>/var/tmp/root</filename> enthält nun alle
- Dateien, die unterhalb von <filename>/</filename>
- installiert werden sollten. Sie müssen nun jede dieser
- Dateien mit den schon existierenden Dateien des Systems
- vergleichen.</para>
-
- <para>Einige der installierten Dateien unter
- <filename>/var/tmp/root</filename> beginnen mit einem
- <quote>.</quote>. Verwenden Sie <command>ls -a</command> um
- sicherzustellen, dass Sie alle derartigen Dateien
- finden.</para>
-
- <para>Benutzen Sie &man.diff.1;, um zwei Dateien zu
- vergleichen:</para>
-
- <screen>&prompt.root; <userinput>diff /etc/shells /var/tmp/root/etc/shells</userinput></screen>
-
- <para>Dieses Kommando zeigt die Unterschiede zwischen der
- installierten Version von <filename>/etc/shells</filename>
- und der neuen Version in
- <filename>/var/tmp/root/etc/shells</filename>. Entscheiden
- Sie anhand der Unterschiede, ob Sie beide Dateien
- abgleichen, oder die alte Version durch die neue Version
- ersetzen wollen.</para>
-
- <tip>
- <title>Versehen Sie das temporäre Verzeichnis
- <filename>/var/tmp/root</filename> mit einem
- Zeitstempel</title>
-
- <para>Wenn das System oft neu gebaut wird, muss auch
- <filename>/etc</filename> genauso oft aktualisiert werden.
- Dies kann mit der Zeit ein bisschen mühsam werden.</para>
-
- <para>Um diesen Prozess zu beschleunigen, behalten Sie
- eine Kopie der Dateien, die zuletzt nach
- <filename>/etc</filename> installiert wurden.</para>
-
- <procedure>
- <step>
- <para>Folgen Sie der normalen Prozedur um das System zu
- bauen. Wenn Sie <filename>/etc</filename> und die anderen
- Verzeichnisse aktualisieren wollen, geben Sie dem
- temporären Verzeichnis einen Namen, der das aktuelle
- Datum enthält.</para>
-
- <screen>&prompt.root; <userinput>mkdir /var/tmp/root-20130214</userinput>
-&prompt.root; <userinput>cd /usr/src/etc</userinput>
-&prompt.root; <userinput>make DESTDIR=/var/tmp/root-20130214 \
- distrib-dirs distribution</userinput></screen>
- </step>
-
- <step>
- <para>Gleichen Sie die Änderungen entsprechend der
- Anleitung von oben ab. Wenn Sie fertig sind,
- entfernen Sie das Verzeichnis
- <filename>/var/tmp/root-20130214</filename>
- <emphasis>nicht</emphasis>.</para>
- </step>
-
- <step>
- <para>Nachdem die neuen Quellen heruntergeladen und
- gebaut haben, folgen Sie Schritt 1. Erstellen Sie
- ein neues Verzeichnis mit einem aktuellen Datum.
- Dieses Beispiel verwendet
- <filename>/var/tmp/root-20130221</filename>.</para>
- </step>
-
- <step>
- <para>Vergleichen Sie die Unterschiede, die sich in
- einer Woche ergeben haben, indem Sie &man.diff.1;
- rekursiv anwenden:</para>
-
- <screen>&prompt.root; <userinput>cd /var/tmp</userinput>
-&prompt.root; <userinput>diff -r root-20130214 root-20130221</userinput></screen>
-
- <para>Üblicherweise sind diese Differenzen kleiner, als
- die Differenzen zwischen
- <filename>/var/tmp/root-20130221/etc</filename> und
- <filename>/etc</filename>. Da die angezeigten Differenzen
- kleiner sind, ist es jetzt einfacher den Abgleich der
- Dateien in <filename>/etc</filename>
- durchzuführen.</para>
- </step>
-
- <step>
- <para>Wenn Sie fertig sind, können Sie das ältere der
- beiden <filename>/var/tmp/root-*</filename>
- Verzeichnisse entfernen:</para>
-
- <screen>&prompt.root; <userinput>rm -rf /var/tmp/root-20130214</userinput></screen>
- </step>
-
- <step>
- <para>Wiederholen Sie diesen Prozess jedes Mal wenn Sie
- Dateien in <filename>/etc</filename> abgleichen
- müssen.</para>
- </step>
- </procedure>
-
- <para>Benutzen Sie &man.date.1;, um die Verzeichnisnamen
- automatisch zu erzeugen:</para>
-
- <screen>&prompt.root; <userinput>mkdir /var/tmp/root-`date "+%Y%m%d"`</userinput></screen>
- </tip>
- -->
+ <screen>&prompt.root; <userinput>make buildkernel KERNCONF=STORAGESERVER</userinput></screen>
+ </sect3>
</sect2>
- <sect2 xml:id="make-delete-old">
- <info>
- <title>Veraltete Dateien und Bibliotheken löschen</title>
+ <sect2 xml:id="updating-src-installing">
+ <title>Installation des Codes</title>
- <authorgroup>
- <author>
- <personname>
- <firstname>Anton</firstname>
- <surname>Shterenlikht</surname>
- </personname>
- <contrib>Basiert auf Notizen von </contrib>
- </author>
- </authorgroup>
- </info>
+ <para>Nachdem die Schritte <buildtarget>buildworld</buildtarget>
+ und <buildtarget>buildkernel</buildtarget> abgeschlossen
+ sind, wird der neue Kernel und die Welt installiert:</para>
- <indexterm>
- <primary>Veraltete Dateien und Verzeichnisse löschen</primary>
- </indexterm>
-
- <para>Aufgrund 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 die Funktion aus dem System entfernt wurde.
- Dies kann sowohl Dateien und Verzeichnisse, aber auch
- Bibliotheken betreffen. Diese veralteten Dateien,
- Verzeichnisse und Bibliotheken sollten
- daher entfernt werden, wenn das System aktualisiert wird. Die
- stellt sicher, 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
- <filename>/usr/src/ObsoleteFiles.inc</filename> aufgelistet.
- Verwenden Sie die folgenden Anweisungen, um diese Dateien
- während der Systemaktualisierung zu entfernen.</para>
-
- <para>Nachdem Sie <command>make installworld</command> sowie
- <command>mergemaster</command> erfolgreich ausgeführt haben,
- überprüfen Sie das System auf veraltete Dateien und
- Bibliotheken:</para>
-
<screen>&prompt.root; <userinput>cd /usr/src</userinput>
-&prompt.root; <userinput>make check-old</userinput></screen>
+&prompt.root; <userinput>make installkernel</userinput>
+&prompt.root; <userinput>shutdown -r now</userinput>
+&prompt.root; <userinput>cd /usr/src</userinput>
+&prompt.root; <userinput>make installworld</userinput>
+&prompt.root; <userinput>shutdown -r now</userinput></screen>
- <para>Werden dabei veraltete Dateien gefunden, können diese
- mit dem folgenden Kommando entfernt werden:</para>
+ <para>Wenn ein angepasster Kernel erstellt wurde, muss
+ zusätzlich die Variable <varname>KERNCONF</varname> gesetzt
+ werden:</para>
- <screen>&prompt.root; <userinput>make delete-old</userinput></screen>
-
- <para>Bei jeder Datei wird nachgefragt, ob diese wirklich
- gelöscht werden soll. Es ist aber auch möglich, alle
- Dateien automatisch löschen zu lassen. Dies erreichen Sie,
- indem Sie die Umgebungsvariable
- <varname>BATCH_DELETE_OLD_FILES</varname> setzen:</para>
-
- <screen>&prompt.root; <userinput>make -DBATCH_DELETE_OLD_FILES delete-old</userinput></screen>
-
- <para>Alternativ können Sie auch <command>yes</command>
- einsetzen und somit die Antwort <literal>yes</literal>
- an die einzelnen Abfragen weiterreichen:</para>
-
- <screen>&prompt.root; <userinput>yes | make delete-old</userinput></screen>
-
- <warning>
- <title>Warnung</title>
-
- <para>Das 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
- <command>make delete-old-libs</command> ausführen.</para>
- </warning>
-
- <para>Die Bibliothek-Abhängigkeiten können mit
- <package>sysutils/libchk</package> und
- <package>sysutils/bsdadminscripts</package> geprüft
- werden.</para>
-
- <para>Veraltete Bibliotheken können zu Konflikten mit neueren
- Bibliotheken führen und beispielsweise folgende
- Meldungen verursachen:</para>
-
- <screen>/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.5</screen>
-
- <para>Um diese Probleme zu lösen, müssen Sie zuerst
- herausfinden, welcher Port die Bibliothek installiert
- hat:</para>
-
- <screen>&prompt.root; <userinput>pkg which /usr/local/lib/libtiff.so</userinput>
-/usr/local/lib/libtiff.so was installed by package tiff-3.9.4
-&prompt.root; <userinput>pkg which /usr/local/lib/libXext.so</userinput>
-/usr/local/lib/libXext.so was installed by package libXext-1.1.1,1</screen>
-
- <para>Danach deinstallieren Sie den Port und bauen ihn neu, um
- ihn danach erneut zu installieren. Dieser Vorgang kann durch
- den Einsatz von <package>ports-mgmt/portmaster</package>
- automatisiert werden. Nachdem alle Ports neu gebaut wurden
- und keine alten Bibliotheken mehr verwenden werden,
- können Sie die alten Bibliotheken endgültig entfernen:</para>
-
- <screen>&prompt.root; <userinput>make delete-old-libs</userinput></screen>
-
- <para>Falls etwas schief geht, ist es leicht einen Teil des
- Systems wiederherzustellen. Wenn beispielsweise während des
- Updates oder Abgleichs <filename>/etc/magic</filename> aus
- Versehen gelöscht wurde, wird <command>file</command> nicht
- mehr funktionieren. In diesem Fall kann das Problem mit dem
- folgenden Kommando behoben werden:</para>
-
- <screen>&prompt.root; <userinput>cd /usr/src/usr.bin/file</userinput>
-&prompt.root; <userinput>make all install</userinput></screen>
+ <screen>&prompt.root; <userinput>cd /usr/src</userinput>
+&prompt.root; <userinput>make installkernel KERNCONF=STORAGESERVER</userinput>
+&prompt.root; <userinput>shutdown -r now</userinput>
+&prompt.root; <userinput>cd /usr/src</userinput>
+&prompt.root; <userinput>make installworld</userinput>
+&prompt.root; <userinput>shutdown -r now</userinput></screen>
</sect2>
- <sect2 xml:id="updating-questions">
- <title>Häufige Fragen</title>
+ <sect2 xml:id="updating-src-completing">
+ <title>Die Aktualisierung abschließen</title>
- <variablelist>
- <varlistentry>
- <term>Muss ich wirklich immer alles neu bauen, wenn sich
- etwas geändert hat?</term>
+ <para>Ein paar abschließende Aufgaben beenden die
+ Aktualisierung. Alle Konfigurationsdateien werden mit den
+ neuen Versionen zusammengeführt, veraltete Bibliotheken werden
+ entfernt, dann wird das System neu gestartet.</para>
- <listitem>
- <para>Das hängt von den Änderungen ab. Es lohnt
- wahrscheinlich nicht, alles neu zu bauen, wenn sich bei
- einem <application>svn</application>-Lauf nur die
- folgenden Dateien geändert haben:</para>
+ <sect3 xml:id="updating-src-completing-merge-etcupdate">
+ <title>Konfigurationsdateien mit
+ <application>etcupdate</application> zusammenführen</title>
- <screen><filename>src/games/factor/factor.c</filename>
-<filename>src/games/fortune/fortune/fortune.c</filename>
-<filename>src/usr.sbin/bsdinstall/distextract/distextract.c</filename>
-<filename>src/usr.sbin/bsdinstall/partedit/diskeditor.c</filename>
-<filename>src/share/man/man7/intro.7</filename></screen>
+ <para><application>etcupdate</application> bietet einen
+ einfachen Weg, um die veränderten Konfigurationsdateien des
+ Systems mit den neuen Versionen zusammenzuführen.</para>
- <para>In diesem Fall können Sie in die entsprechenden
- Unterverzeichnisse wechseln und dort
- <command>make all install</command> ausführen. Wenn
- sich allerdings etwas Wichtiges, wie
- <filename>src/lib/libc/stdlib</filename> geändert hat,
- sollten Sie unbedingt die Welt neu bauen.</para>
+ <para><command>etcupdate</command></para>
+ </sect3>
- <para>Einige Benutzer 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.</para>
- </listitem>
- </varlistentry>
+ <sect3 xml:id="updating-src-completing-merge-mergemaster">
+ <title>Konfigurationsdateien mit
+ <application>mergemaster</application>
+ zusammenführen</title>
- <varlistentry>
- <term>Warum bricht der Bau mit vielen Signal
- 11<indexterm><primary>signal 11</primary></indexterm>
- Fehlern (oder anderen Signalnummern) ab?</term>
+ <para><command>mergemaster -Ui</command></para>
+ </sect3>
- <listitem>
- <para>Für gewöhnlich 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. Es liegt garantiert ein Hardwarefehler vor, wenn
- <command>make</command> neu gestartet wird und an einer
- anderen Stelle abbricht.</para>
+ <sect3 xml:id="updating-src-completing-check-old">
+ <title>Veraltete Dateien und Bibliotheken entfernen</title>
- <para>In diesem Fall können nur einzelne Komponenten des
- Systems, angefangen mit dem <acronym>RAM</acronym>,
- getauscht werden, um zu bestimmen, welche Komponente den
- Fehler verursacht.</para>
- </listitem>
- </varlistentry>
+ <para>Nach einer Aktualisierung können sich immer noch
+ veraltete Dateien und Verzeichnisse im System befinden.
+ Diese lassen sich mit folgendem Kommando auflisten:</para>
- <varlistentry>
- <term>Kann <filename>/usr/obj</filename> entfernt werden,
- wenn ich fertig bin?</term>
+ <screen>&prompt.root; <userinput>make check-old</userinput></screen>
- <listitem>
- <para>In diesem Verzeichnis werden alle Dateien
- abgelegt, die während der Übersetzungsphase erstellt
- wurden. Dieses Verzeichnis wird in einem der ersten
- Schritte von <command>make buildworld</command>
- entfernt. Es macht daher wenig Sinn, dieses Verzeichnis
- zu behalten. Zudem wird ungefähr 2&nbsp;GB
- Plattenspeicher freigegeben, wenn dieses Verzeichnis
- gelöscht wird.</para>
- </listitem>
- </varlistentry>
+ <para>und löschen:</para>
- <varlistentry>
- <term>Kann ein abgebrochener Bau weitergeführt
- werden?</term>
+ <screen>&prompt.root; <userinput>make delete-old</userinput></screen>
- <listitem>
- <para>Das hängt davon ab, wieweit der Bauprozess
- fortgeschritten ist. Üblicherweise werden durch
- <command>make buildworld</command> essentielle
- Werkzeuge 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 mit den
- neu erstellten Systemdateien gebaut.</para>
+ <para>Einige veraltete Bibliotheken können ebenfalls noch
+ vorhanden sein. Diese werden mit folgenden Kommando
+ aufgelistet:</para>
- <para>Während der letzten Phase können Sie relativ
- gefahrlos folgende Kommandos ausführen, ohne dabei
- die von <command>make buildworld</command> erzeugten
- Dateien zu löschen:</para>
+ <screen>&prompt.root; <userinput>make check-old-libs</userinput></screen>
- <screen>&prompt.root; <userinput>cd /usr/src</userinput>
-&prompt.root; <userinput>make -DNO_CLEAN all</userinput></screen>
+ <para>und wie folgt gelöscht:</para>
- <para>Wenn diese Meldung in der Ausgabe von
- <command>make buildworld</command> erscheint:</para>
+ <screen>&prompt.root; <userinput>make delete-old-libs</userinput></screen>
- <screen>--------------------------------------------------------------
-Building everything..
---------------------------------------------------------------</screen>
+ <para>Programme, die diese alten Bibliotheken noch verwenden,
+ werden nicht mehr funktionieren, wenn die Bibliothek
+ gelöscht wurde. Diese Programme müssen nach dem Löschen der
+ alten Bibliotheken neu gebaut oder ersetzt werden.</para>
- <para>dann können Sie den Befehl bedenkenlos
- ausführen.</para>
+ <tip>
+ <para>Wenn Sie sich sicher sind, dass alle Dateien und
+ Verzeichnisse gelöscht werden können, dann setzen Sie
+ <varname>BATCH_DELETE_OLD_FILES</varname>, um nicht jede
+ einzelne Datei mit <keycap>y</keycap> und
+ <keycap>Enter</keycap> bestätigen zu müssen.
+ Zum Beispiel:</para>
- <para>Wenn diese Meldung nicht angezeigt wird, dann ist es
- besser, noch einmal ganz von Vorne anzufangen.</para>
- </listitem>
- </varlistentry>
+ <screen>&prompt.root; <userinput>make BATCH_DELETE_OLD_FILES=yes delete-old-libs</userinput></screen>
+ </tip>
+ </sect3>
- <varlistentry>
- <term>Ist es möglich, den Bauprozess zu
- beschleunigen?</term>
+ <sect3 xml:id="updating-src-completing-restart">
+ <title>Neustart des Systems</title>
- <listitem>
- <para>Es gibt mehrere Maßnahmen um den Bauprozess zu
- beschleunigen. Zum Beispiel kann der gesamte Prozess im
- Single-User-Modus ausgeführt werden. Dies verhindert
- jedoch, dass Benutzer Zugriff auf das System haben, bis
- der Prozess abgeschlossen ist.</para>
+ <para>Zum Abschluss der Aktualisierung muss das System neu
+ gestartet werden, damit alle Änderungen wirksam
+ werden:</para>
- <para>Die sorgfältige Planung von Dateisystemen oder die
- Verwendung von <acronym>ZFS</acronym> können auch einen
- Unterschied machen. Sie können erwägen,
- <filename>/usr/src</filename> und
- <filename>/usr/obj</filename> auf separate Dateisysteme
- zu legen. Wenn möglich, platzieren Sie die Dateisysteme
- auf separaten Festplatten mit getrennten
- Platten-Controllern. Verwenden Sie beim einhängen von
- <filename>/usr/src</filename> die Option
- <option>noatime</option>, um die Aktualisierung der
- Dateizugriffe zu deaktivieren. Falls
- <filename>/usr/src</filename> nicht auf einem eigenen
- Dateisystem liegt, können Sie <filename>/usr</filename>
- abhängen und mit <option>noatime</option> neu
- einhängen.</para>
-
- <para>Das Dateisystem, in dem sich
- <filename>/usr/obj</filename> befindet, kann mit
- <option>async</option> 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.</para>
-
- <warning>
- <para>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.</para>
-
- <para>Wenn <filename>/usr/obj</filename> das einzige
- Verzeichnis 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.</para>
- </warning>
-
- <para>Deaktivieren Sie den Bau der
- <quote>profiled</quote>-Bibliotheken, indem Sie
- <quote>NO_PROFILE=true</quote> in
- <filename>/etc/make.conf</filename> eintragen.</para>
-
- <para>Benutzen Sie <command>make</command> zusammen mit
- <option>-j<replaceable>n</replaceable></option>, um
- mehrere Prozesse parallel laufen zu lassen.
- Für gewöhnlich beschleunigt dies den Bauprozess auf
- Einprozessor- und Mehrprozessorsystemen.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>Was mache ich, wenn etwas nicht funktioniert?</term>
-
- <listitem>
- <para>Stellen Sie zuerst sicher, dass sich in der Umgebung
- keine Reste eines vorherigen Baus befinden:</para>
-
- <screen>&prompt.root; <userinput>chflags -R noschg /usr/obj/usr</userinput>
-&prompt.root; <userinput>rm -rf /usr/obj/usr</userinput>
-&prompt.root; <userinput>cd /usr/src</userinput>
-&prompt.root; <userinput>make cleandir</userinput>
-&prompt.root; <userinput>make cleandir</userinput></screen>
-
- <para>Ja, <command>make cleandir</command> muss wirklich
- zweimal aufgerufen werden.</para>
-
- <para>Danach starten Sie den Bauprozess wieder mit
- <command>make buildworld</command>.</para>
-
- <para>Wenn Sie immer noch Probleme haben, schicken Sie die
- Fehlermeldungen und die Ausgabe von
- <command>uname -a</command> an die Mailingliste
- &a.de.questions;. Bereiten Sie sich darauf vor, weitere
- Fragen zu der Umgebung zu beantworten.</para>
- </listitem>
- </varlistentry>
- </variablelist>
+ <screen>&prompt.root; <userinput>shutdown -r now</userinput></screen>
+ </sect3>
</sect2>
</sect1>

File Metadata

Mime Type
text/plain
Expires
Sat, Apr 11, 1:28 AM (7 h, 11 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31241489
Default Alt Text
D11134.id.diff (67 KB)

Event Timeline