Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F151683794
D11134.id29421.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
67 KB
Referenced Files
None
Subscribers
None
D11134.id29421.diff
View Options
Index: cutting-edge/chapter.xml
===================================================================
--- cutting-edge/chapter.xml
+++ 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
+ benötigt 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 erstellen
+ 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; 10.1 übersetzt wurde, läuft
+ auch auf &os; 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>/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>
+ <screen>&prompt.root; <userinput>cd /usr/src</userinput>
+&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>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>Wenn ein angepasster Kernel erstellt wurde, muss
+ zusätzlich die Variable <varname>KERNCONF</varname> gesetzt
+ werden:</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>
-
- <para>Werden dabei veraltete Dateien gefunden, können diese
- mit dem folgenden Kommando entfernt 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>
+&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 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
Details
Attached
Mime Type
text/plain
Expires
Sat, Apr 11, 12:11 AM (1 h, 47 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31256028
Default Alt Text
D11134.id29421.diff (67 KB)
Attached To
Mode
D11134: Update german handbook cutting-edge chapter to r50251
Attached
Detach File
Event Timeline
Log In to Comment