This commit is contained in:
Gabor Kovesdan 2013-02-05 09:14:34 +00:00
commit a06603e1e8
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/projects/xml-tools/; revision=40889
601 changed files with 116067 additions and 90373 deletions
bn_BD.ISO10646-1/articles/explaining-bsd
da_DK.ISO8859-1/htdocs
de_DE.ISO8859-1
articles
Makefile
contributing-ports
contributing
explaining-bsd
laptop
linux-comparison
new-users
port-mentor-guidelines
solid-state
books
developers-handbook
faq
fdp-primer
handbook
porters-handbook
htdocs
share/xml
el_GR.ISO8859-7
articles/mailing-list-faq
books
faq
handbook
htdocs
en_US.ISO8859-1
articles
committers-guide
contributing-ports
contributing
contributors
freebsd-update-server
geom-class
hubs
linux-users
mailing-list-faq
portbuild
problem-reports
rc-scripting
solid-state
books
Makefile
arch-handbook
bibliography
corp-net-guide
dev-model
developers-handbook
faq
fdp-primer
Makefile
writing-style
handbook

View file

@ -11,7 +11,7 @@ FORMATS?= html
INSTALL_COMPRESSED?= gz
INSTALL_ONLY_COMPRESSED?=
# SGML content
# XML content
SRCS= article.xml
DOC_PREFIX?= ${.CURDIR}/../../..

View file

@ -8,7 +8,7 @@
.endif
# Subdirectories
# SGML
# XML
.if !defined(WEB_ONLY) || empty(WEB_ONLY)
SUBDIR= doc
.endif

View file

@ -12,6 +12,7 @@ SUBDIR+= explaining-bsd
SUBDIR+= laptop
SUBDIR+= linux-comparison
SUBDIR+= new-users
SUBDIR+= port-mentor-guidelines
SUBDIR+= solid-state
# ROOT_SYMLINKS+= new-users

View file

@ -15,8 +15,8 @@
<title>Zur FreeBSD Ports-Sammlung beitragen</title>
<abstract>
<para>Dieser Artikel beschreibt, wie man zur FreeBSD Ports-Sammlung
beitragen kann.</para>
<para>Dieser Artikel beschreibt, wie man zur FreeBSD
Ports-Sammlung beitragen kann.</para>
<para><emphasis>Übersetzt von Martin Wilke</emphasis>.</para>
</abstract>
@ -78,7 +78,8 @@
<listitem>
<para>Finden Sie eine begehrte oder nützliche
Software und <link
linkend="create-port">erstellen Sie einen Port</link>.</para>
linkend="create-port">erstellen Sie einen
Port</link>.</para>
</listitem>
<listitem>
@ -150,16 +151,17 @@
bedingte Abhängigkeiten, die nicht im Standard-Index
<filename>INDEX</filename> zu finden sind. Wir erwarten, dass
Sie in der Lage sind, solche Ports zu erkennen, indem Sie sich
die <filename>Makefile</filename>s anderer Ports ansehen.</para>
</sect2>
die <filename>Makefile</filename>s anderer Ports
ansehen.</para> </sect2>
<sect2>
<title>Wie man einen Port übernimmt</title>
<para>Bitte vergewissern Sie sich, dass Sie die
<link linkend="maintain-port">Aufgaben eines Maintainers</link>
verstanden haben. Lesen Sie bitte auch das
<ulink url="&url.books.porters-handbook;">Porter-Handbuch</ulink>.
<link linkend="maintain-port">Aufgaben eines
Maintainers</link> verstanden haben. Lesen Sie bitte auch
das <ulink
url="&url.books.porters-handbook;">Porter-Handbuch</ulink>.
<emphasis>Übernehmen Sie nicht mehr Aufgaben, als Sie
bewältigen können</emphasis>.</para>
@ -168,23 +170,23 @@
Sie dazu bereit sind, setzen Sie <makevar>MAINTAINER</makevar>
auf Ihre E-Mail-Adresse und reichen einen Problembericht (PR)
mit den von Ihnen vorgenommenen Änderungen ein. Wenn beim
Kompilieren des Ports Fehler auftreten oder eine Aktualisierung
notwendig ist, können Sie derartige Änderungen dem
selben PR beifügen. Das ist sehr hilfreich, weil sich viele
Committer weigern, die Wartung eines Ports zu übergeben,
Kompilieren des Ports Fehler auftreten oder eine
Aktualisierung notwendig ist, können Sie derartige Änderungen
dem selben PR beifügen. Das ist sehr hilfreich, weil sich
viele Committer weigern, die Wartung eines Ports zu übergeben,
wenn jemand nicht die nötige Erfahrung mit &os; vorweisen
kann. Das Einreichen von PRs, die Kompilierfehler beheben oder
Ports aktualisieren, ist der beste Weg, um Erfahrung zu
kann. Das Einreichen von PRs, die Kompilierfehler beheben
oder Ports aktualisieren, ist der beste Weg, um Erfahrung zu
sammeln.</para>
<para>Erstellen Sie Ihren PR mit der
<foreignphrase>category</foreignphrase> <literal>ports</literal>
und der <foreignphrase>class</foreignphrase>
<literal>change-request</literal>. Ein Committer wird
Ihren PR analysieren, die Änderungen committen und danach
den PR abschließen. Manchmal kann dieser Prozess eine
Weile dauern (auch Committer sind "nur" freiwillige
Helfer!).</para>
<foreignphrase>category</foreignphrase>
<literal>ports</literal> und der
<foreignphrase>class</foreignphrase>
<literal>change-request</literal>. Ein Committer wird Ihren
PR analysieren, die Änderungen committen und danach den PR
abschließen. Manchmal kann dieser Prozess eine Weile dauern
(auch Committer sind "nur" freiwillige Helfer!).</para>
</sect2>
</sect1>
@ -219,7 +221,8 @@
<itemizedlist>
<listitem>
<formalpara>
<title>Neue Software-Versionen und Aktualisierungen</title>
<title>Neue Software-Versionen und
Aktualisierungen</title>
<para>Neue Versionen und Aktualisierung von bereits
portierter Software werden kontinuierlich
@ -260,8 +263,8 @@
<para>Ein Teil der Aufgabe eines Maintainers ist es,
Support zu leisten. Damit ist kein Hauptsupport
für die Software gemeint (wir haben allerdings nichts
dagegen, wenn Sie sich dennoch entscheiden, dies zu tun).
Ihre Aufgabe ist aber, sich um &os;-spezifische
dagegen, wenn Sie sich dennoch entscheiden, dies zu
tun). Ihre Aufgabe ist aber, sich um &os;-spezifische
Fragen zu Ihren Ports zu kümmern.</para>
</formalpara>
</listitem>
@ -271,11 +274,11 @@
<title>Bugs finden</title>
<para>Eine Portierung könnte vielleicht von
&os;-spezifischen Bugs beeinflusst werden. In einem solchen
Fall ist es Ihre Aufgabe, den Fehler zu finden und zu
beheben. Daher sollten Sie Ihren Port umfassend testen,
um derartige Probleme zu entdecken, bevor Sie einen
Port in die Ports-Sammlung aufnehmen.</para>
&os;-spezifischen Bugs beeinflusst werden. In einem
solchen Fall ist es Ihre Aufgabe, den Fehler zu finden
und zu beheben. Daher sollten Sie Ihren Port umfassend
testen, um derartige Probleme zu entdecken, bevor Sie
einen Port in die Ports-Sammlung aufnehmen.</para>
</formalpara>
</listitem>
@ -284,10 +287,10 @@
<title>Änderungen an Ports, Infrastruktur und
Lizenzen</title>
<para>Gelegentlich werden die Werkzeuge für das Bauen von Ports
erneuert oder es wird ein neuer Vorschlag zur
Infrastruktur der Ports-Sammlung gemacht. Sie sollten von
diesen Änderungen wissen, falls Ihre Ports betroffen
<para>Gelegentlich werden die Werkzeuge für das Bauen von
Ports erneuert oder es wird ein neuer Vorschlag zur
Infrastruktur der Ports-Sammlung gemacht. Sie sollten
von diesen Änderungen wissen, falls Ihre Ports betroffen
sind und aktualisiert werden müssen.</para>
</formalpara>
</listitem>
@ -365,8 +368,8 @@
Architekturen, wie Sie können. Es kommt sehr
häufig vor, dass ein Port auf einem
Entwicklungszweig oder einer Plattform
funktioniert, auf einer anderen Plattform aber Fehler
erzeugt.</para>
funktioniert, auf einer anderen Plattform aber
Fehler erzeugt.</para>
</listitem>
<listitem>
@ -399,15 +402,15 @@
Port nicht den Bau eines anderen Ports verhindern.
Ist dies der Fall, besprechen Sie die von Ihnen
durchgeführten Änderungen mit den
Maintainern der betroffenen Ports. Dies ist besonders
dann wichtig, wenn Ihre Aktualisierung die
<quote>Shared Library</quote>-Version ändert;
in diesem Fall werden Sie für die abhängigen
Ports einen <makevar>PORTREVISION</makevar>-Bump
benötigen, damit diese von automatisierten Werkzeugen
wie <application>portmaster</application> oder
&man.portupgrade.1; auf dem neuesten Stand gehalten
werden.</para>
Maintainern der betroffenen Ports. Dies ist
besonders dann wichtig, wenn Ihre Aktualisierung die
<quote>Shared Library</quote>-Version ändert; in
diesem Fall werden Sie für die abhängigen Ports
einen <makevar>PORTREVISION</makevar>-Bump
benötigen, damit diese von automatisierten
Werkzeugen wie <application>portmaster</application>
oder &man.portupgrade.1; auf dem neuesten Stand
gehalten werden.</para>
</listitem>
</itemizedlist>
</step>
@ -427,11 +430,11 @@
<note>
<para>Bitte schicken Sie kein &man.shar.1;-Archiv
des gesamten Ports. Benutzen Sie stattdessen
&man.diff.1; <literal>-ruN</literal>. Auf diese Art und
Weise können Committer viel einfacher erkennen,
&man.diff.1; <literal>-ruN</literal>. Auf diese Art
und Weise können Committer viel einfacher erkennen,
welche Änderungen vorgenommen wurden. Das
Porter-Handbuch enthält viele nützliche
Informationen zum <ulink
Porter-Handbuch enthält viele nützliche Informationen
zum <ulink
url="&url.books.porters-handbook;/port-upgrading.html">Upgrading</ulink>
eines Ports.</para>
</note>
@ -441,9 +444,9 @@
<title>Warten</title>
<para>Es kann nur sehr wenig Zeit vergehen, bis sich ein
Committer mit Ihrem PR befasst. Es kann aber auch mehrere
Wochen dauern, bis eine Reaktion erfolgt - haben Sie bitte
Geduld.</para>
Committer mit Ihrem PR befasst. Es kann aber auch
mehrere Wochen dauern, bis eine Reaktion erfolgt - haben
Sie bitte Geduld.</para>
</step>
<step>
@ -472,8 +475,8 @@
<title>Stellen Sie sicher, dass Ihre Ports den Buildprozess
weiterhin erfolgreich durchlaufen</title>
<para>Dieser Abschnitt beschreibt, wie Sie Probleme entdecken und
beheben, die ihre Ports daran hindern, den Buildprozess
<para>Dieser Abschnitt beschreibt, wie Sie Probleme entdecken
und beheben, die ihre Ports daran hindern, den Buildprozess
erfolgreich zu durchlaufen.</para>
<para>&os; garantiert nur für die
@ -490,11 +493,11 @@
<para>Seit die Mehrheit von &os;-Installationen auf
PC-kompatiblen Maschinen arbeitet
(<literal>i386</literal>-Architektur) erwarten wir, dass Ihr
Port auf dieser Architektur funktioniert. Ebenfalls bevorzugen
wir es, wenn Ports nativ auf der
<literal>amd64</literal>-Architektur funktionieren. Es ist durchaus
in Ordnung, um Hilfe zu fragen, wenn Sie keine solche Maschine
besitzen.</para>
Port auf dieser Architektur funktioniert. Ebenfalls
bevorzugen wir es, wenn Ports nativ auf der
<literal>amd64</literal>-Architektur funktionieren. Es ist
durchaus in Ordnung, um Hilfe zu fragen, wenn Sie keine
solche Maschine besitzen.</para>
<note>
<para>Häufige Fehler beim Umgang mit
@ -522,12 +525,12 @@
und den <ulink
url="http://www.portscout.org">Distfiles-Scanner</ulink>,
um festzustellen, ob einer Ihrer Ports nicht gebaut oder
die Distfiles nicht geladen werden können (lesen Sie
den Abschnitt <link linkend="resources">Ressourcen</link>
die Distfiles nicht geladen werden können (lesen Sie den
Abschnitt <link linkend="resources">Ressourcen</link>
dieses Artikels für weitere Informationen zu diesen
Systemen). Fehlerberichte kommen eventuell auch
von anderen Benutzern oder als automatisierte Meldungen
per E-Mail.</para>
Systemen). Fehlerberichte kommen eventuell auch von
anderen Benutzern oder als automatisierte Meldungen per
E-Mail.</para>
</step>
<step>
@ -607,10 +610,10 @@
einen Port unter FreeBSD zum Laufen zu bekommen.
Einige (aber nicht alle) Programmautoren nehmen
diese Patches in Ihren Code für das nächste
Release auf. Dies kann den Benutzern anderer BSD-Systeme
helfen und einiges an unnötiger Mehrarbeit ersparen.
Bitte betrachten Sie das Versenden von verwertbaren
Patches an die Autoren als ein Gebot der
Release auf. Dies kann den Benutzern anderer
BSD-Systeme helfen und einiges an unnötiger Mehrarbeit
ersparen. Bitte betrachten Sie das Versenden von
verwertbaren Patches an die Autoren als ein Gebot der
Höflichkeit.</para>
</step>
</procedure>
@ -626,8 +629,8 @@
entdecken ist oft sehr schwierig, glücklicherweise
sind derartige Probleme aber nicht sehr häufig.</para>
<para>Folgende Schritte sind notwendig, um sicherzustellen, dass
ihr Port weiterhin wie gewünscht funktioniert:</para>
<para>Folgende Schritte sind notwendig, um sicherzustellen,
dass ihr Port weiterhin wie gewünscht funktioniert:</para>
<procedure>
<step>
@ -645,9 +648,10 @@
dass Sie noch etwas Zeit brauchen, bevor Sie den PR
bearbeiten können.</para>
<para>Sollten Sie nicht innerhalb von 14 Tagen geantwortet haben,
darf jeder Committer via <literal>maintainer-timeout</literal>
auf einen PR, den Sie nicht beantwortet haben, reagieren.</para>
<para>Sollten Sie nicht innerhalb von 14 Tagen geantwortet
haben, darf jeder Committer via
<literal>maintainer-timeout</literal> auf einen PR, den
Sie nicht beantwortet haben, reagieren.</para>
</step>
<step>
@ -665,8 +669,8 @@
<itemizedlist>
<listitem>
<para>Eine genaue Beschreibung dessen, was Er/Sie getan
hat, den erwarteten Programmverlauf und den
<para>Eine genaue Beschreibung dessen, was Er/Sie
getan hat, den erwarteten Programmverlauf und den
tatsächlichen Ablauf.</para>
</listitem>
@ -695,14 +699,14 @@
<step>
<title>Schließen Sie falsche Reports aus</title>
<para>Einige Fehlerberichte sind eventuell falsch. Es kommt
vor, dass ein Programm falsch benutzt wird. Weiterhin
können installierten Pakete veraltet sein und
müssten einfach nur aktualisiert werden. Manchmal
ist ein gemeldeter Fehler auch nicht &os;-spezifisch. In
<para>Einige Fehlerberichte sind eventuell falsch. Es
kommt vor, dass ein Programm falsch benutzt wird.
Weiterhin können installierten Pakete veraltet sein und
müssten einfach nur aktualisiert werden. Manchmal ist
ein gemeldeter Fehler auch nicht &os;-spezifisch. In
diesem Fall melden Sie den Fehler den derzeitigen
Entwicklern der Software. Wenn Sie in der Lage sind, den
Fehler zu beheben, können Sie dies natürlich
Entwicklern der Software. Wenn Sie in der Lage sind,
den Fehler zu beheben, können Sie dies natürlich
trotzdem tun und den Entwicklern Ihren Patch zukommen
lassen.</para>
</step>
@ -746,13 +750,13 @@
<para>Manchmal müssen Sie eventuell ihre diplomatischen
Fähigkeiten auffrischen und Benutzer freundlich an die
korrekten Anlaufstellen für den Hauptsupport verweisen.
Nur selten werden Sie auf eine Person treffen, die Sie fragt,
warum die <literal>RPM</literal>s nicht aktuell sind oder wie
Sie die Software unter <literal>Foo Linux</literal> zum Laufen
bringen. Ergreifen Sie die Gelegenheit und berichten Sie,
dass Ihr Port aktuell ist (natürlich nur, wenn er es auch
tatsächlich ist) und schlagen Sie vor, einmal &os;
auszuprobieren.</para>
Nur selten werden Sie auf eine Person treffen, die Sie
fragt, warum die <literal>RPM</literal>s nicht aktuell sind
oder wie Sie die Software unter <literal>Foo Linux</literal>
zum Laufen bringen. Ergreifen Sie die Gelegenheit und
berichten Sie, dass Ihr Port aktuell ist (natürlich nur,
wenn er es auch tatsächlich ist) und schlagen Sie vor,
einmal &os; auszuprobieren.</para>
<para>Wenn Sie Glück haben, werden Benutzer und Entwickler
gelegentlich daran denken, dass Sie eine sehr
@ -763,7 +767,8 @@
<itemizedlist>
<listitem>
<para>Einen PR einreichen oder Ihnen Patches schicken.</para>
<para>Einen PR einreichen oder Ihnen Patches
schicken.</para>
</listitem>
<listitem>
@ -849,9 +854,10 @@
<para>In jedem Fall behält sich das Ports Management
Team (<literal>portmgr</literal>) das Recht vor, Ihnen den
Maintainer-Status abzuerkennen, wenn Sie für längere
Zeit nicht aktiv sind (derzeit liegt diese Grenze bei drei Monaten).
Damit ist gemeint, dass ungelöste Probleme oder ausstehende
Aktualisierungen in diesem Zeitraum nicht bearbeitet wurden.</para>
Zeit nicht aktiv sind (derzeit liegt diese Grenze bei drei
Monaten). Damit ist gemeint, dass ungelöste Probleme oder
ausstehende Aktualisierungen in diesem Zeitraum nicht bearbeitet
wurden.</para>
</sect1>
<sect1 id="resources">
@ -859,8 +865,8 @@
<para>Das <ulink
url="&url.books.porters-handbook;">Porter-Handbuch</ulink>
ist Ihr <quote>Ratgeber zum Ports-System</quote> und sollte stets
in Ihrer Reichweite sein!</para>
ist Ihr <quote>Ratgeber zum Ports-System</quote> und sollte
stets in Ihrer Reichweite sein!</para>
<para>Der Artikel <ulink
url="&url.articles.problem-reports.en;">Writing FreeBSD Problem
@ -889,8 +895,8 @@
müssten.</para>
<para>Der <ulink url="http://www.portscout.org">&os; Ports
Distfile-Scanner</ulink> kann Ihnen die Ports anzeigen, deren Distfiles
nicht erreichbar sind. Sie können damit Ihre eigenen
Distfile-Scanner</ulink> kann Ihnen die Ports anzeigen, deren
Distfiles nicht erreichbar sind. Sie können damit Ihre eigenen
Ports prüfen oder auch herauszufinden, ob die
<makevar>MASTER_SITES</makevar>-Einträge bestimmter Ports
nicht mehr aktuell sind.</para>

View file

@ -65,23 +65,23 @@
<para>Das FreeBSD-Projekt ist für ein komplettes Betriebssytem
verantwortlich, nicht nur für einen Kernel oder ein paar
verstreute Werkzeuge. Daher umfasst unsere
<filename>TODO</filename>-Liste viele verschiedene Aufgabenbereiche:
Angefangen von der Dokumentation, über Betatests und
Präsentationen bis zu Systeminstallationen und speziellen
<filename>TODO</filename>-Liste viele verschiedene
Aufgabenbereiche: Angefangen von der Dokumentation, über Betatests
und Präsentationen bis zu Systeminstallationen und speziellen
Weiterentwicklungen des Kernels. Da Fähigkeiten in den
verschiedensten Bereichen benötigt werden, kann fast jeder
etwas zu diesem Projekt beitragen.</para>
<para>Personen, die im kommerziellen Umfeld mit FreeBSD zu tun haben,
sind ebenfalls aufgefordert, sich bei uns zu melden. Brauchen Sie
eine spezielle Erweiterung, damit Ihr Produkt funktioniert? Wir
kommen Ihren Wünschen gerne entgegen, vorausgesetzt, sie sind
nicht zu speziell. Arbeiten Sie an einem Mehrwertprodukt? Dann
informieren Sie uns bitte! Wir könnten in der Lage sein, an
einem Teil davon mitzuarbeiten. Die Welt der freien Software
fordert viele bestehenden Annahmen über die Entwicklung, den
Verkauf und die Wartung von Software heraus, und wir bitten Sie,
ernsthaft darüber nachzudenken.</para>
<para>Personen, die im kommerziellen Umfeld mit FreeBSD zu tun
haben, sind ebenfalls aufgefordert, sich bei uns zu melden.
Brauchen Sie eine spezielle Erweiterung, damit Ihr Produkt
funktioniert? Wir kommen Ihren Wünschen gerne entgegen,
vorausgesetzt, sie sind nicht zu speziell. Arbeiten Sie an einem
Mehrwertprodukt? Dann informieren Sie uns bitte! Wir könnten in
der Lage sein, an einem Teil davon mitzuarbeiten. Die Welt der
freien Software fordert viele bestehenden Annahmen über die
Entwicklung, den Verkauf und die Wartung von Software heraus, und
wir bitten Sie, ernsthaft darüber nachzudenken.</para>
<sect1 id="contrib-what">
<title>Was wird gebraucht?</title>
@ -95,10 +95,10 @@
<title>Aufgaben für Nicht-Programmierer</title>
<para>Viele Menschen, die an FreeBSD beteiligt sind, sind keine
Programmierer. Es sind Leute, die an der Dokumentation arbeiten,
Internetseiten erstellen oder einfach Hilfe anbieten. Alles, was
diese Leute mitbringen müssen, sind Zeit und die
Bereitschaft, etwas zu lernen.</para>
Programmierer. Es sind Leute, die an der Dokumentation
arbeiten, Internetseiten erstellen oder einfach Hilfe
anbieten. Alles, was diese Leute mitbringen müssen, sind Zeit
und die Bereitschaft, etwas zu lernen.</para>
<orderedlist>
<listitem>
@ -111,10 +111,10 @@
</listitem>
<listitem>
<para>Helfen Sie dabei, die Dokumentation in Ihre Muttersprache
zu übersetzen. Wenn an der Übersetzung in Ihre
Sprache bereits gearbeitet wird, helfen Sie, indem Sie
weitere Dokumente übersetzen, oder sorgen Sie dafür,
<para>Helfen Sie dabei, die Dokumentation in Ihre
Muttersprache zu übersetzen. Wenn an der Übersetzung in
Ihre Sprache bereits gearbeitet wird, helfen Sie, indem
Sie weitere Dokumente übersetzen, oder sorgen Sie dafür,
dass die Übersetzungen aktuell sind. Lesen Sie zuerst
die <ulink url="&url.books.fdp-primer;/translations.html">
Übersetzungs-FAQ</ulink> der Fibel für neue
@ -178,7 +178,8 @@
<listitem>
<para>Verschieben Sie beigetragene Software im Quellcodebaum
nach <filename class="directory">src/contrib</filename>.</para>
nach <filename
class="directory">src/contrib</filename>.</para>
</listitem>
<listitem>
@ -203,8 +204,8 @@
<listitem>
<para>Wenn Sie einen Port beigetragen und dabei irgendwelche
&os;-spezifischen Änderungen getätigt haben, senden Sie
Ihre Patches an die ursprünglichen Autoren (das wird ihr Leben
einfacher machen, wenn die nächste Version des Ports
Ihre Patches an die ursprünglichen Autoren (das wird ihr
Leben einfacher machen, wenn die nächste Version des Ports
erscheint).</para>
</listitem>
@ -213,13 +214,13 @@
&posix;. Als Ausgangspunkt für Ihre Suche können
Sie die Seite des <ulink
url="&url.base;/projects/c99/index.html">FreeBSD
C99 &amp; POSIX Standards Conformance Project</ulink> verwenden.
Vergleichen Sie das Verhalten von FreeBSD mit dem von dem
jeweiligen Standard geforderten Verhalten. Verhält
sich FreeBSD in einem Bereich unterschiedlich, sollten Sie
einen Problembericht (PR) einsenden. Wenn Sie dazu in der
Lage sind, können Sie sich auch eine Lösung des
Problems überlegen und Ihrem PR einen Patch
C99 &amp; POSIX Standards Conformance Project</ulink>
verwenden. Vergleichen Sie das Verhalten von FreeBSD mit
dem von dem jeweiligen Standard geforderten Verhalten.
Verhält sich FreeBSD in einem Bereich unterschiedlich,
sollten Sie einen Problembericht (PR) einsenden. Wenn Sie
dazu in der Lage sind, können Sie sich auch eine Lösung
des Problems überlegen und Ihrem PR einen Patch
anfügen. Wenn Sie der Meinung sind, dass der Standard
nicht korrekt ist, können Sie auch das jeweilige
Standardgremium um weitere Informationen bitten.</para>
@ -243,9 +244,9 @@
Problemberichte und Verbesserungswüsche, die von
Anwendern eingereicht wurden. Die PR-Datenbank enthält
sowohl Aufgaben für Programmierer als auch für
Nichtprogrammierer. Gehen Sie die Liste der offenen PRs durch,
um festzustellen, ob Sie ein Problem interessiert. Bei manchen
Berichten geht es nur darum, zu überprüfen, ob der
Nichtprogrammierer. Gehen Sie die Liste der offenen PRs
durch, um festzustellen, ob Sie ein Problem interessiert. Bei
manchen Berichten geht es nur darum, zu überprüfen, ob der
bereitgestellte Patch korrekt funktioniert. Andere
Problemberichte sind hingegen komplexer, oder beinhalten
überhaupt keinen Lösungsvorschlag.</para>
@ -255,8 +256,8 @@
bereits jemandem zugewiesen, nehmen Sie mit dem dafür
Zuständigen Kontakt auf und fragen Sie ihn, ob Sie an
der Lösung mitarbeiten können &mdash; es könnte
etwa bereits ein Patch existieren, der nur noch getestet werden
muss, oder Sie könnten weitere Ideen mit ihm
etwa bereits ein Patch existieren, der nur noch getestet
werden muss, oder Sie könnten weitere Ideen mit ihm
diskutieren.</para>
</sect2>
@ -269,8 +270,8 @@
für Freiwillige interessant, die etwas zum &os; Projekt
beitragen möchten. Diese Liste wird regelmäßig
aktualisiert und enthält Einträge für Programmierer
und Nicht-Programmierer sowie Informationen zu jedem Projekt.</para>
</sect2>
und Nicht-Programmierer sowie Informationen zu jedem
Projekt.</para> </sect2>
</sect1>
<sect1 id="contrib-how">
@ -297,25 +298,26 @@
&man.send-pr.1; oder dessen <ulink
url="&url.base;/de/send-pr.html">Internetschnittstelle</ulink>
zu erstellen. Versuchen Sie bitte, jedes Feld auszufüllen.
Ist Ihr Patch kleiner als 65&nbsp;KB, sollten Sie ihn direkt in
den Bericht einbauen. Kann der Patch direkt auf den Quellcodebaum
angewendet werden, fügen Sie <literal>[PATCH]</literal>
im Synopsis-Feld ein. Wenn Sie einen Patch einfügen,
verwenden Sie bitte <emphasis>kein copy-and-paste</emphasis>,
weil dadurch Tabulatoren in Leerzeichen umgewandelt werden, was
den Patch unbrauchbar macht. Sind die Patches viel größer
als 20&nbsp;KB, sollten Sie sie komprimieren (z.B. mit &man.gzip.1;
oder &man.bzip2.1;) und &man.uuencode.1; verwenden, um diese in ihren
Problembericht einzufügen.</para>
Ist Ihr Patch kleiner als 65&nbsp;KB, sollten Sie ihn direkt
in den Bericht einbauen. Kann der Patch direkt auf den
Quellcodebaum angewendet werden, fügen Sie
<literal>[PATCH]</literal> im Synopsis-Feld ein. Wenn Sie
einen Patch einfügen, verwenden Sie bitte <emphasis>kein
copy-and-paste</emphasis>, weil dadurch Tabulatoren in
Leerzeichen umgewandelt werden, was den Patch unbrauchbar
macht. Sind die Patches viel größer als 20&nbsp;KB, sollten
Sie sie komprimieren (z.B. mit &man.gzip.1; oder
&man.bzip2.1;) und &man.uuencode.1; verwenden, um diese in
ihren Problembericht einzufügen.</para>
<para>Nachdem Sie einen Bericht versandt haben, erhalten Sie eine
E-Mail, die eine Bestätigung sowie eine
<para>Nachdem Sie einen Bericht versandt haben, erhalten Sie
eine E-Mail, die eine Bestätigung sowie eine
Identifikationsnummer enthält. Geben Sie diese Nummer im
Betreff der Nachricht an (<literal>"Re: kern/3377"</literal>),
wenn Sie neue Informationen zu diesem Problem an
&a.bugfollowup; senden.
Zusätzliche Informationen zu Problemberichten sollten immer
auf diese Art und Weise verschickt werden.</para>
Betreff der Nachricht an (<literal>"Re:
kern/3377"</literal>), wenn Sie neue Informationen zu diesem
Problem an &a.bugfollowup; senden. Zusätzliche Informationen
zu Problemberichten sollten immer auf diese Art und Weise
verschickt werden.</para>
<para>Sollten Sie innerhalb einer Woche keine Bestätigung
erhalten, oder &man.send-pr.1; nicht verwenden können,
@ -422,7 +424,8 @@
wir sind aber manchmal nicht in der Lage, das Problem sofort
anzugehen. Es verbleibt aber in der PR-Datenbank, bis wir
dafür Zeit finden. Verwenden Sie den Begriff
<literal>[PATCH]</literal> im Synopsis-Feld des Berichts.</para>
<literal>[PATCH]</literal> im Synopsis-Feld des
Berichts.</para>
<indexterm>
<primary><command>uuencode</command></primary>
@ -487,19 +490,19 @@
<indexterm><primary>GNU General Public License</primary></indexterm>
<para>Der GNU General Public License, oder <quote>GPL</quote>.
Diese Lizenz ist nicht ganz so beliebt bei uns, da sie
die kommerzielle Nutzung des Quellcodes einschränkt.
In Anbetracht der schieren Menge an GPL-Quellcode, den
wir derzeit benötigen (wie Compiler, Assembler oder
Textformatierer) wären wir aber schlecht beraten,
Beiträge, die unter dieser Lizenz stehen, abzulehnen.
Code, der unter der GPL steht, befindet sich in einem
gesonderten Bereich des Quellcodebaums, und zwar unter
<filename class="directory">/sys/gnu</filename> oder
<filename class="directory">/usr/src/gnu</filename>, und ist daher
für jeden, für den die GPL ein Problem darstellt, sofort
erkennbar.</para>
<para>Der GNU General Public License, oder
<quote>GPL</quote>. Diese Lizenz ist nicht ganz so
beliebt bei uns, da sie die kommerzielle Nutzung des
Quellcodes einschränkt. In Anbetracht der schieren Menge
an GPL-Quellcode, den wir derzeit benötigen (wie Compiler,
Assembler oder Textformatierer) wären wir aber schlecht
beraten, Beiträge, die unter dieser Lizenz stehen,
abzulehnen. Code, der unter der GPL steht, befindet sich
in einem gesonderten Bereich des Quellcodebaums, und zwar
unter <filename class="directory">/sys/gnu</filename> oder
<filename class="directory">/usr/src/gnu</filename>, und
ist daher für jeden, für den die GPL ein Problem
darstellt, sofort erkennbar.</para>
</listitem>
</orderedlist>
@ -588,10 +591,9 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<para>Für weitere Informationen zur FreeBSD Foundation
sollten Sie den Artikel <ulink
url="http://people.FreeBSD.org/~jdp/foundation/announcement.html">
The FreeBSD Foundation -- an Introduction</ulink> lesen. Sie
erreichen die FreeBSD Foundation über die
E-Mail-Adresse <email>bod@FreeBSDFoundation.org</email>.</para>
</sect3>
The FreeBSD Foundation -- an Introduction</ulink> lesen.
Sie erreichen die FreeBSD Foundation über die E-Mail-Adresse
<email>bod@FreeBSDFoundation.org</email>.</para> </sect3>
<sect3>
<title>Hardwarespenden</title>
@ -610,12 +612,11 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<para>Wir sind ständig auf der Suche nach neuen FTP-,
WWW- oder <command>cvsup</command>-Spiegeln. Wenn Sie einen
solchen Spiegel einrichten wollen, lesen Sie bitte den Artikel
<ulink
url="&url.articles.hubs.en;/index.html">Mirroring FreeBSD</ulink>,
der weitere Informationen enthält.</para>
solchen Spiegel einrichten wollen, lesen Sie bitte den
Artikel <ulink
url="&url.articles.hubs.en;/index.html">Mirroring
FreeBSD</ulink>, der weitere Informationen enthält.</para>
</sect3>
</sect2>
</sect1>
</article>

View file

@ -50,14 +50,14 @@
url="http://www.leb.net/hzo/ioscount/data/r.9904.txt">Internet
Operating System Counter</ulink> liefen im April&nbsp;1999
weltweit 31,3&nbsp;Prozent der vernetzten Rechner unter Linux,
14,6&nbsp;Prozent liefen hingegen unter BSD&nbsp;&unix;. Einige
der weltweit größten Internetdienstleister, darunter
<ulink url="http://www.yahoo.com/">Yahoo!</ulink>, verwenden BSD.
Der im Jahre 1999 weltgrößte FTP-Server <ulink
url="ftp://ftp.cdrom.com/">ftp.cdrom.com</ulink> (inzwischen
abgeschaltet) verwendete BSD, um täglich 1,4&nbsp;Terabyte
an Daten zu übertragen. Hier geht es offensichtlich nicht
um einen Nischenmarkt, BSD ist vielmehr ein gut gehütetes
14,6&nbsp;Prozent liefen hingegen unter BSD&nbsp;&unix;.
Einige der weltweit größten Internetdienstleister, darunter
<ulink url="http://www.yahoo.com/">Yahoo!</ulink>, verwenden
BSD. Der im Jahre 1999 weltgrößte FTP-Server <ulink
url="ftp://ftp.cdrom.com/">ftp.cdrom.com</ulink> (inzwischen
abgeschaltet) verwendete BSD, um täglich 1,4&nbsp;Terabyte an
Daten zu übertragen. Hier geht es offensichtlich nicht um
einen Nischenmarkt, BSD ist vielmehr ein gut gehütetes
Geheimnis.</para>
<para>Worin besteht nun dieses Geheimnis? Warum ist BSD nicht
@ -81,8 +81,8 @@
entwickeltes &unix; Betriebssystem gedacht. Verschiedene
Open&nbsp;Source-Projekte beruhen auf dieser, als 4.4BSD-Lite
bekannten Quellcodeausgabe. In dieser Ausgabe sind auch
Softwarepakete anderer Open Source-Projekte, insbesondere jene des
GNU-Projekts, enthalten. Das komplette Betriebssystem
Softwarepakete anderer Open Source-Projekte, insbesondere jene
des GNU-Projekts, enthalten. Das komplette Betriebssystem
umfasst:</para>
<itemizedlist>
@ -153,21 +153,23 @@
<para>Es stimmt, dass AT&amp;T &unix; kein Open Source ist. Im
Sinne des Copyright ist BSD daher eindeutig
<emphasis>kein</emphasis> &unix;. Andererseits fügte
AT&amp;T aber Quellcode von anderen Projekten in den eigenen Code
ein, insbesondere jenen der Computer Sciences Research Group (CSRG)
der University of California in Berkeley, CA. Im Jahr 1976
begann die CSRG damit, Bänder ihrer Software zu vertreiben,
die sie <emphasis>Berkeley Software Distribution</emphasis> oder
<emphasis>BSD</emphasis> nannten.</para>
AT&amp;T aber Quellcode von anderen Projekten in den eigenen
Code ein, insbesondere jenen der Computer Sciences Research
Group (CSRG) der University of California in Berkeley, CA. Im
Jahr 1976 begann die CSRG damit, Bänder ihrer Software zu
vertreiben, die sie <emphasis>Berkeley Software
Distribution</emphasis> oder <emphasis>BSD</emphasis>
nannten.</para>
<para>Anfangs wurden vor allem Anwendungen veröffentlicht.
Das änderte sich schlagartig, als die CSRG von der Advanced
Research Projects Agency (DARPA) den Auftrag bekam, deren
Kommunikationsprotokolle (ARPANET) zu überarbeiten. Die
neuen Protokolle wurden als <emphasis>Internet Protocols</emphasis>
bezeichnet, und wurden später als <emphasis>TCP/IP</emphasis>
weltbekannt. Die erste Implementierung dieser Protokolle erfolgte
1982 als Teil von 4.2BSD.</para>
neuen Protokolle wurden als <emphasis>Internet
Protocols</emphasis> bezeichnet, und wurden später als
<emphasis>TCP/IP</emphasis> weltbekannt. Die erste
Implementierung dieser Protokolle erfolgte 1982 als Teil von
4.2BSD.</para>
<para>Im Laufe der 80er Jahre entstanden einige neue Firmen, die
Workstations vertrieben. Viele zogen es vor, &unix; zu
@ -243,8 +245,9 @@
<listitem>
<para>BSD-Entwickler sind vielleicht erfahrener als
Linux-Entwickler, und haben deshalb weniger Interesse daran,
die Benutzung des Systems einfacher zu gestalten. Einsteiger
sind bei Linux wahrscheinlich besser aufgehoben.</para>
die Benutzung des Systems einfacher zu gestalten.
Einsteiger sind bei Linux wahrscheinlich besser
aufgehoben.</para>
</listitem>
<listitem>
@ -254,8 +257,8 @@
urheberrechtlich geschützten AT&amp;T Code. Zwar kam es
1994 zu einer außergerichtlichen Einigung, die Leute
waren aber erst einmal verunsichert. Noch im März 2000
behauptete ein im Web publizierter Artikel, das Verfahren sei
erst <quote>kürzlich</quote> eingestellt worden.</para>
behauptete ein im Web publizierter Artikel, das Verfahren
sei erst <quote>kürzlich</quote> eingestellt worden.</para>
<para>Bezüglich der Bezeichnung schaffte der
Gerichtsprozess jedoch Klarheit: In den 80er Jahren war
@ -312,12 +315,12 @@
weiterentwickelt. Jedes Projekt unterhält einen
öffentlich zugänglichen
<emphasis>Quellcode-Baum</emphasis>, der mit dem <ulink
url="http://www.cvshome.org/">Concurrent Versions System</ulink>
(CVS) verwaltet wird, und alle Quellen des Projekts, die
Dokumentation und andere notwendige Dateien enthält.
CVS erlaubt es Anwendern, jede gewünschte Version des
Systems <quote>auszuchecken</quote> (mit anderen Worten, eine
Kopie des System zu erhalten).</para>
url="http://www.cvshome.org/">Concurrent Versions
System</ulink> (CVS) verwaltet wird, und alle Quellen des
Projekts, die Dokumentation und andere notwendige Dateien
enthält. CVS erlaubt es Anwendern, jede gewünschte Version
des Systems <quote>auszuchecken</quote> (mit anderen Worten,
eine Kopie des System zu erhalten).</para>
<para>Eine Vielzahl von Entwicklern trägt weltweit zur
Verbesserung von BSD bei. Dabei werden drei Typen
@ -328,8 +331,8 @@
<para>Ein <firstterm>Contributor</firstterm> schreibt Code
oder Dokumentationen. Ihm ist es nicht gestattet, seinen
Beitrag direkt in den Quellbaum einfließen zu lassen.
Bevor dieser Code in das System eingebracht wird, muss er von
einem registrierten Entwickler, dem
Bevor dieser Code in das System eingebracht wird, muss er
von einem registrierten Entwickler, dem
<emphasis>Committer</emphasis> geprüft werden.</para>
</listitem>
@ -348,13 +351,13 @@
könnte etwa typografische oder grammatikalische
Korrekturen ohne lange Diskussion durchführen. Auf der
anderen Seite sollten Änderungen mit weitreichenden
Konsequenzen vor dem Commit zur Begutachtung bereitgestellt
werden. Im Extremfall kann ein Mitglied des Core Teams, das
als Principal Architect fungiert, sogar die Entfernung der
Änderung aus dem Quellcodebaum veranlassen. Dieser
Vorgang wird als <firstterm>backing out</firstterm>
bezeichnet. Alle Committer werden durch eine E-Mail
über die erfolgte Änderung informiert. Es ist
Konsequenzen vor dem Commit zur Begutachtung
bereitgestellt werden. Im Extremfall kann ein Mitglied
des Core Teams, das als Principal Architect fungiert,
sogar die Entfernung der Änderung aus dem Quellcodebaum
veranlassen. Dieser Vorgang wird als <firstterm>backing
out</firstterm> bezeichnet. Alle Committer werden durch
eine E-Mail über die erfolgte Änderung informiert. Es ist
daher nicht möglich, heimlich eine Änderung
durchzuführen.</para>
</listitem>
@ -396,11 +399,11 @@
<listitem>
<para>BSD-Projekte pflegen das komplette
<quote>Betriebssystem</quote>, nicht nur den Kernel. Dieser
Unterschied ist aber marginal, da weder BSD noch Linux ohne
Anwendungsprogramme sinnvoll einsetzbar sind. Die unter BSD
eingesetzten Applikationen sind oft identisch mit denen
von Linux.</para>
<quote>Betriebssystem</quote>, nicht nur den Kernel.
Dieser Unterschied ist aber marginal, da weder BSD noch
Linux ohne Anwendungsprogramme sinnvoll einsetzbar sind.
Die unter BSD eingesetzten Applikationen sind oft
identisch mit denen von Linux.</para>
</listitem>
<listitem>
@ -408,8 +411,8 @@
werden muss, ist die Entwicklung übersichtlicher, und es
ist möglich, auf jede beliebige Version einer Datei
zuzugreifen. CVS ermöglicht auch inkrementelle Updates:
Das FreeBSD-Repository wird beispielsweise etwa 100 Mal pro
Tag verändert. Viele dieser Änderungen betreffen
Das FreeBSD-Repository wird beispielsweise etwa 100 Mal
pro Tag verändert. Viele dieser Änderungen betreffen
aber nur einen relativen kleinen Bereich von FreeBSD.</para>
</listitem>
</orderedlist>
@ -427,16 +430,15 @@
<orderedlist>
<listitem>
<para>Die Entwicklerversion hat das Suffix
<firstterm>CURRENT</firstterm>. FreeBSD weist diesem Suffix
eine Nummer zu, z.B. FreeBSD 5.0-CURRENT. NetBSD verwendet
ein etwas anderes Bezeichnungsschema und hängt als
Suffix nur einen Buchstaben an die Versionsnummer an, der
Änderungen an den internen Schnittstellen anzeigt, z.B.
NetBSD 1.4.3G. OpenBSD weist der Entwicklerversion keine
Nummer zu, sie heißt also einfach
<quote>OpenBSD-current</quote>.
Neue Entwicklungen werden zuerst in diesen Zweig
eingefügt.</para>
<firstterm>CURRENT</firstterm>. FreeBSD weist diesem
Suffix eine Nummer zu, z.B. FreeBSD 5.0-CURRENT. NetBSD
verwendet ein etwas anderes Bezeichnungsschema und hängt
als Suffix nur einen Buchstaben an die Versionsnummer an,
der Änderungen an den internen Schnittstellen anzeigt,
z.B. NetBSD 1.4.3G. OpenBSD weist der Entwicklerversion
keine Nummer zu, sie heißt also einfach
<quote>OpenBSD-current</quote>. Neue Entwicklungen werden
zuerst in diesen Zweig eingefügt.</para>
</listitem>
<listitem>
@ -446,22 +448,22 @@
veröffentlicht, die dann beispielsweise als
OpenBSD&nbsp;2.6-RELEASE oder NetBSD&nbsp;1.4-RELEASE
bezeichnet wird. Diese sind sowohl auf CD-ROM
als auch als freier Download von den FTP-Servern der Projekte
erhältlich. Diese RELEASE-Versionen sind für
als auch als freier Download von den FTP-Servern der
Projekte erhältlich. Diese RELEASE-Versionen sind für
Endbenutzer gedacht. NetBSD verwendet sogar eine dritte
Ziffer, um gepatchte Releases zu kennzeichnen
(etwa NetBSD 1.4.2).</para>
Ziffer, um gepatchte Releases zu kennzeichnen (etwa NetBSD
1.4.2).</para>
</listitem>
<listitem>
<para>Sobald Fehler in einer RELEASE-Version gefunden werden,
werden diese beseitigt und in den CVS-Baum eingefügt.
Beim FreeBSD-Projekt wird die daraus resultierende Version
als <firstterm>STABLE</firstterm> bezeichnet, während
sie bei NetBSD und OpenBSD weiterhin RELEASE heißt.
Kleinere Änderungen, die sich nach einer Testphase im
CURRENT-Zweig als stabil erweisen, können ebenfalls
in die STABLE-Version einfließen.</para>
<para>Sobald Fehler in einer RELEASE-Version gefunden
werden, werden diese beseitigt und in den CVS-Baum
eingefügt. Beim FreeBSD-Projekt wird die daraus
resultierende Version als <firstterm>STABLE</firstterm>
bezeichnet, während sie bei NetBSD und OpenBSD weiterhin
RELEASE heißt. Kleinere Änderungen, die sich nach einer
Testphase im CURRENT-Zweig als stabil erweisen, können
ebenfalls in die STABLE-Version einfließen.</para>
</listitem>
</orderedlist>
@ -484,8 +486,8 @@
<sect2>
<title>Welche BSD-Versionen gibt es überhaupt?</title>
<para>Im Gegensatz zu den zahlreichen Linux-Distributionen gibt es
nur vier große frei verfügbare BSDs. Jedes BSD-Projekt
<para>Im Gegensatz zu den zahlreichen Linux-Distributionen gibt
es nur vier große frei verfügbare BSDs. Jedes BSD-Projekt
unterhält seinen eigenen Quellcode-Baum und seinen eigenen
Kernel. In der Praxis scheinen die Unterschiede im Code der
Anwenderprogramme aber geringer zu sein als bei Linux.</para>
@ -494,7 +496,6 @@
genau zu trennen, da die Unterschiede eher subtiler Natur
sind:</para>
<itemizedlist>
<listitem>
<para>FreeBSD will eine hohe Leistung erreichen, für
@ -513,11 +514,11 @@
<listitem>
<para>Bei NetBSD ist Portabilität das oberste Ziel:
<quote>Natürlich läuft NetBSD darauf</quote>.
NetBSD kann auf vielen verschiedenen Systemen, von Palmtops
bis hin zu großen Servern, installiert werden, und
wurde sogar schon im Raumfahrtprogramm der NASA eingesetzt.
Besonders für alte Nicht-&intel;-Plattformen ist NetBSD
die erste Wahl.</para>
NetBSD kann auf vielen verschiedenen Systemen, von
Palmtops bis hin zu großen Servern, installiert werden,
und wurde sogar schon im Raumfahrtprogramm der NASA
eingesetzt. Besonders für alte Nicht-&intel;-Plattformen
ist NetBSD die erste Wahl.</para>
</listitem>
<listitem>
@ -534,12 +535,12 @@
<listitem>
<para>Das Ziel von DragonFlyBSD ist eine hohe Leistung und
Skalierbarkeit auf allen Systemen, vom Einzelplatzrechner bis
hin zu riesigen Cluster-Systemen. DragonFlyBSD verfolgt dabei
langfristig verschiedene technische Ziele, der Schwerpunkt der
Entwicklung liegt aber auf der Bereitstellung einer
SMP-fähigen Infrastruktur, die leicht zu verstehen, zu
warten und weiterzuentwickeln ist.</para>
Skalierbarkeit auf allen Systemen, vom Einzelplatzrechner
bis hin zu riesigen Cluster-Systemen. DragonFlyBSD
verfolgt dabei langfristig verschiedene technische Ziele,
der Schwerpunkt der Entwicklung liegt aber auf der
Bereitstellung einer SMP-fähigen Infrastruktur, die leicht
zu verstehen, zu warten und weiterzuentwickeln ist.</para>
</listitem>
</itemizedlist>
@ -553,12 +554,12 @@
Betriebssystem. Es war zwar nicht Open Source,
Quellcode-Lizenzen konnten aber relativ günstig
erworben werden. Es wies viele Gemeinsamkeiten mit
FreeBSD auf. Zwei Jahre, nachdem BSDi von Wind River Systems
übernommen worden war, wurde die Entwicklung von BSD/OS
als eigenständiges Produkt eingestellt. Zwar wird BSD/OS
von Wind River noch unterstützt, eine aktive Weiterentwicklung
erfolgt allerdings nur noch für das Embedded-Betriebssystem
VxWorks.</para>
FreeBSD auf. Zwei Jahre, nachdem BSDi von Wind River
Systems übernommen worden war, wurde die Entwicklung von
BSD/OS als eigenständiges Produkt eingestellt. Zwar wird
BSD/OS von Wind River noch unterstützt, eine aktive
Weiterentwicklung erfolgt allerdings nur noch für das
Embedded-Betriebssystem VxWorks.</para>
</listitem>
<listitem>
@ -609,10 +610,11 @@
ermöglicht. Dieses Paket enthält zwei Dinge:
Kernelmodifikationen zur korrekten Ausführung von
Linux-Systemaufrufen sowie Linuxkompatibilitätsdateien,
beispielsweise die C-Bibliothek von Linux. Unterschiede in der
Ausführungsgeschwindigkeit von Linuxanwendungen auf einem
beispielsweise die C-Bibliothek von Linux. Unterschiede in
der Ausführungsgeschwindigkeit von Linuxanwendungen auf einem
Linuxrechner und einem vergleichbaren mit BSD ausgestatteten
Rechner sind in der Praxis so gut wie nicht feststellbar.</para>
Rechner sind in der Praxis so gut wie nicht
feststellbar.</para>
<para>Die <quote>Alles-aus-einer-Hand</quote>-Natur von BSD
hat den Vorteil, dass Upgrades im Vergleich zu Linux häufig
@ -643,12 +645,11 @@
<listitem>
<para>BSD-Systeme, inbesondere FreeBSD, können eine
weitaus bessere Leistung als Linux-Systeme aufweisen. Diese
Aussage ist aber nicht allgemein gültig. In den
meisten Fällen sind die Leistungsunterschiede aber
gering oder gar nicht festzustellen. In bestimmten
Fällen kann auch Linux eine bessere Leistung
aufweisen.</para>
weitaus bessere Leistung als Linux-Systeme aufweisen.
Diese Aussage ist aber nicht allgemein gültig. In den
meisten Fällen sind die Leistungsunterschiede aber gering
oder gar nicht festzustellen. In bestimmten Fällen kann
auch Linux eine bessere Leistung aufweisen.</para>
</listitem>
<listitem>
@ -693,8 +694,10 @@
<para>Darüber hinaus finden sich auf den folgenden Seiten der
einzelnen Projekte Firmen, die Supportleistungen anbieten:
<ulink url="&url.base;/commercial/consult_bycat.html">FreeBSD</ulink>,
<ulink url="http://www.netbsd.org/gallery/consultants.html">NetBSD</ulink>,
<ulink
url="&url.base;/commercial/consult_bycat.html">FreeBSD</ulink>,
<ulink
url="http://www.netbsd.org/gallery/consultants.html">NetBSD</ulink>,
und <ulink url="http://www.openbsd.org/support.html">OpenBSD</ulink>.</para>
</sect2>
</sect1>

View file

@ -38,24 +38,24 @@
</articleinfo>
<para>FreeBSD wird oft für ein reines Server-Betriebssystem
gehalten, obwohl es auch auf Desktoprechnern sehr gut einsetzbar ist.
Falls Sie es auf einem Notebook einsetzen möchten, können
Sie auch hier die Vorzüge von FreeBSD nutzen: Ein
systematisches und stringentes Layout, einfache Administration und
gehalten, obwohl es auch auf Desktoprechnern sehr gut einsetzbar
ist. Falls Sie es auf einem Notebook einsetzen möchten, können
Sie auch hier die Vorzüge von FreeBSD nutzen: Ein systematisches
und stringentes Layout, einfache Administration und
Aktualisierung, das Ports- und Packagesystem für die
Softwareinstallation und vieles andere mehr. Weitere Vorzüge,
wie lange Laufzeiten, Netzwerkperformance und gute Performance unter
hoher Last sind natürlich auf einem Notebookrechner nicht ganz
so wichtig. Auf Notebookrechnern können aber während der
Softwareinstallation und vieles andere mehr. Weitere Vorzüge, wie
lange Laufzeiten, Netzwerkperformance und gute Performance unter
hoher Last sind natürlich auf einem Notebookrechner nicht ganz so
wichtig. Auf Notebookrechnern können aber während der
Installation Probleme auftreten, die bei Desktoprechnern nicht
existieren und die daher hier diskutiert werden (Notebooks sind
&ndash; anders als Desktoprechner &ndash; oft auf &microsoft.windows;
abgestimmt). In diesem Artikel sollen solche Probleme angesprochen
werden. Einige Leute haben Ihre Erfahrungen mit dem Betrieb von
&os; auf Notebooks auf eigenen Webseiten veröffentlicht, die
nicht Teil der &os;-Dokumentation sind. Wenn Sie den Namen Ihres
Notebooks zusammen mit <quote>&os;</quote> in der Suchmaschine
Ihrer Wahl eingeben, ist es gut möglich, dass Sie
&ndash; anders als Desktoprechner &ndash; oft auf
&microsoft.windows; abgestimmt). In diesem Artikel sollen solche
Probleme angesprochen werden. Einige Leute haben Ihre Erfahrungen
mit dem Betrieb von &os; auf Notebooks auf eigenen Webseiten
veröffentlicht, die nicht Teil der &os;-Dokumentation sind. Wenn
Sie den Namen Ihres Notebooks zusammen mit <quote>&os;</quote> in
der Suchmaschine Ihrer Wahl eingeben, ist es gut möglich, dass Sie
Informationen finden, die Ihnen weiterhelfen. Zusätzlich
existiert eine &os;-spezifische Online-Datenbank unter <ulink
url="http://laptop.bsdgroup.de/freebsd/">The &os; Laptop
@ -80,12 +80,13 @@
<para>Lesen Sie das Handbuch Ihres Notebooks, um herauszufinden,
welche Grafikkarte (oder welcher Grafikchip) eingebaut wurde.
Danach überprüfen Sie die
<application>&xorg;</application>-Dokumentation, um festzustellen,
ob Ihre Grafikkarte unterstützt wird. Ist dies nicht der
Fall, verwenden Sie einen allgemeinen Treiber. Versuchen Sie
nicht, einfach einen Treiber mit einem ähnlichen Namen zu
verwenden. Mit <userinput>Xorg -configure</userinput> lassen sich
viele Konfigurationsparameter automatisch einstellen.</para>
<application>&xorg;</application>-Dokumentation, um
festzustellen, ob Ihre Grafikkarte unterstützt wird. Ist dies
nicht der Fall, verwenden Sie einen allgemeinen Treiber.
Versuchen Sie nicht, einfach einen Treiber mit einem ähnlichen
Namen zu verwenden. Mit <userinput>Xorg -configure</userinput>
lassen sich viele Konfigurationsparameter automatisch
einstellen.</para>
<para>Manchmal verursacht auch die Konfiguration des Displays
Probleme. Die verfügbaren &xorg;-Ressourcen
@ -95,12 +96,11 @@
und Sie müssen keine Modelines angeben, da die einfache
Angabe von horizontaler und vertikalen Wiederholrate ausreicht.
Reichen diese Angaben nicht aus, sollten Sie im Internet nach
Seiten suchen, die sich mit der Konfiguration von X auf Notebooks
beschäftigen (diese beziehen sich zwar oft auf Linux, da
allerdings sowohl &os; als auch Linux &xorg; verwenden, spielt
dies keine Rolle). Von dort können Sie sich eine
Modeline kopieren, die für ähnliche Hardware
gültig ist.</para>
Seiten suchen, die sich mit der Konfiguration von X auf
Notebooks beschäftigen (diese beziehen sich zwar oft auf Linux,
da allerdings sowohl &os; als auch Linux &xorg; verwenden,
spielt dies keine Rolle). Von dort können Sie sich eine
Modeline kopieren, die für ähnliche Hardware gültig ist.</para>
<para>Die meisten Notebooks haben zwei Maustasten, die unter X nur
selten Probleme verursachen (abgesehen von der mittleren
@ -127,13 +127,13 @@
bereitzustellen). Besitzt Ihr Modem beispielsweise einen
Lucent&nbsp;LT-Chipsatz, wird dieser wahrscheinlich vom
<filename role="package">comms/ltmdm</filename>-Port
unterstützt. Hat Ihr Notebook aber ein
<quote>Winmodem</quote> eingebaut, müssen Sie sich ein
externes Modem kaufen: Die kompakteste Lösung sind hier
PCMCIA-Modems, die weiter unten besprochen werden. Serielle oder
über USB angeschlossene Modems sind aber deutlich billiger.
In der Regel sollten <quote>normale</quote> Modems (so genannte
Non-Winmodems) problemlos funktionieren.</para>
unterstützt. Hat Ihr Notebook aber ein <quote>Winmodem</quote>
eingebaut, müssen Sie sich ein externes Modem kaufen: Die
kompakteste Lösung sind hier PCMCIA-Modems, die weiter unten
besprochen werden. Serielle oder über USB angeschlossene Modems
sind aber deutlich billiger. In der Regel sollten
<quote>normale</quote> Modems (so genannte Non-Winmodems)
problemlos funktionieren.</para>
</sect1>
<sect1 id="pcmcia">
@ -143,29 +143,29 @@
PC-Card-Slots. Diese werden von FreeBSD sehr gut
unterstützt. Verwenden Sie &man.dmesg.8;, um festzustellen,
ob die PCMCIA-Geräte beim Systemstart korrekt erkannt wurden.
Ist dies der Fall, sollten Einträge ähnlich den
folgenden auftauchen: <devicename>pccard0</devicename>,
Ist dies der Fall, sollten Einträge ähnlich den folgenden
auftauchen: <devicename>pccard0</devicename>,
<devicename>pccard1</devicename> sowie Geräte wie
<devicename>pcic0</devicename>.</para>
<para>&os;&nbsp;4.X unterstützt nur 16-Bit PCMCIA-Karten,
&os;&nbsp;5.X unterstützt sowohl 16-Bit-Karten als auch
32-Bit-Karten. Eine Liste der unterstützten Karten finden
Sie in <filename>/etc/defaults/pccard.conf</filename>. Kaufen
Sie möglichst nur Karten, die in dieser Liste aufgeführt
sind. Ist Ihre Karte nicht aufgeführt, kann sie aber
trotzdem funktionieren, da die meisten 16-Bit-Modems trotzdem
unterstützt werden, vorausgesetzt, es handelt sich nicht um
32-Bit-Karten. Eine Liste der unterstützten Karten finden Sie
in <filename>/etc/defaults/pccard.conf</filename>. Kaufen Sie
möglichst nur Karten, die in dieser Liste aufgeführt sind. Ist
Ihre Karte nicht aufgeführt, kann sie aber trotzdem
funktionieren, da die meisten 16-Bit-Modems trotzdem unterstützt
werden, vorausgesetzt, es handelt sich nicht um
<quote>Winmodems</quote> (diese gibt es auch bei PCMCIA-Karten,
sie sollten daher beim Kauf der Karte aufpassen). Sollte Ihre
Karte als generisches Modem (<foreignphrase>generic
modem</foreignphrase>) erkannt werden, müssen Sie daran
denken, dass in der Defaultkonfiguration von
modem</foreignphrase>) erkannt werden, müssen Sie daran denken,
dass in der Defaultkonfiguration von
<filename>pccard.conf</filename> eine Verzögerung von
10&nbsp;Sekunden angegeben ist (dies verhindert das Einfrieren
bestimmter Modems). Für Ihr Modem kann dieser Eintrag
überflüssig sein, Sie sollten daher versuchen, die Zeit
zu reduzieren oder die Zeile komplett zu entfernen.</para>
überflüssig sein, Sie sollten daher versuchen, die Zeit zu
reduzieren oder die Zeile komplett zu entfernen.</para>
<para>Einige Abschnitte der Datei <filename>pccard.conf</filename>
müssen angepasst werden. Prüfen Sie die Zeile, in der
@ -261,20 +261,20 @@
dass nur einige oder keiner dieser Befehle
funktionieren.</para>
<para>Vielleicht können Sie den Suspend-/Standby-Modus
nur auf der Konsole aktivieren, aber nicht unter X
(dann bleibe der Bildschirm nach dem Reaktivieren dunkel).
Seit &os;&nbsp;5.X könnte eine Lösung darin bestehen,
die Zeile <literal>options SC_NO_SUSPEND_VTYSWITCH</literal> in
die Kernel-Konfigurationsdatei aufzunehmen und den Kernel
neu zu kompilieren. Eine andere Lösung wäre es, vor
dem &man.apm.8;-Aufruf in den Konsolen-Modus zu wechseln, indem
<para>Vielleicht können Sie den Suspend-/Standby-Modus nur auf
der Konsole aktivieren, aber nicht unter X (dann bleibe der
Bildschirm nach dem Reaktivieren dunkel). Seit &os;&nbsp;5.X
könnte eine Lösung darin bestehen, die Zeile <literal>options
SC_NO_SUSPEND_VTYSWITCH</literal> in die
Kernel-Konfigurationsdatei aufzunehmen und den Kernel neu zu
kompilieren. Eine andere Lösung wäre es, vor dem
&man.apm.8;-Aufruf in den Konsolen-Modus zu wechseln, indem
die Tastenkombination <keycombo
action="simul"><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>F1</keycap></keycombo>
oder eine andere Funktionstaste gedrückt wird. Dieser
Vorgang kann mit &man.apmd.8; automatisiert werden, falls der
&man.apmd.8;-Daemon läuft. Dazu fügen Sie die
folgenden Abschnitte in <filename>/etc/apmd.conf</filename>
oder eine andere Funktionstaste gedrückt wird. Dieser Vorgang
kann mit &man.apmd.8; automatisiert werden, falls der
&man.apmd.8;-Daemon läuft. Dazu fügen Sie die folgenden
Abschnitte in <filename>/etc/apmd.conf</filename>
ein:</para>
<programlisting>apm_event SUSPENDREQ {
@ -312,13 +312,13 @@ apm_event NORMRESUME, STANDBYRESUME {
kann sogar so weit kommen, dass &os; auf manchen Notebooks
nicht startet, wenn ACPI aktiviert ist.</para>
<para>Sollte ACPI auf Ihrem Notebook Probleme verursachen, sollten
Sie prüfen, ob der Hersteller Ihres Notebooks eine neuere
BIOS-Version bereitstellt, in der die ACPI-Fehler behoben sind.
Da die ACPI-Implementierung von &os; sich noch im
Entwicklungsstatus befindet, könnten Sie auch Ihr System
aktualisieren. Die Chancen stehen gut, dass sich Ihre Probleme
damit beheben lassen.</para>
<para>Sollte ACPI auf Ihrem Notebook Probleme verursachen,
sollten Sie prüfen, ob der Hersteller Ihres Notebooks eine
neuere BIOS-Version bereitstellt, in der die ACPI-Fehler
behoben sind. Da die ACPI-Implementierung von &os; sich noch
im Entwicklungsstatus befindet, könnten Sie auch Ihr System
aktualisieren. Die Chancen stehen gut, dass sich Ihre
Probleme damit beheben lassen.</para>
<para>Möchten Sie ACPI abschalten, bearbeiten Sie die
Zeile <literal>hint.acpi.0.disabled="1"</literal> in

View file

@ -84,30 +84,29 @@ Copyright (c) 2005 Dru Lavigne
<sect1 id="introduction">
<title>Einleitung</title>
<para>&os; ist ein &unix;-ähnliches Betriebssystem, das auf
der
<para>&os; ist ein &unix;-ähnliches Betriebssystem, das auf der
Berkeley&nbsp;Software&nbsp;Distribution&nbsp;(<acronym>BSD</acronym>)
basiert. Während &os; und &linux; häufig als sehr
ähnlich empfunden werden, gibt es doch Unterschiede:</para>
basiert. Während &os; und &linux; häufig als sehr ähnlich
empfunden werden, gibt es doch Unterschiede:</para>
<orderedlist>
<listitem>
<para>&linux; selbst ist ein Kernel. Distributionen (z.B.
Red&nbsp;Hat, Debian, SUSE) stellen dem Benutzer ein
Installationswerkzeug und Programme zur Verfügung. Auf
der &linux;-Projektseite befindet sich eine <ulink
Installationswerkzeug und Programme zur Verfügung. Auf der
&linux;-Projektseite befindet sich eine <ulink
url="http://www.linux.org/dist/">Auflistung verschiedener
Distributionen</ulink> mit mehr als 300&nbsp;Einträgen.
Während dem Benutzer ein Höchstmaß an
Flexibilität geboten wird, erhöht das Bestehen
dieser Vielzahl an Distributionen auch die Schwierigkeit,
die eigenen Kenntnisse von einer Distribution auf eine
andere zu übertragen. Distributionen unterscheiden sich
nicht nur in der Einfachheit der Installation und der zur
Verfügung stehenden Programme, sie unterscheiden sich
auch in der Verzeichnisstruktur, in den verfügbaren
Shells und Window&nbsp;Managern sowie in den Vorgehensweisen
bei der Installation und Aktualisierung von Software.</para>
Während dem Benutzer ein Höchstmaß an Flexibilität geboten
wird, erhöht das Bestehen dieser Vielzahl an Distributionen
auch die Schwierigkeit, die eigenen Kenntnisse von einer
Distribution auf eine andere zu übertragen. Distributionen
unterscheiden sich nicht nur in der Einfachheit der
Installation und der zur Verfügung stehenden Programme, sie
unterscheiden sich auch in der Verzeichnisstruktur, in den
verfügbaren Shells und Window&nbsp;Managern sowie in den
Vorgehensweisen bei der Installation und Aktualisierung von
Software.</para>
<para>&os; ist ein komplettes Betriebssystem (Kernel und
Userland) mit einem hoch angesehenem Erbe, das bis in die
@ -121,38 +120,36 @@ Copyright (c) 2005 Dru Lavigne
zurückreicht. Da der Kernel und die bereitgestellten
Programme unter der Aufsicht desselben
Release&nbsp;Engineering&nbsp;Teams stehen, ist die
Wahrscheinlichkeit gering, dass Inkompatibilitäten
zwischen Bibliotheken auftreten. Mit Sicherheitslücken
kann sich das Security&nbsp;Team zeitnah befassen. Wenn neue
Programm- oder Kernel-Funktionen hinzugefügt werden,
braucht der Benutzer nur die Release&nbsp;Notes lesen, die
auf der <ulink url="&url.base;/">&os;-Projektseite</ulink>
Wahrscheinlichkeit gering, dass Inkompatibilitäten zwischen
Bibliotheken auftreten. Mit Sicherheitslücken kann sich das
Security&nbsp;Team zeitnah befassen. Wenn neue Programm-
oder Kernel-Funktionen hinzugefügt werden, braucht der
Benutzer nur die Release&nbsp;Notes lesen, die auf der
<ulink url="&url.base;/">&os;-Projektseite</ulink>
veröffentlicht werden.</para>
</listitem>
<listitem>
<para>&os; verfügt über eine großen und gut
organisierten Entwicklerstamm, der gewährleistet, dass
Änderungen auf schnelle und geregelte Art und Weise
durchgeführt werden. Dazu gehören mehrere tausend
Entwickler, die regelmäßig Code beisteuern, von
denen jedoch nur etwa 300 ein sogenanntes Commit&nbsp;Bit
besitzen, das es ihnen erlaubt, direkt Änderungen am
Kernel, den Programmen und der offiziellen Dokumentation
durchzuführen. Das Release&nbsp;Engineering&nbsp;Team
ist zuständig für die Qualitätssicherung und
das Security Team für die Behandlung von
Sicherheitsproblemen. Des Weiteren existiert eine
<para>&os; verfügt über eine großen und gut organisierten
Entwicklerstamm, der gewährleistet, dass Änderungen auf
schnelle und geregelte Art und Weise durchgeführt werden.
Dazu gehören mehrere tausend Entwickler, die regelmäßig Code
beisteuern, von denen jedoch nur etwa 300 ein sogenanntes
Commit&nbsp;Bit besitzen, das es ihnen erlaubt, direkt
Änderungen am Kernel, den Programmen und der offiziellen
Dokumentation durchzuführen. Das
Release&nbsp;Engineering&nbsp;Team ist zuständig für die
Qualitätssicherung und das Security Team für die Behandlung
von Sicherheitsproblemen. Des Weiteren existiert eine
gewählte Core&nbsp;Group, die aus
8&nbsp;Senior&nbsp;Committern besteht und die Gesamtleitung
des Projekts übernimmt.</para>
<para>Im Gegensatz dazu müssen Änderungen am
&linux;-Kernel erst vom Kernel Source Maintainer
Linus&nbsp;Torvalds bewilligt werden. Wie Änderungen an
Distributionen erfolgen, kann von Projekt zu Projekt stark
variieren und ist abhängig von der Größe des
jeweiligen Entwicklerstamms sowie dessen
<para>Im Gegensatz dazu müssen Änderungen am &linux;-Kernel
erst vom Kernel Source Maintainer Linus&nbsp;Torvalds
bewilligt werden. Wie Änderungen an Distributionen erfolgen,
kann von Projekt zu Projekt stark variieren und ist abhängig
von der Größe des jeweiligen Entwicklerstamms sowie dessen
Organisation.</para>
</listitem>
@ -186,7 +183,7 @@ Copyright (c) 2005 Dru Lavigne
und BSDL</ulink>, ohne Partei zu beziehen.</para>
</footnote>
. Stabilen und sicheren Code unter die BSD-Lizenz zu stellen
Stabilen und sicheren Code unter die BSD-Lizenz zu stellen
ermöglicht, dass viele Betriebssysteme wie <ulink
url="http://developer.apple.com/opensource/">Mac&nbsp;OS&nbsp;X</ulink>
auf &os;-Code basieren. Daneben bedeutet die Nutzung von
@ -268,8 +265,8 @@ Copyright (c) 2005 Dru Lavigne
zur einfachen Installation bereit
<footnote>
<para><ulink url="&url.base;/de/ports/">&os;-Ports</ulink>: Zur
Installation von Software genügt ein einfaches
<para><ulink url="&url.base;/de/ports/">&os;-Ports</ulink>:
Zur Installation von Software genügt ein einfaches
<command>pkg_add -r
<replaceable>Paketname</replaceable></command></para>
</footnote>
@ -318,14 +315,13 @@ Copyright (c) 2005 Dru Lavigne
<para>Netgraph ist ein baukastenartiges
Netzwerkteilsystem, das verwendet werden kann, um die
bestehende Netzwerkinfrastruktur des Kernels zu
erweitern. Entwickler haben durch Hooks die
Möglichkeit, eigene Komponenten abzuleiten.
Infolgedessen gestaltet sich der kurzfristige Bau von
Prototypen und die anschließende
Produktionsentwicklung bei erweiterten Netzwerkdiensten
viel einfacher und weniger fehleranfällig. Viele
funktionsfähige Komponenten werden mit &os;
mitgeliefert, die unter anderem Unterstützung
erweitern. Entwickler haben durch Hooks die Möglichkeit,
eigene Komponenten abzuleiten. Infolgedessen gestaltet
sich der kurzfristige Bau von Prototypen und die
anschließende Produktionsentwicklung bei erweiterten
Netzwerkdiensten viel einfacher und weniger
fehleranfällig. Viele funktionsfähige Komponenten werden
mit &os; mitgeliefert, die unter anderem Unterstützung
bieten für:</para>
<itemizedlist>
@ -613,13 +609,12 @@ Copyright (c) 2005 Dru Lavigne
url="&url.base;/doc/de_DE.ISO8859-1/books/handbook/eresources.html#ERESOURCES-MAIL">Mailinglisten</ulink>
zu &os;. Der Nachrichtenverkehr wird archiviert und ist
durchsuchbar. Falls eine Frage mit Hilfe des Handbuchs
nicht beantwortet werden konnte, wurde sie mit
größer Wahrscheinlichkeit schon auf einer der
Mailinglisten beantwortet. Handbuch und Mailinglisten
stehen in verschiedenen Sprachen zur Verfügung, die
alle auf der Startseite des <ulink
url="&url.base;/">&os; Projects</ulink>
auswählbar sind.</para>
nicht beantwortet werden konnte, wurde sie mit größer
Wahrscheinlichkeit schon auf einer der Mailinglisten
beantwortet. Handbuch und Mailinglisten stehen in
verschiedenen Sprachen zur Verfügung, die alle auf der
Startseite des <ulink url="&url.base;/">&os;
Projects</ulink> auswählbar sind.</para>
</listitem>
<listitem>
@ -665,16 +660,16 @@ Copyright (c) 2005 Dru Lavigne
</itemizedlist>
<para>Es gibt außerdem die Initiative, eine Zertifizierung von
BSD-Systemadministratoren anzubieten. Weitere Informationen dazu
finden Sie unter <ulink
BSD-Systemadministratoren anzubieten. Weitere Informationen
dazu finden Sie unter <ulink
url="http://www.bsdcertification.org"></ulink>.</para>
<para>Projekte, die eine Common&nbsp;Criteria-Zertifizierung
benötigen, können die Hilfe von <ulink
url="http://www.trustedbsd.org">TrustedBSD</ulink> in
Anspruch nehmen, um (beispielsweise durch den Einsatz des
&os; MAC&nbsp;Frameworks) diesen Prozess zu erleichtern.</para>
</sect2>
&os; MAC&nbsp;Frameworks) diesen Prozess zu
erleichtern.</para> </sect2>
</sect1>
<sect1 id="freebsd-advantages">

View file

@ -211,8 +211,8 @@
<listitem>
<para>Zeigt uns, wo wir uns befinden, gibt also das aktuelle
Verzeichnis
(<foreignphrase>working directory</foreignphrase>) aus.</para>
</listitem>
(<foreignphrase>working directory</foreignphrase>)
aus.</para> </listitem>
</varlistentry>
<varlistentry>
@ -647,12 +647,12 @@
als der DOS-Editor EDIT. Rufen Sie doch einmal das Kommando
<command>:r</command> auf.) Drücken Sie die
<keycap>Esc</keycap>-Taste ruhig öfter als einmal, um sicher
zu gehen, dass Sie sich im Kommandomodus befinden und arbeiten Sie
in diesem Modus weiter, falls Probleme auftreten. Speichern Sie
die Datei immer wieder mit <command>:w</command>, und geben Sie
<command>:q!</command> ein, um von vorne zu beginnen (genauer
gesagt, vom letzten <command>:w</command>-Kommando), falls dies
nötig sein sollte.</para>
zu gehen, dass Sie sich im Kommandomodus befinden und arbeiten
Sie in diesem Modus weiter, falls Probleme auftreten. Speichern
Sie die Datei immer wieder mit <command>:w</command>, und geben
Sie <command>:q!</command> ein, um von vorne zu beginnen
(genauer gesagt, vom letzten <command>:w</command>-Kommando),
falls dies nötig sein sollte.</para>
<para>Danach können Sie mit <command>cd</command> nach
<filename>/etc</filename> wechseln, mit <command>su</command>
@ -674,10 +674,10 @@
<para>Bis zu diesem Zeitpunkt haben Sie wahrscheinlich noch keinen
Drucker eingerichtet, daher zeigen wir Ihnen, wie man eine Datei
aus einer Manualpage erzeugt, diese auf eine Diskette kopiert und
dann unter DOS ausdruckt. Möchten Sie etwa nachlesen, wie
Sie Dateirechte verändern können (was sehr wichtig ist),
rufen Sie mit <command>man chmod</command> die entsprechende
aus einer Manualpage erzeugt, diese auf eine Diskette kopiert
und dann unter DOS ausdruckt. Möchten Sie etwa nachlesen, wie
Sie Dateirechte verändern können (was sehr wichtig ist), rufen
Sie mit <command>man chmod</command> die entsprechende
Manualpage auf. Der Befehl</para>
<informalexample>
@ -703,8 +703,8 @@
benötigen, werden Sie durch die Eingabe von
<command>exit</command> wieder zu <username>jack</username>
und wechseln dann in das Verzeichnis, in dem sich
<filename>chmod.txt</filename> befindet, und kopieren diese Datei
mit</para>
<filename>chmod.txt</filename> befindet, und kopieren diese
Datei mit</para>
<informalexample>
<screen>&prompt.user; <userinput>cp chmod.txt /mnt</userinput></screen>
@ -715,21 +715,22 @@
<filename>/mnt</filename> an. Als Ergebnis sollten Sie
<filename>chmod.txt</filename> erhalten.</para>
<para>Leiten Sie nun die Ausgabe von <command>/sbin/dmesg</command>
in eine Datei um, indem Sie</para>
<para>Leiten Sie nun die Ausgabe von
<command>/sbin/dmesg</command> in eine Datei um, indem
Sie</para>
<informalexample>
<screen>&prompt.user; <userinput>/sbin/dmesg &gt; dmesg.txt</userinput></screen>
</informalexample>
<para>eingeben und diese Datei ebenfalls auf die Diskette kopieren.
Mit <command>/sbin/dmesg</command> können Sie alle
während des Systemstarts angezeigten Meldungen ausgeben.
Es ist wichtig, dass Sie diese Meldungen verstehen, da hier
angezeigt wird, welche Hardware von FreeBSD beim Systemstart
gefunden wurde. Falls Sie Fragen auf der Mailingliste
&a.de.questions; oder im USENET stellen (etwa <quote>FreeBSD erkennt
mein Bandlaufwerk nicht, was soll ich tun?</quote>), wird man Sie
<para>eingeben und diese Datei ebenfalls auf die Diskette
kopieren. Mit <command>/sbin/dmesg</command> können Sie alle
während des Systemstarts angezeigten Meldungen ausgeben. Es ist
wichtig, dass Sie diese Meldungen verstehen, da hier angezeigt
wird, welche Hardware von FreeBSD beim Systemstart gefunden
wurde. Falls Sie Fragen auf der Mailingliste &a.de.questions;
oder im USENET stellen (etwa <quote>FreeBSD erkennt mein
Bandlaufwerk nicht, was soll ich tun?</quote>), wird man Sie
fragen, was <command>dmesg</command> ausgibt.</para>
<para>Anschließend können Sie das Diskettenlaufwerk
@ -876,19 +877,19 @@
<sect1 id="next-steps">
<title>Die nächsten Schritte</title>
<para>Sie sollten nun alle wichtigen Werkzeuge kennen, um sich auf Ihrem
System zurechtzufinden, Dateien zu editieren und alles am Laufen
zu halten. Viele nützliche Informationen finden sich im
FreeBSD-Handbuch (das vielleicht schon auf Ihrer
Festplatte ist) und auf der <ulink
url="http://www.FreeBSD.org/index.html">FreeBSD Webseite</ulink>.
Viele Softwarepakte und Ports sind sowohl auf der FreeBSD-CD-ROM
als auch auf der Webseite verfügbar. Im Handbuch finden Sie
Hinweise, wie Sie mit diesen arbeiten können. Pakete
installieren Sie mit
<para>Sie sollten nun alle wichtigen Werkzeuge kennen, um sich auf
Ihrem System zurechtzufinden, Dateien zu editieren und alles am
Laufen zu halten. Viele nützliche Informationen finden sich im
FreeBSD-Handbuch (das vielleicht schon auf Ihrer Festplatte ist)
und auf der <ulink
url="http://www.FreeBSD.org/index.html">FreeBSD
Webseite</ulink>. Viele Softwarepakte und Ports sind sowohl auf
der FreeBSD-CD-ROM als auch auf der Webseite verfügbar. Im
Handbuch finden Sie Hinweise, wie Sie mit diesen arbeiten
können. Pakete installieren Sie mit
<command>pkg_add /cdrom/packages/All/<replaceable>Paketname</replaceable></command>,
wobei <replaceable>Paketname</replaceable> für den
Dateinamen des Paketes steht. Auf der CD-ROM finden Sie auch eine
wobei <replaceable>Paketname</replaceable> für den Dateinamen
des Paketes steht. Auf der CD-ROM finden Sie auch eine
Liste der Pakete und Ports inklusive einer kurzen Beschreibung.
Lesen Sie dazu
<filename>cdrom/packages/index</filename>,
@ -917,9 +918,9 @@
</informalexample>
<para>Danach wird das Verzeichnis
<filename>/usr/local/kermit</filename> angelegt, in dem sich alle
Dateien des Unterverzeichnisses <filename>kermit</filename> der
CD-ROM finden.</para>
<filename>/usr/local/kermit</filename> angelegt, in dem sich
alle Dateien des Unterverzeichnisses <filename>kermit</filename>
der CD-ROM finden.</para>
<para>Danach legen Sie mit <command>mkdir</command>
das Verzeichnis <filename>/usr/ports/distfiles</filename> an,
@ -933,8 +934,8 @@
<para>Wechseln Sie nun mit <command>cd</command> nach
<filename>/usr/local/kermit</filename>. In diesem Verzeichnis
befindet sich bereits ein <filename>Makefile</filename>. Geben Sie
hier Folgendes ein:</para>
befindet sich bereits ein <filename>Makefile</filename>. Geben
Sie hier Folgendes ein:</para>
<informalexample>
<screen>&prompt.root; <userinput>make all install</userinput></screen>
@ -947,25 +948,23 @@
Falls Sie noch keine Internetverbindung haben und die
benötigten Dateien nicht in
<filename>/cdrom/ports/distfiles</filename> vorhanden sind,
müssen Sie sich die Dateien über einem anderen Rechner
besorgen und manuell nach <filename>/usr/ports/distfiles</filename>
kopieren (entweder über eine Diskette oder durch das
Einhängen einer DOS-Partition. Sehen Sie im
<filename>Makefile</filename> (mit <command>cat</command>,
<command>more</command> oder <command>view</command>) nach, wo
die Dateien zu finden sind (meist auf der Hauptseite des Programms)
und besorgen Sie sich die Datei. Laden Sie die Datei unter DOS
herunter, wird der Dateiname möglicherweise gekürzt. In
diesem Fall müssen Sie, nachdem die Datei nach
<filename>/usr/ports/distfiles</filename> kopiert wurde, den
ursprünglichen Namen mit <command>mv</command>
wiederherstellen, damit die Datei von der
müssen Sie sich die Dateien über einem anderen Rechner besorgen
und manuell nach <filename>/usr/ports/distfiles</filename>
kopieren (entweder über eine Diskette oder durch das Einhängen
einer DOS-Partition. Sehen Sie im <filename>Makefile</filename>
(mit <command>cat</command>, <command>more</command> oder
<command>view</command>) nach, wo die Dateien zu finden sind
(meist auf der Hauptseite des Programms) und besorgen Sie sich
die Datei. Laden Sie die Datei unter DOS herunter, wird der
Dateiname möglicherweise gekürzt. In diesem Fall müssen Sie,
nachdem die Datei nach <filename>/usr/ports/distfiles</filename>
kopiert wurde, den ursprünglichen Namen mit
<command>mv</command> wiederherstellen, damit die Datei von der
Installationsroutine gefunden werden kann. Laden Sie die Datei
mit FTP herunter, müssen Sie den Binär-Modus verwenden.
Nun wechseln Sie zurück nach
<filename>/usr/local/kermit</filename> (hier befindet sich ja
das zur Installation nötige <filename>Makefile</filename>)
und installieren das Programm mit
mit FTP herunter, müssen Sie den Binär-Modus verwenden. Nun
wechseln Sie zurück nach <filename>/usr/local/kermit</filename>
(hier befindet sich ja das zur Installation nötige
<filename>Makefile</filename>) und installieren das Programm mit
<command>make all install</command>.</para>
<para>Beim Installieren von Ports oder Paketen kann es auch
@ -1163,23 +1162,22 @@ setenv XNLSPATH /usr/X11R6/lib/X11/nls</programlisting>
<sect1 id="other">
<title>Einige abschließende Bemerkungen</title>
<para>Als <username>root</username> können Sie das
CD-ROM-Laufwerk mit <command>/sbin/umount /cdrom</command>
abhängen, eine andere CD-ROM einlegen und mit
<command>/sbin/mount_cd9660 /dev/cd0a /cdrom</command> wieder
einhängen (falls <hardware>cd0a</hardware> der Devicename
Ihres CD-ROM-Laufwerkes ist). Bei neueren FreeBSD-Versionen
muss dafür nur <command>/sbin/mount /cdrom</command>
eingegeben werden.</para>
<para>Als <username>root</username> können Sie das CD-ROM-Laufwerk
mit <command>/sbin/umount /cdrom</command> abhängen, eine andere
CD-ROM einlegen und mit <command>/sbin/mount_cd9660 /dev/cd0a
/cdrom</command> wieder einhängen (falls
<hardware>cd0a</hardware> der Devicename Ihres CD-ROM-Laufwerkes
ist). Bei neueren FreeBSD-Versionen muss dafür nur
<command>/sbin/mount /cdrom</command> eingegeben werden.</para>
<para>Das Live-Filesystem (die zweite FreeBSD-CD-ROM) kann hilfreich
sein, wenn auf Ihrem System nur begrenzt Speicherplatz vorhanden
ist. Was genau auf dieser Live-CD enthalten ist, variiert von
Ausgabe zu Ausgabe. Vielleicht können verschiedene Spiele
von CD-ROM gespielt werden. Dazu muss aber auch
<para>Das Live-Filesystem (die zweite FreeBSD-CD-ROM) kann
hilfreich sein, wenn auf Ihrem System nur begrenzt Speicherplatz
vorhanden ist. Was genau auf dieser Live-CD enthalten ist,
variiert von Ausgabe zu Ausgabe. Vielleicht können verschiedene
Spiele von CD-ROM gespielt werden. Dazu muss aber auch
<command>lndir</command> vorhanden sein, damit diese Programme
wissen, wo sie die von ihnen benötigten Dateien finden, da
sich diese unter <filename>/cdrom</filename> und nicht unter
wissen, wo sie die von ihnen benötigten Dateien finden, da sich
diese unter <filename>/cdrom</filename> und nicht unter
<filename>/usr</filename> und den entsprechenden
Unterverzeichnissen befinden, wie es diese Programme erwarten.
Lesen Sie dazu auch &man.lndir.1;.</para>

View file

@ -0,0 +1,22 @@
#
# The FreeBSD Documentation Project
# The FreeBSD German Documentation Project
#
# $FreeBSD$
# basiert auf: r39631
#
# Article: Port Mentor Guidelines
#
DOC?= article
FORMATS?= html
WITH_ARTICLE_TOC?= YES
INSTALL_COMPRESSED?= gz
INSTALL_ONLY_COMPRESSED?=
SRCS= article.xml
DOC_PREFIX?= ${.CURDIR}/../../..
.include "${DOC_PREFIX}/share/mk/doc.project.mk"

View file

@ -0,0 +1,266 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V4.5-Based Extension//EN"
"../../../share/xml/freebsd45.dtd">
<!-- The FreeBSD Documentation Project
The FreeBSD German Documentation Project
$FreeBSD$
basiert auf: r396332
-->
<article lang="en">
<articleinfo>
<title>Richtlinien f&uuml;r Port-Mentoren</title>
<authorgroup>
<corpauthor>Das &os; Ports-Management Team</corpauthor>
</authorgroup>
<pubdate>$FreeBSD$</pubdate>
<releaseinfo>$FreeBSD$</releaseinfo>
<copyright>
<year>2011</year>
<holder role="mailto:tabthorpe@FreeBSD.org">Thomas
Abthorpe</holder>
<holder role="mailto:crees@FreeBSD.org">Chris Rees</holder>
</copyright>
</articleinfo>
<sect1 id="port-mentor.guidelines">
<title>Richtlinien f&uuml;r Mentor/Mentee Beziehungen</title>
<para>Dieser Abschnitt soll dazu dienen, den Mythos des
Mentoringprozesses zu entzaubern und gleichzeitig einen offenen
Dialog zu f&uuml;hren, um diese Richtlinien anzupassen und zu
erweitern. Es gibt bereits sehr viele Regeln in unserem Leben
und wir sind auch keine Regierungsorganisation, die Gesetze
aufzwingt. Stattdessen verstehen wir uns als eine Gemeinschaft
von gleichgesinnten Individuen, die an einem gemeinsamen Ziel
arbeiten, um die Qualit&auml;tsanspr&uuml;che an das Produkt,
welches als Portbaum bekannt ist, zu gew&auml;hrleisten.</para>
<sect2 id="why.mentor">
<title>Warum Mentor sein?</title>
<itemizedlist>
<listitem>
<para>Die meisten von uns kamen durch die Hife eines Mentors
in das Projekt hinein. Also sollte man jemand anderem auch
diesen Gefallen tun.</para>
</listitem>
<listitem>
<para>Sie haben das unwiderstehliche Bed&uuml;rfnis, anderen
Ihr Wissen mitzuteilen.</para>
</listitem>
<listitem>
<para>Die &uuml;bliche Bestrafung wird angewendet, da Sie es
mittlerweile Leid sind, die gute Arbeit von anderen Leuten
zu committen.</para>
</listitem>
</itemizedlist>
</sect2>
<sect2 id="mentor.comentor">
<title>Mentor/Mit-Mentor</title>
<para>Gr&uuml;nde f&uuml;r eine Mit-Mentorenschaft:</para>
<itemizedlist>
<listitem>
<para>Signifikanter Zeitzonenunterschied. Verf&uuml;gbare
Mentoren, mit denen man interaktiv Dinge via Instant
Messenger besprechen kann, sind extrem hilfreich.</para>
</listitem>
<listitem>
<para>Potentielle Sprachbarriere. Ja, &os; ist, wie die
meiste Softwareentwicklung auch, sehr Englisch-orientiert.
Jedoch kann ein Mentor, der die eigene Sprache spricht,
hilfreich sein.</para>
</listitem>
<listitem>
<para>ENOTIME! Solange es keinen 30-Stunden Tag und eine
8-Tage Woche gibt, haben manche von uns nur eine begrenzte
Menge Zeit zur Verf&uuml;gung. Diese Last mit jemandem zu
teilen macht die Sache einfacher.</para>
</listitem>
<listitem>
<para>Ein Mentor-Neuling kann von den Erfahrungen eines
erfahrenen Committers bzw. Mentors profitieren.</para>
</listitem>
<listitem>
<para>Zwei K&ouml;pfe sind besser als einer allein.</para>
</listitem>
</itemizedlist>
<para>Gr&uuml;nde f&uuml;r einen Einzelmentor:</para>
<itemizedlist>
<listitem>
<para>Sie arbeiten nicht so gut mit anderen zusammen.</para>
</listitem>
<listitem>
<para>Sie bevorzugen eine 1:1-Beziehung.</para>
</listitem>
<listitem>
<para>Die Gr&uuml;nde f&uuml;r die Mit-Mentorenschaft
treffen auf Sie nicht zu.</para>
</listitem>
</itemizedlist>
</sect2>
<sect2 id="mentor.expectations">
<title>Erwartungen</title>
<para>Wir erwarten, dass Mentoren alle vorgeschlagenen Patche,
zumindest f&uuml;r einen Anfangszeitraum, welcher mehr als
eine oder zwei Wochen dauert, pr&uuml;fen und testweise bauen
sollten.</para>
<para>Wir erwarten, dass Mentoren die Verantwortung f&uuml;r die
Aktionen Ihres Mentees &uuml;bernehmen. Ein Mentor sollte
hinter den Commits des Mentees stehen, sowohl implizit als
auch explizit.</para>
<para>Wir erwarten, dass Mentoren ihre Mentees die Lekt&uuml;re
des <ulink url="&url.books.porters-handbook;">Handbuch
f&uuml;r Ports Committer</ulink>, die <ulink
url="&url.articles.pr-guidelines;">PR-Richtlinien</ulink> sowie
den <ulink url="&url.articles.committers-guide;">Committer's
Guide</ulink> empfehlen. Obwohl es nicht notwendig ist, all
diese Details im Ged&auml;chtnis zu behalten, sollte jeder
Committer einen &Uuml;berblick &uuml;ber diese Dinge haben, um
ein effizienter Teil der Gemeinschaft zu sein (und um
Anf&auml;ngerfehler so weit wie m&ouml;glich zu vermeiden).</para>
</sect2>
<sect2 id="mentees">
<title>Auswahl eines Mentees</title>
<para>Es existiert keine definierte Regel, die festlegt, dass
ein Kandidat bereit ist. Es kann eine Kombination der Anzahl
von PRs sein, die an <application>GNATS</application>
geschickt wurden, die Anzahl an Ports, die von dieser Person
gepflegt werden, die H&auml;figkeit von Ports-Aktualisierungen
bzw. die Menge von Beteiligungen in einem bestimmten Bereich,
z.B. <application>GNOME</application>,
<application>KDE</application>,
<application>Gecko</application> oder andere.</para>
<para>Ein Kandidat sollte fasst keine Auszeiten haben, auf
Anfragen antworten und generell sehr hilfreich in der
Unterst&uuml;tzung seiner Ports sein.</para>
<para>Es sollte eine Historie von Einsatzbereitschaft vorliegen,
da es bekanntermassen Zeit und Aufwand ben&ouml;tigt, um einen
Committer zu trainieren. Falls jemand schon l&auml;ngere Zeit
dabei ist und Zeit damit verbringt, zu beobachten, wie die
Dinge funktionieren, ergibt sich eine Erwartungshaltung von
angeh&auml;uftem Wissen. Viel zu oft schon haben wir
beobachten m&uuml;ssen, dass jemand viele PRs schickt, um
anschliessend im IRC aufzutauchen um zu fragen, wann das
Commit-Bit gew&auml;hrt wird.</para>
<para>Eine Mailingliste abonniert zu haben und dieser zu folgen
ist vorteilhaft. Es gibt keine echte Erwartungshaltung, dass
durch das schreiben auf einer Mailingliste jemand zum
Committer wird, doch es zeigt dennoch die Bereitschaft. Manche
Mails bieten Einsichten in das Wissen eines Kandidaten
genauso, wie gut jemand mit anderen interagiert. Gleichfalls
kann durch Teilnahme im IRC jemand ein h&ouml;heres Ansehen
erhalten.</para>
<para>Fragen Sie sechs verschiedene Committer, wieviele PRs
jemand vor seiner Nominierung einschicken sollte und Sie
erhalten sechs verschiedene Antworten. Fragen Sie diese
Individuen wie lange jemand schon etwas beigetragen haben
sollte, ergibt sich das gleiche Dilemma. Wieviele Ports sollte
jemand als Minimum betreuen? Jetzt haben wir wirklich eine
Diskussion ausgel&ouml;st! Manche Dinge sind einfach schwer als
Mengen abzubilden, also muss ein Mentor eine Einsch&auml;tzung
machen und hoffen, dass portmgr zustimmt.</para>
</sect2>
<sect2 id="mentorship.duration">
<title>Dauer der Mentorenschaft</title>
<para>Mit der Zeit wird das Vertrauen in jemanden wachsen und
der Mentee wird <quote>implizite</quote> Commitrechte
erhalten. Dies kann triviale &Auml;nderungen f&uuml;r
<filename>Makefile</filename>, <filename>pkg-descr</filename>
und andere Dateien beinhalten. Genauso kann dies
Aktualisierungen der <makevar>PORTVERSION</makevar>, die keine
<makevar>plist</makevar>-&Auml;nderungen sind, betreffen.
Andere Umst&auml;nde k&ouml;nnen nach Gutd&uuml;nken des
Mentors formuliert werden. Allerdings sollten
Versions&auml;nderungen bei Ports, die andere Ports betreffen,
vorher von einem Mentor gepr&uuml;ft werden.</para>
<para>Genauso wie wir alle verschiedene Individuen sind, besitzt
jeder Mentee unterschiedliche Lernkurven, Zeitinvestitionen
und andere Einflussfaktoren, die zu der Zeit beitragen, bevor
jemand <quote>allein fliegt</quote>. Empirisch sollte ein
Mentee f&uuml;r mindestens 3 Monate beobachtet werden. 90-100
Commits ist ein weiteres Ziel, dass ein Mentor nutzen kann,
bevor jemand als Mentee entlassen wird. Andere Faktoren, die
man vor der Freilassung seines Mentees ber&uuml;cksichtigen
sollte, ist die Anzahl der gemachten Fehler, die erhaltenen
QATs, usw. Falls immer noch Fehler gemacht werden, ist die
Betreuung durch einen Mentor weiterhin notwendig.</para>
</sect2>
<sect2 id="mentor.comentor.debate">
<title>Mentor/Mit-Mentor Debatten</title>
<para>Wenn eine Anfrage an portmgr geht, sieht dies
normalerweise so aus: <quote>I propose 'foo' for a ports
commit bit, I will co-mentor with 'bar'</quote>. Anfrage wurde
erhalten, abgestimmt und die Entscheidung wird
getragen.</para>
<para>Der Mentor ist die prim&auml;re Kontaktperson, oder
zumindest der <quote>erste unter gleichgestellten</quote>, der
Co-Mentor dient als Absicherung.</para>
<para>Mancher Schurke, dessen Name hier nicht genannt werden
soll, machte den <ulink
url="http://lists.freebsd.org/pipermail/cvs-ports/2007-September/134614.html">
ersten aufgezeichneten Mit-Mentoren Commit</ulink>. Es wurden
auch schon Mit-Mentoren commits im src-Baum beobachtet. Macht
dieses Vorgehen die Sache richtig? Ist es falsch? Es scheint
Teil dessen zu sein, wie die Dinge sich entwickeln.</para>
</sect2>
<sect2 id="mentee.expectations">
<title>Erwartungen</title>
<para>Wir erwarten von Mentees, dass diese f&uuml;r konstruktive
Kritik aus der Gemeinschaft offen sind. Es gibt immer noch
viel <quote>Wissen</quote>, welches nicht geschrieben steht.
Richtig auf konstruktive Kritik zu antworten ist was wir
hoffen zu erkennen, wenn wir jemanden anhand seiner
Beitr&auml;ge im IRC und auf den Mailinglisten
ausw&auml;hlen.</para>
<para>Wir warnen Mentees davor, dass manche Kritik, die sie
erhalten werden, weniger <quote>konstruktiv</quote> als andere
sein wird (egal ob durch Verst&auml;ndigungsprobleme, die
durch die Sprache bedingt sind oder durch Pingeligkeit). Mit
dieser Art von Kritik kultiviert umzugehen ist auch Teil
davon, einer grossen Gemeinschaft anzugeh&ouml;ren. Bei
spezifischen Problemen mit bestimmten Leuten oder falls fragen
aufkommen, hoffen wir dass diese sich an ein Mitglied von
portmgr wenden, entweder via IRC oder per eMail.</para>
</sect2>
</sect1>
</article>

View file

@ -72,22 +72,26 @@
<para>Dieser Artikel behandelt die Verwendung von Solid State Festplatten
in &os;, um eingebettete Systeme zu erstellen.</para>
<para>Eingebettete Systeme haben den Vorteil, dass sie eine höhere
Stabilität aufgrund des fehlens von beweglichen Bauteilen
(Festplatten) besitzen. Es muss jedoch beachtet werden, dass generell
weniger Speicherplatz zur Verfügung steht und die Lebensdauer des
Speichermediums geringer ist.</para>
<para>Eingebettete Systeme haben den Vorteil, dass sie eine
höhere Stabilität aufgrund des fehlens von beweglichen
Bauteilen (Festplatten) besitzen. Es muss jedoch beachtet
werden, dass generell weniger Speicherplatz zur Verfügung
steht und die Lebensdauer des Speichermediums geringer
ist.</para>
<para>Spezielle Themen die behandelt werden beinhalten die Typen und
Attribute von Solid State Datenträgern, die in &os; verwendet
werden, Kernel-Optionen die in solch einer Umgebung von Interesse sind,
der <filename>rc.initdiskless</filename>-Mechanismus, welcher die
Initalisierung solcher Systeme automatisiert, sowie die Notwendigkeit
von Nur-Lese-Dateisystemen und das Erstellen von Dateisystemen von
Grund auf. Der Artikel schliesst mit ein paar generellen Strategien
für kleine und Nur-Lese-&os; Umgebungen.</para>
<para>Spezielle Themen die behandelt werden beinhalten die Typen
und Attribute von Solid State Datenträgern, die in &os;
verwendet werden, Kernel-Optionen die in solch einer Umgebung
von Interesse sind, der
<filename>rc.initdiskless</filename>-Mechanismus, welcher die
Initalisierung solcher Systeme automatisiert, sowie die
Notwendigkeit von Nur-Lese-Dateisystemen und das Erstellen von
Dateisystemen von Grund auf. Der Artikel schliesst mit ein
paar generellen Strategien für kleine und Nur-Lese-&os;
Umgebungen.</para>
<para><emphasis>Übersetzt von Benedict Reuschling</emphasis>.</para>
<para><emphasis>Übersetzt von Benedict
Reuschling</emphasis>.</para>
</abstract>
</articleinfo>
@ -95,39 +99,42 @@
<title>Solid State Festplattengeräte</title>
<para>Der Umfang des Artikels ist auf Solid State Geräte
beschränkt, die auf Flash-Speicher basieren. Flash-Speicher ist ein
Solid State Speicher (keine beweglichen Teile), der nicht flüchtig
ist (der Speicher behält die Daten sogar nachdem alle Energiequellen
ausgeschaltet wurden). Flash-Speicher kann grossen physischen Schock
aushalten und ist vergleichsweise schnell (die Flash-Speicher
Lösungen, die in diesem Artikel behandelt werden, sind nur wenig
langsamer als eine EIDE-Festplatte in der Schreibgeschwindigkeit und viel
schneller bei Lese-Operationen). Ein sehr wichtiger Aspekt von
beschränkt, die auf Flash-Speicher basieren. Flash-Speicher ist
ein Solid State Speicher (keine beweglichen Teile), der nicht
flüchtig ist (der Speicher behält die Daten sogar nachdem alle
Energiequellen ausgeschaltet wurden). Flash-Speicher kann
grossen physischen Schock aushalten und ist vergleichsweise
schnell (die Flash-Speicher Lösungen, die in diesem Artikel
behandelt werden, sind nur wenig langsamer als eine
EIDE-Festplatte in der Schreibgeschwindigkeit und viel schneller
bei Lese-Operationen). Ein sehr wichtiger Aspekt von
Flash-Speichern, dessen Auswirkungen später in diesem Artikel
diskutiert werden, ist, dass jeder Sektor eine begrenzte Kapazität
zur Wiederbeschreibung besitzt. Man kann nur eine bestimmte Anzahl von
Schreib-, Lösch- und Wiederbeschreibungsvorgängen
durchführen, bevor der Sektor permanent unbrauchbar wird. Obwohl
viele Flash-Speicher Produkte automatisch schlechte Blöcke markieren
und manche Geräte Schreiboperationen gleichmässig verteilen,
bleibt weiterhin die Anzahl der durchführbaren Schreibvorgänge
begrenzt. Verschiedene Geräteeinheiten besitzen zwischen 1,000,000
und 10,000,000 Schreibzyklen pro Sektor in ihren Spezifikationen. Diese
Zahlen variieren aufgrund der Umgebungstemperatur.</para>
diskutiert werden, ist, dass jeder Sektor eine begrenzte
Kapazität zur Wiederbeschreibung besitzt. Man kann nur eine
bestimmte Anzahl von Schreib-, Lösch- und
Wiederbeschreibungsvorgängen durchführen, bevor der Sektor
permanent unbrauchbar wird. Obwohl viele Flash-Speicher
Produkte automatisch schlechte Blöcke markieren und manche
Geräte Schreiboperationen gleichmässig verteilen, bleibt
weiterhin die Anzahl der durchführbaren Schreibvorgänge
begrenzt. Verschiedene Geräteeinheiten besitzen zwischen
1,000,000 und 10,000,000 Schreibzyklen pro Sektor in ihren
Spezifikationen. Diese Zahlen variieren aufgrund der
Umgebungstemperatur.</para>
<para>Im Speziellen werden wir ATA-kompatible Compact-Flash-Karten
betrachten, welche als Speichermedien für Digitalkameras ziemlich
populär sind. Von besonderem Interesse ist der Umstand, dass diese
direkt an den IDE-Bus angeschlossen werden und kompatibel zu den
ATA-Befehlen sind. Aus diesem Grund können diese Geräte mit
einem einfachen und billigen Adapter direkt an den IDE-Bus eines
Computers angeschlossen werden. Auf diese Weise sehen Betriebssysteme
wie &os; diese Geräte dann als normale (wenn auch sehr kleine)
Festplatten an.</para>
betrachten, welche als Speichermedien für Digitalkameras
ziemlich populär sind. Von besonderem Interesse ist der
Umstand, dass diese direkt an den IDE-Bus angeschlossen werden
und kompatibel zu den ATA-Befehlen sind. Aus diesem Grund
können diese Geräte mit einem einfachen und billigen Adapter
direkt an den IDE-Bus eines Computers angeschlossen werden. Auf
diese Weise sehen Betriebssysteme wie &os; diese Geräte dann als
normale (wenn auch sehr kleine) Festplatten an.</para>
<para>Andere Solid State Plattenlösungen existieren, jedoch platzieren
deren Kosten, Obskurität und ihre Unhandlichkeit sie aussserhalb
des Umfangs dieses Artikels.</para>
<para>Andere Solid State Plattenlösungen existieren, jedoch
platzieren deren Kosten, Obskurität und ihre Unhandlichkeit sie
aussserhalb des Umfangs dieses Artikels.</para>
</sect1>
<sect1 id="kernel">
@ -137,17 +144,18 @@
diejenigen, welche diese eingebetteten &os;-Systeme erstellen
möchten.</para>
<para>Alle eingebetteten &os;-Systeme, die Flash-Speicher als Systemplatte
verwenden, sind interessant für Dateisysteme im Hauptspeicher und
RAM-Disks. Wegen der begrenzten Anzahl von Schreibzyklen, die auf
Flash-Speicher durchgeführt werden können, werden die Platte
und die Dateisysteme darauf mit grosser Wahrscheinlichkeit nur lesend
eingehängt werden. In dieser Umgebung werden Dateisysteme wie
<filename>/tmp</filename> und <filename>/var</filename> als RAM-Disks
eingebunden, um dem System zu erlauben, Logdateien anzulegen und
Zähler sowie temporäre Dateien zu aktualisieren. RAM-Disks
sind eine kritische Komponente für eine erfolgreiche Solid State
Umsetzung in &os;.</para>
<para>Alle eingebetteten &os;-Systeme, die Flash-Speicher als
Systemplatte verwenden, sind interessant für Dateisysteme im
Hauptspeicher und RAM-Disks. Wegen der begrenzten Anzahl von
Schreibzyklen, die auf Flash-Speicher durchgeführt werden
können, werden die Platte und die Dateisysteme darauf mit
grosser Wahrscheinlichkeit nur lesend eingehängt werden. In
dieser Umgebung werden Dateisysteme wie
<filename>/tmp</filename> und <filename>/var</filename> als
RAM-Disks eingebunden, um dem System zu erlauben, Logdateien
anzulegen und Zähler sowie temporäre Dateien zu aktualisieren.
RAM-Disks sind eine kritische Komponente für eine erfolgreiche
Solid State Umsetzung in &os;.</para>
<para>Sie sollten dafür sorgen, dass die folgenden Zeilen in Ihrer
Kernelkonfigurationsdatei vorhanden sind:</para>
@ -166,55 +174,58 @@ pseudo-device md # memory disk</programlisting>
kontrolliert.</para>
<para><filename>/etc/rc.d/var</filename> hängt
<filename>/var</filename> als RAM-Disk ein, erstellt eine konfigurierbare
Liste von Verzeichnissen in <filename>/var</filename> mittels des
&man.mkdir.1;-Kommandos und ändert die Attribute von ein paar dieser
Verzeichnisse. Bei der Ausführung von
<filename>/etc/rc.d/var</filename> kommt eine andere
<filename>rc.conf</filename>-Variable ins Spiel:
<filename>/var</filename> als RAM-Disk ein, erstellt eine
konfigurierbare Liste von Verzeichnissen in
<filename>/var</filename> mittels des &man.mkdir.1;-Kommandos
und ändert die Attribute von ein paar dieser Verzeichnisse. Bei
der Ausführung von <filename>/etc/rc.d/var</filename> kommt eine
andere <filename>rc.conf</filename>-Variable ins Spiel:
<literal>varsize</literal>. Die Datei <filename>/etc/rc.d/var</filename>
erstellt eine <filename>/var</filename>-Partition basierend auf dem Wert
dieser Variable in <filename>rc.conf</filename>:</para>
erstellt eine <filename>/var</filename>-Partition basierend auf
dem Wert dieser Variable in <filename>rc.conf</filename>:</para>
<programlisting>varsize=8192</programlisting>
<para>Standardmässig wird dieser Wert in Sektoren angegeben.</para>
<para>Standardmässig wird dieser Wert in Sektoren
angegeben.</para>
<para>Der Fakt, dass es sich bei <filename>/var</filename> um ein nur-Lese
Dateisystem handelt, ist eine wichtige Unterscheidung, da die
<filename>/</filename>-Partition (und jede andere Partition, die Sie auf
Ihrem Flash-Medium haben) nur lesend eingehängt wird. Erinnern Sie
sich, dass in <xref linkend="intro"/> die Beschränkungen von
Flash-Speichern erläutert wurden, speziell deren begrenzte
Kapazität zum Schreiben. Die Notwendigkeit, Dateisysteme auf
Flash-Speichern nur lesend einzubinden und keine Swap-Dateien zu
verwenden, kann nicht oft genug erwähnt werden. Eine Swap-Datei auf
einem ausgelasteten System kann in weniger als einem Jahr den gesamten
<para>Der Fakt, dass es sich bei <filename>/var</filename> um ein
nur-Lese Dateisystem handelt, ist eine wichtige Unterscheidung,
da die <filename>/</filename>-Partition (und jede andere
Partition, die Sie auf Ihrem Flash-Medium haben) nur lesend
eingehängt wird. Erinnern Sie sich, dass in <xref
linkend="intro"/> die Beschränkungen von Flash-Speichern
erläutert wurden, speziell deren begrenzte Kapazität zum
Schreiben. Die Notwendigkeit, Dateisysteme auf Flash-Speichern
nur lesend einzubinden und keine Swap-Dateien zu verwenden, kann
nicht oft genug erwähnt werden. Eine Swap-Datei auf einem
ausgelasteten System kann in weniger als einem Jahr den gesamten
Flash-Speicher aufbrauchen. Häufige Protokollierung oder das
Erstellen und Löschen von temporären Dateien kann das gleiche
verursachen. Aus diesem Grund sollten Sie zusätzlich zum entfernen
des <literal>swap</literal>-Eintrags aus ihrer
<filename>/etc/fstab</filename>-Datei auch noch die Optionsfelder
für jedes Dateisystem auf <literal>ro</literal> wie folgt
stellen:</para>
verursachen. Aus diesem Grund sollten Sie zusätzlich zum
entfernen des <literal>swap</literal>-Eintrags aus ihrer
<filename>/etc/fstab</filename>-Datei auch noch die
Optionsfelder für jedes Dateisystem auf <literal>ro</literal>
wie folgt stellen:</para>
<programlisting># Device Mountpoint FStype Options Dump Pass#
/dev/ad0s1a / ufs ro 1 1</programlisting>
<para>Ein paar Anwendungen im normalen System werden sofort nach dieser
Änderung ausfallen. Beispielsweise wird Cron nicht richtig
funktionieren, aufgrund von fehlenden Cron-Tabellen in
<para>Ein paar Anwendungen im normalen System werden sofort nach
dieser Änderung ausfallen. Beispielsweise wird Cron nicht
richtig funktionieren, aufgrund von fehlenden Cron-Tabellen in
<filename>/var</filename> die von
<filename>/etc/rc.d/var</filename> erstellt wurden. Syslog und DHCP
werden ebenfalls Probleme durch das nur-Lese Dateisystem
<filename>/etc/rc.d/var</filename> erstellt wurden. Syslog und
DHCP werden ebenfalls Probleme durch das nur-Lese Dateisystem
und fehlende Elemente im Verzeichnis <filename>/var</filename>
verursachen, die <filename>/etc/rc.d/var</filename> erstellt hat. Diese
Probleme sind jedoch nur vorübergehend und werden zusammen mit
Lösungen zur Ausführung von anderen gebräuchlichen
Softwarepaketen in <xref linkend="strategies"/> angesprochen.</para>
verursachen, die <filename>/etc/rc.d/var</filename> erstellt
hat. Diese Probleme sind jedoch nur vorübergehend und werden
zusammen mit Lösungen zur Ausführung von anderen gebräuchlichen
Softwarepaketen in <xref linkend="strategies"/>
angesprochen.</para>
<para>Eine wichtige Sache, an die man sich erinnern sollte, ist, dass
ein Dateisystem, welches als nur lesend in
<para>Eine wichtige Sache, an die man sich erinnern sollte, ist,
dass ein Dateisystem, welches als nur lesend in
<filename>/etc/fstab</filename> eingebunden wurde, jederzeit als
schreibend durch das folgende Kommando eingehängt werden
kann:</para>
@ -229,55 +240,58 @@ pseudo-device md # memory disk</programlisting>
<sect1>
<title>Ein Dateisystem von Grund auf neu erstellen</title>
<para>Wenn ATA-kompatible Compact-Flash-Karten von &os; als normale
IDE-Festplatten erkannt werden, könnten Sie theoretisch &os; aus dem
Netzwerk mittels der Kern- und mfsroot-Floppies oder einer CD
installieren.</para>
<para>Wenn ATA-kompatible Compact-Flash-Karten von &os; als
normale IDE-Festplatten erkannt werden, könnten Sie theoretisch
&os; aus dem Netzwerk mittels der Kern- und mfsroot-Floppies
oder einer CD installieren.</para>
<para>Jedoch kann selbst eine kleine Installation von &os; durch die
normale Installationsprozedur ein System erzeugen, dass grösser als
200&nbsp;MB ist. Da die meisten Leute kleinere Flash-Speichermedien
einsetzen (128&nbsp;MB wird hier als gross angesehen - 32 oder sogar
16&nbsp;MB sind gebräuchlich) ist eine gewöhnliche Installation
mit normalen Methoden nicht möglich, da es einfach nicht genug
freien Plattenplatz gibt, selbst für die kleinste
Installationsart.</para>
<para>Jedoch kann selbst eine kleine Installation von &os; durch
die normale Installationsprozedur ein System erzeugen, dass
grösser als 200&nbsp;MB ist. Da die meisten Leute kleinere
Flash-Speichermedien einsetzen (128&nbsp;MB wird hier als gross
angesehen - 32 oder sogar 16&nbsp;MB sind gebräuchlich) ist eine
gewöhnliche Installation mit normalen Methoden nicht möglich, da
es einfach nicht genug freien Plattenplatz gibt, selbst für die
kleinste Installationsart.</para>
<para>Der einfachste Weg, diese Speicherlimitierung zu umgehen, ist, &os;
auf konventionelle Weise auf eine normale Festplatte zu installieren.
Nachdem die Installation abgeschlossen wurde, kürzen Sie das
Betriebssystem auf das nötigste, bis Sie eine Grösse erreicht
hat, die auf das Flash-Medium passt und benutzen Sie dann tar auf dem
gesamten Dateisystem. Die folgenden Schritte werden Sie durch den
Prozess der Vorbereitung eines Flash-Mediums für ihr getartes
Dateisystem führen. Beachten Sie, dass Operationen wie
Partitionierung, Benennung, Erstellung von Dateisystemen, etc. von Hand
durchgeführt werden müssen, da eine normale Installation nicht
möglich ist. Zusätzlich zu den Kern- und mfsroot-Disketten
benötigen Sie auch die fixit-Floppy.</para>
<para>Der einfachste Weg, diese Speicherlimitierung zu umgehen,
ist, &os; auf konventionelle Weise auf eine normale Festplatte
zu installieren. Nachdem die Installation abgeschlossen wurde,
kürzen Sie das Betriebssystem auf das nötigste, bis Sie eine
Grösse erreicht hat, die auf das Flash-Medium passt und benutzen
Sie dann tar auf dem gesamten Dateisystem. Die folgenden
Schritte werden Sie durch den Prozess der Vorbereitung eines
Flash-Mediums für ihr getartes Dateisystem führen. Beachten
Sie, dass Operationen wie Partitionierung, Benennung, Erstellung
von Dateisystemen, etc. von Hand durchgeführt werden müssen, da
eine normale Installation nicht möglich ist. Zusätzlich zu den
Kern- und mfsroot-Disketten benötigen Sie auch die
fixit-Floppy.</para>
<procedure>
<step>
<title>Partitionierung Ihrer Flash-Medien</title>
<para>Wählen Sie nach dem Starten der Kern- und mfsroot-Disketten,
<literal>custom</literal> aus dem Installationsmenü. In diesem
Menü wählen Sie dann <literal>partition</literal> aus.
Dort sollten Sie alle bestehenden Partitionen mit Hilfe der Taste
<para>Wählen Sie nach dem Starten der Kern- und
mfsroot-Disketten, <literal>custom</literal> aus dem
Installationsmenü. In diesem Menü wählen Sie dann
<literal>partition</literal> aus. Dort sollten Sie alle
bestehenden Partitionen mit Hilfe der Taste
<keycap>d</keycap> löschen. Nachdem alle bestehenden
Partitionen gelöscht wurden, erstellen Sie mittels der Taste
<keycap>c</keycap> eine Partition und akzeptieren Sie den
Standardwert für die Grösse der Partition. Wenn Sie nach
dem Typ der Partition gefragt werden, stellen Sie sicher, dass der
Wert auf <literal>165</literal> eingestellt ist. Schreiben Sie jetzt
diese Partitionstabelle auf die Platte durch betätigen der Taste
<keycap>w</keycap> (dies ist die versteckte Option auf diesem
Bildschirm). Wenn Sie eine ATA-kompatible Compact Flash-Karte
verwenden, sollten Sie den &os; Bootmanager auswählen.
Drücken Sie nun die Taste <keycap>q</keycap>, um das
Partitionsmenü zu verlassen. Sie werden das Menü des
Bootmanagers noch ein weiteres Mal gezeigt bekommt. In diesem Fall
wiederholen Sie die Auswahl von vorher.</para>
dem Typ der Partition gefragt werden, stellen Sie sicher,
dass der Wert auf <literal>165</literal> eingestellt ist.
Schreiben Sie jetzt diese Partitionstabelle auf die Platte
durch betätigen der Taste <keycap>w</keycap> (dies ist die
versteckte Option auf diesem Bildschirm). Wenn Sie eine
ATA-kompatible Compact Flash-Karte verwenden, sollten Sie
den &os; Bootmanager auswählen. Drücken Sie nun die Taste
<keycap>q</keycap>, um das Partitionsmenü zu verlassen. Sie
werden das Menü des Bootmanagers noch ein weiteres Mal
gezeigt bekommt. In diesem Fall wiederholen Sie die Auswahl
von vorher.</para>
</step>
<step>
@ -285,27 +299,28 @@ pseudo-device md # memory disk</programlisting>
Flashspeicher-Gerät</title>
<para>Verlassen Sie das Installationsmenü und wählen Sie aus
dem Hauptinstallationsmenü die Option <literal>fixit</literal>.
In der fixit-Umgebung angelangt, geben Sie den folgenden Befehl
ein:</para>
dem Hauptinstallationsmenü die Option
<literal>fixit</literal>. In der fixit-Umgebung angelangt,
geben Sie den folgenden Befehl ein:</para>
<screen>&prompt.root; <userinput>disklabel -e /dev/ad0c</userinput></screen>
<para>Zu diesem Zeitpunkt sollten Sie sich im vi-Editor unter der
Herrschaft des disklabel-Kommandos befinden. Als nächstes
müssen Sie die eine <literal>a:</literal>-Zeile an das Ende der
Datei hinzufügen. Diese
<literal>a:</literal>-Zeile sollte wie folgt aussehen:</para>
<para>Zu diesem Zeitpunkt sollten Sie sich im vi-Editor unter
der Herrschaft des disklabel-Kommandos befinden. Als
nächstes müssen Sie die eine <literal>a:</literal>-Zeile an
das Ende der Datei hinzufügen. Diese
<literal>a:</literal>-Zeile sollte wie folgt
aussehen:</para>
<programlisting>a: <replaceable>123456</replaceable> 0 4.2BSD 0 0</programlisting>
<para>Wobei <replaceable>123456</replaceable> eine Zahl darstellt, die
exakt der gleichen Zahl in der bestehenden Zeile mit dem
<literal>c:</literal>-Eintrag entspricht. Sie kopieren quasi
die bestehende Zeile <literal>c:</literal> als eine neue Zeile
<literal>a:</literal> und stellen sicher, dass fstype
<literal>4.2BSD</literal> entspricht. Speichern Sie die Datei und
verlassen Sie den Editor.</para>
<para>Wobei <replaceable>123456</replaceable> eine Zahl
darstellt, die exakt der gleichen Zahl in der bestehenden
Zeile mit dem <literal>c:</literal>-Eintrag entspricht. Sie
kopieren quasi die bestehende Zeile <literal>c:</literal>
als eine neue Zeile <literal>a:</literal> und stellen
sicher, dass fstype <literal>4.2BSD</literal> entspricht.
Speichern Sie die Datei und verlassen Sie den Editor.</para>
<screen>&prompt.root; <userinput>disklabel -B -r /dev/ad0c</userinput>
&prompt.root; <userinput>newfs /dev/ad0a</userinput></screen>
@ -318,24 +333,26 @@ pseudo-device md # memory disk</programlisting>
<screen>&prompt.root; <userinput>mount /dev/ad0a /flash</userinput></screen>
<para>Verbinden Sie diese Maschine mit dem Netzwerk, um die tar-Datei
zu übertragen und extrahieren Sie es auf das Dateisystem des
Flash-Mediums. Ein Beispiel dazu wäre folgendes:</para>
<para>Verbinden Sie diese Maschine mit dem Netzwerk, um die
tar-Datei zu übertragen und extrahieren Sie es auf das
Dateisystem des Flash-Mediums. Ein Beispiel dazu wäre
folgendes:</para>
<screen>&prompt.root; <userinput>ifconfig xl0 192.168.0.10 netmask 255.255.255.0</userinput>
&prompt.root; <userinput>route add default 192.168.0.1</userinput></screen>
<para>Jetzt da die Maschine ans Netzwerk angeschlossen ist, kopieren
Sie die tar-Datei. An diesem Punkt werden Sie möglicherweise
mit einem Dilemma konfrontiert - sollte Ihr Flash-Speicher
beispielsweise 128&nbsp;MB gross sein und Ihre tar-Datei grösser
als 64&nbsp;MB, können Sie ihre tar-Datei auf dem Flash-Speicher
nicht entpacken - Ihnen wird vorher der Speicherplatz ausgehen. Eine
Lösung für dieses Problem, sofern Sie FTP verwenden, ist,
dass Sie die Datei entpacken können, während es von FTP
übertragen wird. Wenn Sie die Übertragung auf diese Weise
durchführen, haben Sie niemals die tar-Datei und deren Inhalt
zur gleichen Zeit auf Ihrem Medium:</para>
<para>Jetzt da die Maschine ans Netzwerk angeschlossen ist,
kopieren Sie die tar-Datei. An diesem Punkt werden Sie
möglicherweise mit einem Dilemma konfrontiert - sollte Ihr
Flash-Speicher beispielsweise 128&nbsp;MB gross sein und
Ihre tar-Datei grösser als 64&nbsp;MB, können Sie ihre
tar-Datei auf dem Flash-Speicher nicht entpacken - Ihnen
wird vorher der Speicherplatz ausgehen. Eine Lösung für
dieses Problem, sofern Sie FTP verwenden, ist, dass Sie die
Datei entpacken können, während es von FTP übertragen wird.
Wenn Sie die Übertragung auf diese Weise durchführen, haben
Sie niemals die tar-Datei und deren Inhalt zur gleichen Zeit
auf Ihrem Medium:</para>
<screen><prompt>ftp></prompt> <userinput>get tarfile.tar "| tar xvf -"</userinput></screen>
@ -344,19 +361,20 @@ pseudo-device md # memory disk</programlisting>
<screen><prompt>ftp></prompt> <userinput>get tarfile.tar "| zcat | tar xvf -"</userinput></screen>
<para>Nachdem der Inhalt Ihrer tar-Datei auf dem Dateisystem des
Flash-Mediums abgelegt wurden, können Sie den Flash-Speicher
aushängen und neu starten:</para>
<para>Nachdem der Inhalt Ihrer tar-Datei auf dem Dateisystem
des Flash-Mediums abgelegt wurden, können Sie den
Flash-Speicher aushängen und neu starten:</para>
<screen>&prompt.root; <userinput>cd /</userinput>
&prompt.root; <userinput>umount /flash</userinput>
&prompt.root; <userinput>exit</userinput></screen>
<para>In der Annahme, dass Sie Ihr Dateisystem richtig konfiguriert
haben, als es noch auf der gewöhnlichen Festplatte gebaut wurde
(mit Ihren Nur-Lese-Dateisystemen und den nötigen Optionen im
Kernel), sollten Sie nun erfolgreich von Ihrem &os; Embedded-System
starten können.</para>
<para>In der Annahme, dass Sie Ihr Dateisystem richtig
konfiguriert haben, als es noch auf der gewöhnlichen
Festplatte gebaut wurde (mit Ihren Nur-Lese-Dateisystemen
und den nötigen Optionen im Kernel), sollten Sie nun
erfolgreich von Ihrem &os; Embedded-System starten
können.</para>
</step>
</procedure>
</sect1>
@ -364,13 +382,14 @@ pseudo-device md # memory disk</programlisting>
<sect1 id="strategies">
<title>Systemstrategien für kleine und Nur-Lese-Umgebungen</title>
<para>In <xref linkend="ro-fs"/> wurde darauf hingewiesen, dass das
<filename>/var</filename>-Dateisystem von
<filename>/etc/rc.d/var</filename> konstruiert wurde und die Präsenz
eines Nur-Lese-Wurzeldateisystems Probleme mit vielen in &os;
gebrächlichen Softwarepaketen verursacht. In diesem Artikel werden
Vorschläge für das erfolgreiche Betreiben von cron, syslog,
Installationen von Ports und dem Apache-Webserver unterbreitet.</para>
<para>In <xref linkend="ro-fs"/> wurde darauf hingewiesen, dass
das <filename>/var</filename>-Dateisystem von
<filename>/etc/rc.d/var</filename> konstruiert wurde und die
Präsenz eines Nur-Lese-Wurzeldateisystems Probleme mit vielen in
&os; gebrächlichen Softwarepaketen verursacht. In diesem
Artikel werden Vorschläge für das erfolgreiche Betreiben von
cron, syslog, Installationen von Ports und dem Apache-Webserver
unterbreitet.</para>
<sect2>
<title>cron</title>
@ -385,36 +404,39 @@ pseudo-device md # memory disk</programlisting>
Standardverzeichnisse erstellt werden.</para>
<para>Jedoch löst das noch nicht das Problem, Crontabs über
Neustarts des Systems hinaus zu erhalten. Wenn das System neu
gestartet wird, verschwindet das <filename>/var</filename>-Dateiystem,
welches sich im Hauptspeicher befunden hat und jegliche Crontabs, die
Sie hatten werden ebenfalls verschwinden. Aus diesem Grund besteht eine
Lösung darin, Crontabs für diejenigen Benutzer zu erstellen,
die diese auch benötigen. Dazu sollte das
<filename>/</filename>-Dateisystem lesend und schreibend
eingehängt und diese Crontabs an einen sicheren Ort kopiert
werden, wie beispielsweise <filename>/etc/tabs</filename>. Fügen
Sie dann eine Zeile an das Ende der Datei
<filename>/etc/rc.initdiskless</filename> hinzu, die diese Crontabs in
<filename>/var/cron/tabs</filename> kopiert, nachdem dieses Verzeichnis
während der Systeminitialisierung erstellt wurde. Sie werden auch
eine Zeile hinzufügen mössen, welche die Besitzer und
Berechtigungen auf diesen Verzeichnissen, die Sie erstellen und den
dazugehörigen Dateien, die Sie mittels
<filename>/etc/rc.initdiskless</filename> kopieren, setzen.</para>
Neustarts des Systems hinaus zu erhalten. Wenn das System neu
gestartet wird, verschwindet das
<filename>/var</filename>-Dateiystem, welches sich im
Hauptspeicher befunden hat und jegliche Crontabs, die Sie
hatten werden ebenfalls verschwinden. Aus diesem Grund besteht
eine Lösung darin, Crontabs für diejenigen Benutzer zu
erstellen, die diese auch benötigen. Dazu sollte das
<filename>/</filename>-Dateisystem lesend und schreibend
eingehängt und diese Crontabs an einen sicheren Ort kopiert
werden, wie beispielsweise <filename>/etc/tabs</filename>.
Fügen Sie dann eine Zeile an das Ende der Datei
<filename>/etc/rc.initdiskless</filename> hinzu, die diese
Crontabs in <filename>/var/cron/tabs</filename> kopiert,
nachdem dieses Verzeichnis während der Systeminitialisierung
erstellt wurde. Sie werden auch eine Zeile hinzufügen mössen,
welche die Besitzer und Berechtigungen auf diesen
Verzeichnissen, die Sie erstellen und den dazugehörigen
Dateien, die Sie mittels
<filename>/etc/rc.initdiskless</filename> kopieren,
setzen.</para>
</sect2>
<sect2>
<title>syslog</title>
<para>Die Datei <filename>syslog.conf</filename> spezifiziert den Ort von
bestimmten Logdateien, welche in <filename>/var/log</filename>
existieren. Diese Dateien werden nicht von
<filename>/etc/rc.d/var</filename> während der
Systeminitialisierung erstellt. Aus diesem Grund müssen Sie
irgendwo in <filename>/etc/rc.d/var</filename> nach dem Abschnitt, der
die Verzeichnisse in <filename>/var</filename> erstellt, eine Zeile
ähnlich der folgenden hinzufügen:</para>
<para>Die Datei <filename>syslog.conf</filename> spezifiziert
den Ort von bestimmten Logdateien, welche in
<filename>/var/log</filename> existieren. Diese Dateien
werden nicht von <filename>/etc/rc.d/var</filename> während
der Systeminitialisierung erstellt. Aus diesem Grund müssen
Sie irgendwo in <filename>/etc/rc.d/var</filename> nach dem
Abschnitt, der die Verzeichnisse in <filename>/var</filename>
erstellt, eine Zeile ähnlich der folgenden hinzufügen:</para>
<screen>&prompt.root; <userinput>touch /var/log/security /var/log/maillog /var/log/cron /var/log/messages</userinput>
&prompt.root; <userinput>chmod 0644 /var/log/*</userinput></screen>
@ -424,56 +446,60 @@ pseudo-device md # memory disk</programlisting>
<title>Installation von Ports</title>
<para>Bevor die notwendigen Änderungen erkärt werden, einen
Ports-Baum zu verwenden, ist es notwendig, Sie an die
Nur-Lese-Besonderheit Ihres Dateisystems auf dem Flash-Medium zu
erinnern. Da dieses nur lesend verfügbar ist, müssen Sie es
vorübergehend mit Schreibrechten ausstatten, indem Sie die
mount-Syntax, wie in <xref linkend="ro-fs"/> dargestellt wird,
verwenden. Sie sollten immer diese Dateisysteme erneut mit
nur-Lese-Rechten einhängen wenn Sie damit fertig sind -
unnötige Schreibvorgänge auf dem Flash-Medium kann dessen
Lebenszeit erheblich verkürzen.</para>
Ports-Baum zu verwenden, ist es notwendig, Sie an die
Nur-Lese-Besonderheit Ihres Dateisystems auf dem Flash-Medium
zu erinnern. Da dieses nur lesend verfügbar ist, müssen Sie
es vorübergehend mit Schreibrechten ausstatten, indem Sie die
mount-Syntax, wie in <xref linkend="ro-fs"/> dargestellt wird,
verwenden. Sie sollten immer diese Dateisysteme erneut mit
nur-Lese-Rechten einhängen wenn Sie damit fertig sind -
unnötige Schreibvorgänge auf dem Flash-Medium kann dessen
Lebenszeit erheblich verkürzen.</para>
<para>Um es zu ermöglichen, in das Ports-Verzeichnis zu wechseln
und erfolgreich
<command>make</command> <maketarget>install</maketarget>
auszuführen, müssen wir ein Paketverzeichnis auf einem
Nicht-Hauptspeicherdateisystem erstellen, welches die Pakete über
Neustarts hinweg im Auge behält. Weil es sowieso nötig ist,
Ihre Dateisysteme mit Lese-Schreibrechten für die Installation
eines Pakets einzuhängen, ist es sinnvoll anzunehmen, dass ein
Bereich Ihres Flash-Mediums ebenfalls für Paketinformationen, die
darauf abgespeichert werden, verwendet wird.</para>
und erfolgreich <command>make</command>
<maketarget>install</maketarget> auszuführen, müssen wir ein
Paketverzeichnis auf einem Nicht-Hauptspeicherdateisystem
erstellen, welches die Pakete über Neustarts hinweg im Auge
behält. Weil es sowieso nötig ist, Ihre Dateisysteme mit
Lese-Schreibrechten für die Installation eines Pakets
einzuhängen, ist es sinnvoll anzunehmen, dass ein Bereich
Ihres Flash-Mediums ebenfalls für Paketinformationen, die
darauf abgespeichert werden, verwendet wird.</para>
<para>Erstellen Sie zuerst ein Verzeichnis für die Paketdatenbank.
Normalerweise ist dies <filename>/var/db/pkg</filename>, jedoch
können wir es dort nicht unterbringen, da es jedesmal verschwinden
wird, wenn das System neu gestartet wird.</para>
<para>Erstellen Sie zuerst ein Verzeichnis für die
Paketdatenbank. Normalerweise ist dies
<filename>/var/db/pkg</filename>, jedoch können wir es dort
nicht unterbringen, da es jedesmal verschwinden wird, wenn das
System neu gestartet wird.</para>
<screen>&prompt.root; <userinput>mkdir /etc/pkg</userinput></screen>
<para>Fügen Sie nun eine Zeile in <filename>/etc/rc.d/var</filename>
hinzu, welche das <filename>/etc/pkg</filename>-Verzeichnis mit
<filename>/var/db/pkg</filename> verknüpft. Ein Beispiel:</para>
<para>Fügen Sie nun eine Zeile in
<filename>/etc/rc.d/var</filename> hinzu, welche das
<filename>/etc/pkg</filename>-Verzeichnis mit
<filename>/var/db/pkg</filename> verknüpft. Ein
Beispiel:</para>
<screen>&prompt.root; <userinput>ln -s /etc/pkg /var/db/pkg</userinput></screen>
<para>Nun wird jedes Mal, wenn Sie Ihre Dateisysteme mit
Lese-Schreibrechten einbinden und ein Paket installieren, der Befehl
<command>make</command> <maketarget>install</maketarget> funktionieren
und Paketinformationen werden erfolgreich nach
<filename>/etc/pkg</filename> geschrieben (da zu diesem Zeitpunkt das
Dateisystem mit Lese-Schreibrechten eingebunden ist), welche dann stets
dem Betriebssystem als <filename>/var/db/pkg</filename> zur
Verfügung stehen.</para>
Lese-Schreibrechten einbinden und ein Paket installieren, der
Befehl <command>make</command>
<maketarget>install</maketarget> funktionieren und
Paketinformationen werden erfolgreich nach
<filename>/etc/pkg</filename> geschrieben (da zu diesem
Zeitpunkt das Dateisystem mit Lese-Schreibrechten eingebunden
ist), welche dann stets dem Betriebssystem als
<filename>/var/db/pkg</filename> zur Verfügung stehen.</para>
</sect2>
<sect2>
<title>Apache Webserver</title>
<note>
<para>Die Anweisungen in diesem Abschnitt sind nur notwendig, wenn
Apache so eingerichtet ist, dass dieser seine PID oder
<para>Die Anweisungen in diesem Abschnitt sind nur notwendig,
wenn Apache so eingerichtet ist, dass dieser seine PID oder
Protokollierungsinformationen ausserhalb von <filename
class="directory">/var</filename> ablegt. Standardmässig
bewahrt Apache seine PID-Datei in <filename
@ -482,28 +508,31 @@ pseudo-device md # memory disk</programlisting>
class="directory">/var/log</filename> auf.</para>
</note>
<para>Es wird nun davon ausgegangen, dass Apache seine Protokolldateien
in einem Verzeichnis namens <filename
<para>Es wird nun davon ausgegangen, dass Apache seine
Protokolldateien in einem Verzeichnis namens <filename
class="directory"><replaceable>apache_log_dir</replaceable></filename>
ausserhalb von <filename class="directory">/var</filename> speichert.
Wenn dieses Verzeichnis auf einem nur-Lese-Dateisystem existiert, wird
Apache nicht in der Lage sein, Protokolldateien zu speichern und wird
vermutlich nicht richtig funktionieren. Wenn dies der Fall ist, muss
ein neues Verzeichnis zu der Liste der Verzeichnisse in
<filename>/etc/rc.d/var</filename> hinzugefügt werden, um dieses
in <filename>/var</filename> zu erstellen und um <filename
ausserhalb von <filename class="directory">/var</filename>
speichert. Wenn dieses Verzeichnis auf einem
nur-Lese-Dateisystem existiert, wird Apache nicht in der Lage
sein, Protokolldateien zu speichern und wird vermutlich nicht
richtig funktionieren. Wenn dies der Fall ist, muss ein neues
Verzeichnis zu der Liste der Verzeichnisse in
<filename>/etc/rc.d/var</filename> hinzugefügt werden, um
dieses in <filename>/var</filename> zu erstellen und um
<filename
class="directory"><replaceable>apache_log_dir</replaceable></filename>
nach <filename>/var/log/apache</filename> zu verknüpfen. Es ist
auch nötig, Berechtigungen und Besitzer auf diesem neuen
nach <filename>/var/log/apache</filename> zu verknüpfen. Es
ist auch nötig, Berechtigungen und Besitzer auf diesem neuen
Verzeichnis zu setzen.</para>
<para>Fügen Sie zuerst das Verzeichnis <literal>log/apache</literal>
zu der Liste von Verzeichnissen hinzu, die in
<filename>/etc/rc.d/var</filename> angelegt werden sollen.</para>
<para>Fügen Sie zuerst das Verzeichnis
<literal>log/apache</literal> zu der Liste von Verzeichnissen
hinzu, die in <filename>/etc/rc.d/var</filename> angelegt
werden sollen.</para>
<para>Danach tragen Sie die folgenden Befehle in
<filename>/etc/rc.d/var</filename> nach dem Abschnitt zum Erstellen der
Verzeichnisse ein:</para>
<filename>/etc/rc.d/var</filename> nach dem Abschnitt zum
Erstellen der Verzeichnisse ein:</para>
<screen>&prompt.root; <userinput>chmod 0774 /var/log/apache</userinput>
&prompt.root; <userinput>chown nobody:nobody /var/log/apache</userinput></screen>

View file

@ -23,11 +23,11 @@ INSTALL_ONLY_COMPRESSED?=
IMAGES_EN= sockets/layers.eps sockets/sain.eps sockets/sainfill.eps sockets/sainlsb.eps sockets/sainmsb.eps sockets/sainserv.eps sockets/serv.eps sockets/serv2.eps sockets/slayers.eps
#
# SRCS lists the individual SGML files that make up the document. Changes
# SRCS lists the individual XML files that make up the document. Changes
# to any of these files will force a rebuild
#
# SGML content
# XML content
SRCS= book.xml
SRCS+= introduction/chapter.xml
SRCS+= ipv6/chapter.xml

View file

@ -20,11 +20,11 @@ INSTALL_ONLY_COMPRESSED?=
WITH_BIBLIOXREF_TITLE?=YES
#
# SRCS lists the individual SGML files that make up the document. Changes
# SRCS lists the individual XML files that make up the document. Changes
# to any of these files will force a rebuild
#
# SGML content
# XML content
SRCS= book.xml
URL_RELPREFIX?= ../../../..

View file

@ -15,11 +15,11 @@ INSTALL_COMPRESSED?= gz
INSTALL_ONLY_COMPRESSED?=
#
# SRCS lists the individual SGML files that make up the document. Changes
# SRCS lists the individual XML files that make up the document. Changes
# to any of these files will force a rebuild
#
# SGML content
# XML content
SRCS= book.xml
SRCS+= overview/chapter.xml
SRCS+= psgml-mode/chapter.xml

View file

@ -224,11 +224,11 @@ IMAGES_LIB+= callouts/14.png
IMAGES_LIB+= callouts/15.png
#
# SRCS lists the individual SGML files that make up the document. Changes
# SRCS lists the individual XML files that make up the document. Changes
# to any of these files will force a rebuild
#
# SGML content
# XML content
SRCS+= audit/chapter.xml
SRCS+= book.xml
SRCS+= bsdinstall/chapter.xml
@ -275,8 +275,8 @@ SRCS+= chapters.ent
# alle Kapitel bauen
CHAPTERS?= ${SRCS:M*chapter.xml}
SGMLFLAGS+= ${CHAPTERS:S/\/chapter.xml//:S/^/-i chap./}
SGMLFLAGS+= -i chap.freebsd-glossary
XMLFLAGS+= ${CHAPTERS:S/\/chapter.xml//:S/^/-i chap./}
XMLFLAGS+= -i chap.freebsd-glossary
pgpkeyring: pgpkeys/chapter.xml
@${JADE} -V nochunks ${OTHERFLAGS} ${JADEOPTS} -d ${DSLPGP} -t sgml ${MASTERDOC}

View file

@ -15,11 +15,11 @@ INSTALL_COMPRESSED?= gz
INSTALL_ONLY_COMPRESSED?=
#
# SRCS lists the individual SGML files that make up the document. Changes
# SRCS lists the individual XML files that make up the document. Changes
# to any of these files will force a rebuild
#
# SGML content
# XML content
SRCS= book.xml
# Use the local DSSSL file

View file

@ -36,7 +36,7 @@ DOCS+= where.xml
#DATA+= vendors.html
# Subdirectories
# SGML
# XML
SUBDIR= community
SUBDIR+= developers
SUBDIR+= docproj
@ -61,7 +61,7 @@ SUBDIR+= doc
SUBDIR+= relnotes
.endif
# Non-SGML
# Non-XML
SUBDIR+= gifs
WEBDIR?= data/de

View file

@ -2,7 +2,7 @@
<!DOCTYPE html PUBLIC "-//FreeBSD//DTD XHTML 1.0 Transitional-Based Extension//EN"
"http://www.FreeBSD.org/XML/doc/share/xml/xhtml10-freebsd.dtd" [
<!ENTITY dedate "$FreeBSDde$">
<!ENTITY reference "basiert auf: r39260">
<!ENTITY reference "basiert auf: r39867">
<!ENTITY title "FreeBSD Project - Administration und Management">
]>
@ -44,7 +44,7 @@
<li><a href="#t-donations">Donations Team</a></li>
<li><a href="#t-marketing">Marketing Team</a></li>
<li><a href="#t-secteam">Security Team</a></li>
<li><a href="#t-vendor">Vendor Relations Team</a></li>
<li><a href="#t-vendor">Vendor Relations</a></li>
</ul>
</li>
<li>Sekretäre
@ -62,7 +62,6 @@
<li><a href="#t-bugmeister">Bugmeisters &amp; GNATS
Administrators</a></li>
<li><a href="#t-clusteradm">Cluster Administrators</a></li>
<li><a href="#t-dcvs">CVS doc/www Repository Managers</a></li>
<li><a href="#t-pcvs">CVS ports Repository Managers</a></li>
<li><a href="#t-ncvs">CVS src Repository Managers</a></li>
<li><a href="#t-cvsup-master">CVSup Mirror Site
@ -133,12 +132,11 @@
<li>&a.tabthorpe; &lt;<a href="mailto:tabthorpe@FreeBSD.org">tabthorpe@FreeBSD.org</a>&gt;</li>
<li>&a.marcus; &lt;<a href="mailto:marcus@FreeBSD.org">marcus@FreeBSD.org</a>&gt;</li>
<li>&a.bapt; &lt;<a href="mailto:bapt@FreeBSD.org">bapt@FreeBSD.org</a>&gt;</li>
<li>&a.decke; &lt;<a href="mailto:decke@FreeBSD.org">decke@FreeBSD.org</a>&gt;</li>
<li>&a.beat; &lt;<a href="mailto:beat@FreeBSD.org">beat@FreeBSD.org</a>&gt;</li>
<li>&a.erwin; &lt;<a href="mailto:erwin@FreeBSD.org">erwin@FreeBSD.org</a>&gt;</li>
<li>&a.linimon; &lt;<a href="mailto:linimon@FreeBSD.org">linimon@FreeBSD.org</a>&gt;</li>
<li>&a.pav; &lt;<a href="mailto:pav@FreeBSD.org">pav@FreeBSD.org</a>&gt;</li>
<li>&a.itetcu; &lt;<a href="mailto:itetcu@FreeBSD.org">itetcu@FreeBSD.org</a>&gt;</li>
<li>&a.flz; &lt;<a href="mailto:flz@FreeBSD.org">flz@FreeBSD.org</a>&gt;</li>
<li>&a.miwi; &lt;<a href="mailto:miwi@FreeBSD.org">miwi@FreeBSD.org</a>&gt;</li>
</ul>
@ -163,8 +161,6 @@
<li>&a.hrs; &lt;<a href="mailto:hrs@FreeBSD.org">hrs@FreeBSD.org</a>&gt;</li>
<li>&a.kensmith; &lt;<a href="mailto:kensmith@FreeBSD.org">kensmith@FreeBSD.org</a>&gt;
(Lead)</li>
<li>&a.rwatson; &lt;<a href="mailto:rwatson@FreeBSD.org">rwatson@FreeBSD.org</a>&gt;</li>
<li>&a.bz; &lt;<a href="mailto:bz@FreeBSD.org">bz@FreeBSD.org</a>&gt;</li>
</ul>
<h3><a name="t-re-builder">Builders Release Engineering Team</a>
@ -177,6 +173,7 @@
<ul>
<li>&a.marcel; &lt;<a href="mailto:marcel@FreeBSD.org">marcel@FreeBSD.org</a>&gt;</li>
<li>&a.nyan; &lt;<a href="mailto:nyan@FreeBSD.org">nyan@FreeBSD.org</a>&gt;</li>
<li>&a.nwhitehorn; &lt;<a href="mailto:nwhitehorn@FreeBSD.org">nwhitehorn@FreeBSD.org</a>&gt;</li>
</ul>
<hr/>
@ -192,8 +189,8 @@
href="&enbase;/donations/">FreeBSD Donations Liaison</a>.</p>
<ul>
<li>&a.tabthorpe; &lt;<a href="mailto:tabthorpe@FreeBSD.org">tabthorpe@FreeBSD.org</a>&gt;</li>
<li>&a.gjb; &lt;<a href="mailto:gjb@FreeBSD.org">gjb@FreeBSD.org</a>&gt;</li>
<li>&a.wilko; &lt;<a href="mailto:wilko@FreeBSD.org">wilko@FreeBSD.org</a>&gt;</li>
<li>&a.gahr; &lt;<a href="mailto:gahr@FreeBSD.org">gahr@FreeBSD.org</a>&gt;</li>
<li>&a.pgollucci; &lt;<a href="mailto:pgolluci@FreeBSD.org">pgolluci@FreeBSD.org</a>&gt;</li>
<li>&a.skreuzer; &lt;<a href="mailto:skreuzer@FreeBSD.org">skreuzer@FreeBSD.org</a>&gt;</li>
@ -245,25 +242,29 @@
Verantwortungsbereiche des Security Officers ausführlich.</p>
<ul>
<li>&a.benl; &lt;<a href="mailto:benl@FreeBSD.org">benl@FreeBSD.org</a>&gt;</li>
<li>&a.bz; &lt;<a href="mailto:bz@FreeBSD.org">bz@FreeBSD.org</a>&gt;</li>
<li>&a.cperciva; &lt;<a href="mailto:cperciva@FreeBSD.org">cperciva@FreeBSD.org</a>&gt;</li>
<li>&a.csjp; &lt;<a href="mailto:csjp@FreeBSD.org">csjp@FreeBSD.org</a>&gt;</li>
<li>&a.delphij; &lt;<a href="mailto:delphij@FreeBSD.org">delphij@FreeBSD.org</a>&gt;</li>
<li>&a.miwi; &lt;<a href="mailto:miwi@FreeBSD.org">miwi@FreeBSD.org</a>&gt;</li>
<li>&a.des; &lt;<a href="mailto:des@FreeBSD.org">des@FreeBSD.org</a>&gt;</li>
<li>&a.gavin; &lt;<a href="mailto:gavin@FreeBSD.org">gavin@FreeBSD.org</a>&gt;</li>
<li>&a.jonathan; &lt;<a href="mailto:jonathan@FreeBSD.org">jonathan@FreeBSD.org</a>&gt;</li>
<li>&a.philip; &lt;<a href="mailto:philip@FreeBSD.org">philip@FreeBSD.org</a>&gt;</li>
<li>&a.qingli; &lt;<a href="mailto:qingli@FreeBSD.org">qingli@FreeBSD.org</a>&gt;</li>
<li>&a.remko; &lt;<a href="mailto:remko@FreeBSD.org">remko@FreeBSD.org</a>&gt;</li>
<li>&a.rwatson; &lt;<a href="mailto:rwatson@FreeBSD.org">rwatson@FreeBSD.org</a>&gt;
(Core Team Liaison)</li>
<li>&a.rwatson; &lt;<a href="mailto:rwatson@FreeBSD.org">rwatson@FreeBSD.org</a>&gt;</li>
<li>&a.simon; &lt;<a href="mailto:simon@FreeBSD.org">simon@FreeBSD.org</a>&gt;
(Officer)</li>
<li>&a.stas; &lt;<a href="mailto:stas@FreeBSD.org">stas@FreeBSD.org</a>&gt;</li>
</ul>
<h3><a name="t-vendor">Vendor Relations Team</a>
<h3><a name="t-vendor">Vendor Relations</a>
&lt;<a href="mailto:vendor-relations@FreeBSD.org">vendor-relations@FreeBSD.org</a>&gt;</h3>
<p>Ansprechpartner für Unternehmen und Verkäufer.</p>
<p>&os; Vendor Relations ist für die Bearbeitung der E-Mails
von Hard- und Softwareverkäufern verantwortlich. An Vendor
Relations geschickte E-Mails werden zusätzlich an das
&os;&nbsp;Core Team sowie die &os;&nbsp;Foundation weitergeleitet.</p>
<ul>
<li>&a.gioria; &lt;<a href="mailto:gioria@FreeBSD.org">gioria@FreeBSD.org</a>&gt;</li>
@ -364,10 +365,10 @@
ungültige Einträge.</p>
<ul>
<li>&a.eadler; &lt; <a href="mailto:eadler@FreeBSD.org">eadler@FreeBSD.org</a>&gt;</li>
<li>&a.gavin; &lt;<a href="mailto:gavin@FreeBSD.org">gavin@FreeBSD.org</a>&gt;</li>
<li>&a.gonzo; &lt;<a href="mailto:gonzo@FreeBSD.org">gonzo@FreeBSD.org</a>&gt;</li>
<li>&a.linimon; &lt;<a href="mailto:linimon@FreeBSD.org">linimon@FreeBSD.org</a>&gt;</li>
<li>&a.remko; &lt;<a href="mailto:remko@FreeBSD.org">remko@FreeBSD.org</a>&gt;</li>
<li>&a.vwe; &lt;<a href="mailto:vwe@FreeBSD.org">vwe@FreeBSD.org</a>&gt;</li>
</ul>
<h3><a name="t-clusteradm">Cluster Administrator</a>
@ -384,30 +385,12 @@
werden.</p>
<ul>
<li>&a.bhaga; &lt;<a href="mailto:bhaga@FreeBSD.org">bhaga@FreeBSD.org</a>&gt;</li>
<li>&a.brd; &lt;<a href="mailto:brd@FreeBSD.org">brd@FreeBSD.org</a>&gt;</li>
<li>&a.billf; &lt;<a href="mailto:billf@FreeBSD.org">billf@FreeBSD.org</a>&gt;</li>
<li>&a.simon; &lt;<a href="mailto:simon@FreeBSD.org">simon@FreeBSD.org</a>&gt;</li>
<li>&a.ps; &lt;<a href="mailto:ps@FreeBSD.org">ps@FreeBSD.org</a>&gt;</li>
<li>&a.kensmith; &lt;<a href="mailto:kensmith@FreeBSD.org">kensmith@FreeBSD.org</a>&gt;</li>
<li>&a.peter; &lt;<a href="mailto:peter@FreeBSD.org">peter@FreeBSD.org</a>&gt;</li>
</ul>
<h3><a name="t-dcvs">CVS doc/www Repository Manager</a>
&lt;<a href="mailto:dcvs@FreeBSD.org">dcvs@FreeBSD.org</a>&gt;</h3>
<p>CVS doc/www Repository Manager dürfen das doc/www-Repository
ohne CVS-Mittel modifizieren. Sie achten darauf, dass Probleme
innerhalb des Repositories umgehend gelöst werden.
CVS www/doc Repository Manager haben das Recht, Committs
rückgängig zu machen, falls dies zur Lösung eines
CVS-Problems erforderlich ist. Anfragen bezüglich
Repo-copies sollten ebenfalls direkt an die Repository Manager
gestellt werden.</p>
<ul>
<li>&a.joe; &lt;<a href="mailto:joe@FreeBSD.org">joe@FreeBSD.org</a>&gt;</li>
<li>&a.kuriyama; &lt;<a href="mailto:kuriyama@FreeBSD.org">kuriyama@FreeBSD.org</a>&gt;</li>
<li>&a.markm; &lt;<a href="mailto:markm@FreeBSD.org">markm@FreeBSD.org</a>&gt;</li>
<li>&a.gioria; &lt;<a href="mailto:gioria@FreeBSD.org">gioria@FreeBSD.org</a>&gt;</li>
<li>&a.sbruno; &lt;<a href="mailto:sbruno@FreeBSD.org">sbruno@FreeBSD.org</a>&gt;</li>
<li>&a.simon; &lt;<a href="mailto:simon@FreeBSD.org">simon@FreeBSD.org</a>&gt;</li>
</ul>
@ -475,7 +458,6 @@
<p>DNS Administrators verwalten DNS und verwandte Dienste.</p>
<ul>
<li>&a.billf; &lt;<a href="mailto:billf@FreeBSD.org">billf@FreeBSD.org</a>&gt;</li>
<li>&a.dg; &lt;<a href="mailto:dg@FreeBSD.org">dg@FreeBSD.org</a>&gt;</li>
<li>&a.ps; &lt;<a href="mailto:ps@FreeBSD.org">ps@FreeBSD.org</a>&gt;</li>
<li>&a.kensmith; &lt;<a href="mailto:kensmith@FreeBSD.org">kensmith@FreeBSD.org</a>&gt;</li>
@ -525,6 +507,7 @@
<ul>
<li>&a.jmb; &lt;<a href="mailto:jmb@FreeBSD.org">jmb@FreeBSD.org</a>&gt;</li>
<li>&a.brd; &lt;<a href="mailto:brd@FreeBSD.org">brd@FreeBSD.org</a>&gt;</li>
<li>&a.flo; &lt;<a href="mailto:flo@FreeBSD.org">flo@FreeBSD.org</a>&gt;</li>
<li>&a.sahil; &lt;<a href="mailto:sahil@FreeBSD.org">sahil@FreeBSD.org</a>&gt;</li>
<li>&a.dhw; &lt;<a href="mailto:dhw@FreeBSD.org">dhw@FreeBSD.org</a>&gt;</li>
</ul>

View file

@ -6,17 +6,19 @@
]>
<!-- $FreeBSD$ -->
<!-- $FreeBSDde: de-www/community.xsl,v 1.7 2011/08/01 09:27:32 jkois Exp $ -->
<!-- basiert auf: 1.9 -->
<!-- $FreeBSDde$ -->
<!-- basiert auf: r40558 -->
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/1999/xhtml">
xmlns:date="http://exslt.org/dates-and-times"
xmlns="http://www.w3.org/1999/xhtml"
extension-element-prefixes="date">
<xsl:import href="http://www.FreeBSD.org/XML/www/lang/share/xml/libcommon.xsl"/>
<xsl:import href="http://www.FreeBSD.org/XML/www/share/xml/xhtml.xsl"/>
<xsl:key name="last-year-event-by-country" match="event[number(enddate/year) = (number($curdate.year) - 1)]"
<xsl:key name="last-year-event-by-country" match="event[number(enddate/year) = (number(date:year()) - 1)]"
use="location/country" />
<xsl:key name="event-by-year" match="event" use="enddate/year" />
@ -39,7 +41,7 @@
select="count(document($usergroups.xml)//entry)"
/><xsl:text> </xsl:text>--> <a
href="&enbase;/usergroups.html">User Groups</a> in
36 Ländern. <!--<xsl:value-of
38 Ländern. <!--<xsl:value-of
select="count(document($usergroups.xml)//country)" />-->
Zusätzlich existiert eine aktive <a
href="&base;/community/irc.html">IRC</a>-Gemeinde.
@ -54,10 +56,10 @@
href="&enbase;/community/social.html">Sozialen
Netzwerken</a> vertreten.</p>
<p>Letztes Jahr gab es insgesamt 19 <!-- <xsl:value-of
<p>Letztes Jahr gab es insgesamt 9 <!-- <xsl:value-of
select="count(/events/event[number(enddate/year) =
(number($curdate.year) -1)])" />-->
&os;-Veranstaltungen in 12 <!--<xsl:value-of
&os;-Veranstaltungen in 9 <!--<xsl:value-of
select="count(/events/event[(number(enddate/year) =
(number($curdate.year) -1)) and (generate-id() =
generate-id(key('last-year-event-by-country',

View file

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//FreeBSD//DTD XHTML 1.0 Transitional-Based Extension//EN"
"http://www.FreeBSD.org/XML/doc/share/xml/xhtml10-freebsd.dtd" [
<!ENTITY dedate "$FreeBSDde: de-www/features.xml,v 1.22 2008/03/24 14:30:04 jkois Exp $">
<!ENTITY reference "basiert auf: 1.34">
<!ENTITY dedate "$FreeBSDde$">
<!ENTITY reference "basiert auf: r39632">
<!ENTITY title "Die technischen Fortschritte von FreeBSD">
]>
@ -299,7 +299,7 @@
sichere Shells, Kerberos-Authentifizierung,
"virtuelle Server" durch die Verwendung von Jails, den Betrieb
von Diensten in chroot-Umgebungen, um den Zugang der Dienste
zum Dateisystem einzuschräken, Secure RPCs sowie
zum Dateisystem einzuschränken, Secure RPCs sowie
Zugriffslisten für Dienste, die TCP-Wrapper
unterstützen.</p>

View file

@ -2,7 +2,7 @@
<!DOCTYPE html PUBLIC "-//FreeBSD//DTD XHTML 1.0 Transitional-Based Extension//EN"
"http://www.FreeBSD.org/XML/doc/share/xml/xhtml10-freebsd.dtd" [
<!ENTITY dedate "$FreeBSDde$">
<!ENTITY reference "basiert auf: r39198">
<!ENTITY reference "basiert auf: r40515">
<!ENTITY title "Release Information">
]>
@ -49,7 +49,7 @@
<h3>Produktion</h3>
<p><b>Release &rel.current;</b> (Januar 2012) <!--(&rel.current.date;) -->
<p><b>Release &rel.current;</b> (Dezember 2012) <!--(&rel.current.date;) -->
<em>
<a href="&u.rel.announce;">Announcement</a> :
<a href="&u.rel.notes;">Release Notes</a> :
@ -96,17 +96,37 @@
href="&enbase;/doc/de_DE.ISO8859-1/books/handbook/current-stable.html#CURRENT">FreeBSD-CURRENT</a>
sind ebenfalls verfügbar. Weitere Informationen finden Sie
unter <a href="&base;/where.html">FreeBSD Bezugsquellen</a>.</p>
<!--
<a name="prior-supported"></a>
<h2>Alte, aber noch unterstützte Versionen</h2>
-->
<a name="prior-unsupported"></a>
<p>Information zu aktuell unterstützten Versionen sowie
finden Sie auf der Seite <a
href="&base;/security/security.html#sup">&os;
Sicherheit</a>.</p>
<h2>Alte, nicht mehr unterstützte Versionen
(End-of-Life-Versionen)</h2>
<p>Alle Informationen zu diesen Versionen, darunter Datum der
Veröffentlichung, Versionsart, Ende der
Unterstützung mit Sicherheitsupdates (End-of-Life-Datum)
finden Sie im Abschnitt <a
href="&base;/security/security.html#sup">Unterstützte
FreeBSD-Versionen</a> auf der Seite <a
href="&base;/security/security.html">FreeBSD Sicherheit</a>.</p>
<ul>
<li><b>9.0</b> (Januar 2012)
<em>
<a href="&enbase;/releases/9.0R/announce.html">Announcement</a>:
<a href="&enbase;/releases/9.0R/relnotes.html">Release Notes</a>:
<a href="&enbase;/releases/9.0R/installation.html">Installation
Instructions</a>:
<a href="&enbase;/releases/9.0R/hardware.html">Hardware Notes</a>:
<a href="&enbase;/releases/9.0R/readme.html">Readme</a>:
<a href="&enbase;/releases/9.0R/errata.html">Errata</a>
</em>
</li>
<li><b>8.2</b> (Februar 2011)
<em>
<a href="&enbase;/releases/8.2R/announce.html">Announcement</a>:
@ -126,22 +146,7 @@
<a href="&enbase;/releases/8.1R/errata.html">Errata</a>
</em>
</li>
</ul>
<a name="prior-unsupported"></a>
<h2>Alte, nicht mehr unterstützte Versionen
(End-of-Life-Versionen)</h2>
<p>Alle Informationen zu diesen Versionen, darunter Datum der
Veröffentlichung, Versionsart, Ende der
Unterstützung mit Sicherheitsupdates (End-of-Life-Datum)
finden Sie im Abschnitt <a
href="&base;/security/security.html#sup">Unterstützte
FreeBSD-Versionen</a> auf der Seite <a
href="&base;/security/security.html">FreeBSD Sicherheit</a>.</p>
<ul>
<li><b>8.0</b> (November 2009)
<em>
<a href="&enbase;/releases/8.0R/announce.html">Announcement</a>:

View file

@ -2,7 +2,7 @@
<!DOCTYPE html PUBLIC "-//FreeBSD//DTD XHTML 1.0 Transitional-Based Extension//EN"
"http://www.FreeBSD.org/XML/doc/share/xml/xhtml10-freebsd.dtd" [
<!ENTITY dedate "$FreeBSDde$">
<!ENTITY reference "basiert auf: r39195">
<!ENTITY reference "basiert auf: r39632">
<!ENTITY title "FreeBSD Sicherheit">
<!ENTITY advisories.html.inc SYSTEM "advisories.html.inc">
<!ENTITY advisories.html.inc SYSTEM "advisories.html.inc">
@ -285,22 +285,6 @@
<td>letztes Release + 2 Jahre</td>
</tr>
<tr>
<td>RELENG_8_1</td>
<td>8.1-RELEASE</td>
<td>erweitert</td>
<td>23. Juli 2010</td>
<td>31. Juli 2012</td>
</tr>
<tr>
<td>RELENG_8_2</td>
<td>8.2-RELEASE</td>
<td>normal</td>
<td>24. Februar 2011</td>
<td>31. Juli 2012</td>
</tr>
<tr>
<td>RELENG_8_3</td>
<td>8.3-RELEASE</td>
@ -502,6 +486,22 @@
<td>25. November 2009</td>
<td>30. November 2010</td>
</tr>
<tr>
<td>RELENG_8_1</td>
<td>8.1-RELEASE</td>
<td>erweitert</td>
<td>23. Juli 2010</td>
<td>31. Juli 2012</td>
</tr>
<tr>
<td>RELENG_8_2</td>
<td>8.2-RELEASE</td>
<td>normal</td>
<td>24. Februar 2011</td>
<td>31. Juli 2012</td>
</tr>
</table>
</body>

View file

@ -2,7 +2,7 @@
<!DOCTYPE html PUBLIC "-//FreeBSD//DTD XHTML 1.0 Transitional-Based Extension//EN"
"http://www.FreeBSD.org/XML/doc/share/xml/xhtml10-freebsd.dtd" [
<!ENTITY dedate "$FreeBSDde$">
<!ENTITY reference "basiert auf: r39304">
<!ENTITY reference "basiert auf: r40536">
<!ENTITY title "FreeBSD Bezugsquellen">
<!ENTITY url.rel "ftp://ftp.FreeBSD.org/pub/FreeBSD/releases">
]>
@ -50,11 +50,8 @@
<p>Wenn Sie FreeBSD über FTP oder HTTP beziehen wollen, suchen Sie in der <a
href="&enbase;/doc/de_DE.ISO8859-1/books/handbook/mirrors-ftp.html"><strong>Liste
der Spiegel</strong></a> des Handbuchs einen Spiegel in
Ihrer Nähe. Alternativ können Sie auch BitTorrent
verwenden, um &os; herunterzuladen. Die dazu benötigten
<q>.torrent</q>-Dateien finden Sie über den <a
href="http://torrents.FreeBSD.org:8080/">&os; BitTorrent-Tracker</a>.</p>
der FTP-Spiegelserver</strong></a> des Handbuchs einen Spiegelserver in
Ihrer Nähe.</p>
<table class="tblbasic">
<thead>
@ -72,10 +69,10 @@
<tr>
<td colspan="2">FreeBSD &rel.current;-RELEASE</td>
<td colspan="2"></td>
<td rowspan="7"><a href="&enbase;/releases/&rel.current;R/relnotes.html">[Lesen]</a></td>
<td rowspan="7"><a href="&enbase;/releases/&rel.current;R/hardware.html">[Lesen]</a></td>
<td rowspan="7"><a href="&enbase;/releases/&rel.current;R/installation.html">[Lesen]</a></td>
<td rowspan="7"><a href="&enbase;/releases/&rel.current;R/errata.html">[Lesen]</a></td>
<td rowspan="5"><a href="&enbase;/releases/&rel.current;R/relnotes.html">[Lesen]</a></td>
<td rowspan="5"><a href="&enbase;/releases/&rel.current;R/hardware.html">[Lesen]</a></td>
<td rowspan="5"><a href="&enbase;/releases/&rel.current;R/installation.html">[Lesen]</a></td>
<td rowspan="5"><a href="&enbase;/releases/&rel.current;R/errata.html">[Lesen]</a></td>
</tr>
<tr>
<td></td>
@ -89,6 +86,7 @@
<td><a href="&url.rel;/i386/i386/&rel.current;-RELEASE">[Distribution]</a></td>
<td><a href="&url.rel;/i386/i386/ISO-IMAGES/&rel.current;/">[ISO]</a></td>
</tr>
<!--
<tr>
<td></td>
<td>ia64</td>
@ -101,6 +99,7 @@
<td><a href="&url.rel;/powerpc/powerpc/&rel.current;-RELEASE">[Distribution]</a></td>
<td><a href="&url.rel;/powerpc/powerpc/ISO-IMAGES/&rel.current;/">[ISO]</a></td>
</tr>
-->
<tr>
<td></td>
<td>powerpc64</td>

View file

@ -1,13 +1,13 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $FreeBSD$
$FreeBSDde: de-www/share/xml/header.l10n.ent,v 1.18 2012/02/12 09:46:42 jkois Exp $
basiert auf: 1.19
$FreeBSDde$
basiert auf: r39675
-->
<!-- Components making up the standard headers and footers. -->
<!-- Override in the prolog <em>before</em> including this -->
<!-- file if necessary.-->
<!ENTITY copyright '<span xmlns="http://www.w3.org/1999/xhtml"><a href="&enbase;/search/index-site.html">Sitemap</a> | <a href="&enbase;/copyright/">Legal Notices</a> | &copy; 1995-2012 The FreeBSD Project. Alle Rechte vorbehalten.</span>'>
<!ENTITY copyright '<span xmlns="http://www.w3.org/1999/xhtml"><a href="&enbase;/search/index-site.html">Sitemap</a> | <a href="&enbase;/copyright/">Legal Notices</a> | &copy; 1995&ndash;2012 The FreeBSD Project. Alle Rechte vorbehalten.</span>'>
<!ENTITY author '<a href="&base;/index.html">Startseite</a> &nbsp; | &nbsp;
<a href="&base;/mailto.html">Ansprechpartner</a> &nbsp; | &nbsp;
<a href="&enbase;/copyright/index.html">Legal</a> &nbsp; | &nbsp;
@ -67,7 +67,7 @@
<li><a href="&enbase;/projects/index.html">Entwicklung</a>
<ul>
<li><a href="http://wiki.FreeBSD.org/IdeasPage">Projektideen</a></li>
<li><a href="http://svn.FreeBSD.org/viewvc/base/">SVN-Repository</a></li>
<li><a href="http://svnweb.FreeBSD.org">SVN-Repository</a></li>
<li><a href="http://cvsweb.FreeBSD.org">CVS-Repository</a></li>
<li><a href="http://p4web.FreeBSD.org">Perforce-Repository</a></li>
</ul>

View file

@ -4,7 +4,7 @@
<!--
$FreeBSD$
$FreeBSDde$
basiert auf: r39424
basiert auf: r40659
-->
<!-- Simple schema for FreeBSD Project news.
@ -35,9 +35,406 @@
$FreeBSD$
</cvs:keyword>
<year>
<name>2013</name>
<month>
<name>1</name>
<day>
<name>16</name>
<event>
<p>Neuer Committer: <a
href="mailto:carl@FreeBSD.org">Carl Delsey</a> (src)</p>
</event>
</day>
<day>
<name>15</name>
<event>
<p>Erweiterte Commit-Privilegien: <a
href="mailto:rene@FreeBSD.org">Ren&eacute; Ladan</a> (ports,
full doc/www)</p>
</event>
</day>
<day>
<name>14</name>
<event>
<p>Neuer Committer: <a
href="mailto:dbn@FreeBSD.org">David Naylor</a> (ports)</p>
</event>
</day>
<day>
<name>13</name>
<event>
<title>Statusreport April-Juni 2012</title>
<p>Der Statusreport für die Monate April bis Juni 2012 mit
17 Einträgen ist ab sofort <a
href="&enbase;/news/status/report-2012-04-2012-06.html">verfügbar</a>.</p>
</event>
</day>
<day>
<name>10</name>
<event>
<title>Ports-CVS: End-of-Life am 28. Februar 2013</title>
<p>Die Entwicklung von &os;-Ports erfolgt seit einiger Zeit
ausschließlich in Subversion. Ab 28. Februar 2013 wird
daher der &os;-Portsbaum nicht mehr nach CVS exportiert
werden. Ab diesem Zeitpunkt wird es nicht mehr möglich
sein, den Portsbaum via CVS, CVSup oder csup(1) zu
aktualisieren. Anwendern, die diese Programme derzeit
noch nutzen, wird empfohlen, künftig portsnap(8)
einzusetzen. Alternativ können Sie Subversion auch
direkt verwenden. Weitere Informationen zu diesem Thema
finden sich in der offiziellen <a
href="&lists.ports-announce;/2012-September/000026.html">Ankündigung</a>
auf der Mailingliste freebsd-ports-announce.</p>
<p>Eine Anleitung zur Migration von CVSup oder csup(1) nach
portsnap(8) finden Sie im <a
href="&enbase;/doc/en_US.ISO8859-1/books/handbook/ports-using.html#cvsup-migration">&os;-Handbuch</a>.</p>
</event>
</day>
<day>
<name>8</name>
<event>
<title>Faces of &os; &dash; Thomas Abthorpe</title>
<p>Wir freuen uns, Ihnen unsere nächste Geschichte aus der
Reihe "Faces of &os;" präsentieren zu können. Diese Reihe
erlaubt es uns zu zeigen, wie wir verschiedene Personen
bei Ihrer Arbeit an/für &os; unterstützen.
Diese Unterstützung besteht beispielsweise in der
Finanzierung von Entwicklungsprojekten, der Organisation
von Konferenzen, der Übernahme von Reisekosten sowie
der allgemeinen Förderung von &os;.</p>
<p>Diesmal stellen wir Ihnen Thomas Abthorpe vor. Wir haben
es ihm ermöglicht, an der BSDCan 2009, 2011 und 2012
teilzunehmen, indem wir uns an seinen Reisekosten
beteiligt haben. Lesen Sie seine Geschichte <a
href="http://freebsdfoundation.blogspot.com/2013/01/faces-of-freebsd-thomas-abthorpe.html">hier.</a></p>
</event>
</day>
</month>
</year>
<year>
<name>2012</name>
<month>
<name>12</name>
<day>
<name>31</name>
<event>
<title>&os; 9.1-RELEASE verfügbar</title>
<p><a href="&enbase;/releases/9.1R/announce.html">FreeBSD
9.1-RELEASE</a> ist ab sofort verfügbar. Lesen Sie unbedingt
die <a
href="&enbase;/releases/9.1R/relnotes.html">Release Notes</a>
(<a
href="&enbase;/releases/9.1R/relnotes-detailed.html">ausführliche
Version</a>) sowie die <a
href="&enbase;/releases/9.1R/errata.html">Release Errata</a>,
bevor Sie mit der Installation beginnen, um
sich über aktuelle Neuigkeiten und/oder eventuelle
Probleme im Umgang mit 9.1-RELEASE zu informieren.
Weitere Informationen zu verschiedenen FreeBSD-Versionen
finden Sie auf der Seite <a
href="&base;/releases/index.html">Release Information</a>.</p>
</event>
</day>
<day>
<name>20</name>
<event>
<title>T&os; Foundation Newsletter Dezember 2012.</title>
<p>Die &os; Foundation hat ihren <a
href="http://www.freebsdfoundation.org/press/2012Dec-newsletter.shtml">End-of-Year Newsletter</a>
für das Jahr 2012 veröffentlicht.</p>
</event>
</day>
<day>
<name>18</name>
<event>
<p>Neuer Committer: <a
href="mailto:markj@FreeBSD.org">Mark Johnston</a> (src)</p>
</event>
<event>
<title>PC-BSD&nbsp;9.1 ist verfügbar</title>
<p>Das PC-BSD Team hat PC-BSD&nbsp;9.1 <a
href="http://blog.pcbsd.org/2012/12/pc-bsd-9-1-now-available/">veröffentlicht</a>.</p>
</event>
</day>
<day>
<name>17</name>
<event>
<title>Faces of &os; &dash; Dan Langille</title>
<p>Wir freuen uns, Ihnen unsere nächste Geschichte aus der
Reihe "Faces of &os;" präsentieren zu können. Diese Reihe
erlaubt es uns zu zeigen, wie wir verschiedene Personen
bei Ihrer Arbeit an/für &os; unterstützen.
Diese Unterstützung besteht beispielsweise in der
Finanzierung von Entwicklungsprojekten, der Organisation
von Konferenzen, der Übernahme von Reisekosten sowie
der allgemeinen Förderung von &os;.</p>
<p>Diesmal stellen wir Ihnen Dan Langille vor. Wir
unterstützen ihn seit 2006 durch das Sponsering der jährlichen
BSDCan. Lesen Sie seine Geschichte <a
href="http://freebsdfoundation.blogspot.com/2012/12/faces-of-freebsd-dan-langille_17.html">hier.</a></p>
</event>
</day>
<day>
<name>12</name>
<event>
<title>Neuer Spendenrekord:&nbsp;Mehr als 650 neue
Spenden über insgesamt $43.200 in nur 3 Tagen!</title>
<p>Aufmerksame Leser des Blogs der FreeBSD Foundation
wissen, dass wir letzte Woche mit unserer jährlichen
Spendenaktion begonnen haben, mit der wir in der Regel
mehr als 50 Prozent aller Spenden erzielen. Weitere
Informationen zu dieser Aktion finden Sie <a
href="http://freebsdfoundation.blogspot.com/2012/12/stunning-news-website-fundraising.html">hier</a>.</p>
</event>
</day>
<day>
<name>10</name>
<event>
<title>Faces of &os; &dash; Alberto Mijares</title>
<p>Wissen Sie, wie die &os; Foundation die &os;-Gemeinde im
letzten Jahr unterstützt hat? Im Rahmen unserer jährlichen
Spendenkampagne stellen wir Ihnen auf unserer Webseite, in
unserem Blog sowie auf Facebook verschiedene Personen vor,
die wir durch die Finanzierung von Entwicklungsprojekten,
die Organisation von Konferenzen, die Übernahme von
Reisekosten sowie die generelle Förderung von &os;
unterstützt haben. Weitere Information finden Sie <a
href="http://freebsdfoundation.blogspot.com/2012/12/faces-of-freebsd-alberto-mijares.html">hier</a>.</p>
</event>
</day>
<day>
<name>5</name>
<event>
<title>&os;-Spendenkampagne</title>
<p>Ihre Spenden haben uns dabei geholfen, &os; zum besten
derzeit verfügbaren Betriebssystem zu machen. Indem Sie
die &os;&nbsp;Foundation unterstützen, helfen Sie uns dabei,
&os; als leistungsfähiges, sicheres und stabiles
Betriebssystem weiterzuentwickeln.</p>
<p>Dank Personen wie Ihnen konnte die &os;&nbsp;Foundation das
&os;&nbsp;Project sowie die &os;-Gemeinde in den letzten
zwölf Jahren kontinuierlich unterstützen. Weitere Informationen
zu unserer jährlichen Spendenkampagne finden Sie <a
href="http://freebsdfoundation.blogspot.com/2012/12/year-end-fundraising-campaign.html">hier</a>.</p>
</event>
<event>
<title>Die Webseite des &os;&nbsp;Projects verwendet ab sofort
Google Analytics</title>
<p>Das &os;&nbsp;Project hat Google Analytics aktiviert, um
anonymisierte Statistiken über die Nutzung der Webseiten
zu erhalten. Weitere Informationen zu dieser Umstellung
finden Sie in der offiziellen <a
href="&lists.announce;/2012-December/001441.html">Ankündigung</a>.</p>
</event>
</day>
</month>
<month>
<name>11</name>
<day>
<name>26</name>
<event>
<p>Neuer Committer: <a
href="mailto:syuu@FreeBSD.org">Takuya ASADA</a> (src)</p>
</event>
</day>
<day>
<name>25</name>
<event>
<p>Neuer Committer: <a
href="mailto:bar@FreeBSD.org">Barbara Guida</a> (ports)</p>
</event>
</day>
<day>
<name>17</name>
<event>
<title>Angriffsversuch auf die FreeBSD-Infrastruktur</title>
<p>Am 11. November 2012 wurde ein unerlaubter Zugriff auf zwei
Systeme innerhalb des FreeBSD.org-Clusters entdeckt. Wir
konnten zwar keinen Hinweis darauf finden, dass Dateien
manipuliert wurden, dennoch empfehlen wir allen Benutzern,
den dazu erstellten <a
href="&enbase;/news/2012-compromise.html">Bericht</a>
zu lesen und selbst zu entscheiden, ob Handlungsbedarf
besteht.</p>
</event>
</day>
<day>
<name>5</name>
<event>
<p>Neuer Committer: <a
href="mailto:bryanv@FreeBSD.org">Bryan Venteicher</a> (src)</p>
</event>
</day>
<day>
<name>4</name>
<event>
<p>Neuer Committer: <a
href="mailto:gblach@FreeBSD.org">Grzegorz Blach</a> (ports)</p>
</event>
</day>
<day>
<name>3</name>
<event>
<title>&os;&nbsp;9.1-RC3 verfügbar</title>
<p>Der dritte Release Candidate aus dem &os;-9.1-Releasezyklus
ist <a
href="&lists.stable;/2012-November/070401.html">verfügbar</a>.
ISO-Images für die Architekturen amd64, i386, sparc64 sowie
powerpc64 sind inzwischen auf den meisten <a
href="&enbase;/doc/de_DE.ISO8859-1/books/handbook/mirrors-ftp.html">&os;
Spiegelservern</a> vorhanden.</p>
</event>
</day>
</month>
<month>
<name>10</name>
<day>
<name>24</name>
<event>
<p>Erweiterte Commit-Privilegien: <a
href="mailto:erwin@FreeBSD.org">Erwin Lansing</a> (src, ports)</p>
</event>
</day>
<day>
<name>23</name>
<event>
<p>Neuer Committer: <a
href="mailto:sjg@FreeBSD.org">Simon J. Gerraty</a> (src)</p>
</event>
</day>
<day>
<name>20</name>
<event>
<p>Erweiterte Commit-Privilegien: <a
href="mailto:eadler@FreeBSD.org">Eitan Adler</a> (src, ports, doc)</p>
</event>
</day>
<day>
<name>19</name>
<event>
<p>Neues Mitglied im Ports Management Team: <a
href="mailto:decke@FreeBSD.org">Bernhard Fröhlich</a></p>
</event>
</day>
<day>
<name>10</name>
<event>
<title>&os;&nbsp;9.1-RC2 verfügbar</title>
<p>Der zweite Release Candidate aus dem &os;-9.1-Releasezyklus
ist <a
href="&lists.stable;/2012-October/069998.html">verfügbar</a>.
ISO-Images für die Architekturen amd64, i386, ia64, powerpc
sowie powerpc64 sind inzwischen auf den meisten <a
href="&enbase;/doc/de_DE.ISO8859-1/books/handbook/mirrors-ftp.html">&os;
Spiegelservern</a> vorhanden.</p>
</event>
</day>
</month>
<month>
<name>9</name>
<day>
<name>15</name>
<event>
<p>Neuer Committer: <a
href="mailto:peterj@FreeBSD.org">Peter Jeremy</a> (src)</p>
</event>
</day>
<day>
<name>13</name>
<event>
<p>Neuer Committer: <a
href="mailto:ebrandi@FreeBSD.org">Edson Brandi</a> (doc/pt_BR, www/pt_BR)</p>
</event>
</day>
<day>
<name>10</name>
<event>
<p>Neuer Committer: <a
href="mailto:jhale@FreeBSD.org">Jason E. Hale</a> (ports)</p>
</event>
</day>
</month>
<month>
<name>8</name>

View file

@ -7,7 +7,7 @@
"freefall:/c/www/bsddoc/press/".
$FreeBSD$
$FreeBSDde$
basiert auf: r39030
basiert auf: r40251
-->
<press>
@ -18,6 +18,39 @@
<year>
<name>2012</name>
<month>
<name>11</name>
<story>
<name>A world without Linux: Where would Apache,
Microsoft &mdash; even Apple be today?</name>
<url>http://www.infoworld.com/d/data-center/world-without-linux-where-would-apache-microsoft-even-apple-be-today-206680</url>
<site-name>Infoworld</site-name>
<site-url>http://www.infoworld.com</site-url>
<date>12. November 2012</date>
<author>Paul Venezia</author>
<p>Hätte Linux nicht die Welt erobert, würden wir heute alle FreeBSD
verwenden. Vielleicht sogar auf dem Desktop.</p>
</story>
</month>
<month>
<name>8</name>
<story>
<name>FreeBSD Now Supported on Windows Server Hyper-V Via Beta
Release</name>
<url>http://redmondmag.com/articles/2012/08/09/freebsd-beta-for-windows-server-hyper-v.aspx</url>
<site-name>Redmondmag</site-name>
<site-url>http://redmondmag.com</site-url>
<date>9. August 2012</date>
<author>Kurt Mackie</author>
<p>Microsoft hat heute die Betaversion eines Treibers veröffentlicht,
mit der erstmals das frei verfügbare FreeBSD 8.2 in einer virtuellen
Machine von Microsofts Hyper-V Server installiert werden kann.</p>
</story>
</month>
<month>
<name>6</name>

View file

@ -16,11 +16,11 @@ INSTALL_ONLY_COMPRESSED?=
WITH_ARTICLE_TOC?=YES
#
# SRCS lists the individual SGML files that make up the document. Changes
# SRCS lists the individual XML files that make up the document. Changes
# to any of these files will force a rebuild
#
# SGML content
# XML content
SRCS= article.xml
URL_RELPREFIX?= ../../../..

View file

@ -19,11 +19,11 @@ INSTALL_ONLY_COMPRESSED?=
WITH_BIBLIOXREF_TITLE?=YES
#
# Η λίστα SRCS περιέχει όλα τα SGML αρχεία που αποτελούν μέρη του κειμένου.
# Η λίστα SRCS περιέχει όλα τα XML αρχεία που αποτελούν μέρη του κειμένου.
# Αλλαγές σε οποιοδήποτε από αυτά τα αρχεία προκαλούν rebuild.
#
# SGML content
# XML content
SRCS= book.xml
URL_RELPREFIX?= ../../../..

View file

@ -246,11 +246,11 @@ IMAGES_LIB+= callouts/14.png
IMAGES_LIB+= callouts/15.png
#
# Η λίστα SRCS περιέχει όλα τα SGML αρχεία που αποτελούν μέρη του κειμένου.
# Η λίστα SRCS περιέχει όλα τα XML αρχεία που αποτελούν μέρη του κειμένου.
# ÁëëáãÝò óå ïðïéïäÞðïôå áðü áõôÜ ôá áñ÷åßá ðñïêáëïýí rebuild.
#
# SGML content
# XML content
SRCS+= audit/chapter.xml
SRCS+= book.xml
SRCS+= bsdinstall/chapter.xml
@ -299,8 +299,8 @@ SYMLINKS= ${DESTDIR} index.html handbook.html
# Turn on all the chapters.
CHAPTERS?= ${SRCS:M*chapter.xml}
SGMLFLAGS+= ${CHAPTERS:S/\/chapter.xml//:S/^/-i chap./}
SGMLFLAGS+= -i chap.freebsd-glossary
XMLFLAGS+= ${CHAPTERS:S/\/chapter.xml//:S/^/-i chap./}
XMLFLAGS+= -i chap.freebsd-glossary
pgpkeyring: pgpkeys/chapter.xml
@${JADE} -V nochunks ${OTHERFLAGS} ${JADEOPTS} -d ${DSLPGP} -t sgml ${MASTERDOC}

View file

@ -15,7 +15,7 @@
.endif
# Subdirectories
# SGML
# XML
SUBDIR= FAQ
.if !defined(WEB_ONLY) || empty(WEB_ONLY)
SUBDIR+= doc

View file

@ -23,6 +23,7 @@
<year>2010</year>
<year>2011</year>
<year>2012</year>
<year>2013</year>
<holder>The FreeBSD Documentation Project</holder>
</copyright>
@ -209,7 +210,7 @@
<row>
<entry>doc</entry>
<entry>doceng@</entry>
<entry>doc/, www/, src/ documentation</entry>
<entry>doc/, src/ documentation</entry>
</row>
<row>
@ -367,7 +368,7 @@
<sect2 id="svn-getting-started">
<title>Getting Started</title>
<para>There are three ways to obtain a working copy of the tree
<para>There are a few ways to obtain a working copy of the tree
from Subversion. This section will explain them.</para>
<sect3>
@ -463,119 +464,6 @@
information on how to set one up.</para>
</sect3>
<sect3>
<title>Checkout from a Local Mirror Using
<acronym>SVK</acronym></title>
<para>The third alternative is to use <acronym>SVK</acronym>
to maintain a local mirror. It is a version control system
build on top of Subversion's storage engine. It is
identical to Subversion in most respects, except that it
allows for setting up parts of repositories as mirrors of
other repositories, and keeping local branches for merging
back into the upstream repositories. There are extensions
that allow <acronym>SVK</acronym> to mirror
<acronym>CVS</acronym> and Perforce repositories in addition
to Subversion ones.</para>
<para>Like everything, <acronym>SVK</acronym> has its
disadvantages, one being that local revision numbers will
not match upstream revision numbers. This makes it
difficult to <command>svk log</command>, <command>svk
diff</command>, or <command>svk update</command> to an
arbitrary upstream revision.</para>
<para>To set up a mirror of the &os; repository, do:</para>
<screen>&prompt.user; <userinput>svk mirror svn+ssh://svn.freebsd.org/base //freebsd/base</userinput></screen>
<para>The local <acronym>SVK</acronym> repository will be
stored in <filename
class="directory">~/.svk/local/</filename>, but can be
moved to an alternate location. If it is moved,
<filename>~/.svk/config</filename> should be amended
manually to reflect the move.</para>
<para>Any path can be used, not just the one in the example
above. A common pattern is to place mirrors under
<literal>//mirror</literal>, e.g.,
<filename
class="directory">//mirror/freebsd/base/</filename>, and
local branches under <literal>//local</literal>.</para>
<para>To pull down the contents of the repository to the
mirror:</para>
<screen>&prompt.user; <userinput>svk sync //freebsd/base</userinput></screen>
<note>
<para><command>svk sync</command> will take a very long
time, possibly several days over a slow network
connection. &a.peter; has a tarball that can be used to
jumpstart the mirror, but only if one does not exist
already.</para>
</note>
<para>To use the tarball referenced above:</para>
<screen>&prompt.user; <userinput>cd ~</userinput>
&prompt.user; <userinput>scp freefall:/home/peter/dot_svk_r179646.tbz2 .</userinput>
&prompt.user; <userinput>tar xf dot_svk_r179646.tbz2</userinput></screen>
<para>Then edit <filename>~/.svk/config</filename> and replace
<filename
class="directory">/scratch/tmp/peter/.svk/local/</filename>
with the equivalent of <filename
class="directory">/home/<replaceable>jarjar</replaceable>/.svk/local/</filename>.</para>
<para>You can check out files directly from your mirror, once
it has been created:</para>
<screen>&prompt.user; <userinput>svk checkout //freebsd/base/head /usr/src</userinput></screen>
<para>Unlike <acronym>SVN</acronym>, <acronym>SVK</acronym>
does not store metadata or reference copies in the working
copy. All metadata is recorded in
<filename>~/.svk/config</filename>; reference copies are not
used at all because <acronym>SVK</acronym> always operates
on a local repository.</para>
<para>When committing from a working copy like the one above,
<acronym>SVN</acronym> will commit directly to the upstream
repository, then synchronise the mirror.</para>
<para>However, the <quote>killer app</quote> for
<acronym>SVK</acronym> is the ability to work without a
network connection. To do that, a local branch must be set
up:</para>
<screen>&prompt.user; <userinput>svk mkdir //local/freebsd</userinput>
&prompt.user; <userinput>svk copy //freebsd/base/head //local/freebsd/head</userinput></screen>
<para>Once again, any path can be used, it does not have to
specifically be the one in the example.</para>
<para>Before use, the local branch has to be synchronized,
like so:</para>
<screen>&prompt.user; <userinput>svk pull //local/freebsd/head</userinput></screen>
<para>Then check out from the newly created local
branch:</para>
<screen>&prompt.user; <userinput>svk checkout //local/freebsd/head /usr/src</userinput></screen>
<para>The point of this exercise is showing that it is
possible to commit work-in-progress to a local branch, and
only push it to the upstream repository when work is
complete. The easy way to push is with <command>svk
push</command>, but there is a serious disadvantage to it:
it will push every single commit made to the local branch
incrementally instead of lumping them all into a single
commit. Therefore, using <command>svk smerge</command> is
preferable.</para>
</sect3>
<sect3 id="subversion-primer-base-layout">
<title><literal>RELENG_*</literal> Branches and General
Layout</title>
@ -708,16 +596,6 @@
daily use, except for the revision renumbering mentioned
earlier.</para>
<note>
<para><acronym>SVN</acronym> and <acronym>SVK</acronym>
commands that have direct <acronym>CVS</acronym> equivalents
usually have the same name and abbreviations. For example:
<emphasis>checkout</emphasis> and <emphasis>co</emphasis>,
<emphasis>update</emphasis> and <emphasis>up</emphasis>, and
<emphasis>commit</emphasis> and
<emphasis>ci</emphasis>.</para>
</note>
<sect3>
<title>Help</title>
@ -821,11 +699,7 @@
<screen>&prompt.user; <userinput>svn status</userinput></screen>
<para><acronym>CVS</acronym> has no direct equivalent of this
command. The nearest would be <command>cvs up -N</command>
which shows local changes and files that are out-of-date.
Doing this in <acronym>SVN</acronym> is possible too,
however:</para>
<para>To show local changes and files that are out-of-date do:</para>
<screen>&prompt.user; <userinput>svn status --show-updates</userinput></screen>
</sect3>
@ -833,7 +707,7 @@
<sect3>
<title>Editing and Committing</title>
<para>Like <acronym>CVS</acronym> but unlike Perforce,
<para>Unlike Perforce,
<acronym>SVN</acronym> and <acronym>SVK</acronym> do not
need to be told in advance about file editing.</para>
@ -879,7 +753,7 @@
</para>
</note>
<para>As with <acronym>CVS</acronym>, files are added to a
<para>Files are added to a
<acronym>SVN</acronym> repository with <command>svn
add</command>. To add a file named
<emphasis>foo</emphasis>, edit it, then:</para>
@ -907,10 +781,9 @@
<screen>&prompt.user; <userinput>svn mkdir <replaceable>bar</replaceable></userinput></screen>
<para>In <acronym>CVS</acronym>, the directory is immediately
created in the repository when you <command>cvs
add</command> it; this is not the case in Subversion.
Furthermore, unlike <acronym>CVS</acronym>, Subversion
<para>The directory is not immediately
created in the repository when you use <command>svn
mkdir</command>. Subversion
allows directories to be removed using <command>svn
rm</command>, however there is no <command>svn
rmdir</command>:</para>
@ -935,9 +808,6 @@
<screen>&prompt.user; <userinput>svn copy <replaceable>foo.c</replaceable> <replaceable>bar.c</replaceable></userinput>
&prompt.user; <userinput>svn remove <replaceable>foo.c</replaceable></userinput></screen>
<para>Neither of these operations have equivalents in
<acronym>CVS</acronym>.</para>
</sect3>
<sect3>
@ -962,11 +832,11 @@
<para><command>svn diff</command> displays changes to the
working copy of the repository. Diffs generated by
<acronym>SVN</acronym> are unified by default, unlike
<acronym>CVS</acronym>, and include new files by default
<acronym>SVN</acronym> are unified
and include new files by default
in the diff output.</para>
<para>As with <acronym>CVS</acronym>, <command>svn
<para><command>svn
diff</command> can show the changes between two revisions
of the same file:</para>
@ -984,8 +854,8 @@
<title>Reverting</title>
<para>Local changes (including additions and deletions) can be
reverted using <command>svn revert</command>. Unlike
<command>cvs up -C</command>, it does not update out-of-date
reverted using <command>svn revert</command>.
It does not update out-of-date
files&mdash;it just replaces them with pristine copies of
the original version.</para>
</sect3>
@ -1848,6 +1718,13 @@ U stable/9/share/man/man4/netmap.4
<screen>&prompt.user; <userinput>svn merge -r179454:179453 svn+ssh://svn.freebsd.org/base/ROADMAP.txt</userinput></screen>
<note>
<para>It is important to ensure that the mergeinfo
is correct when reverting a file in order to permit
<command>svn mergeinfo --eligible</command> to work as
expected.</para>
</note>
<para>Reverting the deletion of a file is slightly different.
Copying the version of the file that predates the deletion
is required. For example, to restore a file that was
@ -1874,8 +1751,8 @@ U stable/9/share/man/man4/netmap.4
of <command>svn status</command> and <command>svn
diff</command> before committing.</para>
<para>Mistakes will happen, but, unlike with
<acronym>CVS</acronym>, they can generally be fixed without
<para>Mistakes will happen but,
they can generally be fixed without
disruption.</para>
<para>Take a case of adding a file in the wrong location. The
@ -2011,37 +1888,20 @@ U stable/9/share/man/man4/netmap.4
<para>Don't remove and re-add the same file in a single commit
as this will break the CVS exporter.</para>
<para>Speeding up checkouts and minimising network traffic is
possible with the following recipe:</para>
<para>Speeding up svn is
possible by adding the following to <filename>~/.ssh/config</filename>:</para>
<screen>&prompt.user; <userinput>svn co --depth=empty svn+ssh://svn.freebsd.org/base fbsvn</userinput>
&prompt.user; <userinput>cd fbsvn</userinput>
&prompt.user; <userinput>svn up --depth=empty stable</userinput>
&prompt.user; <userinput>svn up head</userinput>
&prompt.user; <userinput>cd stable</userinput>
&prompt.user; <userinput>cp -r ../head/ 7</userinput>
&prompt.user; <userinput>cd 7</userinput>
&prompt.user; <userinput>svn switch svn+ssh://svn.freebsd.org/base/stable/7</userinput>
&prompt.user; <userinput>cd ..</userinput>
&prompt.user; <userinput>cp -r 7/ 6</userinput>
&prompt.user; <userinput>cd 6</userinput>
&prompt.user; <userinput>svn switch svn+ssh://svn.freebsd.org/base/stable/6</userinput></screen>
<screen>Host *
ControlPath ~/.ssh/sockets/master-%l-%r@%h:%p
ControlMaster auto
ControlPersist yes</screen>
<para>What this bit of evil does is check out head, stable/7 and
stable/6. We create the empty checkout directories under
<acronym>SVN</acronym>'s control. In <acronym>SVN</acronym>,
subtrees are self identifying, like in <acronym>CVS</acronym>.
We check out head and clone it as stable/7. Except we don't
want the head version so we <quote>switch</quote> it to the
7.x tree location. <acronym>SVN</acronym> downloads diffs to
convert the <quote>head</quote> files to
<quote>stable/7</quote> instead of doing a fresh checkout.
The same goes for stable/6. This does, however, definitely
count as abuse of the working copy client code!</para>
<para>and then typing</para>
<screen><userinput>mkdir ~/.ssh/sockets</userinput></screen>
<para>Checking out a working copy with a stock Subversion client
without &os;-specific patches
(<makevar>WITH_FREEBSD_TEMPLATE</makevar>) will mean that
(<makevar>OPTIONS_SET=FREEBSD_TEMPLATE</makevar>) will mean that
<literal>&dollar;FreeBSD&dollar;</literal> tags will not be
expanded. Once the correct version has been installed, trick
Subversion into expanding them like so:</para>
@ -2049,8 +1909,7 @@ U stable/9/share/man/man4/netmap.4
<screen>&prompt.user; <userinput>svn propdel -R svn:keywords .</userinput>
&prompt.user; <userinput>svn revert -R .</userinput></screen>
<para>This is not a good idea if uncommitted patches exist,
however.</para>
<para>This will wipe out uncommitted patches.</para>
</sect2>
</sect1>
@ -2078,7 +1937,7 @@ U stable/9/share/man/man4/netmap.4
<itemizedlist>
<listitem>
<para>Add your author entity to
<filename>head/en_US.ISO8859-1/share/xml/authors.ent</filename>;
<filename>head/share/xml/authors.ent</filename>;
this should be done first since an omission of this commit will
cause the next commits to break the doc/ build.</para>
@ -2186,8 +2045,8 @@ U stable/9/share/man/man4/netmap.4
</listitem>
<listitem>
<para>(For committers only:)
If you subscribe to &a.svn-src-all.name; or the &a.cvsall;,
<para>If you subscribe to &a.svn-src-all.name;,
&a.svn-ports-all.name; or &a.svn-doc-all.name;,
you will probably want to unsubscribe to avoid receiving duplicate
copies of commit messages and their followups.</para>
</listitem>
@ -2591,14 +2450,13 @@ U stable/9/share/man/man4/netmap.4
<term>&a.committers;</term>
<listitem>
<para>cvs-committers is the entity that the version control system uses to send you all your
commit messages. You should <emphasis>never</emphasis> send email
directly to this list. You should only send replies to this list
when they are short and are directly related to a commit.</para>
<para>There is a similar list, svn-committers, which has a
similar purpose but is a normal list, i.e., you are free to
send any suitable message to this list.</para>
<para>&a.svn-src-all.name;, &a.svn-ports-all.name; and
&a.svn-doc-all.name; are the mailing lists that the
version control system uses to send commit messages to.
You should <emphasis>never</emphasis> send email directly
to these lists. You should only send replies to this list
when they are short and are directly related to a
commit.</para>
</listitem>
</varlistentry>
@ -3488,9 +3346,9 @@ U stable/9/share/man/man4/netmap.4
from the port <filename>Makefile</filename>.
It will also add an entry to the port's
category <filename>Makefile</filename>. It was
written by &a.mharo; and &a.will;, and is currently maintained
by &a.garga;, so please send questions/patches about
<command>addport</command> to him.</para>
written by &a.mharo;, &a.will;, and &a.garga;. When sending
questions about this script to the &a.ports;, please also CC
&a.crees;, the current maintainer.</para>
</answer>
</qandaentry>
@ -3597,9 +3455,9 @@ U stable/9/share/man/man4/netmap.4
<para>Alternatively, you can use the <command>rmport</command>
script, from <filename class="directory">ports/Tools/scripts</filename>.
This script has been written by &a.vd;, who is also its current
maintainer, so please send questions, patches or suggestions
about <command>rmport</command> to him.</para>
This script was written by &a.vd;. When sending
questions about this script to the &a.ports;, please also CC
&a.crees;, the current maintainer.</para>
</answer>
</qandaentry>
</qandadiv>
@ -3657,6 +3515,12 @@ U stable/9/share/man/man4/netmap.4
one step.</para>
</step>
</procedure>
<tip>
<para><command>addport</command> now detects when the port to
add has previously existed, and should handle all except
the <filename>ports/LEGAL</filename> step automatically.</para>
</tip>
</answer>
</qandaentry>
</qandadiv>
@ -3954,7 +3818,7 @@ U stable/9/share/man/man4/netmap.4
<procedure>
<step>
<para>Perform any needed repocopies. (This only applies
<para>Perform any needed moves. (This only applies
to physical categories.)</para>
</step>
@ -3978,12 +3842,9 @@ U stable/9/share/man/man4/netmap.4
</question>
<answer>
<para>The procedure is a strict superset of the one to
repocopy individual ports (see above).</para>
<procedure>
<step>
<para>Upgrade each copied port's
<para>Upgrade each moved port's
<filename>Makefile</filename>. Do not connect the
new category to the build yet.</para>
@ -4030,10 +3891,11 @@ U stable/9/share/man/man4/netmap.4
sh -e <replaceable>/path/to/ports</replaceable>/Tools/scripts/chkorigin.sh
</command>. This will check <emphasis>every</emphasis>
port in the ports tree, even those not connected to the
build, so you can run it directly after the repocopy.
build, so you can run it directly after the move
operation.
Hint: do not forget to look at the
<makevar>PKGORIGIN</makevar>s of any slave ports of the
ports you just repocopied!</para>
ports you just moved!</para>
</step>
<step>
@ -4066,57 +3928,11 @@ U stable/9/share/man/man4/netmap.4
<filename>ports/MOVED</filename>.</para>
</step>
<step>
<para>Update the instructions for &man.cvsup.1;:</para>
<itemizedlist>
<listitem>
<para>
add the category to
<filename>distrib/cvsup/sup/README</filename>
</para>
</listitem>
<listitem>
<para>
adding the following files into
<filename>distrib/cvsup/sup/ports-<replaceable>categoryname</replaceable></filename>:
<filename>list.cvs</filename> and
<filename>releases</filename>.</para>
</listitem>
<listitem>
<para>
add the category to
<filename>src/share/examples/cvsup/ports-supfile</filename>
</para>
</listitem>
</itemizedlist>
<para>
(Note: these are
in the src, not the ports, repository). If you
are not a src committer, you will need to submit
a PR for this.</para>
</step>
<step>
<para>
Update the list of categories used by &man.sysinstall.8;
in <filename>src/usr.sbin/sysinstall</filename>.</para>
</step>
<step>
<para>Update the documentation by modifying the
following:</para>
<itemizedlist>
<listitem>
<para>the section of the Handbook that lists the
<ulink url="&url.books.handbook;/cvsup.html#CVSUP-COLLEC">
cvsup collections</ulink>.</para>
</listitem>
<listitem>
<para>the
<ulink url="&url.books.porters-handbook;/makefile-categories.html#PORTING-CATEGORIES">
@ -4166,10 +3982,6 @@ U stable/9/share/man/man4/netmap.4
only need to modify the following:</para>
<itemizedlist>
<listitem>
<para><filename>src/usr.sbin/sysinstall</filename></para>
</listitem>
<listitem>
<para>the
<ulink url="&url.books.porters-handbook;/makefile-categories.html#PORTING-CATEGORIES">

View file

@ -462,7 +462,7 @@
<para>Regularly check the automated ports building
cluster, <ulink
url="http://pointyhat.FreeBSD.org">pointyhat</ulink>,
and the <ulink url="http://www.portscout.org">distfiles
and the <ulink url="http://portscout.FreeBSD.org">distfiles
scanner</ulink> to see if any of the ports you
maintain are failing to build or fetch (see <link
linkend="resources">resources</link> for more
@ -794,7 +794,7 @@
build status of your ports. As a contributor you can use it to
find broken and unmaintained ports that need to be fixed.</para>
<para>The <ulink url="http://www.portscout.org">FreeBSD Ports
<para>The <ulink url="http://portscout.FreeBSD.org">FreeBSD Ports
distfile scanner</ulink> can show you ports for which the
distfiles are not fetchable. You can check on your own ports or
use it to find ports that need their

View file

@ -85,7 +85,7 @@
<para>Read through the FAQ and Handbook periodically. If
anything is badly explained, out of date or even just
completely wrong, let us know. Even better, send us a fix
(SGML is not difficult to learn, but there is no objection
(Docbook is not difficult to learn, but there is no objection
to ASCII submissions).</para>
</listitem>
@ -231,7 +231,8 @@
<title>Pick one of the items from the <quote>Ideas</quote>
page</title>
<para>The <ulink url="&url.base;/projects/ideas/">&os; list of
<para>The <ulink url="http://wiki.freebsd.org/IdeasPage">&os;
list of
projects and ideas for volunteers</ulink> is also available
for people willing to contribute to the &os; project. The
list is being regularly updated and contains items for both
@ -339,39 +340,22 @@
<para>The preferred &man.diff.1; format for submitting patches
is the unified output format generated by <command>diff
-u</command>. However, for patches that substantially
change a region of code, a context output format diff
generated by <command>diff -c</command> may be more readable
and thus preferable.</para>
-u</command>.</para>
<indexterm>
<primary><command>diff</command></primary>
</indexterm>
<para>For example:</para>
<screen>&prompt.user; <userinput>diff -c oldfile newfile</userinput></screen>
<para>or</para>
<screen>&prompt.user; <userinput>diff -c -r olddir newdir</userinput></screen>
<para>would generate such a set of context diffs for the given
source file or directory hierarchy.</para>
<para>Likewise,</para>
<screen>&prompt.user; <userinput>diff -u oldfile newfile</userinput></screen>
<para>or</para>
<screen>&prompt.user; <userinput>diff -u -r olddir newdir</userinput></screen>
<screen>&prompt.user; <userinput>diff -u -r -N olddir newdir</userinput></screen>
<para>would do the same, except in the unified diff
format.</para>
<para>would generate a set of unified diffs for the given source
file or directory hierarchy.</para>
<para>See the manual page for &man.diff.1; for more
details.</para>
<para>See &man.diff.1; for more information.</para>
<para>Once you have a set of diffs (which you may test with the
&man.patch.1; command), you should submit them for inclusion
@ -397,9 +381,8 @@
welcome.</para>
<para>If your change is of a potentially sensitive nature,
e.g. you are unsure of copyright issues governing its further
distribution or you are simply not ready to release it without
a tighter review first, then you should send it to &a.core;
such as if you are unsure of copyright issues governing its further
distribution then you should send it to &a.core;
directly rather than submitting it with &man.send-pr.1;. The
&a.core; reaches a much smaller group of people who
do much of the day-to-day work on FreeBSD. Note that this
@ -503,7 +486,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
&#36;Id&#36;</programlisting>
&dollar;&os;&dollar;</programlisting>
<para>For your convenience, a copy of this text can be found in
<filename>/usr/share/examples/etc/bsd-style-copyright</filename>.</para>
@ -532,9 +515,9 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<para>Donations may be sent in check form to:
<address>
The FreeBSD Foundation
<street>7321 Brockway Dr.</street>
<street>P.O. Box 20247</street>,
<city>Boulder</city>,
<state>CO</state> <postcode>80303</postcode>
<state>CO</state> <postcode>80308</postcode>
<country>USA</country>
</address></para>
@ -562,16 +545,6 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<ulink url="&url.base;/donations/">Donations Liaison
Office</ulink>.</para>
</sect3>
<sect3>
<title>Donating Internet Access</title>
<para>We can always use new mirror sites for FTP, WWW or
<command>cvsup</command>. If you would like to be such a
mirror, please see the
<ulink url="&url.articles.hubs;/index.html">Mirroring
FreeBSD</ulink> article for more information.</para>
</sect3>
</sect2>
</sect1>

View file

@ -1143,11 +1143,6 @@
<email>js@iksz.hu</email></para>
</listitem>
<listitem>
<para>Barbara</para>
<!-- (rene@) No email address per request. -->
</listitem>
<listitem>
<para>Barry Bierbauch
<email>pivrnec@vszbr.cz</email></para>
@ -1688,7 +1683,7 @@
<listitem>
<para>Chris Petrik
<email>chris@officialunix.com</email></para>
<email>c.petrik.sosa@gmail.com</email></para>
</listitem>
<listitem>
@ -1721,6 +1716,11 @@
<email>Christian.Haury@sagem.fr</email></para>
</listitem>
<listitem>
<para>Christian Heckendorf
<email>heckend@bu.edu</email></para>
</listitem>
<listitem>
<para>Christian Lackas
<email>delta@lackas.net</email></para>
@ -2120,6 +2120,11 @@
<email>daniel@itxl.nl</email></para>
</listitem>
<listitem>
<para>Danilo Eg&ecirc;a Gondolfo
<email>danilogondolfo@gmail.com</email></para>
</listitem>
<listitem>
<para>Danny Braniss
<email>danny@cs.huji.ac.il</email></para>
@ -2363,11 +2368,6 @@
<email>muir@idiom.com</email></para>
</listitem>
<listitem>
<para>David Naylor
<email>naylor.b.david@gmail.com</email></para>
</listitem>
<listitem>
<para>David Otto
<email>ottodavid@gmx.net</email></para>
@ -2414,18 +2414,23 @@
</listitem>
<listitem>
<para>David Vachulka
<email>arch_dvx@users.sourceforge.net</email></para>
</listitem>
<listitem>
<para>David Wolfskill
<email>david@catwhisker.org</email></para>
</listitem>
<listitem>
<para>Dax Labrador
<email>semprix@bsdmail.org</email></para>
<para>David Yeske
<email>dyeske@yahoo.com</email></para>
</listitem>
<listitem>
<para>David Yeske
<email>dyeske@yahoo.com</email></para>
<para>Dax Labrador
<email>semprix@bsdmail.org</email></para>
</listitem>
<listitem>
@ -3090,6 +3095,11 @@
<email>fk@fabiankeil.de</email></para>
</listitem>
<listitem>
<para>Fabian M. Borschel
<email>fmb@onibox.net</email></para>
</listitem>
<listitem>
<para>Fabien Devaux
<email>fab@gcu.info</email></para>
@ -3589,11 +3599,6 @@
<email>kiki@bsdro.org</email></para>
</listitem>
<listitem>
<para>Grzegorz Blach
<email>magik@roorback.net</email></para>
</listitem>
<listitem>
<para>Guillaume Paquet
<email>amyfoub@videotron.ca</email></para>
@ -4427,6 +4432,11 @@
<email>jb.quenot@caraldi.com</email></para>
</listitem>
<listitem>
<para>Jean Benoit
<email>jean@unistra.fr</email></para>
</listitem>
<listitem>
<para>Jean-Sebastien Roy
<email>js@jeannot.org</email></para>
@ -5122,6 +5132,11 @@
<email>tuximus@tcsn.net</email></para>
</listitem>
<listitem>
<para>Joseph Mingrone
<email>jrm@ftfl.ca</email></para>
</listitem>
<listitem>
<para>Joseph Scott
<email>joseph@randomnetworks.com</email></para>
@ -5301,11 +5316,6 @@
<email>yasu@utahime.org</email></para>
</listitem>
<listitem>
<para>Kubilay Kocak
<email>koobs.freebsd@gmail.com</email></para>
</listitem>
<listitem>
<para>KUNISHIMA Takeo
<email>kunishi@c.oka-pu.ac.jp</email></para>
@ -6012,6 +6022,11 @@
<email>iyengar@grunthos.pscwa.psca.com</email></para>
</listitem>
<listitem>
<para>Manuel Creach
<email>manuel.creach@me.com</email></para>
</listitem>
<listitem>
<para>Manuel Rabade Garcia
<email>mig@mig-29.net</email></para>
@ -6460,6 +6475,11 @@
<email>matt@xtaz.net</email></para>
</listitem>
<listitem>
<para>Matt Stofko
<email>matt@mjslabs.com</email></para>
</listitem>
<listitem>
<para>Matt Thomas
<email>matt@3am-software.com</email></para>
@ -6759,6 +6779,11 @@
<email>nerd@percival.rain.com</email></para>
</listitem>
<listitem>
<para>Michael Gmelin
<email>freebsd@grem.de</email></para>
</listitem>
<listitem>
<para>Michael Hancock
<email>michaelh@cet.co.jp</email></para>
@ -8314,6 +8339,11 @@
<email>phil@teaser.fr</email></para>
</listitem>
<listitem>
<para>Pierre David
<email>pdagog@gmail.com</email></para>
</listitem>
<listitem>
<para>Pierre Y. Dampure
<email>pierre.dampure@k2c.co.uk</email></para>
@ -9336,11 +9366,6 @@
<email>simond@irrelevant.org</email></para>
</listitem>
<listitem>
<para>Simon J Gerraty
<email>sjg@juniper.net</email></para>
</listitem>
<listitem>
<para>Simon Lang
<email>simon@lang-clan.de</email></para>
@ -10517,6 +10542,11 @@
<email>victor.cruceru@gmail.com</email></para>
</listitem>
<listitem>
<para>Victor Popov
<email>v.a.popov@gmail.com</email></para>
</listitem>
<listitem>
<para>Victor Semionov
<email>semionov@mail.bg</email></para>
@ -10797,6 +10827,11 @@
<email>kiwi@oav.net</email></para>
</listitem>
<listitem>
<para>Yamagi Burmeister
<email>yamagi@yamagi.org</email></para>
</listitem>
<listitem>
<para>Yanhui Shen
<email>shen.elf@gmail.com</email></para>

View file

@ -67,6 +67,10 @@
<para>&a.mat;</para>
</listitem>
<listitem>
<para>&a.syuu;</para>
</listitem>
<listitem>
<para>&a.gavin;</para>
</listitem>
@ -91,10 +95,6 @@
<para>&a.gjb;</para>
</listitem>
<listitem>
<para>&a.dougb;</para>
</listitem>
<listitem>
<para>&a.art;</para>
</listitem>
@ -119,6 +119,10 @@
<para>&a.tdb;</para>
</listitem>
<listitem>
<para>&a.gblach;</para>
</listitem>
<listitem>
<para>&a.mbr;</para>
</listitem>
@ -171,10 +175,6 @@
<para>&a.markus;</para>
</listitem>
<listitem>
<para>&a.wilko;</para>
</listitem>
<listitem>
<para>&a.oleg;</para>
</listitem>
@ -291,6 +291,10 @@
<para>&a.jwd;</para>
</listitem>
<listitem>
<para>&a.carl;</para>
</listitem>
<listitem>
<para>&a.vd;</para>
</listitem>
@ -451,6 +455,10 @@
<para>&a.danger;</para>
</listitem>
<listitem>
<para>&a.sjg;</para>
</listitem>
<listitem>
<para>&a.gibbs;</para>
</listitem>
@ -495,6 +503,10 @@
<para>&a.edwin;</para>
</listitem>
<listitem>
<para>&a.bar;</para>
</listitem>
<listitem>
<para>&a.jmg;</para>
</listitem>
@ -615,6 +627,10 @@
<para>&a.ahze;</para>
</listitem>
<listitem>
<para>&a.markj;</para>
</listitem>
<listitem>
<para>&a.tj;</para>
</listitem>
@ -683,6 +699,10 @@
<para>&a.jceel;</para>
</listitem>
<listitem>
<para>&a.koobs;</para>
</listitem>
<listitem>
<para>&a.jkois;</para>
</listitem>
@ -767,6 +787,10 @@
<para>&a.benl;</para>
</listitem>
<listitem>
<para>&a.dru;</para>
</listitem>
<listitem>
<para>&a.jlh;</para>
</listitem>
@ -791,6 +815,10 @@
<para>&a.netchild;</para>
</listitem>
<listitem>
<para>&a.ian;</para>
</listitem>
<listitem>
<para>&a.truckman;</para>
</listitem>
@ -1007,6 +1035,10 @@
<para>&a.neel;</para>
</listitem>
<listitem>
<para>&a.dbn;</para>
</listitem>
<listitem>
<para>&a.bland;</para>
</listitem>
@ -1519,6 +1551,10 @@
<para>&a.vanhu;</para>
</listitem>
<listitem>
<para>&a.bryanv;</para>
</listitem>
<listitem>
<para>&a.avilla;</para>
</listitem>

View file

@ -2,6 +2,10 @@
<!-- $FreeBSD$ -->
<itemizedlist>
<listitem>
<para>&a.attilio; (2012)</para>
</listitem>
<listitem>
<para>&a.wilko; (2006 - 2012)</para>
</listitem>

View file

@ -2,6 +2,14 @@
<!-- $FreeBSD$ -->
<itemizedlist>
<listitem>
<para>Doug Barton (2000 - 2012)</para>
</listitem>
<listitem>
<para>&a.wilko; (2000 - 2012)</para>
</listitem>
<listitem>
<para>&a.murray; (2000 - 2012)</para>
</listitem>

View file

@ -2,6 +2,10 @@
<!-- $FreeBSD$ -->
<itemizedlist>
<listitem>
<para>&a.pav; (2006 - 2012)</para>
</listitem>
<listitem>
<para>&a.flz; (2008 - 2012)</para>
</listitem>

View file

@ -20,7 +20,7 @@
<year>2009</year>
<year>2010</year>
<year>2011</year>
<holder role="mailto:jhelfman@experts-exchange.com">Jason Helfman</holder>
<holder role="mailto:jgh@FreeBSD.org">Jason Helfman</holder>
</copyright>
<legalnotice id="trademarks" role="trademarks">
@ -49,9 +49,7 @@
<sect1 id="acknowledgments">
<title>Acknowledgments</title>
<para>This article was originally published at <ulink
url="http://www.experts-exchange.com/OS/Unix/BSD/FreeBSD/A_1941-Build-Your-Own-FreeBSD-Update-Server.html">Experts Exchange</ulink>,
and subsequently printed at <ulink
<para>This article was subsequently printed at <ulink
url="http://bsdmag.org/magazine/1021-bsd-as-a-desktop">BSD
Magazine</ulink>.</para>
</sect1>

View file

@ -89,7 +89,7 @@
<listitem><para>The &man.style.9; man page &mdash; for documentation on
the coding-style conventions which must be followed for any code
which is to be committed to the FreeBSD CVS tree.</para></listitem>
which is to be committed to the FreeBSD Subversion tree.</para></listitem>
</itemizedlist>

View file

@ -122,13 +122,10 @@
also affected by the types of services you want to offer.
Plain FTP or HTTP services may not require a huge
amount of resources. Watch out if you provide
CVSup, rsync or even AnonCVS. This can have a huge
impact on CPU and memory requirements. Especially
rsync is considered a memory hog, and CVSup does
indeed consume some CPU. For AnonCVS it might
be a nice idea to set up a memory resident file system (MFS) of at least
300 MB, so you need to take this into account
for your memory requirements. The following
rsync. This can have a huge
impact on CPU and memory requirements as it is
considered a memory hog.
The following
are just examples to give you a very rough hint.
</para>
<para>

View file

@ -404,7 +404,7 @@ ifconfig_em0="DHCP"</programlisting>
<para>Updating from source is the most involved update method, but offers
the greatest amount of flexibility. The process involves synchronizing a
local copy of the FreeBSD source code with the &os;
<application>CVS</application> (Concurrent Versioning System) servers.
<application>Subversion</application> servers.
Once the local source code is up to date you can build new versions of
the kernel and userland. For more information on source updates see
<ulink url="&url.base;/doc/en_US.ISO8859-1/books/handbook/updating-upgrading.html">the chapter on updating</ulink>

View file

@ -13,11 +13,11 @@ INSTALL_ONLY_COMPRESSED?=
WITH_ARTICLE_TOC?=YES
#
# SRCS lists the individual SGML files that make up the document. Changes
# SRCS lists the individual XML files that make up the document. Changes
# to any of these files will force a rebuild
#
# SGML content
# XML content
SRCS= article.xml
URL_RELPREFIX?= ../../../..

File diff suppressed because it is too large Load diff

View file

@ -8,7 +8,6 @@
<legalnotice id="trademarks" role="trademarks">
&tm-attrib.freebsd;
&tm-attrib.cvsup;
&tm-attrib.ibm;
&tm-attrib.intel;
&tm-attrib.sparc;
@ -86,7 +85,7 @@
course of action, and will only serve to frustrate you and the
developers. Conversely, there are cases where it might be
appropriate to submit a problem report about something else than
a bug&mdash;an enhancement or a feature request, for
a bug&mdash;an enhancement or a new feature, for
instance.</para>
<para>So how do you determine what is a bug and what is not? As a
@ -102,12 +101,6 @@
report about something that is not a bug are:</para>
<itemizedlist>
<listitem>
<para>Requests for feature enhancements. It is generally a
good idea to air these on the mailing lists before
submitting a problem report.</para>
</listitem>
<listitem>
<para>Notification of updates to externally maintained
software (mainly ports, but also externally maintained base
@ -277,7 +270,7 @@
carefully study the contents of the
<filename>/usr/src/UPDATING</filename> file on your system
or its latest version at
<ulink url="http://www.FreeBSD.org/cgi/cvsweb.cgi/src/UPDATING"></ulink>.
<ulink url="http://svnweb.freebsd.org/base/head/UPDATING?view=log"></ulink>.
(This is vital information
if you are upgrading from one version to
another&mdash;especially if you are upgrading to the
@ -288,10 +281,10 @@
<filename>/usr/ports/UPDATING</filename> (for individual ports)
or <filename>/usr/ports/CHANGES</filename> (for changes
that affect the entire Ports Collection).
<ulink url="http://www.FreeBSD.org/cgi/cvsweb.cgi/ports/UPDATING"></ulink>
<ulink url="http://svnweb.freebsd.org/ports/head/UPDATING?view=log"></ulink>
and
<ulink url="http://www.FreeBSD.org/cgi/cvsweb.cgi/ports/CHANGES"></ulink>
are also available via CVSweb.</para>
<ulink url="http://svnweb.freebsd.org/ports/head/CHANGES?view=log"></ulink>
are also available via svnweb.</para>
</listitem>
</itemizedlist>
</section>
@ -371,8 +364,8 @@
is a place to put that, see below) and on which architecture.
You should include whether you are running from a release
(e.g. from a CDROM or download), or from
a system maintained by &man.cvsup.1; (and, if so, how
recently you updated). If you are tracking the
a system maintained by Subversion (and, if so,
what revision number you are at). If you are tracking the
&os.current; branch, that is the very first thing someone
will ask, because fixes (especially for high-profile
problems) tend to get committed very quickly, and
@ -584,11 +577,11 @@
<option>-c</option> or <option>-u</option> option to
&man.diff.1; to create a context or unified diff (unified is
preferred), and make
sure to specify the exact CVS revision numbers of the files
sure to specify the exact SVN revision numbers of the files
you modified so the developers who read your report will be
able to apply them easily. For problems with the kernel or the
base utilities, a patch against &os.current; (the HEAD
CVS branch) is preferred since all new code should be applied
Subversion branch) is preferred since all new code should be applied
and tested there first. After appropriate or substantial testing
has been done, the code will be merged/migrated to the &os.stable;
branch.</para>
@ -661,8 +654,8 @@
<para><emphasis>Confidential:</emphasis> This is prefilled
to <literal>no</literal>. Changing it makes no sense as
there is no such thing as a confidential &os; problem
report&mdash;the PR database is distributed worldwide by
<application>CVSup</application>.</para>
report&mdash;the PR database is distributed
worldwide.</para>
</listitem>
<listitem>
@ -920,7 +913,7 @@
</itemizedlist>
<para>Here is the current list of categories (taken from
<ulink url="http://www.FreeBSD.org/cgi/cvsweb.cgi/src/gnu/usr.bin/send-pr/categories"></ulink>):</para>
<ulink url="http://svnweb.freebsd.org/base/head/gnu/usr.bin/send-pr/categories"></ulink>):</para>
<itemizedlist>
<listitem>
@ -928,11 +921,6 @@
&os;'s public image. Obsolete.</para>
</listitem>
<listitem>
<para><literal>alpha:</literal> problems specific to the
Alpha platform.</para>
</listitem>
<listitem>
<para><literal>amd64:</literal> problems specific to the
AMD64 platform.</para>

View file

@ -397,8 +397,8 @@ start_cmd="${name}_start"
stop_cmd=":"
load_rc_config $name<co id="rcng-confdummy-loadconfig"/>
eval "${rcvar}=\${${rcvar}:-'NO'}"<co id="rcng-confdummy-enable"/>
dummy_msg=${dummy_msg:-"Nothing started."}<co id="rcng-confdummy-opt"/>
: ${dummy_enable:=no} <co id="rcng-confdummy-enable"/>
: ${dummy_msg="Nothing started."}<co id="rcng-confdummy-opt"/>
dummy_start()
{
@ -445,7 +445,7 @@ run_rc_command "$1"</programlisting>
system, you should add a default setting for the knob to
<filename>/etc/defaults/rc.conf</filename> and document
it in &man.rc.conf.5;. Otherwise it is your script that
should provide a default setting for the knob. A portable
should provide a default setting for the knob. The canonical
approach to the latter case is shown in the example.</para>
<note>
@ -476,7 +476,7 @@ run_rc_command "$1"</programlisting>
<important>
<para>The names of all &man.rc.conf.5; variables used
exclusively by our script <emphasis>must</emphasis>
have the same prefix: <envar>${name}</envar>. For
have the same prefix: <envar>${name}_</envar>. For
example: <envar>dummy_mode</envar>,
<envar>dummy_state_file</envar>, and so on.</para>
</important>
@ -484,19 +484,10 @@ run_rc_command "$1"</programlisting>
<note>
<para>While it is possible to use a shorter name internally,
e.g., just <envar>msg</envar>, adding the unique prefix
<envar>${name}</envar> to all global names introduced by
<envar>${name}_</envar> to all global names introduced by
our script will save us from possible
collisions with the &man.rc.subr.8; namespace.</para>
<para>As long as an &man.rc.conf.5; variable and its
internal equivalent are the same, we can use a more
compact expression to set the default value:</para>
<programlisting>: ${dummy_msg:="Nothing started."}</programlisting>
<para>The current style is to use the more verbose form
though.</para>
<para>As a rule, <filename>rc.d</filename> scripts of the
base system need not provide defaults for their
&man.rc.conf.5; variables because the defaults should
@ -509,7 +500,11 @@ run_rc_command "$1"</programlisting>
<callout arearefs="rcng-confdummy-msg">
<para>Here we use <envar>dummy_msg</envar> to actually
control our script, i.e., to emit a variable message.</para>
control our script, i.e., to emit a variable message.
Use of a shell function is overkill here, since it only
runs a single command; an equally valid alternative is:</para>
<programlisting>start_cmd="echo \"$dummy_msg\""</programlisting>
</callout>
</calloutlist>
</sect1>

View file

@ -67,79 +67,84 @@
<releaseinfo>$FreeBSD$</releaseinfo>
<abstract>
<para>This article covers the use of solid state disk devices in &os;
to create embedded systems.</para>
<para>This article covers the use of solid state disk devices in
&os; to create embedded systems.</para>
<para>Embedded systems have the advantage of increased stability due to
the lack of integral moving parts (hard drives). Account must be
taken, however, for the generally low disk space available in the
system and the durability of the storage medium.</para>
<para>Embedded systems have the advantage of increased stability
due to the lack of integral moving parts (hard drives).
Account must be taken, however, for the generally low disk
space available in the system and the durability of the
storage medium.</para>
<para>Specific topics to be covered include the types and attributes of
solid state media suitable for disk use in &os;, kernel options
that are of interest in such an environment, the
<filename>rc.initdiskless</filename> mechanisms that automate the
initialization of such systems and the need for read-only filesystems,
and building filesystems from scratch. The article will conclude
with some general strategies for small and read-only &os;
environments.</para>
<para>Specific topics to be covered include the types and
attributes of solid state media suitable for disk use in &os;,
kernel options that are of interest in such an environment,
the <filename>rc.initdiskless</filename> mechanisms that
automate the initialization of such systems and the need for
read-only filesystems, and building filesystems from scratch.
The article will conclude with some general strategies for
small and read-only &os; environments.</para>
</abstract>
</articleinfo>
<sect1 id="intro">
<title>Solid State Disk Devices</title>
<para>The scope of this article will be limited to solid state disk
devices made from flash memory. Flash memory is a solid state memory
(no moving parts) that is non-volatile (the memory maintains data even
after all power sources have been disconnected). Flash memory can
withstand tremendous physical shock and is reasonably fast (the flash
memory solutions covered in this article are slightly slower than a EIDE
hard disk for write operations, and much faster for read operations).
One very important aspect of flash memory, the ramifications of which
will be discussed later in this article, is that each sector has a
limited rewrite capacity. You can only write, erase, and write again to
a sector of flash memory a certain number of times before the sector
becomes permanently unusable. Although many flash memory products
automatically map bad blocks, and although some even distribute write
operations evenly throughout the unit, the fact remains that there
exists a limit to the amount of writing that can be done to the device.
Competitive units have between 1,000,000 and 10,000,000 writes per
sector in their specification. This figure varies due to the
temperature of the environment.</para>
<para>The scope of this article will be limited to solid state
disk devices made from flash memory. Flash memory is a solid
state memory (no moving parts) that is non-volatile (the memory
maintains data even after all power sources have been
disconnected). Flash memory can withstand tremendous physical
shock and is reasonably fast (the flash memory solutions covered
in this article are slightly slower than a EIDE hard disk for
write operations, and much faster for read operations). One
very important aspect of flash memory, the ramifications of
which will be discussed later in this article, is that each
sector has a limited rewrite capacity. You can only write,
erase, and write again to a sector of flash memory a certain
number of times before the sector becomes permanently unusable.
Although many flash memory products automatically map bad
blocks, and although some even distribute write operations
evenly throughout the unit, the fact remains that there exists a
limit to the amount of writing that can be done to the device.
Competitive units have between 1,000,000 and 10,000,000 writes
per sector in their specification. This figure varies due to
the temperature of the environment.</para>
<para>Specifically, we will be discussing ATA compatible compact-flash
units, which are quite popular as storage media for digital
cameras. Of particular interest is the fact that they pin out directly
to the IDE bus and are compatible with the ATA command set. Therefore,
with a very simple and low-cost adaptor, these devices can be attached
directly to an IDE bus in a computer. Once implemented in this manner,
operating systems such as &os; see the device as a normal hard disk
(albeit small).</para>
<para>Specifically, we will be discussing ATA compatible
compact-flash units, which are quite popular as storage media
for digital cameras. Of particular interest is the fact that
they pin out directly to the IDE bus and are compatible with the
ATA command set. Therefore, with a very simple and low-cost
adaptor, these devices can be attached directly to an IDE bus in
a computer. Once implemented in this manner, operating systems
such as &os; see the device as a normal hard disk (albeit
small).</para>
<para>Other solid state disk solutions do exist, but their expense,
obscurity, and relative unease of use places them beyond the scope of
this article.</para>
<para>Other solid state disk solutions do exist, but their
expense, obscurity, and relative unease of use places them
beyond the scope of this article.</para>
</sect1>
<sect1 id="kernel">
<title>Kernel Options</title>
<para>A few kernel options are of specific interest to those creating
an embedded &os; system.</para>
<para>A few kernel options are of specific interest to those
creating an embedded &os; system.</para>
<para>All embedded &os; systems that use flash memory as system
disk will be interested in memory disks and memory filesystems. Because
of the limited number of writes that can be done to flash memory, the
disk and the filesystems on the disk will most likely be mounted
read-only. In this environment, filesystems such as
<filename>/tmp</filename> and <filename>/var</filename> are mounted as
memory filesystems to allow the system to create logs and update
counters and temporary files. Memory filesystems are a critical
component to a successful solid state &os; implementation.</para>
disk will be interested in memory disks and memory filesystems.
Because of the limited number of writes that can be done to
flash memory, the disk and the filesystems on the disk will most
likely be mounted read-only. In this environment, filesystems
such as <filename>/tmp</filename> and <filename>/var</filename>
are mounted as memory filesystems to allow the system to create
logs and update counters and temporary files. Memory
filesystems are a critical component to a successful solid state
&os; implementation.</para>
<para>You should make sure the following lines exist in your kernel
configuration file:</para>
<para>You should make sure the following lines exist in your
kernel configuration file:</para>
<programlisting>options MFS # Memory Filesystem
options MD_ROOT # md device usable as a potential root device
@ -147,58 +152,63 @@ pseudo-device md # memory disk</programlisting>
</sect1>
<sect1 id="ro-fs">
<title>The <literal>rc</literal> Subsystem and Read-Only Filesystems</title>
<title>The <literal>rc</literal> Subsystem and Read-Only
Filesystems</title>
<para>The post-boot initialization of an embedded &os; system is
controlled by <filename>/etc/rc.initdiskless</filename>.</para>
<para><filename>/etc/rc.d/var</filename> mounts <filename>/var</filename>
as a memory filesystem, makes a configurable list of directories in
<filename>/var</filename> with the &man.mkdir.1; command, and
changes modes on some of those directories. In the execution of
<para><filename>/etc/rc.d/var</filename> mounts
<filename>/var</filename> as a memory filesystem, makes a
configurable list of directories in <filename>/var</filename>
with the &man.mkdir.1; command, and changes modes on some of
those directories. In the execution of
<filename>/etc/rc.d/var</filename>, one other
<filename>rc.conf</filename> variable comes into play &ndash;
<literal>varsize</literal>. The <filename>/etc/rc.d/var</filename>
file creates a <filename>/var</filename> partition based on the value of
<literal>varsize</literal>. The
<filename>/etc/rc.d/var</filename> file creates a
<filename>/var</filename> partition based on the value of
this variable in <filename>rc.conf</filename>:</para>
<programlisting>varsize=8192</programlisting>
<para>Remember that this value is in sectors by default.</para>
<para>The fact that <filename>/var</filename>
is a read-write filesystem is an important
distinction, as the <filename>/</filename> partition (and any other
partitions you may have on your flash media) should be mounted
read-only. Remember that in <xref linkend="intro"/> we detailed the
limitations of flash memory - specifically the limited write capability.
The importance of not mounting filesystems on flash media read-write,
and the importance of not using a swap file, cannot be overstated. A
swap file on a busy system can burn through a piece of flash media in
less than one year. Heavy logging or temporary file creation and
destruction can do the same. Therefore, in addition to removing the
<para>The fact that <filename>/var</filename> is a read-write
filesystem is an important distinction, as the
<filename>/</filename> partition (and any other partitions you
may have on your flash media) should be mounted read-only.
Remember that in <xref linkend="intro"/> we detailed the
limitations of flash memory - specifically the limited write
capability. The importance of not mounting filesystems on flash
media read-write, and the importance of not using a swap file,
cannot be overstated. A swap file on a busy system can burn
through a piece of flash media in less than one year. Heavy
logging or temporary file creation and destruction can do the
same. Therefore, in addition to removing the
<literal>swap</literal> entry from your
<filename>/etc/fstab</filename> file, you should also change the Options
field for each filesystem to <literal>ro</literal> as follows:</para>
<filename>/etc/fstab</filename> file, you should also change the
Options field for each filesystem to <literal>ro</literal> as
follows:</para>
<programlisting># Device Mountpoint FStype Options Dump Pass#
/dev/ad0s1a / ufs ro 1 1</programlisting>
<para>A few applications in the average system will immediately begin to
fail as a result of this change. For instance, cron
<para>A few applications in the average system will immediately
begin to fail as a result of this change. For instance, cron
will not run properly as a result of missing cron tabs in the
<filename>/var</filename> created by
<filename>/etc/rc.d/var</filename>, and syslog and dhcp will
encounter problems as well as a result of the read-only filesystem and
missing items in the <filename>/var</filename> that
<filename>/etc/rc.d/var</filename> has created. These are only
temporary problems though, and are addressed, along with solutions to
the execution of other common software packages in
encounter problems as well as a result of the read-only
filesystem and missing items in the <filename>/var</filename>
that <filename>/etc/rc.d/var</filename> has created. These are
only temporary problems though, and are addressed, along with
solutions to the execution of other common software packages in
<xref linkend="strategies"/>.</para>
<para>An important thing to remember is that a filesystem that was mounted
read-only with <filename>/etc/fstab</filename> can be made read-write at
any time by issuing the command:</para>
<para>An important thing to remember is that a filesystem that was
mounted read-only with <filename>/etc/fstab</filename> can be
made read-write at any time by issuing the command:</para>
<screen>&prompt.root; <userinput>/sbin/mount -uw <replaceable>partition</replaceable></userinput></screen>
@ -210,73 +220,79 @@ pseudo-device md # memory disk</programlisting>
<sect1>
<title>Building a File System From Scratch</title>
<para>Because ATA compatible compact-flash cards are seen by &os; as
normal IDE hard drives, you could
theoretically install &os; from the network using the kern and
mfsroot floppies or from a CD.</para>
<para>Because ATA compatible compact-flash cards are seen by &os;
as normal IDE hard drives, you could theoretically install &os;
from the network using the kern and mfsroot floppies or from a
CD.</para>
<para>However, even a small installation of &os; using normal
installation procedures can produce a system in size of greater than 200
megabytes. Because most people will be using smaller flash memory
devices (128 megabytes is considered fairly large - 32 or even 16
megabytes is common) an installation using normal mechanisms is not
possible&mdash;there is simply not enough disk space for even the
smallest of conventional installations.</para>
installation procedures can produce a system in size of greater
than 200 megabytes. Because most people will be using smaller
flash memory devices (128 megabytes is considered fairly large -
32 or even 16 megabytes is common) an installation using normal
mechanisms is not possible&mdash;there is simply not enough disk
space for even the smallest of conventional
installations.</para>
<para>The easiest way to overcome this space limitation is to install
&os; using conventional means to a normal hard disk. After the
installation is complete, pare down the operating system to a size that
will fit onto your flash media, then tar the entire filesystem. The
following steps will guide you through the process of preparing a piece
of flash memory for your tarred filesystem. Remember, because a normal
installation is not being performed, operations such as partitioning,
labeling, file-system creation, etc. need to be performed by hand. In
addition to the kern and mfsroot floppy disks, you will also need to use
the fixit floppy.</para>
<para>The easiest way to overcome this space limitation is to
install &os; using conventional means to a normal hard disk.
After the installation is complete, pare down the operating
system to a size that will fit onto your flash media, then tar
the entire filesystem. The following steps will guide you
through the process of preparing a piece of flash memory for
your tarred filesystem. Remember, because a normal installation
is not being performed, operations such as partitioning,
labeling, file-system creation, etc. need to be performed by
hand. In addition to the kern and mfsroot floppy disks, you
will also need to use the fixit floppy.</para>
<procedure>
<step>
<title>Partitioning your flash media device</title>
<para>After booting with the kern and mfsroot floppies, choose
<literal>custom</literal> from the installation menu. In the custom
installation menu, choose <literal>partition</literal>. In the
partition menu, you should delete all existing partitions using the
<keycap>d</keycap> key. After deleting all existing partitions,
create a partition using the <keycap>c</keycap> key and accept the
default value for the size of the partition. When asked for the
type of the partition, make sure the value is set to
<literal>165</literal>. Now write this partition table to the disk
by pressing the <keycap>w</keycap> key (this is a hidden option on
this screen). If you are using an ATA compatible compact
flash card, you should choose the &os; Boot Manager. Now press
the <keycap>q</keycap> key to quit the partition menu. You will be
shown the boot manager menu once more - repeat the choice you made
earlier.</para>
<literal>custom</literal> from the installation menu. In
the custom installation menu, choose
<literal>partition</literal>. In the partition menu, you
should delete all existing partitions using the
<keycap>d</keycap> key. After deleting all existing
partitions, create a partition using the <keycap>c</keycap>
key and accept the default value for the size of the
partition. When asked for the type of the partition, make
sure the value is set to <literal>165</literal>. Now write
this partition table to the disk by pressing the
<keycap>w</keycap> key (this is a hidden option on this
screen). If you are using an ATA compatible compact flash
card, you should choose the &os; Boot Manager. Now press
the <keycap>q</keycap> key to quit the partition menu. You
will be shown the boot manager menu once more - repeat the
choice you made earlier.</para>
</step>
<step>
<title>Creating filesystems on your flash memory device</title>
<title>Creating filesystems on your flash memory
device</title>
<para>Exit the custom installation menu, and from the main
installation menu choose the <literal>fixit</literal> option. After
entering the fixit environment, enter the following command:</para>
installation menu choose the <literal>fixit</literal>
option. After entering the fixit environment, enter the
following command:</para>
<screen>&prompt.root; <userinput>disklabel -e /dev/ad0c</userinput></screen>
<para>At this point you will have entered the vi editor under the
auspices of the disklabel command. Next, you need to add
an <literal>a:</literal> line at the end of the file. This
<literal>a:</literal> line should look like:</para>
<para>At this point you will have entered the vi editor under
the auspices of the disklabel command. Next, you need to
add an <literal>a:</literal> line at the end of the file.
This <literal>a:</literal> line should look like:</para>
<programlisting>a: <replaceable>123456</replaceable> 0 4.2BSD 0 0</programlisting>
<para>Where <replaceable>123456</replaceable> is a number that is
exactly the same as the number in the existing <literal>c:</literal>
entry for size. Basically you are duplicating the existing
<literal>c:</literal> line as an <literal>a:</literal> line, making
sure that fstype is <literal>4.2BSD</literal>. Save the file and
exit.</para>
<para>Where <replaceable>123456</replaceable> is a number that
is exactly the same as the number in the existing
<literal>c:</literal> entry for size. Basically you are
duplicating the existing <literal>c:</literal> line as an
<literal>a:</literal> line, making sure that fstype is
<literal>4.2BSD</literal>. Save the file and exit.</para>
<screen>&prompt.root; <userinput>disklabel -B -r /dev/ad0c</userinput>
&prompt.root; <userinput>newfs /dev/ad0a</userinput></screen>
@ -289,22 +305,24 @@ pseudo-device md # memory disk</programlisting>
<screen>&prompt.root; <userinput>mount /dev/ad0a /flash</userinput></screen>
<para>Bring this machine up on the network so we may transfer our tar
file and explode it onto our flash media filesystem. One example of
how to do this is:</para>
<para>Bring this machine up on the network so we may transfer
our tar file and explode it onto our flash media filesystem.
One example of how to do this is:</para>
<screen>&prompt.root; <userinput>ifconfig xl0 192.168.0.10 netmask 255.255.255.0</userinput>
&prompt.root; <userinput>route add default 192.168.0.1</userinput></screen>
<para>Now that the machine is on the network, transfer your tar file.
You may be faced with a bit of a dilemma at this point - if your
flash memory part is 128 megabytes, for instance, and your tar file
is larger than 64 megabytes, you cannot have your tar file on the
flash media at the same time as you explode it - you will run out of
space. One solution to this problem, if you are using FTP, is to
untar the file while it is transferred over FTP. If you perform
your transfer in this manner, you will never have the tar file and
the tar contents on your disk at the same time:</para>
<para>Now that the machine is on the network, transfer your
tar file. You may be faced with a bit of a dilemma at this
point - if your flash memory part is 128 megabytes, for
instance, and your tar file is larger than 64 megabytes, you
cannot have your tar file on the flash media at the same
time as you explode it - you will run out of
space. One solution to this problem, if you are using FTP,
is to untar the file while it is transferred over FTP. If
you perform your transfer in this manner, you will never
have the tar file and the tar contents on your disk at the
same time:</para>
<screen><prompt>ftp></prompt> <userinput>get tarfile.tar "| tar xvf -"</userinput></screen>
@ -313,70 +331,74 @@ pseudo-device md # memory disk</programlisting>
<screen><prompt>ftp></prompt> <userinput>get tarfile.tar "| zcat | tar xvf -"</userinput></screen>
<para>After the contents of your tarred filesystem are on your flash
memory filesystem, you can unmount the flash memory and
reboot:</para>
<para>After the contents of your tarred filesystem are on your
flash memory filesystem, you can unmount the flash memory
and reboot:</para>
<screen>&prompt.root; <userinput>cd /</userinput>
&prompt.root; <userinput>umount /flash</userinput>
&prompt.root; <userinput>exit</userinput></screen>
<para>Assuming that you configured your filesystem correctly when it
was built on the normal hard disk (with your filesystems mounted
read-only, and with the necessary options compiled into the kernel)
you should now be successfully booting your &os; embedded
system.</para>
<para>Assuming that you configured your filesystem correctly
when it was built on the normal hard disk (with your
filesystems mounted read-only, and with the necessary
options compiled into the kernel) you should now be
successfully booting your &os; embedded system.</para>
</step>
</procedure>
</sect1>
<sect1 id="strategies">
<title>System Strategies for Small and Read Only Environments</title>
<title>System Strategies for Small and Read Only
Environments</title>
<para>In <xref linkend="ro-fs"/>, it was pointed out that the
<filename>/var</filename> filesystem constructed by
<filename>/etc/rc.d/var</filename> and the presence of a read-only
root filesystem causes problems with many common software packages used
with &os;. In this article, suggestions for successfully running
cron, syslog, ports installations, and the Apache web server will be
provided.</para>
<filename>/etc/rc.d/var</filename> and the presence of a
read-only root filesystem causes problems with many common
software packages used with &os;. In this article, suggestions
for successfully running cron, syslog, ports installations, and
the Apache web server will be provided.</para>
<sect2>
<title>cron</title>
<para>Upon boot, <filename class="directory">/var</filename> gets
populated by <filename>/etc/rc.d/var</filename> using the list from
<filename>/etc/mtree/BSD.var.dist</filename>, so the <filename
class="directory">cron</filename>, <filename
class="directory">cron/tabs</filename>, <filename
class="directory">at</filename>, and a few other standard
<para>Upon boot, <filename class="directory">/var</filename>
gets populated by <filename>/etc/rc.d/var</filename> using the
list from <filename>/etc/mtree/BSD.var.dist</filename>, so the
<filename class="directory">cron</filename>, <filename
class="directory">cron/tabs</filename>, <filename
class="directory">at</filename>, and a few other standard
directories get created.</para>
<para>However, this does not solve the problem of maintaining cron
tabs across reboots. When the system reboots, the
<filename>/var</filename> filesystem that is in memory will disappear
and any cron tabs you may have had in it will also disappear.
Therefore, one solution would be to create cron tabs for the users
that need them, mount your <filename>/</filename> filesystem as
read-write and copy those cron tabs to somewhere safe, like
<para>However, this does not solve the problem of maintaining
cron tabs across reboots. When the system reboots, the
<filename>/var</filename> filesystem that is in memory will
disappear and any cron tabs you may have had in it will also
disappear. Therefore, one solution would be to create cron
tabs for the users that need them, mount your
<filename>/</filename> filesystem as read-write and copy those
cron tabs to somewhere safe, like
<filename>/etc/tabs</filename>, then add a line to the end of
<filename>/etc/rc.initdiskless</filename> that copies those crontabs into
<filename>/var/cron/tabs</filename> after that directory has been
created during system initialization. You may also need to add a line
that changes modes and permissions on the directories you create and
the files you copy with <filename>/etc/rc.initdiskless</filename>.</para>
<filename>/etc/rc.initdiskless</filename> that copies those
crontabs into <filename>/var/cron/tabs</filename> after that
directory has been created during system initialization. You
may also need to add a line that changes modes and permissions
on the directories you create and the files you copy with
<filename>/etc/rc.initdiskless</filename>.</para>
</sect2>
<sect2>
<title>syslog</title>
<para><filename>syslog.conf</filename> specifies the locations of
certain log files that exist in <filename>/var/log</filename>. These
files are not created by <filename>/etc/rc.d/var</filename> upon
system initialization. Therefore, somewhere in
<filename>/etc/rc.d/var</filename>, after the section that creates
the directories in <filename>/var</filename>, you will need to add
something like this:</para>
<para><filename>syslog.conf</filename> specifies the locations
of certain log files that exist in
<filename>/var/log</filename>. These files are not created by
<filename>/etc/rc.d/var</filename> upon system initialization.
Therefore, somewhere in <filename>/etc/rc.d/var</filename>,
after the section that creates the directories in
<filename>/var</filename>, you will need to add something like
this:</para>
<screen>&prompt.root; <userinput>touch /var/log/security /var/log/maillog /var/log/cron /var/log/messages</userinput>
&prompt.root; <userinput>chmod 0644 /var/log/*</userinput></screen>
@ -385,27 +407,30 @@ pseudo-device md # memory disk</programlisting>
<sect2>
<title>Ports Installation</title>
<para>Before discussing the changes necessary to successfully use the
ports tree, a reminder is necessary regarding the read-only nature of
your filesystems on the flash media. Since they are read-only, you
will need to temporarily mount them read-write using the mount syntax
shown in <xref linkend="ro-fs"/>. You should always remount those
<para>Before discussing the changes necessary to successfully
use the ports tree, a reminder is necessary regarding the
read-only nature of your filesystems on the flash media.
Since they are read-only, you will need to temporarily mount
them read-write using the mount syntax shown in <xref
linkend="ro-fs"/>. You should always remount those
filesystems read-only when you are done with any maintenance -
unnecessary writes to the flash media could considerably shorten its
lifespan.</para>
unnecessary writes to the flash media could considerably
shorten its lifespan.</para>
<para>To make it possible to enter a ports directory and successfully
run <command>make</command> <maketarget>install</maketarget>,
we must create a packages directory on
a non-memory filesystem that will keep track of our packages across
reboots. Because it is necessary to mount your filesystems as
read-write for the installation of a package anyway, it is sensible to
assume that an area on the flash media can also be used for package
<para>To make it possible to enter a ports directory and
successfully run
<command>make</command> <maketarget>install</maketarget>, we
must create a packages directory on a non-memory filesystem
that will keep track of our packages across reboots. Because
it is necessary to mount your filesystems as read-write for
the installation of a package anyway, it is sensible to assume
that an area on the flash media can also be used for package
information to be written to.</para>
<para>First, create a package database directory. This is normally in
<filename>/var/db/pkg</filename>, but we cannot place it there as it
will disappear every time the system is booted.</para>
<para>First, create a package database directory. This is
normally in <filename>/var/db/pkg</filename>, but we cannot
place it there as it will disappear every time the system is
booted.</para>
<screen>&prompt.root; <userinput>mkdir /etc/pkg</userinput></screen>
@ -415,12 +440,13 @@ pseudo-device md # memory disk</programlisting>
<screen>&prompt.root; <userinput>ln -s /etc/pkg /var/db/pkg</userinput></screen>
<para>Now, any time that you mount your filesystems as read-write and
install a package, the <command>make</command> <maketarget>install</maketarget> will work,
and package information
will be written successfully to <filename>/etc/pkg</filename> (because
the filesystem will, at that time, be mounted read-write) which will
always be available to the operating system as
<para>Now, any time that you mount your filesystems as
read-write and install a package, the
<command>make</command> <maketarget>install</maketarget> will
work, and package information will be written successfully to
<filename>/etc/pkg</filename> (because the filesystem will, at
that time, be mounted read-write) which will always be
available to the operating system as
<filename>/var/db/pkg</filename>.</para>
</sect2>
@ -428,40 +454,42 @@ pseudo-device md # memory disk</programlisting>
<title>Apache Web Server</title>
<note>
<para>The steps in this section are only necessary if Apache is
set up to write its pid or log information outside of
<para>The steps in this section are only necessary if Apache
is set up to write its pid or log information outside of
<filename class="directory">/var</filename>. By default,
Apache keeps its pid file in <filename
class="directory">/var/run/httpd.pid</filename> and its log
files in <filename class="directory">/var/log</filename>.</para>
class="directory">/var/run/httpd.pid</filename> and its
log files in <filename
class="directory">/var/log</filename>.</para>
</note>
<para>It is now assumed that Apache keeps its log files in a
directory <filename
class="directory"><replaceable>apache_log_dir</replaceable></filename>
class="directory"><replaceable>apache_log_dir</replaceable></filename>
outside of <filename class="directory">/var</filename>.
When this directory lives on a read-only filesystem, Apache will
not be able to save any log files, and may have problems working.
If so, it is necessary to add a new directory to the
When this directory lives on a read-only filesystem, Apache
will not be able to save any log files, and may have problems
working. If so, it is necessary to add a new directory to the
list of directories in <filename>/etc/rc.d/var</filename> to
create in <filename>/var</filename>, and to link
<filename class="directory"><replaceable>apache_log_dir</replaceable></filename> to
<filename>/var/log/apache</filename>. It is also necessary to set
permissions and ownership on this new directory.</para>
<filename
class="directory"><replaceable>apache_log_dir</replaceable></filename>
to <filename>/var/log/apache</filename>. It is also necessary
to set permissions and ownership on this new directory.</para>
<para>First, add the directory <literal>log/apache</literal> to the list
of directories to be created in
<para>First, add the directory <literal>log/apache</literal> to
the list of directories to be created in
<filename>/etc/rc.d/var</filename>.</para>
<para>Second, add these commands to
<filename>/etc/rc.d/var</filename> after the directory creation
section:</para>
<filename>/etc/rc.d/var</filename> after the directory
creation section:</para>
<screen>&prompt.root; <userinput>chmod 0774 /var/log/apache</userinput>
&prompt.root; <userinput>chown nobody:nobody /var/log/apache</userinput></screen>
<para>Finally, remove the existing
<filename class="directory"><replaceable>apache_log_dir</replaceable></filename>
<para>Finally, remove the existing <filename
class="directory"><replaceable>apache_log_dir</replaceable></filename>
directory, and replace it with a link:</para>
<screen>&prompt.root; <userinput>rm -rf <filename class="directory"><replaceable>apache_log_dir</replaceable></filename></userinput>

View file

@ -1,7 +1,6 @@
# $FreeBSD$
SUBDIR = arch-handbook
SUBDIR+= corp-net-guide
SUBDIR+= design-44bsd
SUBDIR+= dev-model
SUBDIR+= developers-handbook

View file

@ -16,11 +16,11 @@ INSTALL_COMPRESSED?= gz
INSTALL_ONLY_COMPRESSED?=
#
# SRCS lists the individual SGML files that make up the document. Changes
# SRCS lists the individual XML files that make up the document. Changes
# to any of these files will force a rebuild
#
# SGML content
# XML content
SRCS= book.xml
SRCS+= boot/chapter.xml
SRCS+= driverbasics/chapter.xml

View file

@ -48,13 +48,7 @@
<para>Most devices in a &unix;-like operating system are accessed
through device-nodes, sometimes also called special files.
These files are usually located under the directory
<filename>/dev</filename> in the filesystem hierarchy.
In releases of FreeBSD older than 5.0-RELEASE, where
&man.devfs.5; support is not integrated into FreeBSD,
each device node must be
created statically and independent of the existence of the
associated device driver. Most device nodes on the system are
created by running <command>MAKEDEV</command>.</para>
<filename>/dev</filename> in the filesystem hierarchy.</para>
<para>Device drivers can roughly be broken down into two
categories; character and network device drivers.</para>
@ -208,25 +202,23 @@ KMOD=skeleton
<para>This simple example pseudo-device remembers whatever values
you write to it and can then supply them back to you when you
read from it. Two versions are shown, one for &os;&nbsp;4.X and
one for &os;&nbsp;5.X.</para>
read from it.</para>
<example>
<title>Example of a Sample Echo Pseudo-Device Driver for
&os;&nbsp;4.X</title>
&os;&nbsp;10.X</title>
<programlisting>/*
* Simple `echo' pseudo-device KLD
* Simple Echo pseudo-device KLD
*
* Murray Stokely
* Søren (Xride) Straarup
* Eitan Adler
*/
#define MIN(a,b) (((a) &lt; (b)) ? (a) : (b))
#include &lt;sys/types.h&gt;
#include &lt;sys/module.h&gt;
#include &lt;sys/systm.h&gt; /* uprintf */
#include &lt;sys/errno.h&gt;
#include &lt;sys/param.h&gt; /* defines used in kernel.h */
#include &lt;sys/kernel.h&gt; /* types used in module initialization */
#include &lt;sys/conf.h&gt; /* cdevsw struct */
@ -235,170 +227,6 @@ KMOD=skeleton
#define BUFFERSIZE 256
/* Function prototypes */
d_open_t echo_open;
d_close_t echo_close;
d_read_t echo_read;
d_write_t echo_write;
/* Character device entry points */
static struct cdevsw echo_cdevsw = {
echo_open,
echo_close,
echo_read,
echo_write,
noioctl,
nopoll,
nommap,
nostrategy,
"echo",
33, /* reserved for lkms - /usr/src/sys/conf/majors */
nodump,
nopsize,
D_TTY,
-1
};
typedef struct s_echo {
char msg[BUFFERSIZE];
int len;
} t_echo;
/* vars */
static dev_t sdev;
static int count;
static t_echo *echomsg;
MALLOC_DECLARE(M_ECHOBUF);
MALLOC_DEFINE(M_ECHOBUF, "echobuffer", "buffer for echo module");
/*
* This function is called by the kld[un]load(2) system calls to
* determine what actions to take when a module is loaded or unloaded.
*/
static int
echo_loader(struct module *m, int what, void *arg)
{
int err = 0;
switch (what) {
case MOD_LOAD: /* kldload */
sdev = make_dev(<literal>&amp;</literal>echo_cdevsw,
0,
UID_ROOT,
GID_WHEEL,
0600,
"echo");
/* kmalloc memory for use by this driver */
MALLOC(echomsg, t_echo *, sizeof(t_echo), M_ECHOBUF, M_WAITOK);
printf("Echo device loaded.\n");
break;
case MOD_UNLOAD:
destroy_dev(sdev);
FREE(echomsg,M_ECHOBUF);
printf("Echo device unloaded.\n");
break;
default:
err = EOPNOTSUPP;
break;
}
return(err);
}
int
echo_open(dev_t dev, int oflags, int devtype, struct proc *p)
{
int err = 0;
uprintf("Opened device \"echo\" successfully.\n");
return(err);
}
int
echo_close(dev_t dev, int fflag, int devtype, struct proc *p)
{
uprintf("Closing device \"echo.\"\n");
return(0);
}
/*
* The read function just takes the buf that was saved via
* echo_write() and returns it to userland for accessing.
* uio(9)
*/
int
echo_read(dev_t dev, struct uio *uio, int ioflag)
{
int err = 0;
int amt;
/*
* How big is this read operation? Either as big as the user wants,
* or as big as the remaining data
*/
amt = MIN(uio-&gt;uio_resid, (echomsg-&gt;len - uio-&gt;uio_offset &gt; 0) ?
echomsg-&gt;len - uio-&gt;uio_offset : 0);
if ((err = uiomove(echomsg-&gt;msg + uio-&gt;uio_offset,amt,uio)) != 0) {
uprintf("uiomove failed!\n");
}
return(err);
}
/*
* echo_write takes in a character string and saves it
* to buf for later accessing.
*/
int
echo_write(dev_t dev, struct uio *uio, int ioflag)
{
int err = 0;
/* Copy the string in from user memory to kernel memory */
err = copyin(uio-&gt;uio_iov-&gt;iov_base, echomsg-&gt;msg,
MIN(uio-&gt;uio_iov-&gt;iov_len, BUFFERSIZE - 1));
/* Now we need to null terminate, then record the length */
*(echomsg-&gt;msg + MIN(uio-&gt;uio_iov-&gt;iov_len, BUFFERSIZE - 1)) = 0;
echomsg-&gt;len = MIN(uio-&gt;uio_iov-&gt;iov_len, BUFFERSIZE);
if (err != 0) {
uprintf("Write failed: bad address!\n");
}
count++;
return(err);
}
DEV_MODULE(echo,echo_loader,NULL);</programlisting>
</example>
<example>
<title>Example of a Sample Echo Pseudo-Device Driver for
&os;&nbsp;5.X</title>
<programlisting>/*
* Simple `echo' pseudo-device KLD
*
* Murray Stokely
*
* Converted to 5.X by S&oslash;ren (Xride) Straarup
*/
#include &lt;sys/types.h&gt;
#include &lt;sys/module.h&gt;
#include &lt;sys/systm.h&gt; /* uprintf */
#include &lt;sys/errno.h&gt;
#include &lt;sys/param.h&gt; /* defines used in kernel.h */
#include &lt;sys/kernel.h&gt; /* types used in module initialization */
#include &lt;sys/conf.h&gt; /* cdevsw struct */
#include &lt;sys/uio.h&gt; /* uio struct */
#include &lt;sys/malloc.h&gt;
#define BUFFERSIZE 256
/* Function prototypes */
static d_open_t echo_open;
static d_close_t echo_close;
@ -415,15 +243,14 @@ static struct cdevsw echo_cdevsw = {
.d_name = "echo",
};
typedef struct s_echo {
struct s_echo {
char msg[BUFFERSIZE];
int len;
} t_echo;
};
/* vars */
static struct cdev *echo_dev;
static int count;
static t_echo *echomsg;
static struct s_echo *echomsg;
MALLOC_DECLARE(M_ECHOBUF);
MALLOC_DEFINE(M_ECHOBUF, "echobuffer", "buffer for echo module");
@ -434,20 +261,25 @@ MALLOC_DEFINE(M_ECHOBUF, "echobuffer", "buffer for echo module");
*/
static int
echo_loader(struct module *m, int what, void *arg)
echo_loader(struct module *m __unused, int what, void *arg __unused)
{
int err = 0;
int error = 0;
switch (what) {
case MOD_LOAD: /* kldload */
echo_dev = make_dev(<literal>&amp;</literal>echo_cdevsw,
error = make_dev_p(MAKEDEV_CHECKNAME | MAKEDEV_WAITOK,
&amp;echo_dev,
&amp;echo_cdevsw,
0,
UID_ROOT,
GID_WHEEL,
0600,
"echo");
if (error != 0)
break;
/* kmalloc memory for use by this driver */
echomsg = malloc(sizeof(t_echo), M_ECHOBUF, M_WAITOK);
echomsg = malloc(sizeof(*echomsg), M_ECHOBUF, M_WAITOK);
printf("Echo device loaded.\n");
break;
case MOD_UNLOAD:
@ -456,26 +288,27 @@ echo_loader(struct module *m, int what, void *arg)
printf("Echo device unloaded.\n");
break;
default:
err = EOPNOTSUPP;
error = EOPNOTSUPP;
break;
}
return(err);
return (error);
}
static int
echo_open(struct cdev *dev, int oflags, int devtype, struct thread *p)
echo_open(struct cdev *dev __unused, int oflags __unused, int devtype __unused, struct thread *p __unused)
{
int err = 0;
int error = 0;
uprintf("Opened device \"echo\" successfully.\n");
return(err);
return (error);
}
static int
echo_close(struct cdev *dev, int fflag, int devtype, struct thread *p)
echo_close(struct cdev *dev __unused, int fflag __unused, int devtype __unused, struct thread *p __unused)
{
uprintf("Closing device \"echo.\"\n");
return(0);
uprintf("Closing device \"echo\".\n");
return (0);
}
/*
@ -485,21 +318,21 @@ echo_close(struct cdev *dev, int fflag, int devtype, struct thread *p)
*/
static int
echo_read(struct cdev *dev, struct uio *uio, int ioflag)
echo_read(struct cdev *dev __unused, struct uio *uio, int ioflag __unused)
{
int err = 0;
int amt;
int error, amt;
/*
* How big is this read operation? Either as big as the user wants,
* or as big as the remaining data
*/
amt = MIN(uio-&gt;uio_resid, (echomsg-&gt;len - uio-&gt;uio_offset &gt; 0) ?
echomsg-&gt;len - uio-&gt;uio_offset : 0);
if ((err = uiomove(echomsg-&gt;msg + uio-&gt;uio_offset, amt, uio)) != 0) {
amt = MIN(uio-&gt;uio_resid, echomsg-&gt;len - uio-&gt;uio_offset);
uio-&gt;uio_offset += amt;
if ((error = uiomove(echomsg-&gt;msg, amt, uio)) != 0)
uprintf("uiomove failed!\n");
}
return(err);
return (error);
}
/*
@ -508,55 +341,57 @@ echo_read(struct cdev *dev, struct uio *uio, int ioflag)
*/
static int
echo_write(struct cdev *dev, struct uio *uio, int ioflag)
echo_write(struct cdev *dev __unused, struct uio *uio, int ioflag __unused)
{
int err = 0;
int error, amt;
/* Copy the string in from user memory to kernel memory */
err = copyin(uio-&gt;uio_iov-&gt;iov_base, echomsg-&gt;msg,
MIN(uio-&gt;uio_iov-&gt;iov_len, BUFFERSIZE - 1));
/*
* We either write from the beginning or are appending -- do
* not allow random access.
*/
if (uio-&gt;uio_offset != 0 &amp;&amp; (uio-&gt;uio_offset != echomsg-&gt;len))
return (EINVAL);
/*
* This is new message, reset length
*/
if (uio-&gt;uio_offset == 0)
echomsg-&gt;len = 0;
/* NULL character should be overridden */
if (echomsg-&gt;len != 0)
echomsg-&gt;len--;
/* Copy the string in from user memory to kernel memory */
amt = MIN(uio-&gt;uio_resid, (BUFFERSIZE - echomsg-&gt;len));
error = uiomove(echomsg-&gt;msg + uio-&gt;uio_offset, amt, uio);
/* Now we need to null terminate, then record the length */
*(echomsg-&gt;msg + MIN(uio-&gt;uio_iov-&gt;iov_len, BUFFERSIZE - 1)) = 0;
echomsg-&gt;len = MIN(uio-&gt;uio_iov-&gt;iov_len, BUFFERSIZE);
echomsg-&gt;len += amt + 1;
uio-&gt;uio_offset += amt + 1;
echomsg-&gt;msg[echomsg-&gt;len - 1] = 0;
if (err != 0) {
if (error != 0)
uprintf("Write failed: bad address!\n");
}
count++;
return(err);
return (error);
}
DEV_MODULE(echo,echo_loader,NULL);</programlisting>
</example>
<para>To install this driver on &os;&nbsp;4.X you will first need to
make a node on your filesystem with a command such as:</para>
<screen>&prompt.root; <userinput>mknod /dev/echo c 33 0</userinput></screen>
<para>With this driver loaded you should now be able to type
something like:</para>
<screen>&prompt.root; <userinput>echo -n "Test Data" &gt; /dev/echo</userinput>
&prompt.root; <userinput>cat /dev/echo</userinput>
Test Data</screen>
Opened device "echo" successfully.
Test Data
Closing device "echo".</screen>
<para>Real hardware devices are described in the next chapter.</para>
<para>Additional Resources
<itemizedlist>
<listitem><simpara><ulink
url="http://ezine.daemonnews.org/200010/blueprints.html">Dynamic
Kernel Linker (KLD) Facility Programming Tutorial</ulink> -
<ulink url="http://www.daemonnews.org/">Daemonnews</ulink> October 2000</simpara></listitem>
<listitem><simpara><ulink
url="http://ezine.daemonnews.org/200007/newbus-intro.html">How
to Write Kernel Drivers with NEWBUS</ulink> - <ulink
url="http://www.daemonnews.org/">Daemonnews</ulink> July
2000</simpara></listitem>
</itemizedlist>
</para>
</sect1>
<sect1 id="driverbasics-block">

View file

@ -146,7 +146,7 @@
DEVMETHOD(device_suspend, xxx_isa_suspend),
DEVMETHOD(device_resume, xxx_isa_resume),
{ 0, 0 }
DEVMETHOD_END
};
static driver_t xxx_isa_driver = {

View file

@ -37,7 +37,7 @@
#include &lt;sys/conf.h&gt; /* cdevsw struct */
#include &lt;sys/uio.h&gt; /* uio struct */
#include &lt;sys/malloc.h&gt;
#include &lt;sys/bus.h&gt; /* structs, prototypes for pci bus stuff */
#include &lt;sys/bus.h&gt; /* structs, prototypes for pci bus stuff and DEVMETHOD macros! */
#include &lt;machine/bus.h&gt;
#include &lt;sys/rman.h&gt;
@ -221,7 +221,7 @@ static device_method_t mypci_methods[] = {
DEVMETHOD(device_suspend, mypci_suspend),
DEVMETHOD(device_resume, mypci_resume),
{ 0, 0 }
DEVMETHOD_END
};
static devclass_t mypci_devclass;

View file

@ -82,16 +82,16 @@
<sect1 id="oss-files">
<title>Files</title>
<para>All the relevant code currently (FreeBSD 4.4) lives in
<para>All the relevant code lives in
<filename>/usr/src/sys/dev/sound/</filename>, except for the
public ioctl interface definitions, found in
<filename>/usr/src/sys/sys/soundcard.h</filename></para>
<para>Under <filename>/usr/src/sys/dev/sound/</filename>, the
<filename>pcm/</filename> directory holds the central code,
while the <filename>isa/</filename> and
<filename>pci/</filename> directories have the drivers for ISA
and PCI boards.</para>
while the <filename>pci/</filename>, <filename>isa/</filename>
and <filename>usb/</filename> directories have the drivers
for PCI and ISA boards, and for USB audio devices.</para>
</sect1>
@ -527,7 +527,7 @@
<function>channel_resetdone()</function>, and
<function>channel_notify()</function> are for special purposes
and should not be implemented in a driver without discussing
it with the authorities (&a.cg;).</para>
it on the &a.multimedia;.</para>
<para><function>channel_setdir()</function> is deprecated.</para>
</sect3>

View file

@ -13,11 +13,11 @@ INSTALL_COMPRESSED?= gz
INSTALL_ONLY_COMPRESSED?=
#
# SRCS lists the individual SGML files that make up the document. Changes
# SRCS lists the individual XML files that make up the document. Changes
# to any of these files will force a rebuild
#
# SGML content
# XML content
SRCS= book.xml
DOC_PREFIX?= ${.CURDIR}/../../..

View file

@ -1,25 +0,0 @@
# $FreeBSD$
DOC?= book
FORMATS?= html
INSTALL_COMPRESSED?=gz
INSTALL_ONLY_COMPRESSED?=
SRCS= book.xml
IMAGES_EN= 08-01.eps
IMAGES_EN+= 08-02.eps
IMAGES_EN+= 08-03.eps
IMAGES_EN+= 08-04.eps
IMAGES_EN+= 08-05.eps
IMAGES_EN+= 08-06.eps
# Use the local DSSSL file
DSLHTML?= ${.CURDIR}/freebsd.dsl
DSLPRINT?= ${.CURDIR}/freebsd.dsl
DOC_PREFIX?= ${.CURDIR}/../../..
.include "${DOC_PREFIX}/share/mk/doc.project.mk"

File diff suppressed because it is too large Load diff

View file

@ -1,18 +0,0 @@
<!-- $FreeBSD$ -->
<!DOCTYPE style-sheet PUBLIC "-//James Clark//DTD DSSSL Style Sheet//EN" [
<!ENTITY freebsd.dsl PUBLIC "-//FreeBSD//DOCUMENT DocBook Stylesheet//EN" CDATA DSSSL>
]>
<style-sheet>
<style-specification use="docbook">
<style-specification-body>
;; Keep the legalnotice together with the rest of the text
(define %generate-legalnotice-link%
#f)
</style-specification-body>
</style-specification>
<external-specification id="docbook" document="freebsd.dsl">
</style-sheet>

View file

@ -44,7 +44,13 @@
<year>2002-2005</year>
<holder>Niklas Saers</holder>
</copyright>
<revhistory>
<revhistory>
<revision>
<revnumber>1.3</revnumber>
<date>October, 2012</date>
<revremark>Remove hats held by specific people, these
are documented elsewhere.</revremark>
</revision>
<revision>
<revnumber>1.2</revnumber>
<date>April, 2005</date>
@ -882,8 +888,6 @@
</para>
<para>
<!-- [TODO] - check all email adresses and names -->
Hat held by:
The DocEng team <email>doceng@FreeBSD.org</email>.
The
@ -908,27 +912,6 @@
</para>
</section>
<section id="role-internationalisation" xreflabel="Internationalisation">
<title>Internationalisation</title>
<para>
The Internationalisation hat is responsible for coordinating
the localisation efforts of the FreeBSD kernel and userland
utilities. The translation effort are coordinated by
<xref linkend="sub-project-documentation"/>. The
Internationalisation hat should suggest and promote standards
and guidelines for writing and maintaining the software in a
fashion that makes it easier to translate.
</para>
<para>
Hat currently available.
<!--
[TODO] - Is this still the case?
Although Ache does Localization
Andrey A. Chernov <email>ache@FreeBSD.org</email>
-->
</para>
</section>
<section id="role-postmaster" xreflabel="Postmaster">
<title>Postmaster</title>
<para>
@ -944,21 +927,6 @@
</para>
</section>
<section id="role-quality-assurance" xreflabel="Quality Assurance">
<title>Quality Assurance</title>
<para>
The responsibilities of this role are to manage the quality assurance
measures.
</para>
<para>
Hat currently held by:
Robert Watson <email>rwatson@FreeBSD.org</email>.
</para>
</section>
<section id="role-release-coordination" xreflabel="Release Coordination">
<title>Release Coordination</title>
@ -993,8 +961,6 @@
<para id="role-releng" xreflabel="Release Engineering Team">
Hat held by:
the Release Engineering team <email>re@FreeBSD.org</email>.
The current Release Engineer is
Ken Smith <email>kensmith@FreeBSD.org</email>.
The
<ulink url="http://www.freebsd.org/releng/charter.html">
Release Engineering Charter</ulink>.
@ -1052,16 +1018,6 @@
Officer Team <email>security-team@FreeBSD.org</email> to
help do the work.
</para>
<para>
Hat held by:
the Security Officer <email>security-officer@FreeBSD.org</email>,
currently headed by
Colin Percival <email>cperciva@FreeBSD.org</email>.
The
<ulink url="http://www.freebsd.org/security/index.html#sec">
Security Officer and The Security Officer Team's
charter</ulink>.
</para>
</section>
<section id="role-repo-manager" xreflabel="Source Repository Manager">
@ -1069,7 +1025,7 @@
<para>
The Source Repository Manager is the only one who is allowed
to directly modify the repository without using the
<xref linkend="tool-cvs"/> tool.
<xref linkend="tool-svn"/> tool.
It is his/her
responsibility to ensure that technical problems that arise in the
repository are resolved quickly. The source repository
@ -1078,8 +1034,7 @@
</para>
<para>
Hat held by:
the Source Repository Manager <email>cvs@FreeBSD.org</email>,
currently headed by Peter Wemm <email>peter@FreeBSD.org</email>.
the Source Repository Manager <email>cvs@FreeBSD.org</email>.
</para>
</section>
@ -1205,10 +1160,7 @@
</para>
<para>
Hat held by:
the Donations Liaison Office <email>donations@FreeBSD.org</email>,
currently headed by
Michael W. Lucas <email>mwlucas@FreeBSD.org</email>.
the Donations Liaison Office <email>donations@FreeBSD.org</email>.
</para>
</section>
@ -1230,8 +1182,7 @@
<para>
Hat held by:
the Admin team <email>admin@FreeBSD.org</email>,
currently headed by Mark Murray <email>markm@FreeBSD.org</email>
the Admin team <email>admin@FreeBSD.org</email>.
</para>
</section>
@ -2237,11 +2188,9 @@
developed tools. These tools are commonly used in the open source world.
</para>
<section id="tool-cvs" xreflabel="CVS">
<title>Concurrent Versions System (CVS)</title>
<para>
Concurrent Versions System
or simply <quote>CVS</quote>
<section id="tool-svn" xreflabel="SVN">
<title>Subversion (SVN)</title>
<para>Subversion (<quote>SVN</quote>)
is a system to handle multiple versions of text files and
tracking who committed what changes and why. A project lives
within a <quote>repository</quote> and different versions are
@ -2261,7 +2210,6 @@
</para>
</section>
<section id="tool-gnats" xreflabel="GNATS">
<title>GNATS</title>
<para>

View file

@ -19,11 +19,11 @@ INSTALL_ONLY_COMPRESSED?=
IMAGES_EN= sockets/layers.eps sockets/sain.eps sockets/sainfill.eps sockets/sainlsb.eps sockets/sainmsb.eps sockets/sainserv.eps sockets/serv.eps sockets/serv2.eps sockets/slayers.eps
#
# SRCS lists the individual SGML files that make up the document. Changes
# SRCS lists the individual XML files that make up the document. Changes
# to any of these files will force a rebuild
#
# SGML content
# XML content
SRCS= book.xml
SRCS+= introduction/chapter.xml
SRCS+= ipv6/chapter.xml

View file

@ -786,6 +786,254 @@ Debugger (msg=0xf01b0383 "Boot flags requested debugger")
stack, and do a backtrace with <command>where</command>.</para>
</sect1>
<sect1 id="kerneldebug-dcons">
<title>Kernel debugging with Dcons</title>
<para>&man.dcons.4; is a very simple console driver that is
not directly connected with any physical devices. It just reads
and writes characters from and to a buffer in a kernel or
loader. Due to its simple nature, it is very useful for kernel
debugging, especially with a &firewire; device. Currently, &os;
provides two ways to interact with the buffer from outside of
the kernel using &man.dconschat.8;.</para>
<sect2>
<title>Dcons over &firewire;</title>
<para>Most &firewire; (IEEE1394) host controllers are
based on the <acronym>OHCI</acronym> specification that
supports physical access to the host memory. This means that
once the host controller is initialized, we can access the
host memory without the help of software (kernel). We can
exploit this facility for interaction with &man.dcons.4;.
&man.dcons.4; provides similar functionality as a serial
console. It emulates two serial ports, one for the console
and <acronym>DDB</acronym>, the other for
<acronym>GDB</acronym>. Because remote memory access is fully
handled by the hardware, the &man.dcons.4; buffer is
accessible even when the system crashes.</para>
<para>&firewire; devices are not limited to those
integrated into motherboards. <acronym>PCI</acronym> cards
exist for desktops, and a cardbus interface can be purchased
for laptops.</para>
<sect3>
<title>Enabling &firewire; and Dcons support on the target
machine</title>
<para>To enable &firewire; and Dcons support in the kernel of
the <emphasis>target machine</emphasis>:</para>
<itemizedlist>
<listitem>
<para>Make sure your kernel supports
<literal>dcons</literal>, <literal>dcons_crom</literal>
and <literal>firewire</literal>.
<literal>Dcons</literal> should be statically linked
with the kernel. For <literal>dcons_crom</literal> and
<literal>firewire</literal>, modules should be
OK.</para>
</listitem>
<listitem>
<para>Make sure physical <acronym>DMA</acronym> is enabled.
You may need to add
<literal>hw.firewire.phydma_enable=1</literal> to
<filename>/boot/loader.conf</filename>.</para>
</listitem>
<listitem>
<para>Add options for debugging.</para>
</listitem>
<listitem>
<para>Add <literal>dcons_gdb=1</literal> in
<filename>/boot/loader.conf</filename> if you use GDB
over &firewire;.</para>
</listitem>
<listitem>
<para>Enable <literal>dcons</literal> in
<filename>/etc/ttys</filename>.</para>
</listitem>
<listitem>
<para>Optionally, to force <literal>dcons</literal> to
be the high-level console, add
<literal>hw.firewire.dcons_crom.force_console=1</literal>
to <filename>loader.conf</filename>.</para>
</listitem>
</itemizedlist>
<para>To enable &firewire; and Dcons support in &man.loader.8;
on i386 or amd64:</para>
<para>Add
<literal>LOADER_FIREWIRE_SUPPORT=YES</literal> in
<filename>/etc/make.conf</filename> and rebuild
&man.loader.8;:</para>
<screen>&prompt.root; <userinput>cd /sys/boot/i386 &amp;&amp; make clean &amp;&amp; make &amp;&amp; make install</userinput></screen>
<para>To enable &man.dcons.4; as an active low-level
console, add <literal>boot_multicons="YES"</literal> to
<filename>/boot/loader.conf</filename>.</para>
<para>Here are a few configuration examples. A sample kernel
configuration file would contain:</para>
<screen>device dcons
device dcons_crom
options KDB
options DDB
options GDB
options ALT_BREAK_TO_DEBUGGER</screen>
<para>And a sample <filename>/boot/loader.conf</filename>
would contain:</para>
<screen>dcons_crom_load="YES"
dcons_gdb=1
boot_multicons="YES"
hw.firewire.phydma_enable=1
hw.firewire.dcons_crom.force_console=1</screen>
</sect3>
<sect3>
<title>Enabling &firewire; and Dcons support on the host
machine</title>
<para>To enable &firewire; support in the kernel on the
<emphasis>host machine</emphasis>:</para>
<screen>&prompt.root; <userinput>kldload firewire</userinput></screen>
<para>Find out the <acronym>EUI64</acronym> (the unique 64
bit identifier) of the &firewire; host controller, and
use &man.fwcontrol.8; or <command>dmesg</command> to
find the <acronym>EUI64</acronym> of the target machine.</para>
<para>Run &man.dconschat.8;, with:</para>
<screen>&prompt.root; <userinput>dconschat -e \# -br -G 12345 -t <replaceable>00-11-22-33-44-55-66-77</replaceable></userinput></screen>
<para>The following key combinations can be used once
&man.dconschat.8; is running:</para>
<informaltable pgwide="1">
<tgroup cols="2">
<tbody>
<row>
<entry>
<keycombo action="seq">
<keycap>~</keycap>
<keycap>.</keycap>
</keycombo>
</entry>
<entry>Disconnect</entry>
</row>
<row>
<entry>
<keycombo action="seq">
<keycap>~</keycap>
<keycombo action="simul">
<keycap>Ctrl</keycap>
<keycap>B</keycap>
</keycombo>
</keycombo>
</entry>
<entry>ALT BREAK</entry>
</row>
<row>
<entry>
<keycombo action="seq">
<keycap>~</keycap>
<keycombo action="simul">
<keycap>Ctrl</keycap>
<keycap>R</keycap>
</keycombo>
</keycombo>
</entry>
<entry>RESET target</entry>
</row>
<row>
<entry>
<keycombo action="seq">
<keycap>~</keycap>
<keycombo action="simul">
<keycap>Ctrl</keycap>
<keycap>Z</keycap>
</keycombo>
</keycombo>
</entry>
<entry>Suspend dconschat</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>Attach remote <acronym>GDB</acronym> by starting
&man.kgdb.1; with a remote debugging session:</para>
<screen><userinput>kgdb -r :12345 kernel</userinput></screen>
</sect3>
<sect3>
<title>Some general tips</title>
<para>Here are some general tips:</para>
<para>To take full advantage of the speed of &firewire;,
disable other slow console drivers:</para>
<screen>&prompt.root; conscontrol delete ttyd0 # serial console
&prompt.root; conscontrol delete consolectl # video/keyboard</screen>
<para>There exists a <acronym>GDB</acronym> mode for
&man.emacs.1;; this is what you will need to add to your
<filename>.emacs</filename>:</para>
<screen><userinput>(setq gud-gdba-command-name "kgdb -a -a -a -r :12345")
(setq gdb-many-windows t)
(xterm-mouse-mode 1)
M-x gdba</userinput></screen>
<para>And for <acronym>DDD</acronym> (<filename>devel/ddd</filename>):</para>
<screen># remote serial protocol
LANG=C ddd --debugger kgdb -r :12345 kernel
# live core debug
LANG=C ddd --debugger kgdb kernel /dev/fwmem0.2</screen>
</sect3>
</sect2>
<sect2>
<title>Dcons with KVM</title>
<para>We can directly read the &man.dcons.4; buffer via
<filename>/dev/mem</filename> for live systems, and in the
core dump for crashed systems. These give you similar output
to <command>dmesg -a</command>, but the &man.dcons.4; buffer
includes more information.</para>
<sect3>
<title>Using Dcons with KVM</title>
<para>To use &man.dcons.4; with <acronym>KVM</acronym>:</para>
<para>Dump a &man.dcons.4; buffer of a live system:</para>
<screen>&prompt.root; <userinput>dconschat -1</userinput></screen>
<para>Dump a &man.dcons.4; buffer of a crash dump:</para>
<screen>&prompt.root; <userinput>dconschat -1 -M vmcore.XX</userinput></screen>
<para>Live core debugging can be done via:</para>
<screen>&prompt.root; <userinput>fwcontrol -m target_eui64</userinput>
&prompt.root; <userinput>kgdb kernel /dev/fwmem0.2</userinput></screen>
</sect3>
</sect2>
</sect1>
<sect1 id="kerneldebug-options">
<title>Glossary of Kernel Options for Debugging</title>

View file

@ -142,161 +142,12 @@
key issue in the decisions.</para>
<note>
<para>Because of some unfortunate design limitations with the <acronym role="Revision Control System">RCS</acronym> file
format and the use of vendor branches, minor, trivial and/or
<para>Because it makes it harder to import future versions
minor, trivial and/or
cosmetic changes are <emphasis>strongly discouraged</emphasis> on
files that are still tracking the vendor branch. <quote>Spelling
fixes</quote> are explicitly included here under the
<quote>cosmetic</quote> category and are to be avoided.
The repository bloat impact from a single character
change can be rather dramatic.</para>
files that are still tracking the vendor branch.</para>
</note>
<sect2 id="vendor-import-cvs">
<title>Vendor Imports with CVS</title>
<para>The <application>file</application> utility, used to identify
the format of a file, will be used as example of how this model
works:</para>
<para><filename>src/contrib/file</filename> contains the source as
distributed by the maintainers of this package. Parts that are entirely
not applicable for &os; can be removed. In the case of &man.file.1;, the
<filename>python</filename> subdirectory and files with the <filename>lt</filename>
prefix were eliminated before the import, amongst others.</para>
<para><filename>src/lib/libmagic</filename> contains a <application>bmake</application> style
<filename>Makefile</filename> that uses the standard
<filename>bsd.lib.mk</filename> makefile rules to produce the library
and install the documentation.</para>
<para><filename>src/usr.bin/file</filename> contains a <application>bmake</application> style
<filename>Makefile</filename> which will produce and install the
<command>file</command> program and its associated man-pages using the
standard <filename>bsd.prog.mk</filename> rules.</para>
<para>The important thing here is that the
<filename>src/contrib/file</filename> directory is created according to
the rules: it is supposed to contain the sources as distributed (on a
proper vendor-branch and without <acronym>RCS</acronym> keyword expansion) with as few
FreeBSD-specific changes as possible. If there are any doubts on
how to go about it, it is imperative that you ask first and not blunder
ahead and hope it <quote>works out</quote>.</para>
<para>Because of the previously mentioned design limitations with
vendor branches, it is required that <quote>official</quote> patches from
the vendor be applied to the original distributed sources and the result
re-imported onto the vendor branch again. Official patches should never
be patched into the FreeBSD checked out version and <quote>committed</quote>, as this
destroys the vendor branch coherency and makes importing future versions
rather difficult as there will be conflicts.</para>
<para>Since many packages contain files that are meant for compatibility
with other architectures and environments than FreeBSD, it is
permissible to remove parts of the distribution tree that are of no
interest to FreeBSD in order to save space. Files containing copyright
notices and release-note kind of information applicable to the remaining
files shall <emphasis>not</emphasis> be removed.</para>
<para>If it seems easier, the <command>bmake</command>
<filename>Makefile</filename>s can be produced from the dist tree
automatically by some utility, something which would hopefully make it
even easier to upgrade to a new version. If this is done, be sure to
check in such utilities (as necessary) in the
<filename>src/tools</filename> directory along with the port itself so
that it is available to future maintainers.</para>
<para>In the <filename>src/contrib/file</filename> level directory, a file
called <filename>FREEBSD-upgrade</filename> should be added and it
should state things like:</para>
<itemizedlist>
<listitem>
<para>Which files have been left out.</para>
</listitem>
<listitem>
<para>Where the original distribution was obtained from and/or the
official master site.</para>
</listitem>
<listitem>
<para>Where to send patches back to the original authors.</para>
</listitem>
<listitem>
<para>Perhaps an overview of the FreeBSD-specific changes that have
been made.</para>
</listitem>
</itemizedlist>
<para>Example wording from
<filename>src/contrib/groff/FREEBSD-upgrade</filename> is
below:</para>
<programlisting>&dollar;FreeBSD: src/contrib/groff/FREEBSD-upgrade,v 1.5.12.1 2005/11/15 22:06:18 ru Exp $
This directory contains virgin copies of the original distribution files
on a "vendor" branch. Do not, under any circumstances, attempt to upgrade
the files in this directory via patches and a cvs commit.
To upgrade to a newer version of groff, when it is available:
1. Unpack the new version into an empty directory.
[Do not make ANY changes to the files.]
2. Use the command:
cvs import -m 'Virgin import of FSF groff v&lt;version&gt;' \
src/contrib/groff FSF v&lt;version&gt;
For example, to do the import of version 1.19.2, I typed:
cvs import -m 'Virgin import of FSF groff v1.19.2' \
src/contrib/groff FSF v1_19_2
3. Follow the instructions printed out in step 2 to resolve any
conflicts between local FreeBSD changes and the newer version.
Do not, under any circumstances, deviate from this procedure.
To make local changes to groff, simply patch and commit to the main
branch (aka HEAD). Never make local changes on the FSF branch.
All local changes should be submitted to Werner Lemberg &lt;wl@gnu.org&gt; or
Ted Harding &lt;ted.harding@nessie.mcc.ac.uk&gt; for inclusion in the next
vendor release.
ru@FreeBSD.org - 20 October 2005</programlisting>
<para>Another approach my also be taken for the list of files to be
excluded, which is especially useful when the list is large or
complicated or where imports happen frequently. By creating a
file <filename>FREEBSD-Xlist</filename> in the same directory the
vendor source is imported into, containing a list of filename
patterns to be excluded one per line, future imports can often
performed with:</para>
<screen>&prompt.user; <userinput><command>tar</command> <option>-X</option> <filename>FREEBSD-Xlist</filename> <option>-xzf</option> <filename><replaceable>vendor-source.tgz</replaceable></filename></userinput></screen>
<para>An example of a <filename>FREEBSD-Xlist</filename> file, from
<filename>src/contrib/tcsh</filename>, is here:</para>
<programlisting>*/BUGS
*/config/a*
*/config/bs2000
*/config/bsd
*/config/bsdreno
*/config/[c-z]*
*/tests
*/win32</programlisting>
<note>
<para>Please do not import <filename>FREEBSD-upgrade</filename> or
<filename>FREEBSD-Xlist</filename> with the contributed source.
Rather you should add these files after the initial
import.</para>
</note>
</sect2>
<sect2 id="vendor-import-svn">
<sect2info>
<authorgroup>

View file

@ -349,9 +349,11 @@
<sect1 id="tools-compiling">
<title>Compiling with <command>cc</command></title>
<para>This section deals only with the GNU compiler for C and C++,
since that comes with the base FreeBSD system. It can be
invoked by either <command>cc</command> or <command>gcc</command>. The
<para>This section deals with the <application>gcc</application>
and <application>clang</application> compilers for C and C++,
since they come with the &os; base system. Starting with
&os;&nbsp;10.X <command>clang</command> is installed as
<command>cc</command>. The
details of producing a program with an interpreter vary
considerably between interpreters, and are usually well covered
in the documentation and on-line help for the
@ -377,14 +379,7 @@
<step>
<para>Convert the source code into assembly
language&mdash;this is very close to machine code, but still
understandable by humans. Allegedly.
<footnote>
<para>To be strictly accurate, <command>cc</command> converts the
source code into its own, machine-independent
<firstterm>p-code</firstterm> instead of assembly language at
this stage.</para>
</footnote></para>
understandable by humans. Allegedly.</para>
</step>
<step>
@ -537,13 +532,7 @@
an executable that runs faster than normal. You can add a
number after the <option>-O</option> to specify a higher
level of optimization, but this often exposes bugs in the
compiler's optimizer. For instance, the version of
<command>cc</command> that comes with the 2.1.0 release of
FreeBSD is known to produce bad code with the
<option>-O2</option> option in some circumstances.</para>
<para>Optimization is usually only turned on when compiling
a release version.</para>
compiler's optimizer.</para>
<informalexample>
<screen>&prompt.user; <userinput>cc -O -o foobar foobar.c</userinput>

View file

@ -16,11 +16,11 @@ INSTALL_ONLY_COMPRESSED?=
WITH_BIBLIOXREF_TITLE?=YES
#
# SRCS lists the individual SGML files that make up the document. Changes
# SRCS lists the individual XML files that make up the document. Changes
# to any of these files will force a rebuild
#
# SGML content
# XML content
SRCS= book.xml
URL_RELPREFIX?= ../../../..

File diff suppressed because it is too large Load diff

View file

@ -14,11 +14,11 @@ INSTALL_COMPRESSED?= gz
INSTALL_ONLY_COMPRESSED?=
#
# SRCS lists the individual SGML files that make up the document. Changes
# SRCS lists the individual XML files that make up the document. Changes
# to any of these files will force a rebuild
#
# SGML content
# XML content
SRCS= book.xml
SRCS+= overview/chapter.xml
SRCS+= psgml-mode/chapter.xml

View file

@ -113,12 +113,12 @@
example is preferred.</para>
<informalexample>
<para>Use the command <command>cvsup</command> to update
<para>Use the command <command>svn</command> to update
your sources.</para>
</informalexample>
<informalexample>
<para>Use <command>cvsup</command> to update your
<para>Use <command>svn</command> to update your
sources.</para>
</informalexample>

View file

@ -243,11 +243,11 @@ IMAGES_LIB+= callouts/14.png
IMAGES_LIB+= callouts/15.png
#
# SRCS lists the individual SGML files that make up the document. Changes
# SRCS lists the individual XML files that make up the document. Changes
# to any of these files will force a rebuild
#
# SGML content
# XML content
SRCS+= audit/chapter.xml
SRCS+= book.xml
SRCS+= bsdinstall/chapter.xml
@ -296,8 +296,8 @@ SYMLINKS= ${DESTDIR} index.html handbook.html
# Turn on all the chapters.
CHAPTERS?= ${SRCS:M*chapter.xml}
SGMLFLAGS+= ${CHAPTERS:S/\/chapter.xml//:S/^/-i chap./}
SGMLFLAGS+= -i chap.freebsd-glossary
XMLFLAGS+= ${CHAPTERS:S/\/chapter.xml//:S/^/-i chap./}
XMLFLAGS+= -i chap.freebsd-glossary
pgpkeyring: pgpkeys/chapter.xml
${JADE} -V nochunks ${OTHERFLAGS} ${JADEOPTS} -d ${DSLPGP} -t sgml ${XMLDECL} ${MASTERDOC}

View file

@ -44,10 +44,6 @@
<para>How to set up network address translation.</para>
</listitem>
<listitem>
<para>How to connect two computers via PLIP.</para>
</listitem>
<listitem>
<para>How to set up IPv6 on a FreeBSD machine.</para>
</listitem>
@ -355,7 +351,7 @@ host2.example.com link#1 UC 0 0
<para>Remember, since the PPP interface is using an address on
the ISP's local network for your side of the connection,
routes for any other machines on the ISP's local network will
be automatically generated. Hence, you will already know how
be automatically generated. Hence, you will already know how
to reach the <hostid>T1-GW</hostid> machine, so there is no
need for the intermediate step of sending traffic to the ISP
server.</para>
@ -390,8 +386,8 @@ host2.example.com link#1 UC 0 0
</tgroup>
</informaltable>
<para>You can easily define the default route via the
<filename>/etc/rc.conf</filename> file. In our example, on
<para>The default route can be easily defined in
<filename>/etc/rc.conf</filename>. In our example, on
the <hostid>Local2</hostid> machine, we added the following
line in <filename>/etc/rc.conf</filename>:</para>
@ -403,7 +399,7 @@ host2.example.com link#1 UC 0 0
<screen>&prompt.root; <userinput>route add default 10.20.30.1</userinput></screen>
<para>For more information on manual manipulation of network
routing tables, consult &man.route.8; manual page.</para>
routing tables, consult the &man.route.8; manual page.</para>
</sect2>
<sect2 id="network-dual-homed-hosts">
@ -573,9 +569,8 @@ default 10.0.0.1 UGS 0 49378 xl0
<para>The above example is perfect for configuring a static
route on a running system. However, one problem is that the
routing information will not persist if you reboot your &os;
machine. The way to handle the addition of a static route
is to put it in your <filename>/etc/rc.conf</filename>
file:</para>
machine. Additional static routes can be
entered in <filename>/etc/rc.conf</filename>:</para>
<programlisting># Add Internal Net 2 as a static route
static_routes="internalnet2"
@ -834,8 +829,8 @@ route_net2="-net 192.168.1.0/24 192.168.1.1"</programlisting>
<para>The first thing you need is a wireless device. The most
commonly used devices are those that use parts made by
Atheros. These devices are supported by the &man.ath.4;
driver and require the following line to be added to the
<filename>/boot/loader.conf</filename> file:</para>
driver and require the following line to be added to
<filename>/boot/loader.conf</filename>:</para>
<programlisting>if_ath_load="YES"</programlisting>
@ -879,7 +874,7 @@ route_net2="-net 192.168.1.0/24 192.168.1.1"</programlisting>
<literal>wlan_scan_sta</literal> modules; the &man.wlan.4;
module is automatically loaded with the wireless device
driver, the remaining modules must be loaded at boot time
via the <filename>/boot/loader.conf</filename> file:</para>
in <filename>/boot/loader.conf</filename>:</para>
<programlisting>wlan_scan_ap_load="YES"
wlan_scan_sta_load="YES"</programlisting>
@ -1207,7 +1202,7 @@ ifconfig_wlan0="DHCP"</programlisting>
<para>At this point, you are ready to bring up the
wireless interface:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/netif start</userinput></screen>
<screen>&prompt.root; <userinput>service netif start</userinput></screen>
<para>Once the interface is running, use
<command>ifconfig</command> to see the status of the
@ -1324,7 +1319,7 @@ ifconfig_wlan0="WPA DHCP"</programlisting>
<para>Then we can bring up the interface:</para>
<screen>&prompt.root; <userinput><filename>/etc/rc.d/netif</filename> start</userinput>
<screen>&prompt.root; <userinput><filename>service netif</filename> start</userinput>
Starting wpa_supplicant.
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 5
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 6
@ -1514,10 +1509,9 @@ wlan0: flags=8843&lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&gt; mtu 1500
<programlisting>wlans_ath0="wlan0"
ifconfig_wlan0="WPA DHCP"</programlisting>
<para>The next step is to bring up the interface with the
help of the <filename>rc.d</filename> facility:</para>
<para>The next step is to bring up the interface:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/netif start</userinput>
<screen>&prompt.root; <userinput>service netif start</userinput>
Starting wpa_supplicant.
DHCPREQUEST on wlan0 to 255.255.255.255 port 67 interval 7
DHCPREQUEST on wlan0 to 255.255.255.255 port 67 interval 15
@ -1608,7 +1602,7 @@ ifconfig_wlan0="WPA DHCP"</programlisting>
<para>The next step is to bring up the interface:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/netif start</userinput>
<screen>&prompt.root; <userinput>service netif start</userinput>
Starting wpa_supplicant.
DHCPREQUEST on wlan0 to 255.255.255.255 port 67 interval 7
DHCPREQUEST on wlan0 to 255.255.255.255 port 67 interval 15
@ -1720,7 +1714,7 @@ ifconfig_wlan0="WPA DHCP"</programlisting>
<para>Then we can bring up the interface:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/netif start</userinput>
<screen>&prompt.root; <userinput>service netif start</userinput>
Starting wpa_supplicant.
DHCPREQUEST on wlan0 to 255.255.255.255 port 67 interval 7
DHCPREQUEST on wlan0 to 255.255.255.255 port 67 interval 15
@ -2091,7 +2085,7 @@ wpa_pairwise=CCMP TKIP <co id="co-ap-wpapsk-pwise"/></programlisting>
<para>The next step is to start
<application>hostapd</application>:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/hostapd forcestart</userinput></screen>
<screen>&prompt.root; <userinput>service hostapd forcestart</userinput></screen>
<screen>&prompt.root; <userinput>ifconfig <replaceable>wlan0</replaceable></userinput>
wlan0: flags=8843&lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&gt; mtu 2290
@ -2331,13 +2325,13 @@ ubt0: Interface 0 endpoints: interrupt=0x81, bulk-in=0x82, bulk-out=0x2
ubt0: Interface 1 (alt.config 5) endpoints: isoc-in=0x83, isoc-out=0x3,
wMaxPacketSize=49, nframes=6, buffer size=294</screen>
<para>The <filename>/etc/rc.d/bluetooth</filename> script
<para>&man.service.8;
is used to start and stop the Bluetooth stack. It is a good
idea to stop the stack before unplugging the device, but it is
not (usually) fatal. When starting the stack, you will
receive output similar to the following:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/bluetooth start ubt0</userinput>
<screen>&prompt.root; <userinput>service bluetooth start ubt0</userinput>
BD_ADDR: 00:02:72:00:d4:1a
Features: 0xff 0xff 0xf 00 00 00 00 00
&lt;3-Slot&gt; &lt;5-Slot&gt; &lt;Encryption&gt; &lt;Slot offset&gt;
@ -2353,6 +2347,7 @@ Number of SCO packets: 8</screen>
<sect2>
<title>Host Controller Interface (HCI)</title>
<indexterm><primary>HCI</primary></indexterm>
<para>Host Controller Interface (HCI) provides a command
@ -2687,7 +2682,7 @@ Bluetooth Profile Descriptor List:
<para>Then the <application>sdpd</application> daemon can be
started with:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/sdpd start</userinput></screen>
<screen>&prompt.root; <userinput>service sdpd start</userinput></screen>
<para>The local server application that wants to provide
Bluetooth service to the remote clients will register service
@ -2776,7 +2771,7 @@ Bluetooth Profile Descriptor List:
<title>OBEX Object Push (OPUSH) Profile</title>
<indexterm><primary>OBEX</primary></indexterm>
<para>OBEX is a widely used protocol for simple file transfers between
<para>OBEX is a widely used protocol for simple file transfers
between mobile devices. Its main use is in infrared
communication, where it is used for generic file transfers
between notebooks or PDAs, and for sending business cards or
@ -2862,7 +2857,7 @@ rfcomm_sppd[94692]: Starting on /dev/ttyp6...</screen>
There is a HCI option to disable role switching on the local
side:</para>
<screen>&prompt.root; <userinput>hccontrol -n ubt0hci write_node_role_switch 0</userinput></screen>
<screen>&prompt.root; <userinput>hccontrol -n ubt0hci write_node_role_switch 0</userinput></screen>
</sect3>
<sect3>
@ -3480,7 +3475,7 @@ BEGEMOT-BRIDGE-MIB::begemotBridgeDefaultBridgeIf.0 s bridge2</screen>
with the IP Address of
<replaceable>10.0.0.3/24</replaceable>:</para>
<screen>&prompt.root; <userinput>ifconfig <replaceable>fxp0</replaceable> up</userinput>
<screen>&prompt.root; <userinput>ifconfig <replaceable>fxp0</replaceable> up</userinput>
&prompt.root; <userinput>ifconfig <replaceable>fxp1</replaceable> up</userinput>
&prompt.root; <userinput>ifconfig <literal>lagg<replaceable>0</replaceable></literal> create </userinput>
&prompt.root; <userinput>ifconfig <literal>lagg<replaceable>0</replaceable></literal> up laggproto lacp laggport <replaceable>fxp0</replaceable> laggport <replaceable>fxp1</replaceable> <replaceable>10.0.0.3/24</replaceable></userinput></screen>
@ -3546,7 +3541,7 @@ ifconfig_<literal>lagg<replaceable>0</replaceable></literal>="laggproto lacp lag
and assign an IP Address of
<replaceable>10.0.0.15/24</replaceable>:</para>
<screen>&prompt.root; <userinput>ifconfig <replaceable>fxp0</replaceable> up</userinput>
<screen>&prompt.root; <userinput>ifconfig <replaceable>fxp0</replaceable> up</userinput>
&prompt.root; <userinput>ifconfig <replaceable>fxp1</replaceable> up</userinput>
&prompt.root; <userinput>ifconfig <literal>lagg<replaceable>0</replaceable></literal> create</userinput>
&prompt.root; <userinput>ifconfig <literal>lagg<replaceable>0</replaceable></literal> up laggproto failover laggport <replaceable>fxp0</replaceable> laggport <replaceable>fxp1</replaceable> <replaceable>10.0.0.15/24</replaceable></userinput></screen>
@ -3555,7 +3550,7 @@ ifconfig_<literal>lagg<replaceable>0</replaceable></literal>="laggproto lacp lag
differences will be the <acronym>MAC</acronym> address and
the device names:</para>
<screen>&prompt.root; <userinput>ifconfig <literal>lagg<replaceable>0</replaceable></literal></userinput>
<screen>&prompt.root; <userinput>ifconfig <literal>lagg<replaceable>0</replaceable></literal></userinput>
lagg0: flags=8843&lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&gt; metric 0 mtu 1500
options=8&lt;VLAN_MTU&gt;
ether 00:05:5d:71:8d:b8
@ -3610,7 +3605,7 @@ ifconfig_<literal>lagg<replaceable>0</replaceable></literal>="laggproto failover
obtain the <acronym>MAC</acronym> address from the wired
interface:</para>
<screen>&prompt.root; <userinput>ifconfig <replaceable>bge0</replaceable></userinput>
<screen>&prompt.root; <userinput>ifconfig <replaceable>bge0</replaceable></userinput>
bge0: flags=8843&lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&gt; metric 0 mtu 1500
options=19b&lt;RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4&gt;
ether 00:21:70:da:ae:37
@ -3626,19 +3621,19 @@ bge0: flags=8843&lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&gt; metric 0 mtu 1500
Now, we change the underlying wireless interface,
<replaceable>iwn0</replaceable>:</para>
<screen>&prompt.root; <userinput>ifconfig <replaceable>iwn0</replaceable> ether <replaceable>00:21:70:da:ae:37</replaceable></userinput></screen>
<screen>&prompt.root; <userinput>ifconfig <replaceable>iwn0</replaceable> ether <replaceable>00:21:70:da:ae:37</replaceable></userinput></screen>
<para>Bring up the wireless interface but don't set up any IP
<para>Bring the wireless interface up, but do not set an IP
address on it:</para>
<screen>&prompt.root; <userinput>ifconfig <replaceable>wlan0</replaceable> create wlandev <replaceable>iwn0</replaceable> ssid <replaceable>my_router</replaceable> up</userinput></screen>
<screen>&prompt.root; <userinput>ifconfig <replaceable>wlan0</replaceable> create wlandev <replaceable>iwn0</replaceable> ssid <replaceable>my_router</replaceable> up</userinput></screen>
<para>Bring the <replaceable>bge0</replaceable> interface up.
Create the &man.lagg.4; interface with
<replaceable>bge0</replaceable> as master, and failover to
<replaceable>wlan0</replaceable> if necessary:</para>
<screen>&prompt.root; <userinput>ifconfig <replaceable>bge0</replaceable> up</userinput>
<screen>&prompt.root; <userinput>ifconfig <replaceable>bge0</replaceable> up</userinput>
&prompt.root; <userinput>ifconfig <literal>lagg<replaceable>0</replaceable></literal> create</userinput>
&prompt.root; <userinput>ifconfig <literal>lagg<replaceable>0</replaceable></literal> up laggproto failover laggport <replaceable>bge0</replaceable> laggport <replaceable>wlan0</replaceable></userinput></screen>
@ -3646,7 +3641,7 @@ bge0: flags=8843&lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&gt; metric 0 mtu 1500
differences will be the <acronym>MAC</acronym> address and
the device names:</para>
<screen>&prompt.root; <userinput>ifconfig <literal>lagg<replaceable>0</replaceable></literal></userinput>
<screen>&prompt.root; <userinput>ifconfig <literal>lagg<replaceable>0</replaceable></literal></userinput>
lagg0: flags=8843&lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&gt; metric 0 mtu 1500
options=8&lt;VLAN_MTU&gt;
ether 00:21:70:da:ae:37
@ -4169,7 +4164,7 @@ margaux:ha=0123456789ab:tc=.def100</programlisting>
<filename>/etc/rc.conf</filename> file for this command
to execute correctly:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/inetd restart</userinput></screen>
<screen>&prompt.root; <userinput>service inetd restart</userinput></screen>
</step>
</procedure>
@ -4208,7 +4203,7 @@ margaux:ha=0123456789ab:tc=.def100</programlisting>
<filename>/etc/rc.conf</filename> at the first step, you
probably want to reboot instead.</para>
<screen>&prompt.root; <userinput>/etc/rc.d/mountd restart</userinput></screen>
<screen>&prompt.root; <userinput>service mountd restart</userinput></screen>
</step>
</procedure>
</sect3>
@ -4442,7 +4437,7 @@ cd /usr/src/etc; make distribution</programlisting>
<step>
<para>Restart the NFS server:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/nfsd restart</userinput></screen>
<screen>&prompt.root; <userinput>service nfsd restart</userinput></screen>
</step>
<step>
@ -4460,7 +4455,7 @@ cd /usr/src/etc; make distribution</programlisting>
<step>
<para>Restart inetd:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/inetd restart</userinput></screen>
<screen>&prompt.root; <userinput>service inetd restart</userinput></screen>
</step>
<step>
@ -4647,7 +4642,7 @@ myhost.example.com:/b/tftpboot/FreeBSD/install / nfs ro
severs can be on separate machines.</para>
<figure>
<title>PXE Booting process with NFS root mount</title>
<title>PXE Booting Process with NFS Root Mount</title>
<mediaobjectco>
<imageobjectco>
@ -4865,7 +4860,7 @@ Received 264951 bytes in 0.1 seconds</screen>
<para>The main advantage of using a TA to connect to an Internet
Provider is that you can do Dynamic PPP. As IP address space
becomes more and more scarce, most providers are not willing
to provide you with a static IP anymore. Most stand-alone
to provide you with a static IP any more. Most stand-alone
routers are not able to accommodate dynamic IP
allocation.</para>
@ -4921,9 +4916,10 @@ Received 264951 bytes in 0.1 seconds</screen>
stand-alone router, and with a simple 386 FreeBSD box driving
it, probably more flexible.</para>
<para>The choice of synchronous card/TA v.s. stand-alone router
is largely a religious issue. There has been some discussion
of this in the mailing lists. We suggest you search the
<para>The choice of synchronous card/TA versus stand-alone
router is largely a religious issue. There has been some
discussion of this in the mailing lists. We suggest you
search the
<ulink url="&url.base;/search/index.html">archives</ulink> for
the complete discussion.</para>
</sect2>
@ -5420,209 +5416,6 @@ redirect_port tcp 192.168.0.3:80 80</programlisting>
</sect2>
</sect1>
<sect1 id="network-plip">
<title>Parallel Line IP (PLIP)</title>
<indexterm><primary>PLIP</primary></indexterm>
<indexterm>
<primary>Parallel Line IP</primary>
<see>PLIP</see>
</indexterm>
<para>PLIP lets us run TCP/IP between parallel ports. It is
useful on machines without network cards, or to install on
laptops. In this section, we will discuss:</para>
<itemizedlist>
<listitem>
<para>Creating a parallel (laplink) cable.</para>
</listitem>
<listitem>
<para>Connecting two computers with PLIP.</para>
</listitem>
</itemizedlist>
<sect2 id="network-create-parallel-cable">
<title>Creating a Parallel Cable</title>
<para>You can purchase a parallel cable at most computer supply
stores. If you cannot do that, or you just want to know how
it is done, the following table shows how to make one out of a
normal parallel printer cable.</para>
<table frame="none">
<title>Wiring a Parallel Cable for Networking</title>
<tgroup cols="5">
<thead>
<row>
<entry>A-name</entry>
<entry>A-End</entry>
<entry>B-End</entry>
<entry>Descr.</entry>
<entry>Post/Bit</entry>
</row>
</thead>
<tbody>
<row>
<entry><literallayout>DATA0
-ERROR</literallayout></entry>
<entry><literallayout>2
15</literallayout></entry>
<entry><literallayout>15
2</literallayout></entry>
<entry>Data</entry>
<entry><literallayout>0/0x01
1/0x08</literallayout></entry>
</row>
<row>
<entry><literallayout>DATA1
+SLCT</literallayout></entry>
<entry><literallayout>3
13</literallayout></entry>
<entry><literallayout>13
3</literallayout></entry>
<entry>Data</entry>
<entry><literallayout>0/0x02
1/0x10</literallayout></entry>
</row>
<row>
<entry><literallayout>DATA2
+PE</literallayout></entry>
<entry><literallayout>4
12</literallayout></entry>
<entry><literallayout>12
4</literallayout></entry>
<entry>Data</entry>
<entry><literallayout>0/0x04
1/0x20</literallayout></entry>
</row>
<row>
<entry><literallayout>DATA3
-ACK</literallayout></entry>
<entry><literallayout>5
10</literallayout></entry>
<entry><literallayout>10
5</literallayout></entry>
<entry>Strobe</entry>
<entry><literallayout>0/0x08
1/0x40</literallayout></entry>
</row>
<row>
<entry><literallayout>DATA4
BUSY</literallayout></entry>
<entry><literallayout>6
11</literallayout></entry>
<entry><literallayout>11
6</literallayout></entry>
<entry>Data</entry>
<entry><literallayout>0/0x10
1/0x80</literallayout></entry>
</row>
<row>
<entry>GND</entry>
<entry>18-25</entry>
<entry>18-25</entry>
<entry>GND</entry>
<entry>-</entry>
</row>
</tbody>
</tgroup>
</table>
</sect2>
<sect2 id="network-plip-setup">
<title>Setting Up PLIP</title>
<para>First, you have to get a laplink cable. Then, confirm
that both computers have a kernel with &man.lpt.4; driver
support:</para>
<screen>&prompt.root; <userinput>grep lp /var/run/dmesg.boot</userinput>
lpt0: &lt;Printer&gt; on ppbus0
lpt0: Interrupt-driven port</screen>
<para>The parallel port must be an interrupt driven port, you
should have lines similar to the following in your in the
<filename>/boot/device.hints</filename> file:</para>
<programlisting>hint.ppc.0.at="isa"
hint.ppc.0.irq="7"</programlisting>
<para>Then check if the kernel configuration file has a
<literal>device plip</literal> line or if the
<filename>plip.ko</filename> kernel module is loaded. In both
cases the parallel networking interface should appear when you
use the &man.ifconfig.8; command to display it:</para>
<screen>&prompt.root; <userinput>ifconfig plip0</userinput>
plip0: flags=8810&lt;POINTOPOINT,SIMPLEX,MULTICAST&gt; mtu 1500</screen>
<para>Plug the laplink cable into the parallel interface on
both computers.</para>
<para>Configure the network interface parameters on both sites
as <username>root</username>. For example, if you want to
connect the host <hostid>host1</hostid> with another machine
<hostid>host2</hostid>:</para>
<programlisting> host1 &lt;-----&gt; host2
IP Address 10.0.0.1 10.0.0.2</programlisting>
<para>Configure the interface on <hostid>host1</hostid> by
doing:</para>
<screen>&prompt.root; <userinput>ifconfig plip0 10.0.0.1 10.0.0.2</userinput></screen>
<para>Configure the interface on <hostid>host2</hostid> by
doing:</para>
<screen>&prompt.root; <userinput>ifconfig plip0 10.0.0.2 10.0.0.1</userinput></screen>
<para>You now should have a working connection. Please read the
manual pages &man.lp.4; and &man.lpt.4; for more
details.</para>
<para>You should also add both hosts to
<filename>/etc/hosts</filename>:</para>
<programlisting>127.0.0.1 localhost.my.domain localhost
10.0.0.1 host1.my.domain host1
10.0.0.2 host2.my.domain host2</programlisting>
<para>To confirm the connection works, go to each host and ping
the other. For example, on <hostid>host1</hostid>:</para>
<screen>&prompt.root; <userinput>ifconfig plip0</userinput>
plip0: flags=8851&lt;UP,POINTOPOINT,RUNNING,SIMPLEX,MULTICAST&gt; mtu 1500
inet 10.0.0.1 --&gt; 10.0.0.2 netmask 0xff000000
&prompt.root; <userinput>netstat -r</userinput>
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
host2 host1 UH 0 0 plip0
&prompt.root; <userinput>ping -c 4 host2</userinput>
PING host2 (10.0.0.2): 56 data bytes
64 bytes from 10.0.0.2: icmp_seq=0 ttl=255 time=2.774 ms
64 bytes from 10.0.0.2: icmp_seq=1 ttl=255 time=2.530 ms
64 bytes from 10.0.0.2: icmp_seq=2 ttl=255 time=2.556 ms
64 bytes from 10.0.0.2: icmp_seq=3 ttl=255 time=2.714 ms
--- host2 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max/stddev = 2.530/2.643/2.774/0.103 ms</screen>
</sect2>
</sect1>
<sect1 id="network-ipv6">
<sect1info>
<authorgroup>
@ -5665,7 +5458,7 @@ round-trip min/avg/max/stddev = 2.530/2.643/2.774/0.103 ms</screen>
<itemizedlist>
<listitem>
<para>Running out of addresses. Today this is not so much of
a concern anymore since RFC1918 private address space
a concern any more, since RFC1918 private address space
(<hostid role="ipaddr">10.0.0.0/8</hostid>,
<hostid role="ipaddr">172.16.0.0/12</hostid>, and
<hostid role="ipaddr">192.168.0.0/16</hostid>) and Network
@ -5871,7 +5664,7 @@ round-trip min/avg/max/stddev = 2.530/2.643/2.774/0.103 ms</screen>
<para>Often an address will have long substrings of all zeros
therefore one such substring per address can be abbreviated by
<quote>::</quote>. Also up to three leading <quote>0</quote>s
per hexquad can be omitted. For example
per hexquad can be omitted. For example
<hostid role="ip6addr">fe80::1</hostid> corresponds to the
canonical form <hostid
role="ip6addr">fe80:0000:0000:0000:0000:0000:0000:0001</hostid>.</para>
@ -5984,7 +5777,8 @@ round-trip min/avg/max/stddev = 2.530/2.643/2.774/0.103 ms</screen>
<para>To statically assign an IP address such as <hostid
role="ip6addr">2001:471:1f11:251:290:27ff:fee0:2093</hostid>,
to your <devicename>fxp0</devicename> interface, add the
following for &os;&nbsp;9.<replaceable>x</replaceable>:</para>
following for
&os;&nbsp;9.<replaceable>x</replaceable>:</para>
<programlisting>ifconfig_fxp0_ipv6="inet6 2001:471:1f11:251:290:27ff:fee0:2093 prefixlen <replaceable>64</replaceable>"</programlisting>
@ -6037,6 +5831,7 @@ round-trip min/avg/max/stddev = 2.530/2.643/2.774/0.103 ms</screen>
earlier, add:</para>
<programlisting>ipv6_ifconfig_gif0="<replaceable>MY_ASSIGNED_IPv6_TUNNEL_ENDPOINT_ADDR</replaceable>"</programlisting>
<para>Then all you have to do is set the default route for
IPv6. This is the other side of the IPv6 tunnel:</para>
@ -6378,7 +6173,7 @@ route_hostD="192.168.173.4 hatm0 0 102 llc/snap ubr"</programlisting>
status of preemption suppression. Preemption can be
suppressed if link on an interface is down. A value of
<literal>0</literal>, means that preemption is not
suppressed. Every problem increments this
suppressed. Every problem increments this
<acronym>OID</acronym>.</entry>
</row>
</tbody>

View file

@ -44,18 +44,19 @@ requirements. -->
changes, and file and network access. These log records can be
invaluable for live system monitoring, intrusion detection, and
postmortem analysis. &os; implements &sun;'s published
<acronym>BSM</acronym> API and file format, and is interoperable with
both &sun;'s &solaris; and &apple;'s &macos; X audit implementations.</para>
<acronym>BSM</acronym> API and file format, and is interoperable
with both &sun;'s &solaris; and &apple;'s &macos; X audit
implementations.</para>
<para>This chapter focuses on the installation and configuration of
Event Auditing. It explains audit policies, and provides an example
audit configuration.</para>
<para>This chapter focuses on the installation and configuration
of Event Auditing. It explains audit policies, and provides an
example audit configuration.</para>
<para>After reading this chapter, you will know:</para>
<itemizedlist>
<listitem>
<para>What Event Auditing is and how it works.</para>
<para>What Event Auditing is and how it works.</para>
</listitem>
<listitem>
@ -64,8 +65,8 @@ requirements. -->
</listitem>
<listitem>
<para>How to review the audit trail using the audit reduction and
review tools.</para>
<para>How to review the audit trail using the audit reduction
and review tools.</para>
</listitem>
</itemizedlist>
@ -90,59 +91,60 @@ requirements. -->
</itemizedlist>
<warning>
<para>The audit facility has some known limitations which include
that not all security-relevant system events are currently auditable,
and that some login mechanisms, such as X11-based display managers
and third party daemons, do not properly configure auditing for user
login sessions.</para>
<para>The audit facility has some known limitations which
include that not all security-relevant system events are
currently auditable, and that some login mechanisms, such as
X11-based display managers and third party daemons, do not
properly configure auditing for user login sessions.</para>
<para>The security event auditing facility is able to generate very
detailed logs of system activity: on a busy system, trail file
data can be very large when configured for high detail, exceeding
gigabytes a week in some configurations. Administrators should take
into account disk space requirements associated with high volume
audit configurations. For example, it may be desirable to dedicate
a file system to the <filename>/var/audit</filename> tree so that
other file systems are not affected if the audit file system becomes
<para>The security event auditing facility is able to generate
very detailed logs of system activity: on a busy system, trail
file data can be very large when configured for high detail,
exceeding gigabytes a week in some configurations.
Administrators should take into account disk space
requirements associated with high volume audit configurations.
For example, it may be desirable to dedicate a file system to
the <filename>/var/audit</filename> tree so that other file
systems are not affected if the audit file system becomes
full.</para>
</warning>
</sect1>
<sect1 id="audit-inline-glossary">
<title>Key Terms in This Chapter</title>
<para>Before reading this chapter, a few key audit-related terms must be
explained:</para>
<para>Before reading this chapter, a few key audit-related terms
must be explained:</para>
<itemizedlist>
<listitem>
<para><emphasis>event</emphasis>: An auditable event is any event
that can be logged using the audit subsystem.
<para><emphasis>event</emphasis>: An auditable event is any
event that can be logged using the audit subsystem.
Examples of security-relevant events include the creation of
a file, the building of a network connection, or a user logging in.
Events are either <quote>attributable</quote>,
a file, the building of a network connection, or a user
logging in. Events are either <quote>attributable</quote>,
meaning that they can be traced to an authenticated user, or
<quote>non-attributable</quote> if they cannot be.
Examples of non-attributable events are any events that occur
before authentication in the login process, such as bad password
<quote>non-attributable</quote> if they cannot be. Examples
of non-attributable events are any events that occur before
authentication in the login process, such as bad password
attempts.</para>
</listitem>
<listitem>
<para><emphasis>class</emphasis>: Event classes are named sets of
related events, and are used in selection expressions. Commonly
used classes of events include <quote>file creation</quote> (fc),
<quote>exec</quote> (ex) and <quote>login_logout</quote>
(lo).</para>
<para><emphasis>class</emphasis>: Event classes are named sets
of related events, and are used in selection expressions.
Commonly used classes of events include
<quote>file creation</quote> (fc), <quote>exec</quote> (ex)
and <quote>login_logout</quote> (lo).</para>
</listitem>
<listitem>
<para><emphasis>record</emphasis>: A record is an audit log entry
describing a security event. Records contain a record event type,
information on the subject (user) performing the action,
date and time information, information on any objects or
arguments, and a success or failure condition.</para>
<para><emphasis>record</emphasis>: A record is an audit log
entry describing a security event. Records contain a record
event type, information on the subject (user) performing the
action, date and time information, information on any
objects or arguments, and a success or failure
condition.</para>
</listitem>
<listitem>
@ -156,30 +158,31 @@ requirements. -->
<listitem>
<para><emphasis>selection expression</emphasis>: A selection
expression is a string containing a list of prefixes and audit
event class names used to match events.</para>
expression is a string containing a list of prefixes and
audit event class names used to match events.</para>
</listitem>
<listitem>
<para><emphasis>preselection</emphasis>: The process by which the
system identifies which events are of interest to the administrator
in order to avoid generating audit records describing events that
are not of interest. The preselection configuration
uses a series of selection expressions to identify which classes
of events to audit for which users, as well as global settings
that apply to both authenticated and unauthenticated
processes.</para>
<para><emphasis>preselection</emphasis>: The process by which
the system identifies which events are of interest to the
administrator in order to avoid generating audit records
describing events that are not of interest. The
preselection configuration uses a series of selection
expressions to identify which classes of events to audit for
which users, as well as global settings that apply to both
authenticated and unauthenticated processes.</para>
</listitem>
<listitem>
<para><emphasis>reduction</emphasis>: The process by which records
from existing audit trails are selected for preservation, printing,
or analysis. Likewise, the process by which undesired audit
records are removed from the audit trail. Using reduction,
administrators can implement policies for the preservation of audit
data. For example, detailed audit trails might be kept for one
month, but after that, trails might be reduced in order to preserve
only login information for archival purposes.</para>
<para><emphasis>reduction</emphasis>: The process by which
records from existing audit trails are selected for
preservation, printing, or analysis. Likewise, the process
by which undesired audit records are removed from the audit
trail. Using reduction, administrators can implement
policies for the preservation of audit data. For example,
detailed audit trails might be kept for one month, but after
that, trails might be reduced in order to preserve only
login information for archival purposes.</para>
</listitem>
</itemizedlist>
</sect1>
@ -187,11 +190,11 @@ requirements. -->
<sect1 id="audit-install">
<title>Installing Audit Support</title>
<para>User space support for Event Auditing is installed as part of the
base &os; operating system. Kernel support for
Event Auditing is compiled in by default, but support for this
feature must be explicitly compiled into the custom kernel by adding
the following line to the kernel configuration file:</para>
<para>User space support for Event Auditing is installed as part
of the base &os; operating system. Kernel support for Event
Auditing is compiled in by default, but support for this feature
must be explicitly compiled into the custom kernel by adding the
following line to the kernel configuration file:</para>
<programlisting>options AUDIT</programlisting>
@ -199,24 +202,25 @@ requirements. -->
the kernel via the normal process explained in
<xref linkend="kernelconfig"/>.</para>
<para>Once an audit-enabled kernel is built, installed, and the system
has been rebooted, enable the audit daemon by adding the following line
to &man.rc.conf.5;:</para>
<para>Once an audit-enabled kernel is built, installed, and the
system has been rebooted, enable the audit daemon by adding the
following line to &man.rc.conf.5;:</para>
<programlisting>auditd_enable="YES"</programlisting>
<para>Audit support must then be started by a reboot, or by manually
starting the audit daemon:</para>
<para>Audit support must then be started by a reboot, or by
manually starting the audit daemon:</para>
<programlisting>/etc/rc.d/auditd start</programlisting>
<programlisting>service auditd start</programlisting>
</sect1>
<sect1 id="audit-config">
<title>Audit Configuration</title>
<para>All configuration files for security audit are found in
<filename class="directory">/etc/security</filename>. The following
files must be present before the audit daemon is started:</para>
<filename class="directory">/etc/security</filename>. The
following files must be present before the audit daemon is
started:</para>
<itemizedlist>
<listitem>
@ -233,8 +237,8 @@ requirements. -->
<listitem>
<para><filename>audit_event</filename> - Textual names and
descriptions of system audit events, as well as a list of which
classes each event is in.</para>
descriptions of system audit events, as well as a list of
which classes each event is in.</para>
</listitem>
<listitem>
@ -244,10 +248,11 @@ requirements. -->
</listitem>
<listitem>
<para><filename>audit_warn</filename> - A customizable shell script
used by <application>auditd</application> to generate warning messages in exceptional
situations, such as when space for audit records is running low or
when the audit trail file has been rotated.</para>
<para><filename>audit_warn</filename> - A customizable shell
script used by <application>auditd</application> to generate
warning messages in exceptional situations, such as when
space for audit records is running low or when the audit
trail file has been rotated.</para>
</listitem>
</itemizedlist>
@ -260,70 +265,76 @@ requirements. -->
<sect2>
<title>Event Selection Expressions</title>
<para>Selection expressions are used in a number of places in the
audit configuration to determine which events should be audited.
Expressions contain a list of event classes to match, each with
a prefix indicating whether matching records should be accepted
or ignored, and optionally to indicate if the entry is intended
to match successful or failed operations. Selection expressions
are evaluated from left to right, and two expressions are
combined by appending one onto the other.</para>
<para>Selection expressions are used in a number of places in
the audit configuration to determine which events should be
audited. Expressions contain a list of event classes to match,
each with a prefix indicating whether matching records should
be accepted or ignored, and optionally to indicate if the
entry is intended to match successful or failed operations.
Selection expressions are evaluated from left to right, and
two expressions are combined by appending one onto the
other.</para>
<para>The following list contains the default audit event classes
present in <filename>audit_class</filename>:</para>
<para>The following list contains the default audit event
classes present in <filename>audit_class</filename>:</para>
<itemizedlist>
<listitem>
<para><literal>all</literal> - <emphasis>all</emphasis> - Match all
event classes.</para>
<para><literal>all</literal> - <emphasis>all</emphasis> -
Match all event classes.</para>
</listitem>
<listitem>
<para><literal>ad</literal> - <emphasis>administrative</emphasis>
- Administrative actions performed on the system as a
whole.</para>
<para><literal>ad</literal> -
<emphasis>administrative</emphasis> - Administrative
actions performed on the system as a whole.</para>
</listitem>
<listitem>
<para><literal>ap</literal> - <emphasis>application</emphasis> -
Application defined action.</para>
<para><literal>ap</literal> -
<emphasis>application</emphasis> - Application defined
action.</para>
</listitem>
<listitem>
<para><literal>cl</literal> - <emphasis>file close</emphasis> -
Audit calls to the <function>close</function> system
call.</para>
<para><literal>cl</literal> -
<emphasis>file close</emphasis> - Audit calls to the
<function>close</function> system call.</para>
</listitem>
<listitem>
<para><literal>ex</literal> - <emphasis>exec</emphasis> - Audit
program execution. Auditing of command line arguments and
environmental variables is controlled via &man.audit.control.5;
using the <literal>argv</literal> and <literal>envv</literal>
parameters to the <literal>policy</literal> setting.</para>
<para><literal>ex</literal> - <emphasis>exec</emphasis> -
Audit program execution. Auditing of command line
arguments and environmental variables is controlled via
&man.audit.control.5; using the <literal>argv</literal>
and <literal>envv</literal> parameters to the
<literal>policy</literal> setting.</para>
</listitem>
<listitem>
<para><literal>fa</literal> - <emphasis>file attribute access</emphasis>
- Audit the access of object attributes such as
&man.stat.1;, &man.pathconf.2; and similar events.</para>
<para><literal>fa</literal> -
<emphasis>file attribute access</emphasis> - Audit the
access of object attributes such as &man.stat.1;,
&man.pathconf.2; and similar events.</para>
</listitem>
<listitem>
<para><literal>fc</literal> - <emphasis>file create</emphasis>
- Audit events where a file is created as a result.</para>
<para><literal>fc</literal> -
<emphasis>file create</emphasis> - Audit events where a
file is created as a result.</para>
</listitem>
<listitem>
<para><literal>fd</literal> - <emphasis>file delete</emphasis>
- Audit events where file deletion occurs.</para>
<para><literal>fd</literal> -
<emphasis>file delete</emphasis> - Audit events where file
deletion occurs.</para>
</listitem>
<listitem>
<para><literal>fm</literal> - <emphasis>file attribute modify</emphasis>
- Audit events where file attribute modification occurs,
such as &man.chown.8;, &man.chflags.1;, &man.flock.2;,
etc.</para>
<para><literal>fm</literal> -
<emphasis>file attribute modify</emphasis> - Audit events
where file attribute modification occurs, such as
&man.chown.8;, &man.chflags.1;, &man.flock.2;, etc.</para>
</listitem>
<listitem>
@ -333,36 +344,40 @@ requirements. -->
</listitem>
<listitem>
<para><literal>fw</literal> - <emphasis>file write</emphasis> -
Audit events in which data is written, files are written
or modified, etc.</para>
<para><literal>fw</literal> -
<emphasis>file write</emphasis> - Audit events in which
data is written, files are written or modified,
etc.</para>
</listitem>
<listitem>
<para><literal>io</literal> - <emphasis>ioctl</emphasis> - Audit
use of the &man.ioctl.2; system call.</para>
<para><literal>io</literal> - <emphasis>ioctl</emphasis> -
Audit use of the &man.ioctl.2; system call.</para>
</listitem>
<listitem>
<para><literal>ip</literal> - <emphasis>ipc</emphasis> - Audit
various forms of Inter-Process Communication, including POSIX
pipes and System V <acronym>IPC</acronym> operations.</para>
<para><literal>ip</literal> - <emphasis>ipc</emphasis> -
Audit various forms of Inter-Process Communication,
including POSIX pipes and System V <acronym>IPC</acronym>
operations.</para>
</listitem>
<listitem>
<para><literal>lo</literal> - <emphasis>login_logout</emphasis> -
Audit &man.login.1; and &man.logout.1; events occurring
on the system.</para>
<para><literal>lo</literal> -
<emphasis>login_logout</emphasis> - Audit &man.login.1;
and &man.logout.1; events occurring on the system.</para>
</listitem>
<listitem>
<para><literal>na</literal> - <emphasis>non attributable</emphasis> -
Audit non-attributable events.</para>
<para><literal>na</literal> -
<emphasis>non attributable</emphasis> - Audit
non-attributable events.</para>
</listitem>
<listitem>
<para><literal>no</literal> - <emphasis>invalid class</emphasis> -
Match no audit events.</para>
<para><literal>no</literal> -
<emphasis>invalid class</emphasis> - Match no audit
events.</para>
</listitem>
<listitem>
@ -384,19 +399,19 @@ requirements. -->
</itemizedlist>
<para>These audit event classes may be customized by modifying the
<filename>audit_class</filename> and
<para>These audit event classes may be customized by modifying
the <filename>audit_class</filename> and
<filename>audit_event</filename> configuration files.</para>
<para>Each audit class in the list is combined with a prefix
indicating whether successful/failed operations are matched, and
whether the entry is adding or removing matching for the class
and type.</para>
indicating whether successful/failed operations are matched,
and whether the entry is adding or removing matching for the
class and type.</para>
<itemizedlist>
<listitem>
<para>(none) Audit both successful and failed instances of the
event.</para>
<para>(none) Audit both successful and failed instances of
the event.</para>
</listitem>
<listitem>
@ -410,45 +425,44 @@ requirements. -->
</listitem>
<listitem>
<para><literal>^</literal> Audit neither successful nor failed
events in this class.</para>
<para><literal>^</literal> Audit neither successful nor
failed events in this class.</para>
</listitem>
<listitem>
<para><literal>^+</literal> Do not audit successful events in this
class.</para>
<para><literal>^+</literal> Do not audit successful events
in this class.</para>
</listitem>
<listitem>
<para><literal>^-</literal> Do not audit failed events in this
class.</para>
<para><literal>^-</literal> Do not audit failed events in
this class.</para>
</listitem>
</itemizedlist>
<para>The following example selection string selects both successful
and failed login/logout events, but only successful execution
events:</para>
<para>The following example selection string selects both
successful and failed login/logout events, but only successful
execution events:</para>
<programlisting>lo,+ex</programlisting>
</sect2>
<sect2>
<title>Configuration Files</title>
<para>In most cases, administrators will need to modify only two files
when configuring the audit system: <filename>audit_control</filename>
and <filename>audit_user</filename>. The first controls system-wide
audit properties and policies; the second may be used to fine-tune
auditing by user.</para>
<para>In most cases, administrators will need to modify only two
files when configuring the audit system:
<filename>audit_control</filename> and
<filename>audit_user</filename>. The first controls
system-wide audit properties and policies; the second may be
used to fine-tune auditing by user.</para>
<sect3 id="audit-auditcontrol">
<title>The <filename>audit_control</filename> File</title>
<title>The <filename>audit_control</filename> File</title>
<para>The <filename>audit_control</filename> file specifies a number
of defaults for the audit subsystem. Viewing the contents of this
file, we see the following:</para>
<para>The <filename>audit_control</filename> file specifies a
number of defaults for the audit subsystem. Viewing the
contents of this file, we see the following:</para>
<programlisting>dir:/var/audit
flags:lo
@ -457,71 +471,73 @@ naflags:lo
policy:cnt
filesz:0</programlisting>
<para>The <option>dir</option> option is used to set one or more
directories where audit logs will be stored. If more than one
directory entry appears, they will be used in order as they fill.
It is common to configure audit so that audit logs are stored on
a dedicated file system, in order to prevent interference between
the audit subsystem and other subsystems if the file system fills.
</para>
<para>The <option>dir</option> option is used to set one or
more directories where audit logs will be stored. If more
than one directory entry appears, they will be used in order
as they fill. It is common to configure audit so that audit
logs are stored on a dedicated file system, in order to
prevent interference between the audit subsystem and other
subsystems if the file system fills.</para>
<para>The <option>flags</option> field sets the system-wide default
preselection mask for attributable events. In the example above,
successful and failed login and logout events are audited for all
users.</para>
<para>The <option>flags</option> field sets the system-wide
default preselection mask for attributable events. In the
example above, successful and failed login and logout events
are audited for all users.</para>
<para>The <option>minfree</option> option defines the minimum
percentage of free space for the file system where the audit trail
is stored. When this threshold is exceeded, a warning will be
generated. The above example sets the minimum free space to
twenty percent.</para>
percentage of free space for the file system where the audit
trail is stored. When this threshold is exceeded, a warning
will be generated. The above example sets the minimum free
space to twenty percent.</para>
<para>The <option>naflags</option> option specifies audit classes to
be audited for non-attributed events, such as the login process
and system daemons.</para>
<para>The <option>naflags</option> option specifies audit
classes to be audited for non-attributed events, such as the
login process and system daemons.</para>
<para>The <option>policy</option> option specifies a comma-separated
list of policy flags controlling various aspects of audit
behavior. The default <literal>cnt</literal> flag indicates that
the system should continue running despite an auditing failure
(this flag is highly recommended). Another commonly used flag is
<literal>argv</literal>, which causes command line arguments to
the &man.execve.2; system call to be audited as part of command
execution.</para>
<para>The <option>policy</option> option specifies a
comma-separated list of policy flags controlling various
aspects of audit behavior. The default
<literal>cnt</literal> flag indicates that the system should
continue running despite an auditing failure (this flag is
highly recommended). Another commonly used flag is
<literal>argv</literal>, which causes command line arguments
to the &man.execve.2; system call to be audited as part of
command execution.</para>
<para>The <option>filesz</option> option specifies the maximum size
in bytes to allow an audit trail file to grow to before
<para>The <option>filesz</option> option specifies the maximum
size in bytes to allow an audit trail file to grow to before
automatically terminating and rotating the trail file. The
default, 0, disables automatic log rotation. If the requested
file size is non-zero and below the minimum 512k, it will be
ignored and a log message will be generated.</para>
default, 0, disables automatic log rotation. If the
requested file size is non-zero and below the minimum 512k,
it will be ignored and a log message will be
generated.</para>
</sect3>
<sect3 id="audit-audituser">
<title>The <filename>audit_user</filename> File</title>
<para>The <filename>audit_user</filename> file permits the
administrator to specify further audit requirements for specific
users.
Each line configures auditing for a user via two fields: the
first is the <literal>alwaysaudit</literal> field, which specifies
a set of events that should always be audited for the user, and
administrator to specify further audit requirements for
specific users. Each line configures auditing for a user
via two fields: the first is the
<literal>alwaysaudit</literal> field, which specifies a set
of events that should always be audited for the user, and
the second is the <literal>neveraudit</literal> field, which
specifies a set of events that should never be audited for the
user.</para>
specifies a set of events that should never be audited for
the user.</para>
<para>The following example <filename>audit_user</filename> file
audits login/logout events and successful command execution for
the <username>root</username> user, and audits file creation and successful command
execution for the <username>www</username> user.
If used with the example <filename>audit_control</filename> file
above, the <literal>lo</literal> entry for <username>root</username>
is redundant, and login/logout events will also be audited for the
<username>www</username> user.</para>
<para>The following example <filename>audit_user</filename>
file audits login/logout events and successful command
execution for the <username>root</username> user, and audits
file creation and successful command execution for the
<username>www</username> user. If used with the example
<filename>audit_control</filename> file above, the
<literal>lo</literal> entry for <username>root</username> is
redundant, and login/logout events will also be audited for
the <username>www</username> user.</para>
<programlisting>root:lo,+ex:no
www:fc,+ex:no</programlisting>
</sect3>
</sect2>
</sect1>
@ -532,29 +548,32 @@ www:fc,+ex:no</programlisting>
<sect2>
<title>Viewing Audit Trails</title>
<para>Audit trails are stored in the BSM binary format, so tools must
be used to modify or convert to text. The &man.praudit.1;
command converts trail files to a simple text format; the
&man.auditreduce.1; command may be used to reduce the
audit trail file for analysis, archiving, or printing purposes.
<command>auditreduce</command> supports a variety of selection
parameters, including event type, event class, user, date or time of
the event, and the file path or object acted on.</para>
<para>Audit trails are stored in the BSM binary format, so tools
must be used to modify or convert to text. The
&man.praudit.1; command converts trail files to a simple text
format; the &man.auditreduce.1; command may be used to reduce
the audit trail file for analysis, archiving, or printing
purposes. <command>auditreduce</command> supports a variety
of selection parameters, including event type, event class,
user, date or time of the event, and the file path or object
acted on.</para>
<para>For example, the <command>praudit</command> utility will dump
the entire contents of a specified audit log in plain text:</para>
<para>For example, the <command>praudit</command> utility will
dump the entire contents of a specified audit log in plain
text:</para>
<screen>&prompt.root; <userinput>praudit /var/audit/AUDITFILE</userinput></screen>
<para>Where <filename><replaceable>AUDITFILE</replaceable></filename> is the audit log to
dump.</para>
<para>Where
<filename><replaceable>AUDITFILE</replaceable></filename> is
the audit log to dump.</para>
<para>Audit trails consist of a series of audit records made up of
tokens, which <command>praudit</command> prints sequentially one per
line. Each token is of a specific type, such as
<literal>header</literal> holding an audit record header, or
<literal>path</literal> holding a file path from a name
lookup. The following is an example of an
<para>Audit trails consist of a series of audit records made up
of tokens, which <command>praudit</command> prints
sequentially one per line. Each token is of a specific type,
such as <literal>header</literal> holding an audit record
header, or <literal>path</literal> holding a file path from a
name lookup. The following is an example of an
<literal>execve</literal> event:</para>
<programlisting>header,133,10,execve(2),0,Mon Sep 25 15:58:03 2006, + 384 msec
@ -565,112 +584,124 @@ subject,robert,root,wheel,root,wheel,38439,38032,42086,128.232.9.100
return,success,0
trailer,133</programlisting>
<para>This audit represents a successful <literal>execve</literal>
call, in which the command <literal>finger doug</literal> has been run. The
arguments token contains both the processed command line presented
by the shell to the kernel. The <literal>path</literal> token holds the path to the
executable as looked up by the kernel. The <literal>attribute</literal> token
describes the binary, and in particular, includes the file mode
which can be used to determine if the application was setuid.
The <literal>subject</literal> token describes the subject process, and stores in
sequence the audit user ID, effective user ID and group ID, real
user ID and group ID, process ID, session ID, port ID, and login
address. Notice that the audit user ID and real user ID differ:
the user <username>robert</username> has switched to the
<username>root</username> account before running this command, but
it is audited using the original authenticated user. Finally, the
<literal>return</literal> token indicates the successful execution, and the <literal>trailer</literal>
<para>This audit represents a successful
<literal>execve</literal> call, in which the command
<literal>finger doug</literal> has been run. The arguments
token contains both the processed command line presented by
the shell to the kernel. The <literal>path</literal> token
holds the path to the executable as looked up by the kernel.
The <literal>attribute</literal> token describes the binary,
and in particular, includes the file mode which can be used to
determine if the application was setuid. The
<literal>subject</literal> token describes the subject
process, and stores in sequence the audit user ID, effective
user ID and group ID, real user ID and group ID, process ID,
session ID, port ID, and login address. Notice that the audit
user ID and real user ID differ: the user
<username>robert</username> has switched to the
<username>root</username> account before running this command,
but it is audited using the original authenticated user.
Finally, the <literal>return</literal> token indicates the
successful execution, and the <literal>trailer</literal>
concludes the record.</para>
<para><command>praudit</command> also supports
an XML output format, which can be selected using the
<option>-x</option> argument.</para>
</sect2>
<sect2>
<title>Reducing Audit Trails</title>
<para>Since audit logs may be very large, an administrator will
likely want to select a subset of records for using, such as records
associated with a specific user:</para>
likely want to select a subset of records for using, such as
records associated with a specific user:</para>
<screen>&prompt.root; <userinput>auditreduce -u trhodes /var/audit/AUDITFILE | praudit</userinput></screen>
<para>This will select all audit records produced for the user
<username>trhodes</username> stored in the
<filename><replaceable>AUDITFILE</replaceable></filename> file.</para>
<filename><replaceable>AUDITFILE</replaceable></filename>
file.</para>
</sect2>
<sect2>
<title>Delegating Audit Review Rights</title>
<para>Members of the <groupname>audit</groupname> group are given
permission to read audit trails in <filename>/var/audit</filename>;
by default, this group is empty, so only the <username>root</username> user may read
audit trails. Users may be added to the <groupname>audit</groupname>
group in order to delegate audit review rights to the user. As
the ability to track audit log contents provides significant insight
into the behavior of users and processes, it is recommended that the
delegation of audit review rights be performed with caution.</para>
<para>Members of the <groupname>audit</groupname> group are
given permission to read audit trails in
<filename>/var/audit</filename>; by default, this group is
empty, so only the <username>root</username> user may read
audit trails. Users may be added to the
<groupname>audit</groupname> group in order to delegate audit
review rights to the user. As the ability to track audit log
contents provides significant insight into the behavior of
users and processes, it is recommended that the delegation of
audit review rights be performed with caution.</para>
</sect2>
<sect2>
<title>Live Monitoring Using Audit Pipes</title>
<para>Audit pipes are cloning pseudo-devices in the device file system
which allow applications to tap the live audit record stream. This
is primarily of interest to authors of intrusion detection and
system monitoring applications. However, for the administrator the
audit pipe device is a convenient way to allow live monitoring
without running into problems with audit trail file ownership or
log rotation interrupting the event stream. To track the live audit
event stream, use the following command line:</para>
<para>Audit pipes are cloning pseudo-devices in the device file
system which allow applications to tap the live audit record
stream. This is primarily of interest to authors of intrusion
detection and system monitoring applications. However, for
the administrator the audit pipe device is a convenient way to
allow live monitoring without running into problems with audit
trail file ownership or log rotation interrupting the event
stream. To track the live audit event stream, use the
following command line:</para>
<screen>&prompt.root; <userinput>praudit /dev/auditpipe</userinput></screen>
<para>By default, audit pipe device nodes are accessible only to the
<username>root</username> user. To make them accessible to the members of the
<groupname>audit</groupname> group, add a <literal>devfs</literal> rule
to <filename>devfs.rules</filename>:</para>
<para>By default, audit pipe device nodes are accessible only to
the <username>root</username> user. To make them accessible
to the members of the <groupname>audit</groupname> group, add
a <literal>devfs</literal> rule to
<filename>devfs.rules</filename>:</para>
<programlisting>add path 'auditpipe*' mode 0440 group audit</programlisting>
<para>See &man.devfs.rules.5; for more information on configuring
the devfs file system.</para>
<para>See &man.devfs.rules.5; for more information on
configuring the devfs file system.</para>
<warning>
<para>It is easy to produce audit event feedback cycles, in which
the viewing of each audit event results in the generation of more
audit events. For example, if all network I/O is audited, and
&man.praudit.1; is run from an SSH session, then a continuous stream of
audit events will be generated at a high rate, as each event
being printed will generate another event. It is advisable to run
<command>praudit</command> on an audit pipe device from sessions without fine-grained
I/O auditing in order to avoid this happening.</para>
<para>It is easy to produce audit event feedback cycles, in
which the viewing of each audit event results in the
generation of more audit events. For example, if all
network I/O is audited, and &man.praudit.1; is run from an
SSH session, then a continuous stream of audit events will
be generated at a high rate, as each event being printed
will generate another event. It is advisable to run
<command>praudit</command> on an audit pipe device from
sessions without fine-grained I/O auditing in order to avoid
this happening.</para>
</warning>
</sect2>
<sect2>
<title>Rotating Audit Trail Files</title>
<para>Audit trails are written to only by the kernel, and managed only
by the audit daemon, <application>auditd</application>. Administrators
should not attempt to use &man.newsyslog.conf.5; or other tools to
directly rotate audit logs. Instead, the <command>audit</command>
management tool may be used to shut down auditing, reconfigure the
audit system, and perform log rotation. The following command causes
the audit daemon to create a new audit log and signal the kernel to
switch to using the new log. The old log will be terminated and
<para>Audit trails are written to only by the kernel, and
managed only by the audit daemon,
<application>auditd</application>. Administrators should not
attempt to use &man.newsyslog.conf.5; or other tools to
directly rotate audit logs. Instead, the
<command>audit</command> management tool may be used to shut
down auditing, reconfigure the audit system, and perform log
rotation. The following command causes the audit daemon to
create a new audit log and signal the kernel to switch to
using the new log. The old log will be terminated and
renamed, at which point it may then be manipulated by the
administrator.</para>
<screen>&prompt.root; <userinput>audit -n</userinput></screen>
<warning>
<para>If the <application>auditd</application> daemon is not currently
running, this command will fail and an error message will be
produced.</para>
<para>If the <application>auditd</application> daemon is not
currently running, this command will fail and an error
message will be produced.</para>
</warning>
<para>Adding the following line to
@ -682,23 +713,24 @@ trailer,133</programlisting>
<para>The change will take effect once you have saved the
new <filename>/etc/crontab</filename>.</para>
<para>Automatic rotation of the audit trail file based on file size is
possible via the <option>filesz</option> option in
&man.audit.control.5;, and is described in the configuration files
section of this chapter.</para>
<para>Automatic rotation of the audit trail file based on file
size is possible via the <option>filesz</option> option in
&man.audit.control.5;, and is described in the configuration
files section of this chapter.</para>
</sect2>
<sect2>
<title>Compressing Audit Trails</title>
<para>As audit trail files can become very large, it is often desirable
to compress or otherwise archive trails once they have been closed by
the audit daemon. The <filename>audit_warn</filename> script can be
used to perform customized operations for a variety of audit-related
events, including the clean termination of audit trails when they are
<para>As audit trail files can become very large, it is often
desirable to compress or otherwise archive trails once they
have been closed by the audit daemon. The
<filename>audit_warn</filename> script can be used to perform
customized operations for a variety of audit-related events,
including the clean termination of audit trails when they are
rotated. For example, the following may be added to the
<filename>audit_warn</filename> script to compress audit trails on
close:</para>
<filename>audit_warn</filename> script to compress audit
trails on close:</para>
<programlisting>#
# Compress audit trail files on close.
@ -707,11 +739,12 @@ if [ "$1" = closefile ]; then
gzip -9 $2
fi</programlisting>
<para>Other archiving activities might include copying trail files to
a centralized server, deleting old trail files, or reducing the audit
trail to remove unneeded records. The script will be run only when
audit trail files are cleanly terminated, so will not be run on
trails left unterminated following an improper shutdown.</para>
<para>Other archiving activities might include copying trail
files to a centralized server, deleting old trail files, or
reducing the audit trail to remove unneeded records. The
script will be run only when audit trail files are cleanly
terminated, so will not be run on trails left unterminated
following an improper shutdown.</para>
</sect2>
</sect1>
</chapter>

File diff suppressed because it is too large Load diff

View file

@ -42,6 +42,7 @@
<year>2010</year>
<year>2011</year>
<year>2012</year>
<year>2013</year>
<holder>The FreeBSD Documentation Project</holder>
</copyright>
@ -157,8 +158,8 @@
</partintro>
&chap.introduction;
&chap.install;
&chap.bsdinstall;
&chap.install;
&chap.basics;
&chap.ports;
&chap.x11;

View file

@ -10,6 +10,7 @@
<sect1 id="boot-synopsis">
<title>Synopsis</title>
<indexterm><primary>booting</primary></indexterm>
<indexterm><primary>bootstrap</primary></indexterm>
@ -76,8 +77,10 @@
<indexterm><primary>BIOS</primary></indexterm>
<indexterm><primary>Basic Input/Output
System</primary><see>BIOS</see></indexterm>
<indexterm>
<primary>Basic Input/Output System</primary>
<see>BIOS</see>
</indexterm>
<para>On x86 hardware the Basic Input/Output System (BIOS) is
responsible for loading the operating system. To do this, the
@ -154,6 +157,7 @@
<sect2 id="boot-boot0">
<title>The Boot Manager</title>
<indexterm><primary>Master Boot Record
(MBR)</primary></indexterm>
@ -575,8 +579,8 @@ boot:</screen>
<application>GNOME</application>,
<application>KDE</application>, or
<application>XFce</application> are installed, the X11
desktop can be launched by using the
<command>startx</command> command.</para>
desktop can be launched by using
<command>startx</command>.</para>
<para>Some users prefer the X11 graphical login screen over
the traditional text based login prompt. Display managers
@ -693,16 +697,18 @@ bitmap_load="YES"
bitmap_name="<replaceable>/boot/splash.pcx</replaceable>"</programlisting>
<para>In version 8.3 another option is to use ascii art in
<ulink url="https://en.wikipedia.org/wiki/TheDraw">TheDraw</ulink>
<ulink
url="https://en.wikipedia.org/wiki/TheDraw">TheDraw</ulink>
format.</para>
<programlisting>splash_txt="YES"
bitmap_load="YES"
bitmap_name="<replaceable>/boot/splash.bin</replaceable>"</programlisting>
<para>The file name is not restricted to <quote>splash</quote>
as shown in the above example. It can be anything as long
as it is one of the above types such as,
<para>The file name is not restricted to
<quote>splash</quote> as shown in the above example. It
can be anything as long as it is one of the above types
such as,
<filename><replaceable>splash_640x400</replaceable>.bmp</filename>
or
<filename><replaceable>bluewave</replaceable>.pcx</filename>.</para>
@ -745,6 +751,7 @@ bitmap_name="<replaceable>/boot/splash.bin</replaceable>"</programlisting>
<sect1 id="boot-kernel">
<title>Kernel Interaction During Boot</title>
<indexterm>
<primary>kernel</primary>
<secondary>boot interaction</secondary>
@ -852,7 +859,7 @@ bitmap_name="<replaceable>/boot/splash.bin</replaceable>"</programlisting>
Stage 3 boot loader</link> prompt. Variables can be added using
<command>set</command>, removed with <command>unset</command>,
and viewed with the <command>show</command> commands. Variables
set in the <filename>/boot/device.hints</filename> file can be
set in <filename>/boot/device.hints</filename> can be
overridden here also. Device hints entered at the boot loader
are not permanent and will be forgotten on the next
reboot.</para>
@ -860,8 +867,8 @@ bitmap_name="<replaceable>/boot/splash.bin</replaceable>"</programlisting>
<para>Once the system is booted, the &man.kenv.1; command can be
used to dump all of the variables.</para>
<para>The syntax for the <filename>/boot/device.hints</filename>
file is one variable per line, using the standard hash
<para>The syntax for <filename>/boot/device.hints</filename>
is one variable per line, using the standard hash
<quote>#</quote> as comment markers. Lines are constructed as
follows:</para>
@ -946,6 +953,7 @@ bitmap_name="<replaceable>/boot/splash.bin</replaceable>"</programlisting>
<sect2 id="boot-singleuser">
<title>Single-User Mode</title>
<indexterm><primary>single-user mode</primary></indexterm>
<indexterm><primary>console</primary></indexterm>
@ -991,6 +999,7 @@ console none unknown off insecure</programlisting>
<sect2 id="boot-multiuser">
<title>Multi-User Mode</title>
<indexterm><primary>multi-user mode</primary></indexterm>
<para>If &man.init.8; finds your file systems to be in order, or

View file

@ -273,8 +273,8 @@
free and commercial partition resizing tools</ulink> are
available. <ulink
url="http://gparted.sourceforge.net/livecd.php">GParted
Live</ulink> is a free Live CD which includes the GParted
partition editor. GParted is also included with many other
Live</ulink> is a free Live CD which includes the <application>GParted</application>
partition editor. <application>GParted</application> is also included with many other
Linux Live CD distributions.</para>
<warning>
@ -314,7 +314,7 @@
20&nbsp;GB partition, and have another 20&nbsp;GB
partition for &os;.</para>
<para>There are two ways to do this.</para>
<para>There are two ways to do this:</para>
<orderedlist>
<listitem>
@ -372,7 +372,7 @@
</listitem>
<listitem>
<para>domain name of the local network</para>
<para>Domain name of the local network</para>
</listitem>
<listitem>
@ -390,7 +390,7 @@
creep into the process. On very rare occasions those bugs
affect the installation process. As these problems are
discovered and fixed, they are noted in the <ulink
url="&url.base;/releases/9.0R/errata.html">FreeBSD
url="&url.base;/releases/&rel.current;R/errata.html">FreeBSD
Errata</ulink> on the &os; web site. Check the errata before
installing to make sure that there are no problems that might
affect the installation.</para>
@ -453,9 +453,10 @@
<tip>
<para>A different directory path is used for
&os;&nbsp;8.<replaceable>X</replaceable> and earlier versions. Details of
download and installation of &os;&nbsp;8.<replaceable>X</replaceable> and
earlier is covered in <xref linkend="install"/>.</para>
&os;&nbsp;8.<replaceable>X</replaceable> and earlier
versions. Details of download and installation of
&os;&nbsp;8.<replaceable>X</replaceable> and earlier is
covered in <xref linkend="install"/>.</para>
</tip>
<para>The memory stick image has a <filename>.img</filename>
@ -662,6 +663,7 @@ Loading /boot/defaults/loader.conf
<figure id="bsdinstall-boot-loader-menu">
<title>&os; Boot Loader Menu</title>
<mediaobject>
<imageobject>
<imagedata
@ -743,7 +745,7 @@ Ethernet address 0:3:ba:b:92:d4, Host ID: 830b92d4.</screen>
<area id="bsdinstall-prompt-smp" coords="2 5"/>
</areaspec>
<screen><prompt>ok </prompt>
<screen><prompt>ok </prompt>
<prompt>ok {0} </prompt></screen>
<calloutlist>
@ -947,12 +949,14 @@ Trying to mount root from cd9660:/dev/iso9660/FREEBSD_INSTALL [ro]...</screen>
<para>After the procedure of device probing, you will see
<xref linkend="bsdinstall-choose-mode"/>. The install media
can be used in three ways: to install &os;, as a "live CD", or
can be used in three ways: to install &os;, as a
<link linkend="using-live-cd">live CD</link>, or
to simply access a &os; shell. Use the arrow keys to choose
an option, and <keycap>Enter</keycap> to select.</para>
<figure id="bsdinstall-choose-mode">
<title>Selecting Installation Media Mode</title>
<mediaobject>
<imageobject>
<imagedata fileref="bsdinstall/bsdinstall-choose-mode"
@ -997,6 +1001,7 @@ Trying to mount root from cd9660:/dev/iso9660/FREEBSD_INSTALL [ro]...</screen>
<figure id="bsdinstall-keymap-select-default">
<title>Keymap Selection</title>
<mediaobject>
<imageobject>
<imagedata
@ -1013,6 +1018,7 @@ Trying to mount root from cd9660:/dev/iso9660/FREEBSD_INSTALL [ro]...</screen>
<figure id="bsdinstall-config-keymap">
<title>Selecting Keyboard Menu</title>
<mediaobject>
<imageobject>
<imagedata fileref="bsdinstall/bsdinstall-config-keymap"
@ -1042,6 +1048,7 @@ Trying to mount root from cd9660:/dev/iso9660/FREEBSD_INSTALL [ro]...</screen>
<figure id="bsdinstall-config-hostname">
<title>Setting the Hostname</title>
<mediaobject>
<imageobject>
<imagedata fileref="bsdinstall/bsdinstall-config-hostname"
@ -1063,6 +1070,7 @@ Trying to mount root from cd9660:/dev/iso9660/FREEBSD_INSTALL [ro]...</screen>
<figure id="bsdinstall-config-components">
<title>Selecting Components to Install</title>
<mediaobject>
<imageobject>
<imagedata
@ -1162,10 +1170,10 @@ Trying to mount root from cd9660:/dev/iso9660/FREEBSD_INSTALL [ro]...</screen>
</figure>
<para>After the network connection has been configured as shown in
<xref linkend="bsdinstall-config-network-dev"/>, a mirror site is
selected. Mirror sites cache copies of the &os; files. Choose
a mirror site located in the same region of the world as the
computer on which &os; is being installed. Files can be
<xref linkend="bsdinstall-config-network-dev"/>, a mirror site
is selected. Mirror sites cache copies of the &os; files.
Choose a mirror site located in the same region of the world as
the computer on which &os; is being installed. Files can be
retrieved more quickly when the mirror is close to the target
computer, and installation time will be reduced.</para>
@ -1195,7 +1203,6 @@ Trying to mount root from cd9660:/dev/iso9660/FREEBSD_INSTALL [ro]...</screen>
there's the option of starting a shell where command-line
programs like &man.gpart.8;, &man.fdisk.8;, and &man.bsdlabel.8;
can be used directly.</para>
<!-- WB: mention ZFS here? -->
<figure id="bsdinstall-part-guided-manual">
<title>Selecting Guided or Manual Partitioning</title>
@ -1217,6 +1224,7 @@ Trying to mount root from cd9660:/dev/iso9660/FREEBSD_INSTALL [ro]...</screen>
<figure id="bsdinstall-part-guided-disk">
<title>Selecting from Multiple Disks</title>
<mediaobject>
<imageobject>
<imagedata
@ -1258,6 +1266,7 @@ Trying to mount root from cd9660:/dev/iso9660/FREEBSD_INSTALL [ro]...</screen>
<figure id="bsdinstall-part-review">
<title>Review Created Partitions</title>
<mediaobject>
<imageobject>
<imagedata fileref="bsdinstall/bsdinstall-part-review"
@ -1400,28 +1409,27 @@ Trying to mount root from cd9660:/dev/iso9660/FREEBSD_INSTALL [ro]...</screen>
filesystem.</para>
</listitem>
<listitem>
<para><literal>freebsd-zfs</literal> - A &os; ZFS
filesystem. See <xref linkend="filesystems-zfs"/>.</para>
</listitem>
<listitem>
<para><literal>freebsd-swap</literal> - &os; swap
space.</para>
</listitem>
</itemizedlist>
<para>Another partition type worth noting is
<literal>freebsd-zfs</literal>, used for partitions that will
contain a &os; ZFS filesystem. See
<xref linkend="filesystems-zfs"/>. &man.gpart.8; shows more
of the available <acronym>GPT</acronym> partition
types.</para>
<para>Multiple filesystem partitions can be used, and some
people may prefer a traditional layout with separate
partitions for the <filename>/</filename>,
<filename>/var</filename>, <filename>/tmp</filename>, and <filename>/usr</filename>
filesystems. See <xref
linkend="bsdinstall-part-manual-splitfs"/> for an
<filename>/var</filename>, <filename>/tmp</filename>, and
<filename>/usr</filename> filesystems. See
<xref linkend="bsdinstall-part-manual-splitfs"/> for an
example.</para>
<para>See &man.gpart.8; for a complete list of available
<acronym>GPT</acronym> partition types.</para>
<para>Size may be entered with common abbreviations:
<emphasis>K</emphasis> for kilobytes, <emphasis>M</emphasis>
for megabytes, or <emphasis>G</emphasis> for gigabytes.</para>
@ -1731,7 +1739,7 @@ Trying to mount root from cd9660:/dev/iso9660/FREEBSD_INSTALL [ro]...</screen>
found during the scan are listed, followed by a description
of the encryption types available for that network. If the
desired <acronym role="Service Set
Identifier">SSID</acronym> doesn't appear in the list,
Identifier">SSID</acronym> does not appear in the list,
select <guibutton>[&nbsp;Rescan&nbsp;]</guibutton> to scan
again. If the desired network still does not appear, check
for problems with antenna connections or try moving the
@ -2019,7 +2027,7 @@ Trying to mount root from cd9660:/dev/iso9660/FREEBSD_INSTALL [ro]...</screen>
<para>Select <guibutton>[&nbsp;Yes&nbsp;]</guibutton>
or <guibutton>[&nbsp;No&nbsp;]</guibutton> according to how
the machine's clock is configured and press
<keycap>Enter</keycap>. If you don't know whether the system
<keycap>Enter</keycap>. If you do not know whether the system
uses UTC or local time, select
<guibutton>[&nbsp;No&nbsp;]</guibutton> to choose the more
commonly-used local time.</para>
@ -2399,7 +2407,7 @@ Trying to mount root from cd9660:/dev/iso9660/FREEBSD_INSTALL [ro]...</screen>
<para>When the installation is complete, select
<guibutton>[&nbsp;Reboot&nbsp;]</guibutton> to reboot the
computer and start the new &os; system. Don't forget to
computer and start the new &os; system. Do not forget to
remove the &os; install CD, DVD, or USB memory stick, or the
computer may boot from it again.</para>
</sect2>
@ -2725,4 +2733,34 @@ login:</screen>
</qandaset>
</sect2>
</sect1>
<sect1 id="using-live-cd">
<title>Using the Live CD</title>
<para>A live CD of &os; is available on the same CD as the main
installation program. This is useful for those who are still
wondering whether &os; is the right operating system for them
and want to test some of the features before installing.</para>
<note>
<para>The following points should be noted while using the live
CD:</para>
<itemizedlist>
<listitem>
<para>To gain access to the system, authentication is
required. The username is <literal>root</literal>, and
the password is blank.</para>
</listitem>
<listitem>
<para>As the system runs directly from the CD, performance
will be significantly slower than that of a system
installed on a hard disk.</para>
</listitem>
<listitem>
<para>The live CD provides a command prompt and not a
graphical interface.</para>
</listitem>
</itemizedlist>
</note>
</sect1>
</chapter>

View file

@ -8,15 +8,14 @@
<colophon id='colophon'>
<para>This book is the combined work of hundreds of contributors to
<quote>The FreeBSD Documentation Project</quote>. The text is
authored in SGML
according to the DocBook DTD and is formatted from SGML into many
different presentation formats using <application>Jade</application>,
an open source DSSSL
engine. Norm Walsh's DSSSL stylesheets were used with an
additional customization layer to provide the presentation
instructions for <application>Jade</application>. The printed
version of this document would not be possible without Donald
Knuth's <application>&tex;</application> typesetting language,
Leslie Lamport's <application>LaTeX</application>, or Sebastian
Rahtz's <application>JadeTeX</application> macro package.</para>
authored in SGML according to the DocBook DTD and is formatted
from SGML into many different presentation formats using
<application>Jade</application>, an open source DSSSL engine.
Norm Walsh's DSSSL stylesheets were used with an additional
customization layer to provide the presentation instructions for
<application>Jade</application>. The printed version of this
document would not be possible without Donald Knuth's
<application>&tex;</application> typesetting language, Leslie
Lamport's <application>LaTeX</application>, or Sebastian Rahtz's
<application>JadeTeX</application> macro package.</para>
</colophon>

View file

@ -191,7 +191,7 @@
should be 256&nbsp;megabytes. Systems with less memory may
perform better with more swap. Less than 256&nbsp;megabytes
of swap is not recommended and memory expansion should be
considered. The kernel's VM paging algorithms are tuned to
considered. The kernel's VM paging algorithms are tuned to
perform best when the swap partition is at least two times
the size of main memory. Configuring too little swap can
lead to inefficiencies in the VM page scanning code and
@ -256,8 +256,8 @@
implies this; it is configuration information for the
<filename>rc*</filename> files.</para>
<para>An administrator should make entries in the
<filename>rc.conf</filename> file to override the default
<para>An administrator should make entries in
<filename>rc.conf</filename> to override the default
settings from <filename>/etc/defaults/rc.conf</filename>. The
defaults file should not be copied verbatim to
<filename class="directory">/etc</filename> - it contains
@ -269,8 +269,8 @@
applications to separate site-wide configuration from
system-specific configuration in order to keep administration
overhead down. The recommended approach is to place
system-specific configuration into the
<filename>/etc/rc.conf.local</filename> file. For
system-specific configuration into
<filename>/etc/rc.conf.local</filename>. For
example:</para>
<itemizedlist>
@ -292,14 +292,14 @@ ifconfig_fxp0="inet 10.1.1.1/8"</programlisting>
</listitem>
</itemizedlist>
<para>The <filename>rc.conf</filename> file can then be
<para><filename>rc.conf</filename> can then be
distributed to every system using <command>rsync</command> or a
similar program, while the <filename>rc.conf.local</filename>
file remains unique.</para>
similar program, while <filename>rc.conf.local</filename>
remains unique.</para>
<para>Upgrading the system using &man.sysinstall.8; or
<command>make world</command> will not overwrite the
<filename>rc.conf</filename> file, so system configuration
<command>make world</command> will not overwrite
<filename>rc.conf</filename>, so system configuration
information will not be lost.</para>
<tip>
@ -349,8 +349,8 @@ ifconfig_fxp0="inet 10.1.1.1/8"</programlisting>
-rw-r--r-- 1 root wheel 7980 May 20 1998 srm.conf
-rw-r--r-- 1 root wheel 7933 May 20 1998 srm.conf.default</literallayout>
<para>The file sizes show that only the
<filename>srm.conf</filename> file has been changed. A later
<para>The file sizes show that only
<filename>srm.conf</filename> has been changed. A later
update of the <application>Apache</application> port would not
overwrite this changed file.</para>
</sect1>
@ -439,8 +439,7 @@ run_rc_command "$1"</programlisting>
command line arguments, inclusion of the default functions
provided in <filename>/etc/rc.subr</filename>, compatibility
with the &man.rcorder.8; utility and provides for easier
configuration via the <filename>rc.conf</filename>
file.</para>
configuration via <filename>rc.conf</filename>.</para>
</sect2>
<sect2>
@ -450,7 +449,7 @@ run_rc_command "$1"</programlisting>
daemons, <acronym>IMAP</acronym>, etc. could be started using
&man.inetd.8;. This involves installing the service utility
from the Ports Collection with a configuration line added to
the <filename>/etc/inetd.conf</filename> file, or by
<filename>/etc/inetd.conf</filename>, or by
uncommenting one of the current configuration lines. Working
with <application>inetd</application> and its configuration is
described in depth in the
@ -521,8 +520,8 @@ run_rc_command "$1"</programlisting>
<username>root</username>.</para>
</note>
<para>Let us take a look at the <filename>/etc/crontab</filename>
file (the system crontab):</para>
<para>Let us take a look at <filename>/etc/crontab</filename>,
the system crontab:</para>
<programlisting># /etc/crontab - root's crontab for &os;
#
@ -541,12 +540,12 @@ HOME=/var/log
<calloutlist>
<callout arearefs="co-comments">
<para>Like most &os; configuration files, the
<literal>#</literal> character represents a comment. A
<para>Like most &os; configuration files, lines that begin
with the <literal>#</literal> character are comments. A
comment can be placed in the file as a reminder of what and
why a desired action is performed. Comments cannot be on the
same line as a command or else they will be interpreted as
part of the command; they must be on a new line. Blank
why a desired action is performed. Comments cannot be on
the same line as a command or else they will be interpreted
as part of the command; they must be on a new line. Blank
lines are ignored.</para>
</callout>
@ -593,11 +592,11 @@ HOME=/var/log
These <literal>*</literal> characters mean
<quote>first-last</quote>, and can be interpreted as
<emphasis>every</emphasis> time. So, judging by this line,
it is apparent that the <command>atrun</command> command is
it is apparent that <command>atrun</command> is
to be invoked by <username>root</username> every five
minutes regardless of what day or month it is. For more
information on the <command>atrun</command> command, see the
&man.atrun.8; manual page.</para>
information on <command>atrun</command>, see
&man.atrun.8;.</para>
<para>Commands can have any number of flags passed to them;
however, commands which extend to multiple lines need to be
@ -610,9 +609,8 @@ HOME=/var/log
<filename>crontab</filename> file, although there is one thing
different about this one. Field number six, where we specified
the username, only exists in the system
<filename>/etc/crontab</filename> file. This field should be
omitted for individual user <filename>crontab</filename>
files.</para>
<filename>crontab</filename>. This field should be omitted for
individual user <filename>crontab</filename> files.</para>
<sect2 id="configtuning-installcrontab">
<title>Installing a Crontab</title>
@ -681,7 +679,7 @@ HOME=/var/log
For instance, &man.sshd.8; can be restarted with the following
command:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/sshd restart</userinput></screen>
<screen>&prompt.root; <userinput>service sshd restart</userinput></screen>
<para>This procedure is similar for other services. Of course,
services are usually started automatically at boot time as
@ -713,7 +711,7 @@ HOME=/var/log
<filename>/etc/rc.conf</filename> setting, execute the following
command:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/sshd onerestart</userinput></screen>
<screen>&prompt.root; <userinput>service sshd onerestart</userinput></screen>
<para>It is easy to check if a service is enabled in
<filename>/etc/rc.conf</filename> by running the appropriate
@ -722,13 +720,13 @@ HOME=/var/log
<command>sshd</command> is in fact enabled in
<filename>/etc/rc.conf</filename> by running:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/sshd rcvar</userinput>
<screen>&prompt.root; <userinput>service sshd rcvar</userinput>
# sshd
$sshd_enable=YES</screen>
<note>
<para>The second line (<literal># sshd</literal>) is the output
from the <command>sshd</command> command, not a
from <command>sshd</command>, not a
<username>root</username> console.</para>
</note>
@ -736,7 +734,7 @@ $sshd_enable=YES</screen>
<option>status</option> option is available. For instance to
verify that <command>sshd</command> is actually started:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/sshd status</userinput>
<screen>&prompt.root; <userinput>service sshd status</userinput>
sshd is running as pid 433.</screen>
<para>In some cases it is also possible to <option>reload</option>
@ -1062,7 +1060,6 @@ dc1: flags=8802&lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&gt; metric 0 mtu 1500
inet 10.0.0.1 netmask 0xffffff00 broadcast 10.0.0.255
media: Ethernet 10baseT/UTP
status: no carrier
plip0: flags=8810&lt;POINTOPOINT,SIMPLEX,MULTICAST&gt; metric 0 mtu 1500
lo0: flags=8049&lt;UP,LOOPBACK,RUNNING,MULTICAST&gt; metric 0 mtu 16384
options=3&lt;RXCSUM,TXCSUM&gt;
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4
@ -1084,12 +1081,6 @@ lo0: flags=8049&lt;UP,LOOPBACK,RUNNING,MULTICAST&gt; metric 0 mtu 16384
interface</para>
</listitem>
<listitem>
<para><devicename>plip0</devicename>: The parallel port
interface (if a parallel port is present on the
machine)</para>
</listitem>
<listitem>
<para><devicename>lo0</devicename>: The loopback
device</para>
@ -1220,14 +1211,14 @@ ifconfig_dc1="inet 10.0.0.1 netmask 255.255.255.0 media 10baseT/UTP"</programlis
configuration errors. Alternatively you can just relaunch the
networking system:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/netif restart</userinput></screen>
<screen>&prompt.root; <userinput>service netif restart</userinput></screen>
<note>
<para>If a default gateway has been set in
<filename>/etc/rc.conf</filename>, use also this
command:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/routing restart</userinput></screen>
<screen>&prompt.root; <userinput>service routing restart</userinput></screen>
</note>
<para>Once the networking system has been relaunched, you should
@ -1275,7 +1266,7 @@ round-trip min/avg/max/stddev = 0.700/0.729/0.766/0.025 ms</screen>
<para>You could also use the machine name instead of
<hostid role="ipaddr">192.168.1.2</hostid> if you have set
up the <filename>/etc/hosts</filename> file.</para>
up <filename>/etc/hosts</filename>.</para>
</sect3>
<sect3>
@ -1427,7 +1418,7 @@ ifconfig_fxp0_alias7="inet 202.0.75.20 netmask 255.255.255.255"</programlisting>
</authorgroup>
</sect1info>
<title>Configuring the system logger
<title>Configuring the System Logger,
<application>syslogd</application></title>
<indexterm><primary>system logging</primary></indexterm>
@ -1496,7 +1487,7 @@ ifconfig_fxp0_alias7="inet 202.0.75.20 netmask 255.255.255.255"</programlisting>
log messages from <replaceable>facility</replaceable> at level
<replaceable>level</replaceable> or higher. It is also
possible to add an optional comparison flag before the level
to specify more precisely what is logged. Multiple
to specify more precisely what is logged. Multiple
selector fields can be used for the same action, and are
separated with a semicolon (<literal>;</literal>). Using
<literal>*</literal> will match everything.
@ -1602,12 +1593,12 @@ cron.* /var/log/cron
facilities, refer to &man.syslog.3; and &man.syslogd.8;.
For more information about <filename>syslog.conf</filename>,
its syntax, and more advanced usage examples, see
&man.syslog.conf.5; and <xref
linkend="network-syslogd"/>.</para>
&man.syslog.conf.5; and
<xref linkend="network-syslogd"/>.</para>
</sect2>
<sect2>
<title>Log management and rotation with
<title>Log Management and Rotation with
<application>newsyslog</application></title>
<indexterm><primary>newsyslog</primary></indexterm>
@ -1641,10 +1632,10 @@ cron.* /var/log/cron
owner, permissions, and when to rotate that file, as well as
optional flags that affect the log rotation (such as
compression) and programs to signal when the log is
rotated. As an example, here is the default configuration
rotated. As an example, here is the default configuration
in &os;:</para>
<programlisting># configuration file for newsyslog
<programlisting># configuration file for newsyslog
# &dollar;&os;&dollar;
#
# Entries which do not specify the '/pid_file' field will cause the
@ -1983,10 +1974,10 @@ kern.maxfiles: 2088 -&gt; 5000</screen>
numbers, or booleans (a boolean being <literal>1</literal> for
yes or a <literal>0</literal> for no).</para>
<para>If you want to set automatically some variables each time
the machine boots, add them to the
<filename>/etc/sysctl.conf</filename> file. For more
information see the &man.sysctl.conf.5; manual page and the
<para>If you want to automatically set some variables each time
the machine boots, add them to
<filename>/etc/sysctl.conf</filename>. For more
information see the &man.sysctl.conf.5; manual page and
<xref linkend="configtuning-sysctlconf"/>.</para>
<sect2 id="sysctl-readonly">
@ -2018,8 +2009,8 @@ device_probe_and_attach: cbb0 attach returned 12</screen>
only. To overcome these situations a user can put
&man.sysctl.8; <quote>OIDs</quote> in their local
<filename>/boot/loader.conf</filename>. Default settings are
located in the <filename>/boot/defaults/loader.conf</filename>
file.</para>
located in
<filename>/boot/defaults/loader.conf</filename>.</para>
<para>Fixing the problem mentioned above would require a user to
set <option>hw.pci.allow_unsupported_io_range=1</option> in
@ -2425,8 +2416,8 @@ device_probe_and_attach: cbb0 attach returned 12</screen>
defaults by <varname>kern.maxusers</varname> may be
individually overridden at boot-time or run-time in
<filename>/boot/loader.conf</filename> (see the
&man.loader.conf.5; manual page or the
<filename>/boot/defaults/loader.conf</filename> file for
&man.loader.conf.5; manual page or
<filename>/boot/defaults/loader.conf</filename> for
some hints) or as described elsewhere in this
document.</para>
@ -2894,7 +2885,7 @@ kern.maxvnodes: 100000</screen>
without doing a kernel rebuild. This has the advantage of
making testing easier. Another reason is that starting
<acronym>ACPI</acronym> after a system has been brought up
often doesn't work well. If you are experiencing problems,
often does not work well. If you are experiencing problems,
you can disable <acronym>ACPI</acronym> altogether. This
driver should not and can not be unloaded because the system
bus uses it for various hardware interactions.
@ -3107,8 +3098,8 @@ kern.maxvnodes: 100000</screen>
<para>In some cases, resuming from a suspend operation will
cause the mouse to fail. A known work around is to add
<literal>hint.psm.0.flags="0x3000"</literal> to the
<filename>/boot/loader.conf</filename> file. If this does
<literal>hint.psm.0.flags="0x3000"</literal> to
<filename>/boot/loader.conf</filename>. If this does
not work then please consider sending a bug report as
described above.</para>
</sect3>

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -237,6 +237,7 @@
<sect2>
<title>Using &man.sysinstall.8;</title>
<indexterm>
<primary><application>sysinstall</application></primary>
<secondary>adding disks</secondary>
@ -278,6 +279,7 @@
<step>
<title>Disk Label Editor</title>
<indexterm><primary>BSD partitions</primary></indexterm>
<para>Next, you need to exit
@ -358,6 +360,7 @@
<sect3>
<title>Dedicated</title>
<indexterm><primary>OS/2</primary></indexterm>
<para>If you will not be sharing the new drive with another
@ -572,7 +575,7 @@ bsdlabel -e ad3</programlisting>
</calloutlist>
<para>After running &man.ccdconfig.8; the &man.ccd.4; is
configured. A file system can be installed. Refer to
configured. A file system can be installed. Refer to
&man.newfs.8; for options, or simply run: </para>
<programlisting>newfs /dev/ccd0c</programlisting>
@ -770,6 +773,7 @@ ar0: ATA RAID1 subdisks: ad4 ad6 status: REBUILDING 0% completed</screen>
</sect1info>
<title>USB Storage Devices</title>
<indexterm>
<primary>USB</primary>
<secondary>disks</secondary>
@ -961,6 +965,7 @@ umass0: detached</screen>
</sect1info>
<title>Creating and Using Optical Media (CDs)</title>
<indexterm>
<primary>CDROMs</primary>
<secondary>creating</secondary>
@ -1125,6 +1130,7 @@ umass0: detached</screen>
<sect2 id="burncd">
<title><application>burncd</application></title>
<indexterm>
<primary>CDROMs</primary>
<secondary>burning</secondary>
@ -1506,6 +1512,7 @@ cd0: Attempt to query device size failed: NOT READY, Medium not present - tray c
</sect1info>
<title>Creating and Using Optical Media (DVDs)</title>
<indexterm>
<primary>DVD</primary>
<secondary>burning</secondary>
@ -1542,8 +1549,8 @@ cd0: Attempt to query device size failed: NOT READY, Medium not present - tray c
removable hard drive. However, this media is not
compatible with most DVD-ROM drives and DVD-Video players;
only a few DVD writers support the DVD-RAM format. Read
the <xref linkend="creating-dvd-ram"/> for more information
on DVD-RAM use.</para>
the <xref linkend="creating-dvd-ram"/> for more
information on DVD-RAM use.</para>
</listitem>
<listitem>
@ -1589,8 +1596,8 @@ cd0: Attempt to query device size failed: NOT READY, Medium not present - tray c
devices, therefore the <link linkend="atapicam">ATAPI/CAM
support</link> must be added to your kernel. If your burner
uses the USB interface this addition is useless, and you
should read the <xref linkend="usb-disks"/> for more details on
USB devices configuration.</para>
should read the <xref linkend="usb-disks"/> for more details
on USB devices configuration.</para>
<para>You also have to enable DMA access for ATAPI devices, this
can be done in adding the following line to the
@ -2046,7 +2053,7 @@ cd0: Attempt to query device size failed: NOT READY, Medium not present - tray c
<sect2>
<title>The File System</title>
<para>Now the floppy is ready to be high-level formatted. This
<para>Now the floppy is ready to be high-level formatted. This
will place a new file system on it, which will let FreeBSD
read and write to the disk. After creating the new file
system, the disk label is destroyed, so if you want to
@ -2078,230 +2085,93 @@ cd0: Attempt to query device size failed: NOT READY, Medium not present - tray c
<indexterm><primary>tape media</primary></indexterm>
<para>The major tape media are the 4mm, 8mm, QIC, mini-cartridge
and DLT.</para>
<para>Tape technology has continued to evolve but is less likely
to be used in a modern system. Modern backup systems tend to
use offsite combined with local removable disk drive
technologies. Still, FreeBSD will support any tape drive that
uses SCSI such as LTO and older devices such as DAT. There is
limited support for SATA and USB tape drives as well.</para>
<sect2 id="backups-tapebackups-4mm">
<title>4mm (DDS: Digital Data Storage)</title>
<sect2 id="tapes-sa0">
<title>Serial Access with &man.sa.4;</title>
<indexterm>
<primary>tape media</primary>
<secondary>DDS (4mm) tapes</secondary>
</indexterm>
<indexterm>
<primary>tape media</primary>
<secondary>QIC tapes</secondary>
</indexterm>
<para>4mm tapes are replacing QIC as the workstation backup
media of choice. This trend accelerated greatly when Conner
purchased Archive, a leading manufacturer of QIC drives, and
then stopped production of QIC drives. 4mm drives are small
and quiet but do not have the reputation for reliability that
is enjoyed by 8mm drives. The cartridges are less expensive
and smaller (3 x 2 x 0.5 inches, 76 x 51 x 12 mm) than 8mm
cartridges. 4mm, like 8mm, has comparatively short head life
for the same reason, both use helical scan.</para>
<para>Data throughput on these drives starts ~150&nbsp;kB/s,
peaking at ~500&nbsp;kB/s. Data capacity starts at
1.3&nbsp;GB and ends at 2.0&nbsp;GB. Hardware compression,
available with most of these drives, approximately doubles the
capacity. Multi-drive tape library units can have 6 drives in
a single cabinet with automatic tape changing. Library
capacities reach 240&nbsp;GB.</para>
<para>The DDS-3 standard now supports tape capacities up to
12&nbsp;GB (or 24&nbsp;GB compressed).</para>
<para>4mm drives, like 8mm drives, use helical-scan. All the
benefits and drawbacks of helical-scan apply to both 4mm and
8mm drives.</para>
<para>Tapes should be retired from use after 2,000 passes or 100
full backups.</para>
</sect2>
<sect2 id="backups-tapebackups-8mm">
<title>8mm (Exabyte)</title>
<indexterm>
<primary>tape media</primary>
<secondary>Exabyte (8mm) tapes</secondary>
<primary>tape drives</primary>
</indexterm>
<para>8mm tapes are the most common SCSI tape drives; they are
the best choice of exchanging tapes. Nearly every site has an
Exabyte 2&nbsp;GB 8mm tape drive. 8mm drives are reliable,
convenient and quiet. Cartridges are inexpensive and small
(4.8 x 3.3 x 0.6 inches; 122 x 84 x 15 mm). One downside of
8mm tape is relatively short head and tape life due to the
high rate of relative motion of the tape across the
heads.</para>
<para>Data throughput ranges from ~250&nbsp;kB/s to
~500&nbsp;kB/s. Data sizes start at 300&nbsp;MB and go up to
7&nbsp;GB. Hardware compression, available with most of these
drives, approximately doubles the capacity. These drives are
available as single units or multi-drive tape libraries with 6
drives and 120 tapes in a single cabinet. Tapes are changed
automatically by the unit. Library capacities reach
840+&nbsp;GB.</para>
<para>The Exabyte <quote>Mammoth</quote> model supports
12&nbsp;GB on one tape (24&nbsp;GB with compression) and costs
approximately twice as much as conventional tape
drives.</para>
<para>Data is recorded onto the tape using helical-scan, the
heads are positioned at an angle to the media (approximately 6
degrees). The tape wraps around 270 degrees of the spool that
holds the heads. The spool spins while the tape slides over
the spool. The result is a high density of data and closely
packed tracks that angle across the tape from one edge to the
other.</para>
</sect2>
<sect2 id="backups-tapebackups-qic">
<title>QIC</title>
<indexterm>
<primary>tape media</primary>
<secondary>QIC-150</secondary>
</indexterm>
<para>QIC-150 tapes and drives are, perhaps, the most common
tape drive and media around. QIC tape drives are the least
expensive <quote>serious</quote> backup drives. The downside
is the cost of media. QIC tapes are expensive compared to 8mm
or 4mm tapes, up to 5 times the price per GB data storage.
But, if your needs can be satisfied with a half-dozen tapes,
QIC may be the correct choice. QIC is the
<emphasis>most</emphasis> common tape drive. Every site has a
QIC drive of some density or another. Therein lies the rub,
QIC has a large number of densities on physically similar
(sometimes identical) tapes. QIC drives are not quiet. These
drives audibly seek before they begin to record data and are
clearly audible whenever reading, writing or seeking. QIC
tapes measure 6&nbsp;x 4&nbsp;x 0.7 inches (152&nbsp;x
102&nbsp;x 17 mm).</para>
<para>Data throughput ranges from ~150&nbsp;kB/s to
~500&nbsp;kB/s. Data capacity ranges from 40&nbsp;MB to
15&nbsp;GB. Hardware compression is available on many of the
newer QIC drives. QIC drives are less frequently installed;
they are being supplanted by DAT drives.</para>
<para>Data is recorded onto the tape in tracks. The tracks run
along the long axis of the tape media from one end to the
other. The number of tracks, and therefore the width of a
track, varies with the tape's capacity. Most if not all newer
drives provide backward-compatibility at least for reading
(but often also for writing). QIC has a good reputation
regarding the safety of the data (the mechanics are simpler
and more robust than for helical scan drives).</para>
<para>Tapes should be retired from use after 5,000
backups.</para>
</sect2>
<sect2 id="backups-tapebackups-dlt">
<title>DLT</title>
<indexterm>
<primary>tape media</primary>
<secondary>DLT</secondary>
</indexterm>
<para>DLT has the fastest data transfer rate of all the drive
types listed here. The 1/2" (12.5mm) tape is contained in a
single spool cartridge (4 x 4 x 1 inches; 100 x 100 x 25 mm).
The cartridge has a swinging gate along one entire side of the
cartridge. The drive mechanism opens this gate to extract the
tape leader. The tape leader has an oval hole in it which the
drive uses to <quote>hook</quote> the tape. The take-up spool
is located inside the tape drive. All the other tape
cartridges listed here (9 track tapes are the only exception)
have both the supply and take-up spools located inside the
tape cartridge itself.</para>
<para>Data throughput is approximately 1.5&nbsp;MB/s, three
times the throughput of 4mm, 8mm, or QIC tape drives. Data
capacities range from 10&nbsp;GB to 20&nbsp;GB for a single
drive. Drives are available in both multi-tape changers and
multi-tape, multi-drive tape libraries containing from 5 to
900 tapes over 1 to 20 drives, providing from 50&nbsp;GB to
9&nbsp;TB of storage.</para>
<para>With compression, DLT Type IV format supports up to
70&nbsp;GB capacity.</para>
<para>Data is recorded onto the tape in tracks parallel to the
direction of travel (just like QIC tapes). Two tracks are
written at once. Read/write head lifetimes are relatively
long; once the tape stops moving, there is no relative motion
between the heads and the tape.</para>
<para>FreeBSD uses the &man.sa.4; driver, providing
<devicename>/dev/sa0</devicename>,
<devicename>/dev/nsa0</devicename>, and
<devicename>/dev/esa0</devicename>. In normal use, only
<devicename>/dev/sa0</devicename> is needed.
<devicename>/dev/nsa0</devicename> is the same physical drive
as <devicename>/dev/sa0</devicename> but does not rewind the
tape after writing a file. This allows writing more than one
file to a tape. Using <devicename>/dev/esa0</devicename>
ejects the tape after the device is closed, if
applicable.</para>
</sect2>
<sect2>
<title id="backups-tapebackups-ait">AIT</title>
<title id="tapes-mt">Controlling the Tape Drive with
&man.mt.1;</title>
<indexterm>
<primary>tape media</primary>
<secondary>AIT</secondary>
<secondary>mt</secondary>
</indexterm>
<para>AIT is a new format from Sony, and can hold up to
50&nbsp;GB (with compression) per tape. The tapes contain
memory chips which retain an index of the tape's contents.
This index can be rapidly read by the tape drive to determine
the position of files on the tape, instead of the several
minutes that would be required for other tapes. Software such
as <application>SAMS:Alexandria</application> can operate
forty or more AIT tape libraries, communicating directly with
the tape's memory chip to display the contents on screen,
determine what files were backed up to which tape, locate the
correct tape, load it, and restore the data from the
tape.</para>
<para>&man.mt.1; is the &os; utility for controlling other
operations of the tape drive, such as seeking through files on
a tape or writing tape control marks to the tape.</para>
<para>Libraries like this cost in the region of $20,000, pricing
them a little out of the hobbyist market.</para>
<para>For example, the first three files on a tape can be
preserved by skipping past them before writing a new
file:</para>
<screen>&prompt.root; <userinput>mt -f /dev/nsa0 fsf 3</userinput></screen>
</sect2>
<sect2>
<title>Using a New Tape for the First Time</title>
<title id="tapes-tar">Using &man.tar.1; to Read and
Write Tape Backups</title>
<para>The first time that you try to read or write a new,
completely blank tape, the operation will fail. The console
messages should be similar to:</para>
<para>An example of writing a single file to tape using
&man.tar.1;:</para>
<screen>sa0(ncr1:4:0): NOT READY asc:4,1
sa0(ncr1:4:0): Logical unit is in process of becoming ready</screen>
<screen>&prompt.root; <userinput>tar cvf /dev/sa0 <replaceable>file</replaceable></userinput></screen>
<para>The tape does not contain an Identifier Block (block
number 0). All QIC tape drives since the adoption of QIC-525
standard write an Identifier Block to the tape. There are two
solutions:</para>
<para>Recovering files from a &man.tar.1; archive on tape into
the current directory:</para>
<itemizedlist>
<listitem>
<para><command>mt fsf 1</command> causes the tape drive to
write an Identifier Block to the tape.</para>
</listitem>
<screen>&prompt.root; <userinput>tar xvf /dev/sa0</userinput></screen>
</sect2>
<listitem>
<para>Use the front panel button to eject the tape.</para>
<sect2>
<title id="tapes-dumprestore">Using &man.dump.8; and
&man.restore.8; to Create and Restore Backups</title>
<para>Re-insert the tape and <command>dump</command> data to
the tape.</para>
<para>A simple backup of <filename
class="directory">/usr</filename> with &man.dump.8;:</para>
<para><command>dump</command> will report
<errorname>DUMP: End of tape detected</errorname> and the
console will show: <errorname>HARDWARE FAILURE info:280
asc:80,96</errorname>.</para>
<screen>&prompt.root; <userinput>dump -0aL -b64 -f /dev/nsa0 /usr</userinput></screen>
<para>rewind the tape using:
<command>mt rewind</command>.</para>
<para>Interactively restoring files from a &man.dump.8; file on
tape into the current directory:</para>
<para>Subsequent tape operations are successful.</para>
</listitem>
</itemizedlist>
<screen>&prompt.root; <userinput>restore -i -f /dev/nsa0</userinput></screen>
</sect2>
<sect2>
<title id="tapes-othersofware">Other Tape Software</title>
<para>Higher-level programs are available to simplify tape
backup. The most popular are
<application>AMANDA</application> and
<application>Bacula</application>. These programs aim to make
backup easier and more convenient, or to automate complex
backups of multiple machines. The Ports Collection contains
both these and other tape utility applications.</para>
</sect2>
</sect1>
@ -2310,6 +2180,7 @@ sa0(ncr1:4:0): Logical unit is in process of becoming ready</screen>
<sect2 id="floppies-using">
<title>Can I Use Floppies for Backing Up My Data?</title>
<indexterm><primary>backup floppies</primary></indexterm>
<indexterm><primary>floppy disks</primary></indexterm>
@ -2369,6 +2240,7 @@ sa0(ncr1:4:0): Logical unit is in process of becoming ready</screen>
<sect2 id="floppies-compress">
<title>Can I Compress My Backups?</title>
<indexterm>
<primary><command>tar</command></primary>
</indexterm>
@ -2600,7 +2472,7 @@ sa0(ncr1:4:0): Logical unit is in process of becoming ready</screen>
<example>
<title>Using <command>dump</command> over
<application>ssh</application> with <envar>RSH</envar>
set</title>
Set</title>
<screen>&prompt.root; <userinput>env RSH=/usr/bin/ssh /sbin/dump -0uan -f targetuser@targetmachine.example.com:/dev/sa0 /usr</userinput></screen>
</example>
@ -2608,6 +2480,7 @@ sa0(ncr1:4:0): Logical unit is in process of becoming ready</screen>
<sect2>
<title><command>tar</command></title>
<indexterm>
<primary>backup software</primary>
<secondary><command>tar</command></secondary>
@ -2635,6 +2508,7 @@ sa0(ncr1:4:0): Logical unit is in process of becoming ready</screen>
<sect2>
<title><command>cpio</command></title>
<indexterm>
<primary>backup software</primary>
<secondary><command>cpio</command></secondary>
@ -2698,6 +2572,7 @@ sa0(ncr1:4:0): Logical unit is in process of becoming ready</screen>
<sect2 id="backups-programs-amanda">
<title><application>Amanda</application></title>
<indexterm>
<primary>backup software</primary>
<secondary><application>Amanda</application></secondary>
@ -2764,6 +2639,7 @@ sa0(ncr1:4:0): Logical unit is in process of becoming ready</screen>
<sect2>
<title>Which Backup Program Is Best?</title>
<indexterm>
<primary>LISA</primary>
</indexterm>
@ -2916,6 +2792,7 @@ sa0(ncr1:4:0): Logical unit is in process of becoming ready</screen>
</authorgroup>
</sect1info>
<title>Network, Memory, and File-Backed File Systems</title>
<indexterm><primary>virtual disks</primary></indexterm>
<indexterm>
<primary>disks</primary>
@ -2948,6 +2825,7 @@ sa0(ncr1:4:0): Logical unit is in process of becoming ready</screen>
<sect2 id="disks-mdconfig">
<title>File-Backed File System</title>
<indexterm>
<primary>disks</primary>
<secondary>file-backed</secondary>
@ -3218,6 +3096,7 @@ Filesystem 1K-blocks Used Avail Capacity Mounted on
<sect1 id="quotas">
<title>File System Quotas</title>
<indexterm>
<primary>accounting</primary>
<secondary>disk space</secondary>
@ -3259,6 +3138,7 @@ Filesystem 1K-blocks Used Avail Capacity Mounted on
line instead:</para>
<programlisting>quota_enable="YES"</programlisting>
<indexterm>
<primary>disk quotas</primary>
<secondary>checking</secondary>
@ -3322,6 +3202,7 @@ Filesystem 1K-blocks Used Avail Capacity Mounted on
<sect2>
<title>Setting Quota Limits</title>
<indexterm>
<primary>disk quotas</primary>
<secondary>limits</secondary>
@ -3362,7 +3243,7 @@ Filesystem 1K-blocks Used Avail Capacity Mounted on
grace period, which is one week by default. If a user stays
over his or her soft limit longer than the grace period, the
soft limit will turn into a hard limit and no further
allocations will be allowed. When the user drops back below
allocations will be allowed. When the user drops back below
the soft limit, the grace period will be reset.</para>
<para>The following is an example of what you might see when you
@ -3415,6 +3296,7 @@ Filesystem 1K-blocks Used Avail Capacity Mounted on
<sect2>
<title>Checking Quota Limits and Disk Usage</title>
<indexterm>
<primary>disk quotas</primary>
<secondary>checking</secondary>
@ -3473,7 +3355,7 @@ Filesystem 1K-blocks Used Avail Capacity Mounted on
<para>Now restart <command>inetd</command>:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/inetd restart</userinput></screen>
<screen>&prompt.root; <userinput>service inetd restart</userinput></screen>
</sect2>
</sect1>
@ -3577,9 +3459,9 @@ Password:</screen>
<title>Add the New Hard Drive</title>
<para>Install the new drive to the system as explained in
<xref linkend="disks-adding"/>. For the purposes of this
example, a new hard drive partition has been added as
<filename>/dev/ad4s1c</filename>. The
<xref linkend="disks-adding"/>. For the purposes of
this example, a new hard drive partition has been added
as <filename>/dev/ad4s1c</filename>. The
<filename>/dev/ad0s1<replaceable>*</replaceable></filename>
devices represent existing standard FreeBSD partitions
on the example system.</para>
@ -3591,7 +3473,8 @@ Password:</screen>
</step>
<step>
<title>Create a Directory to Hold gbde Lock Files</title>
<title>Create a Directory to Hold <command>gbde</command>
Lock Files</title>
<screen>&prompt.root; <userinput>mkdir /etc/gbde</userinput></screen>
@ -3607,10 +3490,11 @@ Password:</screen>
</step>
<step>
<title>Initialize the gbde Partition</title>
<title>Initialize the <command>gbde</command>
Partition</title>
<para>A <application>gbde</application> partition must be
initialized before it can be used. This initialization
initialized before it can be used. This initialization
needs to be performed only once:</para>
<screen>&prompt.root; <userinput>gbde init /dev/ad4s1c -i -L /etc/gbde/ad4s1c.lock</userinput></screen>
@ -3744,12 +3628,13 @@ Filesystem Size Used Avail Capacity Mounted on
<para>After each boot, any encrypted file systems must be
re-attached to the kernel, checked for errors, and mounted,
before the file systems can be used. The required commands
before the file systems can be used. The required commands
must be executed as user <username>root</username>.</para>
<procedure>
<step>
<title>Attach the gbde Partition to the Kernel</title>
<title>Attach the <command>gbde</command> Partition to the
Kernel</title>
<screen>&prompt.root; <userinput>gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c.lock</userinput></screen>
@ -3807,7 +3692,8 @@ gbde_lockdir="/etc/gbde"</programlisting>
</sect3>
<sect3>
<title>Cryptographic Protections Employed by gbde</title>
<title>Cryptographic Protections Employed by
<command>gbde</command></title>
<para>&man.gbde.8; encrypts the sector payload using 128-bit
AES in CBC mode. Each sector on the disk is encrypted with
@ -4214,6 +4100,7 @@ Device 1K-blocks Used Avail Capacity
</sect1info>
<title>Highly Available Storage (HAST)</title>
<indexterm>
<primary>HAST</primary>
<secondary>high availability</secondary>
@ -4526,7 +4413,7 @@ Device 1K-blocks Used Avail Capacity
local disk, and start the &man.hastd.8; daemon:</para>
<screen>&prompt.root; <userinput>hastctl create test</userinput>
&prompt.root; <userinput>/etc/rc.d/hastd onestart</userinput></screen>
&prompt.root; <userinput>service hastd onestart</userinput></screen>
<note>
<para>It is <emphasis>not</emphasis> possible to use GEOM
@ -4612,11 +4499,11 @@ Device 1K-blocks Used Avail Capacity
same network segment to share an IP address. Set up
<acronym>CARP</acronym> on both nodes of the cluster
according to the documentation available in
<xref linkend="carp"/>. After setup, each node will have its
own <devicename>carp0</devicename> interface with a shared
IP address <replaceable>172.16.0.254</replaceable>. The
primary <acronym>HAST</acronym> node of the cluster must be
the master <acronym>CARP</acronym> node.</para>
<xref linkend="carp"/>. After setup, each node will have
its own <devicename>carp0</devicename> interface with a
shared IP address <replaceable>172.16.0.254</replaceable>.
The primary <acronym>HAST</acronym> node of the cluster must
be the master <acronym>CARP</acronym> node.</para>
<para>The <acronym>HAST</acronym> pool created in the previous
section is now ready to be exported to the other hosts on
@ -4658,7 +4545,7 @@ notify 30 {
<para>Restart &man.devd.8; on both nodes to put the new
configuration into effect:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/devd restart</userinput></screen>
<screen>&prompt.root; <userinput>service devd restart</userinput></screen>
<para>When the <devicename>carp0</devicename> interface goes
up or down (i.e., the interface state changes), the system

View file

@ -34,18 +34,18 @@ that might make this chapter too large.
<see>&dtrace;</see>
</indexterm>
<para>&dtrace;, also known as Dynamic Tracing, was developed by
&sun; as a tool for locating performance bottlenecks
in production and pre-production systems. It is not, in any way,
a debugging tool, but a tool for real time system analysis to
locate performance and other issues.</para>
<para>&dtrace;, also known as Dynamic Tracing, was developed by
&sun; as a tool for locating performance bottlenecks in
production and pre-production systems. It is not, in any way,
a debugging tool, but a tool for real time system analysis to
locate performance and other issues.</para>
<para>&dtrace; is a remarkable profiling tool, with an impressive
array of features for diagnosing system issues. It may also be
used to run pre-written scripts to take advantage of its
capabilities. Users may even author their own utilities using
the &dtrace; D Language, allowing them to customize their profiling
based on specific needs.</para>
<para>&dtrace; is a remarkable profiling tool, with an impressive
array of features for diagnosing system issues. It may also
be used to run pre-written scripts to take advantage of its
capabilities. Users may even author their own utilities using
the &dtrace; D Language, allowing them to customize their
profiling based on specific needs.</para>
<para>After reading this chapter, you will know:</para>
@ -55,8 +55,8 @@ that might make this chapter too large.
</listitem>
<listitem>
<para>Differences between the &solaris; &dtrace; implementation
and the one provided by &os;.</para>
<para>Differences between the &solaris; &dtrace;
implementation and the one provided by &os;.</para>
</listitem>
<listitem>
@ -136,20 +136,22 @@ that might make this chapter too large.
<para>Only <username>root</username> may use &dtrace; on &os;.
This is related to security differences, &solaris; has a few
low level security checks which do not yet exist in &os;. As
such, the <devicename>/dev/dtrace/dtrace</devicename> is strictly
limited to <username>root</username> users only.</para>
such, the <devicename>/dev/dtrace/dtrace</devicename> is
strictly limited to <username>root</username> users only.</para>
<para>Finally, the &dtrace; software falls under &sun;'s
<acronym>CDDL</acronym> license. The <literal>Common Development
and Distribution License</literal> comes with &os;, see the
<acronym>CDDL</acronym> license. The <literal>Common
Development and Distribution License</literal> comes with &os;,
see the
<filename>/usr/src/cddl/contrib/opensolaris/OPENSOLARIS.LICENSE</filename>
or view it online at
<ulink url="http://www.opensolaris.org/os/licensing"></ulink>.</para>
<ulink
url="http://www.opensolaris.org/os/licensing"></ulink>.</para>
<para>This license means that a &os; kernel with the &dtrace; options
is still <acronym>BSD</acronym> licensed; however the
<acronym>CDDL</acronym> kicks in when the modules are distributed
in binary form, or the binaries are loaded.</para>
<para>This license means that a &os; kernel with the &dtrace;
options is still <acronym>BSD</acronym> licensed; however
the <acronym>CDDL</acronym> kicks in when the modules are
distributed in binary form, or the binaries are loaded.</para>
</sect1>
<sect1 id="dtrace-enable">
@ -167,12 +169,14 @@ options DDB_CTF</programlisting>
<programlisting>options KDTRACE_FRAME</programlisting>
<para>This option provides support for the <acronym>FBT</acronym>
feature. &dtrace; will work without this option; however, there
will be limited support for function boundary tracing.</para>
</note>
<para>This option provides support for the
<acronym>FBT</acronym> feature. &dtrace; will work without
this option; however, there will be limited support for
function boundary tracing.</para>
</note>
<para>All sources must be rebuilt and installed with <acronym>CTF</acronym> options.
<para>All sources must be rebuilt and installed with
<acronym>CTF</acronym> options.
To accomplish this task, rebuild the &os; sources using:</para>
<!-- XXXTR: WITH_CTF has been reported to leave a user with a
@ -184,6 +188,7 @@ options DDB_CTF</programlisting>
<screen>&prompt.root; <userinput>cd /usr/src</userinput>
<!-- &prompt.root; <userinput>make WITH_CTF=1 buildworld</userinput> -->
&prompt.root; <userinput>make WITH_CTF=1 kernel</userinput></screen>
<!-- &prompt.root; <userinput>make WITH_CTF=1 installworld</userinput>
&prompt.root; <userinput>mergemaster -Ui</userinput></screen> -->
@ -191,31 +196,33 @@ options DDB_CTF</programlisting>
<para>After rebooting and allowing the new kernel to be loaded
into memory, support for the Korn shell should be added. This
is needed as the &dtrace; toolkit has several utilities written
is needed as the &dtrace;Toolkit has several utilities written
in <command>ksh</command>. Install the
<filename role="package">shells/ksh93</filename>. It is also
possible to run these tools under
<filename role="package">shells/pdksh</filename> or
<filename role="package">shells/mksh</filename>.</para>
<para>Finally, obtain the current &dtrace; toolkit. The current
version is available at
<ulink url="http://www.opensolaris.org/os/community/dtrace/dtracetoolkit/"></ulink>.
There is an install mechanism included; however, installation
is not required to make use of the bundled utilities.</para>
<para>Finally, obtain the current &dtrace;Toolkit.
If you are running FreeBSD 10, you will find the &dtrace;Toolkit
in <filename>/usr/share/dtrace</filename>.
Otherwise, you can install the &dtrace;Toolkit using the
<filename role="package">sysutils/DTraceToolkit</filename>
port.</para>
</sect1>
<sect1 id="dtrace-using">
<title>Using &dtrace;</title>
<para>Before making use of &dtrace; functionality, the &dtrace; device
must exist. To load the device, issue the following
<para>Before making use of &dtrace; functionality, the &dtrace;
device must exist. To load the device, issue the following
command:</para>
<screen>&prompt.root; <userinput>kldload dtraceall</userinput></screen>
<para>&dtrace; support should now be available. To view all probes
the administrator may now execute the following command:</para>
<para>&dtrace; support should now be available. To view all
probes the administrator may now execute the following
command:</para>
<screen>&prompt.root; <userinput>dtrace -l | more</userinput></screen>
@ -264,15 +271,16 @@ options DDB_CTF</programlisting>
which function is using the most kernel time. Run normally, it
will produce output similar to the following:</para>
<screen>&prompt.root; <userinput>./hotkernel</userinput>
<screen>&prompt.root; <userinput>cd /usr/share/dtrace/toolkit</userinput>
&prompt.root; <userinput>./hotkernel</userinput>
Sampling... Hit Ctrl-C to end.</screen>
<para>The system administrator must use the
<keycombo action="simul"><keycap>Ctrl</keycap><keycap>C</keycap>
</keycombo> key combination to stop the process. Upon
termination, the script will display a list of kernel functions and
timing information, sorting the output in increasing order of
time:</para>
termination, the script will display a list of kernel functions
and timing information, sorting the output in increasing order
of time:</para>
<screen>kernel`_thread_lock_flags 2 0.0%
0xc1097063 2 0.0%
@ -306,7 +314,8 @@ kernel`sched_idletd 137 0.3%
how we should look that up. -->
<para>This script will also work with kernel modules. To use this
feature, run the script with the <option>-m</option> flag:</para>
feature, run the script with the <option>-m</option>
flag:</para>
<screen>&prompt.root; <userinput>./hotkernel -m</userinput>
Sampling... Hit Ctrl-C to end.
@ -364,20 +373,22 @@ Elapsed Times for processes csh,
sigsuspend 6985124
read 3988049784</screen>
<para>As shown, the <function>read()</function> system call seems to use the
most time in nanoseconds with the <function>getpid()</function>
system call used the least amount of time.</para>
<para>As shown, the <function>read()</function> system call
seems to use the most time in nanoseconds with the
<function>getpid()</function> system call used the least amount
of time.</para>
</sect1>
<sect1 id="dtrace-language">
<title>The D Language</title>
<para>The &dtrace; Toolkit includes many scripts in the special language of
&dtrace;. This language is called <quote>the D language</quote> by &sun;
documentation, and it is very similar to C++. An in depth
discussion of the language is beyond the scope of this document. It is
extensively discussed
at <ulink url="http://wikis.sun.com/display/DTrace/Documentation"></ulink>.</para>
<para>The &dtrace; Toolkit includes many scripts in the special
language of &dtrace;. This language is called <quote>the D
language</quote> by &sun; documentation, and it is very similar
to C++. An in depth discussion of the language is beyond the
scope of this document. It is extensively discussed
at <ulink
url="http://wikis.oracle.com/display/DTrace/Documentation"></ulink>.</para>
</sect1>
</chapter>

File diff suppressed because it is too large Load diff

View file

@ -47,17 +47,18 @@
(<acronym>ZFS</acronym>).</para>
<para>There are different levels of support for the various file
systems in &os;. Some will require a kernel module to be loaded,
others may require a toolset to be installed. This chapter is
designed to help users of &os; access other file systems on their
systems, starting with the &sun; Z file
systems in &os;. Some will require a kernel module to be
loaded, others may require a toolset to be installed. This
chapter is designed to help users of &os; access other file
systems on their systems, starting with the &sun; Z file
system.</para>
<para>After reading this chapter, you will know:</para>
<itemizedlist>
<listitem>
<para>The difference between native and supported file systems.</para>
<para>The difference between native and supported file
systems.</para>
</listitem>
<listitem>
@ -113,10 +114,11 @@
<title>ZFS Tuning</title>
<para>The <acronym>ZFS</acronym> subsystem utilizes much of
the system resources, so some tuning may be required to provide
maximum efficiency during every-day use. As an experimental
feature in &os; this may change in the near future; however,
at this time, the following steps are recommended.</para>
the system resources, so some tuning may be required to
provide maximum efficiency during every-day use. As an
experimental feature in &os; this may change in the near
future; however, at this time, the following steps are
recommended.</para>
<sect3>
<title>Memory</title>
@ -127,9 +129,10 @@
several other tuning mechanisms in place.</para>
<para>Some people have had luck using fewer than one gigabyte
of memory, but with such a limited amount of physical memory,
when the system is under heavy load, it is very plausible
that &os; will panic due to memory exhaustion.</para>
of memory, but with such a limited amount of physical
memory, when the system is under heavy load, it is very
plausible that &os; will panic due to memory
exhaustion.</para>
</sect3>
<sect3>
@ -138,11 +141,12 @@
<para>It is recommended that unused drivers and options
be removed from the kernel configuration file. Since most
devices are available as modules, they may be loaded
using the <filename>/boot/loader.conf</filename> file.</para>
using the <filename>/boot/loader.conf</filename>
file.</para>
<para>Users of the &i386; architecture should add the following
option to their kernel configuration file, rebuild their
kernel, and reboot:</para>
<para>Users of the &i386; architecture should add the
following option to their kernel configuration file,
rebuild their kernel, and reboot:</para>
<programlisting>options KVA_PAGES=512</programlisting>
@ -158,11 +162,11 @@
<sect3>
<title>Loader Tunables</title>
<para>The <devicename>kmem</devicename> address space should be
increased on all &os; architectures. On the test system with
one gigabyte of physical memory, success was achieved with the
following options which should be placed in
the <filename>/boot/loader.conf</filename> file and the system
<para>The <devicename>kmem</devicename> address space should
be increased on all &os; architectures. On the test system
with one gigabyte of physical memory, success was achieved
with the following options which should be placed in the
<filename>/boot/loader.conf</filename> file and the system
restarted:</para>
<programlisting>vm.kmem_size="330M"
@ -170,9 +174,9 @@ vm.kmem_size_max="330M"
vfs.zfs.arc_max="40M"
vfs.zfs.vdev.cache.size="5M"</programlisting>
<para>For a more detailed list of recommendations for ZFS-related
tuning, see
<ulink url="http://wiki.freebsd.org/ZFSTuningGuide"></ulink>.</para>
<para>For a more detailed list of recommendations for
ZFS-related tuning, see <ulink
url="http://wiki.freebsd.org/ZFSTuningGuide"></ulink>.</para>
</sect3>
</sect2>
@ -184,23 +188,25 @@ vfs.zfs.vdev.cache.size="5M"</programlisting>
initialization. To set it, issue the following
commands:</para>
<screen>&prompt.root; <userinput>echo 'zfs_enable="YES"' &gt;&gt; /etc/rc.conf</userinput>
&prompt.root; <userinput>/etc/rc.d/zfs start</userinput></screen>
<screen>&prompt.root; <userinput>echo 'zfs_enable="YES"' &gt;&gt; /etc/rc.conf</userinput>
&prompt.root; <userinput>service zfs start</userinput></screen>
<para>The remainder of this document assumes three
<acronym>SCSI</acronym> disks are available, and their device names
are <devicename><replaceable>da0</replaceable></devicename>,
<devicename><replaceable>da1</replaceable></devicename>
and <devicename><replaceable>da2</replaceable></devicename>.
Users of <acronym>IDE</acronym> hardware may use the
<devicename><replaceable>ad</replaceable></devicename>
devices in place of <acronym>SCSI</acronym> hardware.</para>
<para>The remainder of this document assumes three
<acronym>SCSI</acronym> disks are available, and their
device names are
<devicename><replaceable>da0</replaceable></devicename>,
<devicename><replaceable>da1</replaceable></devicename>
and <devicename><replaceable>da2</replaceable></devicename>.
Users of <acronym>IDE</acronym> hardware may use the
<devicename><replaceable>ad</replaceable></devicename>
devices in place of <acronym>SCSI</acronym> hardware.</para>
<sect3>
<title>Single Disk Pool</title>
<para>To create a simple, non-redundant <acronym>ZFS</acronym> pool using a
single disk device, use the <command>zpool</command> command:</para>
<para>To create a simple, non-redundant <acronym>ZFS</acronym>
pool using a single disk device, use the
<command>zpool</command> command:</para>
<screen>&prompt.root; <userinput>zpool create example /dev/da0</userinput></screen>
@ -239,8 +245,8 @@ drwxr-xr-x 21 root wheel 512 Aug 29 23:12 ..
<para>The <literal>example/compressed</literal> is now a
<acronym>ZFS</acronym> compressed file system. Try copying
some large files to it by copying them to
<filename class="directory">/example/compressed</filename>.</para>
some large files to it by copying them to <filename
class="directory">/example/compressed</filename>.</para>
<para>The compression may now be disabled with:</para>
@ -307,8 +313,8 @@ example/data 17547008 0 17547008 0% /example/data</screen>
amount of available space. This is the reason for using
<command>df</command> through these examples, to show
that the file systems are using only the amount of space
they need and will all draw from the same pool.
The <acronym>ZFS</acronym> file system does away with concepts
they need and will all draw from the same pool. The
<acronym>ZFS</acronym> file system does away with concepts
such as volumes and partitions, and allows for several file
systems to occupy the same pool. Destroy the file systems,
and then destroy the pool as they are no longer
@ -332,28 +338,31 @@ example/data 17547008 0 17547008 0% /example/data</screen>
<para>As previously noted, this section will assume that
three <acronym>SCSI</acronym> disks exist as devices
<devicename>da0</devicename>, <devicename>da1</devicename>
and <devicename>da2</devicename> (or <devicename>ad0</devicename>
and beyond in case IDE disks are being used). To create a
<acronym>RAID</acronym>-Z pool, issue the following
command:</para>
and <devicename>da2</devicename> (or
<devicename>ad0</devicename> and beyond in case IDE disks
are being used). To create a <acronym>RAID</acronym>-Z
pool, issue the following command:</para>
<screen>&prompt.root; <userinput>zpool create storage raidz da0 da1 da2</userinput></screen>
<note><para>&sun; recommends that the amount of devices used in a
<acronym>RAID</acronym>-Z configuration is between three and nine. If your needs
call for a single pool to consist of 10 disks or more, consider
breaking it up into smaller <acronym>RAID</acronym>-Z groups. If
you only have two disks and still require redundancy, consider using
a <acronym>ZFS</acronym> mirror instead. See the &man.zpool.8;
manual page for more details.</para></note>
<note>
<para>&sun; recommends that the amount of devices used
in a <acronym>RAID</acronym>-Z configuration is between
three and nine. If your needs call for a single pool to
consist of 10 disks or more, consider breaking it up into
smaller <acronym>RAID</acronym>-Z groups. If you only
have two disks and still require redundancy, consider
using a <acronym>ZFS</acronym> mirror instead. See the
&man.zpool.8; manual page for more details.</para>
</note>
<para>The <literal>storage</literal> zpool should have been
created. This may be verified by using the &man.mount.8; and
&man.df.1; commands as before. More disk devices may have
been allocated by adding them to the end of the list above.
Make a new file system in the pool, called
<literal>home</literal>, where user files will eventually be
placed:</para>
created. This may be verified by using the &man.mount.8;
and &man.df.1; commands as before. More disk devices may
have been allocated by adding them to the end of the list
above. Make a new file system in the pool, called
<literal>home</literal>, where user files will eventually
be placed:</para>
<screen>&prompt.root; <userinput>zfs create storage/home</userinput></screen>
@ -529,13 +538,14 @@ errors: No known data errors</screen>
<screen>&prompt.root; <userinput>zfs set checksum=off storage/home</userinput></screen>
<para>This is not a wise idea, however, as checksums take
very little storage space and are more useful when enabled. There
also appears to be no noticeable costs in having them enabled.
While enabled, it is possible to have <acronym>ZFS</acronym>
check data integrity using checksum verification. This
process is known as <quote>scrubbing.</quote> To verify the
data integrity of the <literal>storage</literal> pool, issue
the following command:</para>
very little storage space and are more useful when enabled.
There also appears to be no noticeable costs in having them
enabled. While enabled, it is possible to have
<acronym>ZFS</acronym> check data integrity using checksum
verification. This process is known as
<quote>scrubbing.</quote> To verify the data integrity of
the <literal>storage</literal> pool, issue the following
command:</para>
<screen>&prompt.root; <userinput>zpool scrub storage</userinput></screen>
@ -571,178 +581,187 @@ errors: No known data errors</screen>
</sect3>
<sect3>
<title>ZFS Quotas</title>
<title>ZFS Quotas</title>
<para>ZFS supports different types of quotas; the refquota, the
general quota, the user quota, and the group quota. This
section will explain the basics of each one, and include some
usage instructions.</para>
<para>ZFS supports different types of quotas; the
refquota, the general quota, the user quota, and
the group quota. This section will explain the
basics of each one, and include some usage
instructions.</para>
<para>Quotas limit the amount of space that a dataset and its
descendants can consume, and enforce a limit on the amount of
space used by filesystems and snapshots for the descendants.
In terms of users, quotas are useful to limit the amount of
space a particular user can use.</para>
<para>Quotas limit the amount of space that a dataset
and its descendants can consume, and enforce a limit
on the amount of space used by filesystems and
snapshots for the descendants. In terms of users,
quotas are useful to limit the amount of space a
particular user can use.</para>
<note>
<para>Quotas cannot be set on volumes, as the
<literal>volsize</literal> property acts as an implicit
quota.</para>
</note>
<note>
<para>Quotas cannot be set on volumes, as the
<literal>volsize</literal> property acts as an
implicit quota.</para>
</note>
<para>The refquota,
<literal>refquota=<replaceable>size</replaceable></literal>,
limits the amount of space a dataset can consume by enforcing
a hard limit on the space used. However, this hard limit does
not include space used by descendants, such as file systems or
snapshots.</para>
<para>The refquota,
<literal>refquota=<replaceable>size</replaceable></literal>,
limits the amount of space a dataset can consume
by enforcing a hard limit on the space used. However,
this hard limit does not include space used by descendants,
such as file systems or snapshots.</para>
<para>To enforce a general quota of 10&nbsp;GB for
<filename>storage/home/bob</filename>, use the
following:</para>
<para>To enforce a general quota of 10&nbsp;GB for
<filename>storage/home/bob</filename>, use the
following:</para>
<screen>&prompt.root; <userinput>zfs set quota=10G storage/home/bob</userinput></screen>
<screen>&prompt.root; <userinput>zfs set quota=10G storage/home/bob</userinput></screen>
<para>User quotas limit the amount of space that can be used by
the specified user. The general format is
<literal>userquota@<replaceable>user</replaceable>=<replaceable>size</replaceable></literal>,
and the user's name must be in one of the following
formats:</para>
<para>User quotas limit the amount of space that can
be used by the specified user. The general format
is
<literal>userquota@<replaceable>user</replaceable>=<replaceable>size</replaceable></literal>,
and the user's name must be in one of the following
formats:</para>
<itemizedlist>
<listitem>
<para><acronym
role="Portable Operating System Interface">POSIX</acronym>
compatible name (e.g., <replaceable>joe</replaceable>).</para>
</listitem>
<listitem>
<para><acronym
role="Portable Operating System Interface">POSIX</acronym>
numeric ID (e.g., <replaceable>789</replaceable>).</para>
</listitem>
<listitem>
<para><acronym
role="System Identifier">SID</acronym>
name (e.g.,
<replaceable>joe.bloggs@example.com</replaceable>).</para>
</listitem>
<listitem>
<para><acronym role="System Identifier">SID</acronym>
numeric ID (e.g.,
<replaceable>S-1-123-456-789</replaceable>).</para>
</listitem>
</itemizedlist>
<itemizedlist>
<listitem>
<para><acronym
role="Portable Operating System
Interface">POSIX</acronym> compatible name
(e.g., <replaceable>joe</replaceable>).</para>
</listitem>
<para>For example, to enforce a quota of 50&nbsp;GB for a user
named <replaceable>joe</replaceable>, use the
following:</para>
<listitem>
<para><acronym
role="Portable Operating System
Interface">POSIX</acronym>
numeric ID (e.g.,
<replaceable>789</replaceable>).</para>
</listitem>
<screen>&prompt.root; <userinput>zfs set userquota@joe=50G</userinput></screen>
<listitem>
<para><acronym role="System Identifier">SID</acronym> name
(e.g.,
<replaceable>joe.bloggs@example.com</replaceable>).</para>
</listitem>
<para>To remove the quota or make sure that one is not
set, instead use:</para>
<listitem>
<para><acronym role="System Identifier">SID</acronym>
numeric ID (e.g.,
<replaceable>S-1-123-456-789</replaceable>).</para>
</listitem>
</itemizedlist>
<screen>&prompt.root; <userinput>zfs set userquota@joe=none</userinput></screen>
<para>For example, to enforce a quota of 50&nbsp;GB for a user
named <replaceable>joe</replaceable>, use the
following:</para>
<para>User quota properties are not displayed by
<command>zfs get all</command>. Non-<username>root</username>
users can only see their own quotas unless they have been
granted the <literal>userquota</literal> privilege. Users
with this privilege are able to view and set everyone's
quota.</para>
<screen>&prompt.root; <userinput>zfs set userquota@joe=50G</userinput></screen>
<para>The group quota limits the amount of space that a
specified user group can consume. The general format is
<literal>groupquota@<replaceable>group</replaceable>=<replaceable>size</replaceable></literal>.</para>
<para>To remove the quota or make sure that one is not set,
instead use:</para>
<para>To set the quota for the group
<replaceable>firstgroup</replaceable> to 50&nbsp;GB,
use:</para>
<screen>&prompt.root; <userinput>zfs set userquota@joe=none</userinput></screen>
<screen>&prompt.root; <userinput>zfs set groupquota@firstgroup=50G</userinput></screen>
<para>User quota properties are not displayed by
<command>zfs get all</command>.
Non-<username>root</username> users can only see their own
quotas unless they have been granted the
<literal>userquota</literal> privilege. Users with this
privilege are able to view and set everyone's quota.</para>
<para>To remove the quota for the group
<replaceable>firstgroup</replaceable>, or make sure that one
is not set, instead use:</para>
<para>The group quota limits the amount of space that a
specified user group can consume. The general format is
<literal>groupquota@<replaceable>group</replaceable>=<replaceable>size</replaceable></literal>.</para>
<screen>&prompt.root; <userinput>zfs set groupquota@firstgroup=none</userinput></screen>
<para>To set the quota for the group
<replaceable>firstgroup</replaceable> to 50&nbsp;GB,
use:</para>
<para>As with the user quota property,
non-<username>root</username> users can only see the quotas
associated with the user groups that they belong to, however
a <username>root</username> user or a user with the
<literal>groupquota</literal> privilege can view and set all
quotas for all groups.</para>
<screen>&prompt.root; <userinput>zfs set groupquota@firstgroup=50G</userinput></screen>
<para>The <command>zfs userspace</command> subcommand displays
the amount of space consumed by each user on the specified
filesystem or snapshot, along with any specified quotas.
The <command>zfs groupspace</command> subcommand does the
same for groups. For more information about supported
options, or only displaying specific options, see
&man.zfs.1;.</para>
<para>To remove the quota for the group
<replaceable>firstgroup</replaceable>, or make sure that one
is not set, instead use:</para>
<para>To list the quota for
<filename>storage/home/bob</filename>, if you have the
correct privileges or are <username>root</username>,
use the following:</para>
<screen>&prompt.root; <userinput>zfs set groupquota@firstgroup=none</userinput></screen>
<screen>&prompt.root; <userinput>zfs get quota storage/home/bob</userinput></screen>
<para>As with the user quota property,
non-<username>root</username> users can only see the quotas
associated with the user groups that they belong to, however
a <username>root</username> user or a user with the
<literal>groupquota</literal> privilege can view and set all
quotas for all groups.</para>
<para>The <command>zfs userspace</command> subcommand displays
the amount of space consumed by each user on the specified
filesystem or snapshot, along with any specified quotas.
The <command>zfs groupspace</command> subcommand does the
same for groups. For more information about supported
options, or only displaying specific options, see
&man.zfs.1;.</para>
<para>To list the quota for
<filename>storage/home/bob</filename>, if you have the
correct privileges or are <username>root</username>, use the
following:</para>
<screen>&prompt.root; <userinput>zfs get quota storage/home/bob</userinput></screen>
</sect3>
<sect3>
<title>ZFS Reservations</title>
<title>ZFS Reservations</title>
<para>ZFS supports two types of space reservations. This
section will explain the basics of each one, and include
some usage instructions.</para>
<para>ZFS supports two types of space reservations.
This section will explain the basics of each one,
and include some usage instructions.</para>
<para>The <literal>reservation</literal> property makes it
possible to reserve a minimum amount of space guaranteed for a
dataset and its descendants. This means that if a 10&nbsp;GB
reservation is set on <filename>storage/home/bob</filename>,
if disk space gets low, at least 10&nbsp;GB of space is
reserved for this dataset. The
<literal>refreservation</literal> property sets or indicates
the minimum amount of space guaranteed to a dataset excluding
descendants, such as snapshots. As an example, if a snapshot
was taken of <filename>storage/home/bob</filename>, enough
disk space would have to exist outside of the
<literal>refreservation</literal> amount for the operation to
succeed because descendants of the main data set are not
counted by the <literal>refreservation</literal> amount and
so do not encroach on the space set.</para>
<para>The <literal>reservation</literal> property makes it
possible to reserve a minimum amount of space guaranteed
for a dataset and its descendants. This means that if a
10&nbsp;GB reservation is set on
<filename>storage/home/bob</filename>, if disk
space gets low, at least 10&nbsp;GB of space is reserved
for this dataset. The <literal>refreservation</literal>
property sets or indicates the minimum amount of space
guaranteed to a dataset excluding descendants, such as
snapshots. As an example, if a snapshot was taken of
<filename>storage/home/bob</filename>, enough disk space
would have to exist outside of the
<literal>refreservation</literal> amount for the operation
to succeed because descendants of the main data set are
not counted by the <literal>refreservation</literal>
amount and so do not encroach on the space set.</para>
<para>Reservations of any sort are useful in many situations,
for example planning and testing the suitability of disk space
allocation in a new system, or ensuring that enough space is
available on file systems for system recovery procedures and
files.</para>
<para>Reservations of any sort are useful in many
situations, for example planning and testing the
suitability of disk space allocation in a new system, or
ensuring that enough space is available on file systems
for system recovery procedures and files.</para>
<para>The general format of the <literal>reservation</literal>
property is
<literal>reservation=<replaceable>size</replaceable></literal>,
so to set a reservation of 10&nbsp;GB on
<filename>storage/home/bob</filename>the below command is
used:</para>
<para>The general format of the <literal>reservation</literal>
property is
<literal>reservation=<replaceable>size</replaceable></literal>,
so to set a reservation of 10&nbsp;GB on
<filename>storage/home/bob</filename>the below command is
used:</para>
<screen>&prompt.root; <userinput>zfs set reservation=10G storage/home/bob</userinput></screen>
<screen>&prompt.root; <userinput>zfs set reservation=10G storage/home/bob</userinput></screen>
<para>To make sure that no reservation is set, or to remove a
reservation, instead use:</para>
<para>To make sure that no reservation is set, or to remove a
reservation, instead use:</para>
<screen>&prompt.root; <userinput>zfs set reservation=none storage/home/bob</userinput></screen>
<screen>&prompt.root; <userinput>zfs set reservation=none storage/home/bob</userinput></screen>
<para>The same principle can be applied to the
<literal>refreservation</literal> property for setting a
refreservation, with the general format
<literal>refreservation=<replaceable>size</replaceable></literal>.</para>
<para>The same principle can be applied to the
<literal>refreservation</literal> property for setting a
refreservation, with the general format
<literal>refreservation=<replaceable>size</replaceable></literal>.</para>
<para>To check if any reservations or refreservations exist on
<filename>storage/home/bob</filename>, execute one of the
following commands:</para>
<para>To check if any reservations or refreservations exist on
<filename>storage/home/bob</filename>, execute one of the
following commands:</para>
<screen>&prompt.root; <userinput>zfs get reservation storage/home/bob</userinput>
<screen>&prompt.root; <userinput>zfs get reservation storage/home/bob</userinput>
&prompt.root; <userinput>zfs get refreservation storage/home/bob</userinput></screen>
</sect3>
</sect2>
@ -760,12 +779,13 @@ errors: No known data errors</screen>
<para>The &man.ext2fs.5; file system kernel implementation was
written by Godmar Back, and the driver first appeared in
&os; 2.2. In &os; 8 and earlier, the code is licensed under
the <acronym>GNU</acronym> Public License, however under &os; 9,
the code has been rewritten and it is now licensed under the
<acronym>BSD</acronym> license.</para>
the <acronym>GNU</acronym> Public License, however under &os;
9, the code has been rewritten and it is now licensed under
the <acronym>BSD</acronym> license.</para>
<para>The &man.ext2fs.5; driver will allow the &os; kernel
to both read and write to <acronym>ext2</acronym> file systems.</para>
to both read and write to <acronym>ext2</acronym> file
systems.</para>
<para>First, load the kernel loadable module:</para>
@ -776,6 +796,7 @@ errors: No known data errors</screen>
<screen>&prompt.root; <userinput>mount -t ext2fs /dev/ad1s1 /mnt</userinput></screen>
</sect2>
<sect2>
<title>XFS</title>
@ -801,7 +822,7 @@ errors: No known data errors</screen>
<para>To mount a &man.xfs.5; volume located on
<filename>/dev/ad1s1</filename>, do the following:</para>
<screen>&prompt.root; <userinput>mount -t xfs /dev/as1s1 /mnt</userinput></screen>
<screen>&prompt.root; <userinput>mount -t xfs /dev/ad1s1 /mnt</userinput></screen>
<para>Also useful to note is that the
<filename role="package">sysutils/xfsprogs</filename> port
@ -815,6 +836,7 @@ errors: No known data errors</screen>
metadata. This can be used to quickly create a read-only
filesystem which can be tested on &os;.</para>
</sect2>
<sect2>
<title>ReiserFS</title>
@ -826,7 +848,8 @@ errors: No known data errors</screen>
access ReiserFS file systems and read their contents, but not
write to them, currently.</para>
<para>First, the kernel-loadable module needs to be loaded:</para>
<para>First, the kernel-loadable module needs to be
loaded:</para>
<screen>&prompt.root; <userinput>kldload reiserfs</userinput></screen>

File diff suppressed because it is too large Load diff

View file

@ -234,210 +234,598 @@ Done.</screen>
<indexterm>
<primary>Disk Mirroring</primary>
</indexterm>
<indexterm>
<primary>RAID1</primary>
</indexterm>
<para>Mirroring is a technology used by many corporations and home
users to back up data without interruption. When a mirror
exists, it simply means that diskB replicates diskA. Or,
perhaps diskC+D replicates diskA+B. Regardless of the disk
configuration, the important aspect is that information on one
disk or partition is being replicated. Later, that information
could be more easily restored, backed up without causing service
or access interruption, and even be physically stored in a data
safe.</para>
<para><acronym>RAID1</acronym>, or
<firstterm>mirroring</firstterm>, is the technique of writing
the same data to more than one disk drive. Mirrors are usually
used to guard against data loss due to drive failure. Each
drive in a mirror contains an identical copy of the data. When
an individual drive fails, the mirror continues to work,
providing data from the drives that are still functioning. The
computer keeps running, and the administrator has time to
replace the failed drive without user interruption.</para>
<para>To begin, ensure the system has two disk drives of equal
size, these exercises assume they are direct access (&man.da.4;)
<acronym>SCSI</acronym> disks.</para>
<para>Two common situations are illustrated in these examples.
The first is creating a mirror out of two new drives and using
it as a replacement for an existing single drive. The second
example creates a mirror on a single new drive, copies the old
drive's data to it, then inserts the old drive into the
mirror. While this procedure is slightly more complicated, it
only requires one new drive.</para>
<sect2>
<title>Mirroring Primary Disks</title>
<para>Traditionally, the two drives in a mirror are identical in
model and capacity, but &man.gmirror.8; does not require that.
Mirrors created with dissimilar drives will have a capacity
equal to that of the smallest drive in the mirror. Extra space
on larger drives will be unused. Drives inserted into the
mirror later must have at least as much capacity as the smallest
drive already in the mirror.</para>
<para>Assuming &os; has been installed on the first,
<devicename>da0</devicename> disk device, &man.gmirror.8;
should be told to store its primary data there.</para>
<warning>
<para>The mirroring procedures shown here are non-destructive,
but as with any major disk operation, make a full backup
first.</para>
</warning>
<para>Before building the mirror, enable additional debugging
information and opening access to the device by setting the
<varname>kern.geom.debugflags</varname> &man.sysctl.8; option
to the following value:</para>
<sect2 id="GEOM-mirror-metadata">
<title>Metadata Issues</title>
<screen>&prompt.root; <userinput>sysctl kern.geom.debugflags=17</userinput></screen>
<para>Many disk systems store metadata at the end of each disk.
Old metadata should be erased before reusing the disk for a
mirror. Most problems are caused by two particular types of
leftover metadata: GPT partition tables, and old
&man.gmirror.8; metadata from a previous mirror.</para>
<para>Now create the mirror. Begin the process by storing
meta-data information on the primary disk device,
effectively creating the
<filename class="devicefile">/dev/mirror/gm</filename> device
using the following command:</para>
<para>GPT metadata can be erased with &man.gpart.8;. This
example erases both primary and backup GPT partition tables
from disk <devicename>ada8</devicename>:</para>
<warning>
<para>Creating a mirror out of the boot drive may result in
data loss if any data has been stored on the last sector of
the disk. This risk is reduced if creating the mirror is
done promptly after a fresh install of &os;. The following
procedure is also incompatible with the default installation
settings of &os;&nbsp;9.<replaceable>X</replaceable> which
use the new <acronym>GPT</acronym> partition scheme. GEOM
will overwrite <acronym>GPT</acronym> metadata, causing data
loss and possibly an unbootable system.</para>
</warning>
<screen>&prompt.root; <userinput>gpart destroy -F ada8</userinput></screen>
<screen>&prompt.root; <userinput>gmirror label -vb round-robin gm0 /dev/da0</userinput></screen>
<para>&man.gmirror.8; can remove a disk from an active mirror
and erase the metadata in one step. Here, the example disk
<devicename>ada8</devicename> is removed from the active
mirror <devicename>gm4</devicename>:</para>
<para>The system should respond with:</para>
<screen>&prompt.root; <userinput>gmirror remove gm4 ada8</userinput></screen>
<screen>Metadata value stored on /dev/da0.
Done.</screen>
<para>If the mirror is not running but old mirror metadata is
still on the disk, use <command>gmirror clear</command> to
remove it:</para>
<para>Initialize GEOM, this will load the
<filename>/boot/kernel/geom_mirror.ko</filename> kernel
module:</para>
<screen>&prompt.root; <userinput>gmirror clear ada8</userinput></screen>
<screen>&prompt.root; <userinput>gmirror load</userinput></screen>
<note>
<para>When this command completes successfully, it creates the
<devicename>gm0</devicename> device node under the
<filename class="directory">/dev/mirror</filename>
directory.</para>
</note>
<para>Enable loading of the <filename>geom_mirror.ko</filename>
kernel module during system initialization:</para>
<screen>&prompt.root; <userinput>echo 'geom_mirror_load="YES"' &gt;&gt; /boot/loader.conf</userinput></screen>
<para>Edit the <filename>/etc/fstab</filename> file, replacing
references to the old <devicename>da0</devicename> with the
new device nodes of the <devicename>gm0</devicename> mirror
device.</para>
<note>
<para>If &man.vi.1; is your preferred editor, the following is
an easy way to accomplish this task:</para>
<screen>&prompt.root; <userinput>vi /etc/fstab</userinput></screen>
<para>In &man.vi.1; back up the current contents of
<filename>fstab</filename> by typing
<userinput>:w /etc/fstab.bak</userinput>. Then
replace all old <devicename>da0</devicename> references
with <devicename>gm0</devicename> by typing
<userinput>:%s/da/mirror\/gm/g</userinput>.</para>
</note>
<para>The resulting <filename>fstab</filename> file should look
similar to the following. It does not matter if the disk
drives are <acronym>SCSI</acronym> or <acronym>ATA</acronym>,
the <acronym>RAID</acronym> device will be
<devicename>gm</devicename> regardless.</para>
<programlisting># Device Mountpoint FStype Options Dump Pass#
/dev/mirror/gm0s1b none swap sw 0 0
/dev/mirror/gm0s1a / ufs rw 1 1
/dev/mirror/gm0s1d /usr ufs rw 0 0
/dev/mirror/gm0s1f /home ufs rw 2 2
#/dev/mirror/gm0s2d /store ufs rw 2 2
/dev/mirror/gm0s1e /var ufs rw 2 2
/dev/acd0 /cdrom cd9660 ro,noauto 0 0</programlisting>
<para>Reboot the system:</para>
<screen>&prompt.root; <userinput>shutdown -r now</userinput></screen>
<para>During system initialization, the
<devicename>gm0</devicename> should be used in place of the
<devicename>da0</devicename> device. Once fully initialized,
this may be checked by visually inspecting the output from
the <command>mount</command> command:</para>
<screen>&prompt.root; <userinput>mount</userinput>
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/mirror/gm0s1a 1012974 224604 707334 24% /
devfs 1 1 0 100% /dev
/dev/mirror/gm0s1f 45970182 28596 42263972 0% /home
/dev/mirror/gm0s1d 6090094 1348356 4254532 24% /usr
/dev/mirror/gm0s1e 3045006 2241420 559986 80% /var
devfs 1 1 0 100% /var/named/dev</screen>
<para>The output looks good, as expected. Finally, to begin
synchronization, insert the <devicename>da1</devicename> disk
into the mirror using the following command:</para>
<screen>&prompt.root; <userinput>gmirror insert gm0 /dev/da1</userinput></screen>
<para>As the mirror is built the status may be checked using
the following command:</para>
<screen>&prompt.root; <userinput>gmirror status</userinput></screen>
<para>Once the mirror has been built and all current data
has been synchronized, the output from the above command
should look like:</para>
<screen> Name Status Components
mirror/gm0 COMPLETE da0
da1</screen>
<para>If there are any issues, or the mirror is still
completing the build process, the example will show
<literal>DEGRADED</literal> in place of
<literal>COMPLETE</literal>.</para>
<para>&man.gmirror.8; stores one block of metadata at the end of
the disk. Because GPT partition schemes also store metadata
at the end of the disk, mirroring full GPT disks with
&man.gmirror.8; is not recommended. MBR partitioning is used
here because it only stores a partition table at the start of
the disk and does not conflict with &man.gmirror.8;.</para>
</sect2>
<sect2>
<title>Creating a Mirror with Two New Disks</title>
<para>In this example, &os; has already been installed on a
single disk, <devicename>ada0</devicename>. Two new disks,
<devicename>ada1</devicename> and
<devicename>ada2</devicename>, have been connected to the
system. A new mirror will be created on these two disks and
used to replace the old single disk.</para>
<para>&man.gmirror.8; requires a kernel module,
<filename>geom_mirror.ko</filename>, either built into the
kernel or loaded at boot- or run-time. Manually load the
kernel module now:</para>
<screen>&prompt.root; <userinput>gmirror load</userinput></screen>
<para>Create the mirror with the two new drives.</para>
<screen>&prompt.root; <userinput>gmirror label -v gm0 /dev/ada1 /dev/ada2</userinput></screen>
<para><devicename>gm0</devicename> is a user-chosen device name
assigned to the new mirror. After the mirror has been
started, this device name will appear in the
<filename>/dev/mirror/</filename> directory.</para>
<para>MBR and bsdlabel partition tables can now be created on
the mirror with &man.gpart.8;. Here we show a traditional
split-filesystem layout, with partitions for
<filename>/</filename>, swap, <filename>/var</filename>,
<filename>/tmp</filename>, and <filename>/usr</filename>. A
single <filename>/</filename> filesystem and a swap partition
will also work.</para>
<para>Partitions on the mirror do not have to be the same size
as those on the existing disk, but they must be large enough
to hold all the data already present on
<devicename>ada0</devicename>.</para>
<screen>&prompt.root; <userinput>gpart create -s MBR mirror/gm0</userinput>
&prompt.root; <userinput>gpart add -t freebsd -a 4k mirror/gm0</userinput>
&prompt.root; <userinput>gpart show mirror/gm0</userinput>
=> 63 156301423 mirror/gm0 MBR (74G)
63 63 - free - (31k)
126 156301299 1 freebsd (74G)
156301425 61 - free - (30k)</screen>
<screen>&prompt.root; <userinput>gpart create -s BSD mirror/gm0s1</userinput>
&prompt.root; <userinput>gpart add -t freebsd-ufs -a 4k -s 2g mirror/gm0s1</userinput>
&prompt.root; <userinput>gpart add -t freebsd-swap -a 4k -s 4g mirror/gm0s1</userinput>
&prompt.root; <userinput>gpart add -t freebsd-ufs -a 4k -s 2g mirror/gm0s1</userinput>
&prompt.root; <userinput>gpart add -t freebsd-ufs -a 4k -s 1g mirror/gm0s1</userinput>
&prompt.root; <userinput>gpart add -t freebsd-ufs -a 4k mirror/gm0s1</userinput>
&prompt.root; <userinput>gpart show mirror/gm0s1</userinput>
=> 0 156301299 mirror/gm0s1 BSD (74G)
0 2 - free - (1.0k)
2 4194304 1 freebsd-ufs (2.0G)
4194306 8388608 2 freebsd-swap (4.0G)
12582914 4194304 4 freebsd-ufs (2.0G)
16777218 2097152 5 freebsd-ufs (1.0G)
18874370 137426928 6 freebsd-ufs (65G)
156301298 1 - free - (512B)</screen>
<para>Make the mirror bootable by installing bootcode in the MBR
and bsdlabel and setting the active slice:</para>
<screen>&prompt.root; <userinput>gpart bootcode -b /boot/mbr mirror/gm0</userinput>
&prompt.root; <userinput>gpart set -a active -i 1 mirror/gm0</userinput>
&prompt.root; <userinput>gpart bootcode -b /boot/boot mirror/gm0s1</userinput></screen>
<para>Format the filesystems on the new mirror, enabling
soft-updates.</para>
<screen>&prompt.root; <userinput>newfs -U /dev/mirror/gm0s1a</userinput>
&prompt.root; <userinput>newfs -U /dev/mirror/gm0s1d</userinput>
&prompt.root; <userinput>newfs -U /dev/mirror/gm0s1e</userinput>
&prompt.root; <userinput>newfs -U /dev/mirror/gm0s1f</userinput></screen>
<para>Filesystems from the original disk
(<devicename>ada0</devicename>) can now be copied onto the
mirror with &man.dump.8; and &man.restore.8;.</para>
<screen>&prompt.root; <userinput>mount /dev/mirror/gm0s1a /mnt</userinput>
&prompt.root; <userinput>dump -C16 -b64 -0aL -f - / | (cd /mnt &amp;&amp; restore -rf -)</userinput>
&prompt.root; <userinput>mount /dev/mirror/gm0s1d /mnt/var</userinput>
&prompt.root; <userinput>mount /dev/mirror/gm0s1e /mnt/tmp</userinput>
&prompt.root; <userinput>mount /dev/mirror/gm0s1f /mnt/usr</userinput>
&prompt.root; <userinput>dump -C16 -b64 -0aL -f - /var | (cd /mnt/var &amp;&amp; restore -rf -)</userinput>
&prompt.root; <userinput>dump -C16 -b64 -0aL -f - /tmp | (cd /mnt/tmp &amp;&amp; restore -rf -)</userinput>
&prompt.root; <userinput>dump -C16 -b64 -0aL -f - /usr | (cd /mnt/usr &amp;&amp; restore -rf -)</userinput></screen>
<para><filename>/mnt/etc/fstab</filename> must be edited to
point to the new mirror filesystems:</para>
<programlisting># Device Mountpoint FStype Options Dump Pass#
/dev/mirror/gm0s1a / ufs rw 1 1
/dev/mirror/gm0s1b none swap sw 0 0
/dev/mirror/gm0s1d /var ufs rw 2 2
/dev/mirror/gm0s1e /tmp ufs rw 2 2
/dev/mirror/gm0s1f /usr ufs rw 2 2</programlisting>
<para>If the &man.gmirror.8; kernel module has not been built
into the kernel, <filename>/mnt/boot/loader.conf</filename> is
edited to load the module at boot:</para>
<programlisting>geom_mirror_load="YES"</programlisting>
<para>Reboot the system to test the new mirror and verify that
all data has been copied. The BIOS will see the mirror as two
individual drives rather than a mirror. Because the drives
are identical, it does not matter which is selected to
boot.</para>
<para>See the
<link linkend="gmirror-troubleshooting">Troubleshooting</link>
section if there are problems booting. Powering down and
disconnecting the original <devicename>ada0</devicename> disk
will allow it to be kept as an offline backup.</para>
<para>In use, the mirror will behave just like the original
single drive.</para>
</sect2>
<sect2>
<title>Creating a Mirror with an Existing Drive</title>
<para>In this example, &os; has already been installed on a
single disk, <devicename>ada0</devicename>. A new disk,
<devicename>ada1</devicename>, has been connected to the
system. A one-disk mirror will be created on the new disk,
the existing system copied onto it, and then the old disk will be
inserted into the mirror. This slightly complex procedure is
required because &man.gmirror.8; needs to put a 512-byte block
of metadata at the end of each disk, and the existing
<devicename>ada0</devicename> has usually had all of its space
already allocated.</para>
<para>Load the &man.gmirror.8; kernel module.</para>
<screen>&prompt.root; <userinput>gmirror load</userinput></screen>
<para>Check the media size of the original disk with
&man.diskinfo.8;.</para>
<screen>&prompt.root; <userinput>diskinfo -v ada0 | head -n3</userinput>
/dev/ada0
512 # sectorsize
1000204821504 # mediasize in bytes (931G)</screen>
<para>Create a mirror on the new disk. To make certain that the
mirror capacity is not any larger than the original drive,
&man.gnop.8; is used to create a fake drive of the exact same
size. This drive does not store any data, but is used only to
limit the size of the mirror. When &man.gmirror.8; creates
the mirror, it will restrict the capacity to the size of
<devicename>gzero.nop</devicename> even if the new drive
(<devicename>ada1</devicename>) has more space. Note that the
<replaceable>1000204821504</replaceable> in the second line
should be equal to <devicename>ada0</devicename>'s media size
as shown by &man.diskinfo.8; above.</para>
<screen>&prompt.root; <userinput>geom zero load</userinput>
&prompt.root; <userinput>gnop create -s 1000204821504 gzero</userinput>
&prompt.root; <userinput>gmirror label -v gm0 gzero.nop ada1</userinput>
&prompt.root; <userinput>gmirror forget gm0</userinput></screen>
<para><devicename>gzero.nop</devicename> does not store any
data, so the mirror does not see it as connected. The mirror
is told to <quote>forget</quote> unconnected components,
removing references to <devicename>gzero.nop</devicename>.
The result is a mirror device containing only a single disk,
<devicename>ada1</devicename>.</para>
<para>After creating <devicename>gm0</devicename>, view the
partition table on <devicename>ada0</devicename>.</para>
<para>This output is from a 1&nbsp;TB drive. If there is some
unallocated space at the end of the drive, the contents may be
copied directly from <devicename>ada0</devicename> to the new
mirror.</para>
<para>However, if the output shows that all of the space on the
disk is allocated like the following listing, there is no
space available for the 512-byte &man.gmirror.8; metadata at
the end of the disk.</para>
<screen>&prompt.root; <userinput>gpart show ada0</userinput>
=> 63 1953525105 ada0 MBR (931G)
63 1953525105 1 freebsd [active] (931G)</screen>
<para>In this case, the partition table must be edited to reduce
the capacity by one sector on
<devicename>mirror/gm0</devicename>. The procedure will
be explained later.</para>
<para>In either case, partition tables on the primary disk
should be copied first. It can be done by using &man.gpart.8;
<command>backup</command> and <command>restore</command>
subcommands.</para>
<screen>&prompt.root; <userinput>gpart backup ada0 &gt; table.ada0</userinput>
&prompt.root; <userinput>gpart backup ada0s1 &gt; table.ada0s1</userinput></screen>
<para>These commands create two files,
<filename>table.ada0</filename> and
<filename>table.ada0s1</filename>. This example is from a
1&nbsp;TB drive:</para>
<screen>&prompt.root; <userinput>cat table.ada0</userinput>
MBR 4
1 freebsd 63 1953525105 [active]</screen>
<screen>&prompt.root; <userinput>cat table.ada0s1</userinput>
BSD 8
1 freebsd-ufs 0 4194304
2 freebsd-swap 4194304 33554432
4 freebsd-ufs 37748736 50331648
5 freebsd-ufs 88080384 41943040
6 freebsd-ufs 130023424 838860800
7 freebsd-ufs 968884224 984640881</screen>
<para>If the whole disk was used in the output of &man.gpart.8;
<command>show</command>, the capacity in these partition
tables must be reduced by one sector. Edit the two files,
reducing the size of both the slice and last partition by one.
These are the last numbers in each listing.</para>
<screen>&prompt.root; <userinput>cat table.ada0</userinput>
MBR 4
1 freebsd 63 <emphasis>1953525104</emphasis> [active]</screen>
<screen>&prompt.root; <userinput>cat table.ada0s1</userinput>
BSD 8
1 freebsd-ufs 0 4194304
2 freebsd-swap 4194304 33554432
4 freebsd-ufs 37748736 50331648
5 freebsd-ufs 88080384 41943040
6 freebsd-ufs 130023424 838860800
7 freebsd-ufs 968884224 <emphasis>984640880</emphasis></screen>
<para>If at least one sector was unallocated at the end of the
disk, these two files can be used without modification.</para>
<para>Now restore the partition table into
<devicename>mirror/gm0</devicename>.</para>
<screen>&prompt.root; <userinput>gpart restore mirror/gm0 &lt; table.ada0</userinput>
&prompt.root; <userinput>gpart restore mirror/gm0s1 &lt; table.ada0s1</userinput></screen>
<para>Check the partition table with the &man.gpart.8;
<command>show</command>. This example has
<devicename>gm0s1a</devicename> for <filename>/</filename>,
<devicename>gm0s1d</devicename> for <filename>/var</filename>,
<devicename>gm0s1e</devicename> for <filename>/usr</filename>,
<devicename>gm0s1f</devicename> for
<filename>/data1</filename>, and
<devicename>gm0s1g</devicename> for
<filename>/data2</filename>.</para>
<screen>&prompt.root; <userinput>gpart show mirror/gm0</userinput>
=> 63 1953525104 mirror/gm0 MBR (931G)
63 1953525042 1 freebsd [active] (931G)
1953525105 62 - free - (31k)
&prompt.root; <userinput>gpart show mirror/gm0s1</userinput>
=> 0 1953525042 mirror/gm0s1 BSD (931G)
0 2097152 1 freebsd-ufs (1.0G)
2097152 16777216 2 freebsd-swap (8.0G)
18874368 41943040 4 freebsd-ufs (20G)
60817408 20971520 5 freebsd-ufs (10G)
81788928 629145600 6 freebsd-ufs (300G)
710934528 1242590514 7 freebsd-ufs (592G)
1953525042 63 - free - (31k)</screen>
<para>Both the slice and the last partition should have some
free space at the end of each disk.</para>
<para>Create filesystems on these new partitions. The
number of partitions will vary, matching the partitions on the
original disk, <devicename>ada0</devicename>.</para>
<screen>&prompt.root; <userinput>newfs -U /dev/mirror/gm0s1a</userinput>
&prompt.root; <userinput>newfs -U /dev/mirror/gm0s1d</userinput>
&prompt.root; <userinput>newfs -U /dev/mirror/gm0s1e</userinput>
&prompt.root; <userinput>newfs -U /dev/mirror/gm0s1f</userinput>
&prompt.root; <userinput>newfs -U /dev/mirror/gm0s1g</userinput></screen>
<para>Make the mirror bootable by installing bootcode in the MBR
and bsdlabel and setting the active slice:</para>
<screen>&prompt.root; <userinput>gpart bootcode -b /boot/mbr mirror/gm0</userinput>
&prompt.root; <userinput>gpart set -a active -i 1 mirror/gm0</userinput>
&prompt.root; <userinput>gpart bootcode -b /boot/boot mirror/gm0s1</userinput></screen>
<para>Adjust <filename>/etc/fstab</filename> to use the
new partitions on the mirror. Back up this file first by
copying it to <filename>/etc/fstab.orig</filename>.</para>
<screen>&prompt.root; <userinput>cp /etc/fstab /etc/fstab.orig</userinput></screen>
<para>Edit <filename>/etc/fstab</filename>, replacing
<devicename>/dev/ada0</devicename> with
<devicename>mirror/gm0</devicename>.</para>
<programlisting># Device Mountpoint FStype Options Dump Pass#
/dev/mirror/gm0s1a / ufs rw 1 1
/dev/mirror/gm0s1b none swap sw 0 0
/dev/mirror/gm0s1d /var ufs rw 2 2
/dev/mirror/gm0s1e /usr ufs rw 2 2
/dev/mirror/gm0s1f /data1 ufs rw 2 2
/dev/mirror/gm0s1g /data2 ufs rw 2 2</programlisting>
<para>If the &man.gmirror.8; kernel module has not been built
into the kernel, edit <filename>/boot/loader.conf</filename>
to load it:</para>
<programlisting>geom_mirror_load="YES"</programlisting>
<para>Filesystems from the original disk can now be copied onto
the mirror with &man.dump.8; and &man.restore.8;. Note that
it may take some time to create a snapshot for each filesystem
dumped with <command>dump -L</command>.</para>
<screen>&prompt.root; <userinput>mount /dev/mirror/gm0s1a /mnt</userinput>
&prompt.root; <userinput>dump -C16 -b64 -0aL -f - / | (cd /mnt &amp;&amp; restore -rf -)</userinput>
&prompt.root; <userinput>mount /dev/mirror/gm0s1d /mnt/var</userinput>
&prompt.root; <userinput>mount /dev/mirror/gm0s1e /mnt/usr</userinput>
&prompt.root; <userinput>mount /dev/mirror/gm0s1f /mnt/data1</userinput>
&prompt.root; <userinput>mount /dev/mirror/gm0s1g /mnt/data2</userinput>
&prompt.root; <userinput>dump -C16 -b64 -0aL -f - /usr | (cd /mnt/usr &amp;&amp; restore -rf -)</userinput>
&prompt.root; <userinput>dump -C16 -b64 -0aL -f - /var | (cd /mnt/var &amp;&amp; restore -rf -)</userinput>
&prompt.root; <userinput>dump -C16 -b64 -0aL -f - /data1 | (cd /mnt/data1 &amp;&amp; restore -rf -)</userinput>
&prompt.root; <userinput>dump -C16 -b64 -0aL -f - /data2 | (cd /mnt/data2 &amp;&amp; restore -rf -)</userinput></screen>
<para>Restart the system, booting from
<devicename>ada1</devicename>. If everything is working, the
system will boot from <devicename>mirror/gm0</devicename>,
which now contains the same data as
<devicename>ada0</devicename> had previously. See the
<link linkend="gmirror-troubleshooting">Troubleshooting</link>
section if there are problems booting.</para>
<para>At this point, the mirror still consists of only the
single <devicename>ada1</devicename> disk.</para>
<para>After booting from <devicename>mirror/gm0</devicename>
successfully, the final step is inserting
<devicename>ada0</devicename> into the mirror.</para>
<important>
<para>When <devicename>ada0</devicename> is inserted into the
mirror, its former contents will be overwritten by data on
the mirror. Make certain that
<devicename>mirror/gm0</devicename> has the same contents as
<devicename>ada0</devicename> before adding
<devicename>ada0</devicename> to the mirror. If there is
something wrong with the contents copied by &man.dump.8; and
&man.restore.8;, revert <filename>/etc/fstab</filename> to
mount the filesystems on <devicename>ada0</devicename>,
reboot, and try the whole procedure again.</para>
</important>
<screen>&prompt.root; <userinput>gmirror insert gm0 ada0</userinput>
GEOM_MIRROR: Device gm0: rebuilding provider ada0</screen>
<para>Synchronization between the two disks will start
immediately. &man.gmirror.8; <command>status</command>
shows the progress.</para>
<screen>&prompt.root; <userinput>gmirror status</userinput>
Name Status Components
mirror/gm0 DEGRADED ada1 (ACTIVE)
ada0 (SYNCHRONIZING, 64%)</screen>
<para>After a while, synchronization will finish.</para>
<screen>GEOM_MIRROR: Device gm0: rebuilding provider ada0 finished.
&prompt.root; <userinput>gmirror status</userinput>
Name Status Components
mirror/gm0 COMPLETE ada1 (ACTIVE)
ada0 (ACTIVE)</screen>
<para><devicename>mirror/gm0</devicename> now consists of
the two disks <devicename>ada0</devicename> and
<devicename>ada1</devicename>, and the contents are
automatically synchronized with each other. In use,
<devicename>mirror/gm0</devicename> will behave just like the
original single drive.</para>
</sect2>
<sect2 id="gmirror-troubleshooting">
<title>Troubleshooting</title>
<sect3>
<title>System Refuses to Boot</title>
<title>Problems with Booting</title>
<para>If the system boots up to a prompt similar to:</para>
<sect4>
<title>BIOS Settings</title>
<programlisting>ffs_mountroot: can't find rootvp
Root mount failed: 6
mountroot></programlisting>
<para>BIOS settings may have to be changed to boot from one
of the new mirrored drives. Either mirror drive can be
used for booting. As components of a mirror, they contain
identical data.</para>
</sect4>
<para>Reboot the machine using the power or reset button. At
the boot menu, select option six (6). This will drop the
system to a &man.loader.8; prompt. Load the kernel module
manually:</para>
<sect4>
<title>Boot Problems</title>
<screen>OK? <userinput>load geom_mirror</userinput>
OK? <userinput>boot</userinput></screen>
<para>If the boot stopped with this message, something is
wrong with the mirror device:</para>
<para>If this works then for whatever reason the module was
not being loaded properly. Check whether the relevant entry
in <filename>/boot/loader.conf</filename> is correct. If
the problem persists, place:</para>
<screen>Mounting from ufs:/dev/mirror/gm0s1a failed with error 19.
<programlisting>options GEOM_MIRROR</programlisting>
Loader variables:
vfs.root.mountfrom=ufs:/dev/mirror/gm0s1a
vfs.root.mountfrom.options=rw
<para>in the kernel configuration file, rebuild and reinstall.
That should remedy this issue.</para>
Manual root filesystem specification:
&lt;fstype&gt;:&lt;device&gt; [options]
Mount &lt;device&gt; using filesystem &lt;fstype&gt;
and with the specified (optional) option list.
eg. ufs:/dev/da0s1a
zfs:tank
cd9660:/dev/acd0 ro
(which is equivalent to: mount -t cd9660 -o ro /dev/acd0 /)
? List valid disk boot devices
. Yield 1 second (for background tasks)
&lt;empty line&gt; Abort manual input
mountroot&gt;</screen>
<para>Forgetting to load the
<filename>geom_mirror</filename> module in
<filename>/boot/loader.conf</filename> can cause this
problem. To fix it, boot from a &os;-9 or later CD or USB
stick and choose <literal>Shell</literal> at the first
prompt. Then load the mirror module and mount the mirror
device:</para>
<screen>&prompt.root; <userinput>gmirror load</userinput>
&prompt.root; <userinput>mount /dev/mirror/gm0s1a /mnt</userinput></screen>
<para>Edit <filename>/mnt/boot/loader.conf</filename>,
adding a line to load the mirror module:</para>
<programlisting>geom_mirror_load="YES"</programlisting>
<para>Save the file and reboot.</para>
<para>Other problems that cause <literal>error 19</literal>
require more effort to fix. Enter
<literal>ufs:/dev/ada0s1a</literal> at the prompt.
Although the system should boot from
<devicename>ada0</devicename>, another prompt to select a
shell appears because <filename>/etc/fstab</filename> is
incorrect. Press the Enter key at the prompt. Undo the
modifications so far by reverting
<filename>/etc/fstab</filename>, mounting filesystems from
the original disk (<devicename>ada0</devicename>) instead
of the mirror. Reboot the system and try the procedure
again.</para>
<screen>Enter full pathname of shell or RETURN for /bin/sh:
&prompt.root; <userinput>cp /etc/fstab.orig /etc/fstab</userinput>
&prompt.root; <userinput>reboot</userinput></screen>
</sect4>
</sect3>
</sect2>
<sect2>
<title>Recovering from Disk Failure</title>
<para>The wonderful part about disk mirroring is that when a
disk fails, it may be replaced, presumably, without losing
<para>The wonderful part about disk mirroring is that an
individual disk can fail without causing the mirror to lose
any data.</para>
<para>Considering the previous <acronym>RAID</acronym>1
configuration, assume that <devicename>da1</devicename>
has failed and now needs to be replaced. To replace it,
determine which disk has failed and power down the system.
At this point, the disk may be swapped with a new one and
the system brought back up. After the system has restarted,
the following commands may be used to replace the disk:</para>
<para><devicename>ada0</devicename> is one of two drives making
up the mirror in the previous example. If
<devicename>ada0</devicename> fails, the mirror will continue
to work, providing data from the remaining working drive,
<devicename>ada1</devicename>.</para>
<para>To replace the failed drive, the computer is shut down and
the failed drive is physically replaced with a new drive of
equal or greater capacity. Manufacturers use somewhat
arbitrary values when rating drives in gigabytes, and the
only way to really be sure is to compare the total count of
sectors shown by <command>diskinfo -v</command>. A drive with
larger capacity than the mirror will work, although the extra
space on the new drive will not be used.</para>
<para>After the computer is powered back up, the mirror will be
running in a <quote>degraded</quote> mode with only one drive.
The mirror is told to forget drives that are not currently
connected:</para>
<screen>&prompt.root; <userinput>gmirror forget gm0</userinput></screen>
<screen>&prompt.root; <userinput>gmirror insert gm0 /dev/da1</userinput></screen>
<para>Any old metadata should be <link
linkend="GEOM-mirror-metadata">cleared from the replacement
disk</link>. Then the disk, <devicename>ada4</devicename>
for this example, is inserted into the mirror:</para>
<para>Use the <command>gmirror</command> <option>status</option>
command to monitor the progress of the rebuild. It is that
simple.</para>
<screen>&prompt.root; <userinput>gmirror insert gm0 /dev/ada4</userinput></screen>
<para>Resynchronization begins when the new drive is inserted
into the mirror. This process of copying mirror data to a new
drive can take a while. Performance of the mirror will be
greatly reduced during the copy, so inserting new drives is
best done when there is low demand on the computer.</para>
<para>Progress can be monitored with <command>gmirror
status</command>, which shows drives that are being
synchronized and the percentage of completion. During
resynchronization, the status will be
<computeroutput>DEGRADED</computeroutput>, changing to
<computeroutput>COMPLETE</computeroutput> when the process is
finished.</para>
</sect2>
</sect1>
@ -467,8 +855,8 @@ OK? <userinput>boot</userinput></screen>
</authorgroup>
</sect1info>
<title><acronym>RAID</acronym>3 - Byte-level Striping with Dedicated
Parity</title>
<title><acronym>RAID</acronym>3 - Byte-level Striping with
Dedicated Parity</title>
<indexterm>
<primary>GEOM</primary>
@ -486,10 +874,10 @@ OK? <userinput>boot</userinput></screen>
<acronym>RAID</acronym>3 implementation will access all disks in
the array. Performance can be enhanced by using multiple
disk controllers. The <acronym>RAID</acronym>3 array provides a
fault tolerance of 1 drive, while providing a capacity of 1 - 1/n
times the total capacity of all drives in the array, where n is the
number of hard drives in the array. Such a configuration is
mostly suitable for storing data of larger sizes, e.g.
fault tolerance of 1 drive, while providing a capacity of 1 -
1/n times the total capacity of all drives in the array, where n
is the number of hard drives in the array. Such a configuration
is mostly suitable for storing data of larger sizes, e.g.,
multimedia files.</para>
<para>At least 3 physical hard drives are required to build a
@ -500,7 +888,8 @@ OK? <userinput>boot</userinput></screen>
equal to 3, 5, 9, 17, etc. (2^n + 1).</para>
<sect2>
<title>Creating a Dedicated <acronym>RAID</acronym>3 Array</title>
<title>Creating a Dedicated <acronym>RAID</acronym>3
Array</title>
<para>In &os;, support for <acronym>RAID</acronym>3 is
implemented by the &man.graid3.8; <acronym>GEOM</acronym>
@ -542,7 +931,8 @@ OK? <userinput>boot</userinput></screen>
example uses three unpartitioned
<acronym>ATA</acronym> drives:
<devicename><replaceable>ada1</replaceable></devicename>
and <devicename><replaceable>ada2</replaceable></devicename>
and
<devicename><replaceable>ada2</replaceable></devicename>
for data, and
<devicename><replaceable>ada3</replaceable></devicename>
for parity.</para>
@ -585,8 +975,8 @@ Done.</screen>
<step>
<para>The <filename>geom_raid3.ko</filename> module must be
loaded before the array can be mounted. To automatically
load the kernel module during the system initialization, add
the following line to the
load the kernel module during the system initialization,
add the following line to the
<filename>/boot/loader.conf</filename> file:</para>
<programlisting>geom_raid3_load="YES"</programlisting>

View file

@ -0,0 +1 @@
<index/>

View file

@ -4357,6 +4357,7 @@ Please press any key to reboot.</screen>
<step>
<title>Enabling the Installation USB Stick to Boot into a
Serial Console</title>
<indexterm>
<primary><command>mount</command></primary>
</indexterm>
@ -4395,6 +4396,7 @@ Please press any key to reboot.</screen>
<step>
<title>Enabling the Installation CD to Boot into a
Serial Console</title>
<indexterm>
<primary><command>mount</command></primary>
</indexterm>
@ -4461,9 +4463,11 @@ Please press any key to reboot.</screen>
<step>
<title>Connecting to Your Headless Machine</title>
<indexterm>
<primary><command>cu</command></primary>
</indexterm>
<para>Now you have to connect to that machine with
&man.cu.1;:</para>

View file

@ -54,6 +54,7 @@
<sect1 id="nutshell">
<title>Welcome to &os;!</title>
<indexterm><primary>4.4BSD-Lite</primary></indexterm>
<para>&os; is a 4.4BSD-Lite based operating system for
@ -683,7 +684,8 @@
be additional releases from the RELENG_8 branch.</para>
<para>The RELENG_9 branch was created in September 2011. The first
release of this branch was &rel.current;-RELEASE, which came
release of this branch was 9.0-RELEASE, which came
out in January 2012. The most recent &rel.current;-RELEASE came
out in &rel.current.date;. There will be additional releases
from the RELENG_9 branch.</para>
@ -783,7 +785,10 @@
<listitem>
<indexterm>
<primary>CVS</primary>
<secondary>repository</secondary>
</indexterm>
<indexterm>
<primary>CVS Repository</primary>
</indexterm>
<indexterm>
@ -792,13 +797,16 @@
</indexterm>
<indexterm>
<primary>SVN</primary>
<secondary>repository</secondary>
<primary>Subversion</primary>
</indexterm>
<indexterm>
<primary>Subversion</primary>
<see>SVN</see>
<primary>Subversion Repository</primary>
</indexterm>
<indexterm>
<primary>SVN</primary>
<see>Subversion</see>
</indexterm>
<para>For several years, the central source tree for &os;

View file

@ -0,0 +1,15 @@
#
# Build the Handbook with just the content from this chapter.
#
# $FreeBSD$
#
CHAPTERS= jails/chapter.xml
VPATH= ..
MASTERDOC= ${.CURDIR}/../${DOC}.${DOCBOOKSUFFIX}
DOC_PREFIX?= ${.CURDIR}/../../../..
.include "../Makefile"

View file

@ -370,12 +370,12 @@ jail_<replaceable>www</replaceable>_devfs_ruleset="<replaceable>www_ruleset</rep
</step>
</procedure>
<para>The <filename>/etc/rc.d/jail</filename> script can be used to
<para>&man.service.8; can be used to
start or stop a jail by hand, if an entry for it exists in
<filename>rc.conf</filename>:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/jail start <replaceable>www</replaceable></userinput>
&prompt.root; <userinput>/etc/rc.d/jail stop <replaceable>www</replaceable></userinput></screen>
<screen>&prompt.root; <userinput>service jail start <replaceable>www</replaceable></userinput>
&prompt.root; <userinput>service jail stop <replaceable>www</replaceable></userinput></screen>
<para>A clean way to shut down a &man.jail.8; is not available at
the moment. This is because commands normally used to accomplish
@ -857,11 +857,11 @@ jail_www_devfs_enable="YES"</programlisting>
<step>
<para>In this phase, the jails are built and prepared to
run. First, mount the required file systems for each
jail, and then start them using the
<filename>/etc/rc.d/jail</filename> script:</para>
jail, and then start them using the jail rc
script.</para>
<screen>&prompt.root; <userinput>mount -a</userinput>
&prompt.root; <userinput>/etc/rc.d/jail start</userinput></screen>
&prompt.root; <userinput>service jail start</userinput></screen>
</step>
</procedure>
@ -933,7 +933,7 @@ jail_www_devfs_enable="YES"</programlisting>
<step>
<para>The right time to stop the jails is now:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/jail stop</userinput></screen>
<screen>&prompt.root; <userinput>service jail stop</userinput></screen>
</step>
<step>
<para>Unmount the original file systems:</para>
@ -974,7 +974,7 @@ jail_www_devfs_enable="YES"</programlisting>
start the jails:</para>
<screen>&prompt.root; <userinput>mount -a</userinput>
&prompt.root; <userinput>/etc/rc.d/jail start</userinput></screen>
&prompt.root; <userinput>service jail start</userinput></screen>
</step>
</procedure>

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -866,15 +866,15 @@ purgestat /usr/local/supermailer/bin/purgestat-compat</programlisting>
for why this was considered bad practice, or even a security
hole.</para>
<para>As a good workaround, you can place the line:
<para>As a good workaround, you can place the line:</para>
<programlisting>search foo.bar.edu bar.edu</programlisting>
instead of the previous:
<para>instead of the previous:</para>
<programlisting>domain foo.bar.edu</programlisting>
into your <filename>/etc/resolv.conf</filename>. However, make
<para>into your <filename>/etc/resolv.conf</filename>. However, make
sure that the search order does not go beyond the
<quote>boundary between local and public administration</quote>,
as RFC 1535 calls it.</para>
@ -883,9 +883,6 @@ purgestat /usr/local/supermailer/bin/purgestat-compat</programlisting>
<qandaentry>
<question>
<indexterm>
<primary>MX record</primary>
</indexterm>
<para><application>sendmail</application> says <errorname>mail
loops back to myself</errorname></para>
</question>
@ -918,7 +915,6 @@ to /etc/mail/sendmail.cf.</programlisting>
<qandaentry>
<question>
<indexterm><primary>PPP</primary></indexterm>
<para>How can I run a mail server on a dial-up PPP host?</para>
</question>
@ -1593,7 +1589,7 @@ define(`confDELIVERY_MODE',`deferred')dnl</programlisting>
<para>and finally start the saslauthd daemon:</para>
<screen>&prompt.root; <userinput>/usr/local/etc/rc.d/saslauthd start</userinput></screen>
<screen>&prompt.root; <userinput>service saslauthd start</userinput></screen>
<para>This daemon serves as a broker for <application>sendmail</application> to
authenticate against your FreeBSD <filename>passwd</filename>

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -173,7 +173,7 @@
<application>inetd</application> starting at boot time.
The command:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/inetd rcvar</userinput></screen>
<screen>&prompt.root; <userinput>service inetd rcvar</userinput></screen>
<para>
can be run to display the current effective setting.</para>
@ -272,7 +272,7 @@
<title>Reloading the <application>inetd</application>
Configuration File</title>
<screen>&prompt.root; <userinput>/etc/rc.d/inetd reload</userinput></screen>
<screen>&prompt.root; <userinput>service inetd reload</userinput></screen>
</example>
<para>Each line of the configuration file specifies an
@ -340,22 +340,27 @@ server-program-arguments</programlisting>
<entry>tcp, tcp4</entry>
<entry>TCP IPv4</entry>
</row>
<row>
<entry>udp, udp4</entry>
<entry>UDP IPv4</entry>
</row>
<row>
<entry>tcp6</entry>
<entry>TCP IPv6</entry>
</row>
<row>
<entry>udp6</entry>
<entry>UDP IPv6</entry>
</row>
<row>
<entry>tcp46</entry>
<entry>Both TCP IPv4 and v6</entry>
</row>
<row>
<entry>udp46</entry>
<entry>Both UDP IPv4 and v6</entry>
@ -635,12 +640,14 @@ server-program-arguments</programlisting>
requests from the <acronym>NFS</acronym>
clients.</entry>
</row>
<row>
<entry><application>mountd</application></entry>
<entry>The <acronym>NFS</acronym> mount daemon which
carries out the requests that &man.nfsd.8; passes on
to it.</entry>
</row>
<row>
<entry><application>rpcbind</application></entry>
<entry> This daemon allows
@ -662,6 +669,7 @@ server-program-arguments</programlisting>
<sect2 id="network-configuring-nfs">
<title>Configuring <acronym>NFS</acronym></title>
<indexterm>
<primary>NFS</primary>
<secondary>configuration</secondary>
@ -797,10 +805,10 @@ mountd_flags="-r"</programlisting>
<para>or by invoking the <command>mountd</command> &man.rc.8;
script with the appropriate parameter:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/mountd onereload</userinput></screen>
<screen>&prompt.root; <userinput>service mountd onereload</userinput></screen>
<para>Please refer to <xref linkend="configtuning-rcd"/> for more
information about using rc scripts.</para>
<para>Please refer to <xref linkend="configtuning-rcd"/> for
more information about using rc scripts.</para>
<para>Alternatively, a reboot will make FreeBSD set everything
up properly. A reboot is not necessary though.
@ -864,8 +872,8 @@ rpc_statd_enable="YES"</programlisting>
<para>Start the application by using:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/lockd start</userinput>
&prompt.root; <userinput>/etc/rc.d/statd start</userinput></screen>
<screen>&prompt.root; <userinput>service lockd start</userinput>
&prompt.root; <userinput>service statd start</userinput></screen>
<para>If real locking between the <acronym>NFS</acronym> clients
and <acronym>NFS</acronym> server is not required, it is
@ -1155,6 +1163,7 @@ Exports list on foobar:
<sect2>
<title>What Is It?</title>
<indexterm><primary>NIS</primary></indexterm>
<indexterm><primary>Solaris</primary></indexterm>
<indexterm><primary>HP-UX</primary></indexterm>
@ -1218,8 +1227,8 @@ Exports list on foobar:
<informaltable frame="none" pgwide="1">
<tgroup cols="2">
<colspec colwidth="1*"/>
<colspec colwidth="3*"/>
<colspec colwidth="1*"/>
<colspec colwidth="3*"/>
<thead>
<row>
@ -1237,6 +1246,7 @@ Exports list on foobar:
domainname does not have anything to do with
<acronym>DNS</acronym>.</entry>
</row>
<row>
<entry><application>rpcbind</application></entry>
@ -1247,6 +1257,7 @@ Exports list on foobar:
will be impossible to run an NIS server, or to act as
an NIS client.</entry>
</row>
<row>
<entry><application>ypbind</application></entry>
@ -1259,6 +1270,7 @@ Exports list on foobar:
on a client machine, it will not be able to access the
NIS server.</entry>
</row>
<row>
<entry><application>ypserv</application></entry>
<entry>Should only be running on NIS servers; this is
@ -1274,6 +1286,7 @@ Exports list on foobar:
<application>ypbind</application> process on the
client.</entry>
</row>
<row>
<entry><application>rpc.yppasswdd</application></entry>
<entry>Another process that should only be running on
@ -1404,21 +1417,25 @@ Exports list on foobar:
<entry><hostid role="ipaddr">10.0.0.2</hostid></entry>
<entry>NIS master</entry>
</row>
<row>
<entry><hostid>coltrane</hostid></entry>
<entry><hostid role="ipaddr">10.0.0.3</hostid></entry>
<entry>NIS slave</entry>
</row>
<row>
<entry><hostid>basie</hostid></entry>
<entry><hostid role="ipaddr">10.0.0.4</hostid></entry>
<entry>Faculty workstation</entry>
</row>
<row>
<entry><hostid>bird</hostid></entry>
<entry><hostid role="ipaddr">10.0.0.5</hostid></entry>
<entry>Client machine</entry>
</row>
<row>
<entry><hostid>cli[1-11]</hostid></entry>
<entry>
@ -1517,6 +1534,7 @@ Exports list on foobar:
<sect4>
<title>Setting Up a NIS Master Server</title>
<indexterm>
<primary>NIS</primary>
<secondary>server configuration</secondary>
@ -1531,18 +1549,23 @@ Exports list on foobar:
<procedure>
<step>
<para><programlisting>nisdomainname="test-domain"</programlisting>
This line will set the NIS domainname to
<literal>test-domain</literal>
upon network setup (e.g., after reboot).</para>
</step>
<step>
<para><programlisting>nis_server_enable="YES"</programlisting>
This will tell FreeBSD to start up the NIS server
processes when the networking is next brought
up.</para>
</step>
<step>
<para><programlisting>nis_yppasswdd_enable="YES"</programlisting>
This will enable the <command>rpc.yppasswdd</command>
daemon which, as mentioned above, will allow users to
change their NIS password from a client
@ -1565,11 +1588,12 @@ Exports list on foobar:
initializing the NIS maps, start the
<application>ypserv</application> daemon manually:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/ypserv start</userinput></screen>
<screen>&prompt.root; <userinput>service ypserv start</userinput></screen>
</sect4>
<sect4>
<title>Initializing the NIS Maps</title>
<indexterm>
<primary>NIS</primary>
<secondary>maps</secondary>
@ -1661,6 +1685,7 @@ ellington has been setup as an YP master server without any errors.</screen>
<sect4>
<title>Setting up a NIS Slave Server</title>
<indexterm>
<primary>NIS</primary>
<secondary>slave server</secondary>
@ -1785,9 +1810,11 @@ Don't forget to update map ypservers on ellington.</screen>
another server.</para>
<sect4>
<title>Setting Up a NIS Client</title> <indexterm>
<title>Setting Up a NIS Client</title>
<indexterm>
<primary>NIS</primary> <secondary>client
configuration</secondary>
configuration</secondary>
</indexterm> <para>Setting up a FreeBSD machine to be a NIS
client is fairly straightforward.</para>
@ -1848,7 +1875,7 @@ nis_client_enable="YES"</programlisting>
following commands as the superuser:</para>
<screen>&prompt.root; <userinput>/etc/netstart</userinput>
&prompt.root; <userinput>/etc/rc.d/ypbind start</userinput></screen>
&prompt.root; <userinput>service ypbind start</userinput></screen>
<para>After completing these steps, you should be able to
run <command>ypcat passwd</command> and see the NIS
@ -1951,10 +1978,13 @@ nis_client_enable="YES"</programlisting>
<para>There is a way to bar specific users from logging on to a
machine, even if they are present in the NIS database. To do
this, all you must do is add
<literal>-<replaceable>username</replaceable></literal> to the
<literal>-<replaceable>username</replaceable></literal> with
the correct number of colons like other entries to the
end of the <filename>/etc/master.passwd</filename> file on the
client machine, where <replaceable>username</replaceable> is
the username of the user you wish to bar from logging in.
The line with the blocked user must be before the
<literal>+</literal> line for allowing NIS users.
This should preferably be done using <command>vipw</command>,
since <command>vipw</command> will sanity check your changes
to <filename>/etc/master.passwd</filename>, as well as
@ -1964,7 +1994,7 @@ nis_client_enable="YES"</programlisting>
<hostid>basie</hostid> we would:</para>
<screen>basie&prompt.root; <userinput>vipw</userinput>
<userinput>[add -bill to the end, exit]</userinput>
<userinput>[add -bill::::::::: to the end, exit]</userinput>
vipw: rebuilding the database...
vipw: done
@ -1985,8 +2015,8 @@ uucp:*:66:66::0:0:UUCP pseudo-user:/var/spool/uucppublic:/usr/libexec/uucp/uucic
xten:*:67:67::0:0:X-10 daemon:/usr/local/xten:/sbin/nologin
pop:*:68:6::0:0:Post Office Owner:/nonexistent:/sbin/nologin
nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/sbin/nologin
-bill:::::::::
+:::::::::
-bill
basie&prompt.root;</screen>
</sect2>
@ -2003,6 +2033,7 @@ basie&prompt.root;</screen>
</sect2info>
<title>Using Netgroups</title>
<indexterm><primary>netgroups</primary></indexterm>
<para>The method shown in the previous section works reasonably
@ -2094,6 +2125,7 @@ basie&prompt.root;</screen>
employees are allowed to log onto these
machines.</entry>
</row>
<row>
<!-- gluttony was omitted because it was too fat -->
<entry><hostid>pride</hostid>, <hostid>greed</hostid>,
@ -2103,6 +2135,7 @@ basie&prompt.root;</screen>
department are allowed to login onto these
machines.</entry>
</row>
<row>
<entry><hostid>one</hostid>, <hostid>two</hostid>,
<hostid>three</hostid>, <hostid>four</hostid>,
@ -2506,6 +2539,7 @@ nis_client_flags="-S <replaceable>NIS domain</replaceable>,<replaceable>server</
<sect2>
<title>Password Formats</title>
<indexterm>
<primary>NIS</primary>
<secondary>password formats</secondary>
@ -2582,6 +2616,7 @@ nis_client_flags="-S <replaceable>NIS domain</replaceable>,<replaceable>server</
<sect2>
<title>What Is DHCP?</title>
<indexterm>
<primary>Dynamic Host Configuration Protocol</primary>
<see>DHCP</see>
@ -2616,6 +2651,7 @@ nis_client_flags="-S <replaceable>NIS domain</replaceable>,<replaceable>server</
<sect2>
<title>How It Works</title>
<indexterm><primary>UDP</primary></indexterm>
<para>When <command>dhclient</command>, the DHCP client, is
executed on the client machine, it begins broadcasting
@ -2641,12 +2677,14 @@ nis_client_flags="-S <replaceable>NIS domain</replaceable>,<replaceable>server</
<command>dhclient</command>. DHCP client support is provided
within both the installer and the base system, obviating the
need for detailed knowledge of network configurations on any
network that runs a DHCP server.</para> <indexterm>
<primary><application>sysinstall</application></primary>
</indexterm>
network that runs a DHCP server.</para>
<para>DHCP is supported by
<application>sysinstall</application>. When configuring a
<indexterm>
<primary><application>sysinstall</application></primary>
</indexterm>
<para>DHCP is supported by
<application>sysinstall</application>. When configuring a
network interface within
<application>sysinstall</application>, the second question
asked is: <quote>Do you want to try DHCP configuration of
@ -2742,132 +2780,135 @@ dhclient_flags=""</programlisting>
role="package">net/isc-dhcp42-server</filename> port in
the ports collection. This port contains the ISC DHCP
server and documentation.</para>
</sect2>
</sect2>
<sect2>
<title>Files</title>
<indexterm>
<primary>DHCP</primary>
<secondary>configuration files</secondary>
</indexterm>
<itemizedlist>
<listitem>
<para><filename>/etc/dhclient.conf</filename></para>
<para><command>dhclient</command> requires a configuration
file, <filename>/etc/dhclient.conf</filename>. Typically
the file contains only comments, the defaults being
reasonably sane. This configuration file is described by
the &man.dhclient.conf.5;
manual page.</para>
</listitem>
<sect2>
<title>Files</title>
<listitem>
<para><filename>/sbin/dhclient</filename></para>
<para><command>dhclient</command> is statically linked and
resides in <filename>/sbin</filename>. The
&man.dhclient.8; manual page gives more information about
<command>dhclient</command>.</para>
</listitem>
<listitem>
<para><filename>/sbin/dhclient-script</filename></para>
<para><command>dhclient-script</command> is the
FreeBSD-specific DHCP client configuration script. It is
described in &man.dhclient-script.8;, but should not need
any user modification to function properly.</para>
</listitem>
<listitem>
<para><filename>/var/db/dhclient.leases.<replaceable>interface</replaceable></filename></para>
<para>The DHCP client keeps a database of valid leases in
this file, which is written as a log.
&man.dhclient.leases.5; gives a slightly longer
description.</para>
</listitem>
</itemizedlist>
</sect2>
<sect2>
<title>Further Reading</title>
<para>The DHCP protocol is fully described in <ulink
url="http://www.freesoft.org/CIE/RFC/2131/">RFC
2131</ulink>. An informational resource has also been set up
at <ulink url="http://www.dhcp.org/"></ulink>.</para>
</sect2>
<sect2 id="network-dhcp-server">
<title>Installing and Configuring a DHCP Server</title>
<sect3>
<title>What This Section Covers</title>
<para>This section provides information on how to configure
a FreeBSD system to act as a DHCP server using the ISC
(Internet Systems Consortium) implementation of the DHCP
server.</para>
<para>The server is not provided as part of FreeBSD, and so
you will need to install the <filename
role="package">net/isc-dhcp42-server</filename> port to
provide this service. See <xref linkend="ports"/> for
more information on using the Ports Collection.</para>
</sect3>
<sect3>
<title>DHCP Server Installation</title>
<indexterm>
<primary>DHCP</primary>
<secondary>installation</secondary>
<secondary>configuration files</secondary>
</indexterm>
<para>In order to configure your FreeBSD system as a DHCP
server, you will need to ensure that the &man.bpf.4;
device is compiled into your kernel. To do this, add
<literal>device bpf</literal> to your kernel
configuration file, and rebuild the kernel. For more
information about building kernels, see <xref
linkend="kernelconfig"/>.</para>
<itemizedlist>
<listitem>
<para><filename>/etc/dhclient.conf</filename></para>
<para><command>dhclient</command> requires a configuration
file, <filename>/etc/dhclient.conf</filename>.
Typically the file contains only comments, the defaults
being reasonably sane. This configuration file is
described by the &man.dhclient.conf.5; manual
page.</para>
</listitem>
<para>The <devicename>bpf</devicename> device is already
part of the <filename>GENERIC</filename> kernel that is
supplied with FreeBSD, so you do not need to create a
custom kernel in order to get DHCP working.</para>
<listitem>
<para><filename>/sbin/dhclient</filename></para>
<para><command>dhclient</command> is statically linked and
resides in <filename>/sbin</filename>. The
&man.dhclient.8; manual page gives more information
about <command>dhclient</command>.</para>
</listitem>
<note>
<para>Those who are particularly security conscious
should note that <devicename>bpf</devicename> is also
the device that allows packet sniffers to work
correctly (although such programs still need
privileged access). <devicename>bpf</devicename>
<emphasis>is</emphasis> required to use DHCP, but if
you are very sensitive about security, you probably
should not include <devicename>bpf</devicename> in
your kernel purely because you expect to use DHCP at
some point in the future.</para>
</note>
<listitem>
<para><filename>/sbin/dhclient-script</filename></para>
<para><command>dhclient-script</command> is the
FreeBSD-specific DHCP client configuration script. It
is described in &man.dhclient-script.8;, but should not
need any user modification to function properly.</para>
</listitem>
<para>The next thing that you will need to do is edit the
sample <filename>dhcpd.conf</filename> which was installed
by the <filename
role="package">net/isc-dhcp42-server</filename> port.
By default, this will be
<filename>/usr/local/etc/dhcpd.conf.sample</filename>, and
you should copy this to
<filename>/usr/local/etc/dhcpd.conf</filename> before
proceeding to make changes.</para>
</sect3>
<listitem>
<para><filename>/var/db/dhclient.leases.<replaceable>interface</replaceable></filename></para>
<para>The DHCP client keeps a database of valid leases
in this file, which is written as a log.
&man.dhclient.leases.5; gives a slightly longer
description.</para>
</listitem>
</itemizedlist>
</sect2>
<sect3>
<title>Configuring the DHCP Server</title>
<indexterm>
<primary>DHCP</primary>
<secondary>dhcpd.conf</secondary>
</indexterm>
<para><filename>dhcpd.conf</filename> is comprised of
declarations regarding subnets and hosts, and is perhaps
most easily explained using an example :</para>
<sect2>
<title>Further Reading</title>
<programlisting>option domain-name "example.com";<co id="domain-name"/>
<para>The DHCP protocol is fully described in <ulink
url="http://www.freesoft.org/CIE/RFC/2131/">RFC
2131</ulink>. An informational resource has also been set
up at <ulink url="http://www.dhcp.org/"></ulink>.</para>
</sect2>
<sect2 id="network-dhcp-server">
<title>Installing and Configuring a DHCP Server</title>
<sect3>
<title>What This Section Covers</title>
<para>This section provides information on how to configure
a FreeBSD system to act as a DHCP server using the ISC
(Internet Systems Consortium) implementation of the DHCP
server.</para>
<para>The server is not provided as part of FreeBSD, and so
you will need to install the <filename
role="package">net/isc-dhcp42-server</filename> port to
provide this service. See <xref linkend="ports"/> for
more information on using the Ports Collection.</para>
</sect3>
<sect3>
<title>DHCP Server Installation</title>
<indexterm>
<primary>DHCP</primary>
<secondary>installation</secondary>
</indexterm>
<para>In order to configure your FreeBSD system as a DHCP
server, you will need to ensure that the &man.bpf.4;
device is compiled into your kernel. To do this, add
<literal>device bpf</literal> to your kernel
configuration file, and rebuild the kernel. For more
information about building kernels, see <xref
linkend="kernelconfig"/>.</para>
<para>The <devicename>bpf</devicename> device is already
part of the <filename>GENERIC</filename> kernel that is
supplied with FreeBSD, so you do not need to create a
custom kernel in order to get DHCP working.</para>
<note>
<para>Those who are particularly security conscious
should note that <devicename>bpf</devicename> is also
the device that allows packet sniffers to work
correctly (although such programs still need
privileged access). <devicename>bpf</devicename>
<emphasis>is</emphasis> required to use DHCP, but if
you are very sensitive about security, you probably
should not include <devicename>bpf</devicename> in
your kernel purely because you expect to use DHCP at
some point in the future.</para>
</note>
<para>The next thing that you will need to do is edit the
sample <filename>dhcpd.conf</filename> which was installed
by the <filename
role="package">net/isc-dhcp42-server</filename> port.
By default, this will be
<filename>/usr/local/etc/dhcpd.conf.sample</filename>, and
you should copy this to
<filename>/usr/local/etc/dhcpd.conf</filename> before
proceeding to make changes.</para>
</sect3>
<sect3>
<title>Configuring the DHCP Server</title>
<indexterm>
<primary>DHCP</primary>
<secondary>dhcpd.conf</secondary>
</indexterm>
<para><filename>dhcpd.conf</filename> is comprised of
declarations regarding subnets and hosts, and is perhaps
most easily explained using an example :</para>
<programlisting>option domain-name "example.com";<co id="domain-name"/>
option domain-name-servers 192.168.4.100;<co id="domain-name-servers"/>
option subnet-mask 255.255.255.0;<co id="subnet-mask"/>
@ -2968,7 +3009,7 @@ dhcpd_ifaces="dc0"</programlisting>
<para>Then, you can proceed to start the server by issuing
the following command:</para>
<screen>&prompt.root; <userinput>/usr/local/etc/rc.d/isc-dhcpd start</userinput></screen>
<screen>&prompt.root; <userinput>service isc-dhcpd start</userinput></screen>
<para>Should you need to make changes to the configuration
of your server in the future, it is important to note that
@ -2983,6 +3024,7 @@ dhcpd_ifaces="dc0"</programlisting>
<sect3>
<title>Files</title>
<indexterm>
<primary>DHCP</primary>
<secondary>configuration files</secondary>
@ -3060,6 +3102,7 @@ dhcpd_ifaces="dc0"</programlisting>
<sect2>
<title>Overview</title>
<indexterm><primary>BIND</primary></indexterm>
<para>&os; utilizes, by default, a version of BIND (Berkeley
@ -3269,6 +3312,7 @@ dhcpd_ifaces="dc0"</programlisting>
<sect2>
<title>How It Works</title>
<para>In &os;, the BIND daemon is called
<application>named</application>.</para>
@ -3336,7 +3380,7 @@ dhcpd_ifaces="dc0"</programlisting>
To start the server one time with
this configuration, use the following command:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/named onestart</userinput></screen>
<screen>&prompt.root; <userinput>service named onestart</userinput></screen>
<para>To ensure the <application>named</application> daemon is
started at boot each time, put the following line into the
@ -3722,6 +3766,7 @@ zone "1.168.192.in-addr.arpa" {
<sect3>
<title>Zone Files</title>
<indexterm>
<primary>BIND</primary>
<secondary>zone files</secondary>
@ -3963,6 +4008,7 @@ mail IN A 192.168.1.5</programlisting>
<sect2>
<title>Caching Name Server</title>
<indexterm>
<primary>BIND</primary>
<secondary>caching name server</secondary>
@ -3976,24 +4022,25 @@ mail IN A 192.168.1.5</programlisting>
<sect2>
<title><acronym
role="Domain Name Security Extensions">DNSSEC</acronym></title>
<indexterm>
<primary>BIND</primary>
<secondary>DNS security extensions</secondary>
</indexterm>
<para>Domain Name System Security Extensions, or <acronym
role="Domain Name Security Extensions">DNSSEC</acronym> for
short, is a suite of specifications to protect resolving name
servers from forged <acronym>DNS</acronym> data, such as
spoofed <acronym>DNS</acronym> records. By using digital
signatures, a resolver can verify the integrity of the record.
Note that <acronym
role="Domain Name Security Extensions">DNSSEC</acronym> only
provides integrity via digitally signing the Resource
Records (<acronym role="Resource Record">RR</acronym>s). It
provides neither confidentiality nor protection against false
end-user assumptions. This means that it cannot protect
against people going to <hostid
role="Domain Name Security Extensions">DNSSEC</acronym>
for short, is a suite of specifications to protect resolving
name servers from forged <acronym>DNS</acronym> data, such
as spoofed <acronym>DNS</acronym> records. By using digital
signatures, a resolver can verify the integrity of the
record. Note that <acronym
role="Domain Name Security Extensions">DNSSEC</acronym>
only provides integrity via digitally signing the Resource
Records (<acronym role="Resource Record">RR</acronym>s).
It provides neither confidentiality nor protection against
false end-user assumptions. This means that it cannot
protect against people going to <hostid
role="domainname">example.net</hostid> instead of <hostid
role="domainname">example.com</hostid>. The only thing
<acronym>DNSSEC</acronym> does is authenticate that the data
@ -4371,7 +4418,7 @@ $include Kexample.com.+005+nnnnn.ZSK.key ; ZSK</programlisting>
<title>Further Reading</title>
<para>BIND/<application>named</application> manual pages:
&man.rndc.8; &man.named.8; &man.named.conf.5; &man.nsupdate.8;
&man.rndc.8; &man.named.8; &man.named.conf.5; &man.nsupdate.1;
&man.dnssec-signzone.8; &man.dnssec-keygen.8;</para>
<itemizedlist>
@ -4582,9 +4629,8 @@ $include Kexample.com.+005+nnnnn.ZSK.key ; ZSK</programlisting>
<para>The <filename role="package">www/apache22</filename> port
installs an &man.rc.8; script to aid in starting, stopping,
and restarting <application>Apache</application>, which can be
found in the <filename
class="directory">/usr/local/etc/rc.d/</filename>
directory.</para>
found in <filename
class="directory">/usr/local/etc/rc.d/</filename>.</para>
<para>To launch <application>Apache</application> at system
startup, add the following line to
@ -4606,7 +4652,6 @@ $include Kexample.com.+005+nnnnn.ZSK.key ; ZSK</programlisting>
or by the &man.service.8; utility by issuing one of the
following commands:</para>
<screen>&prompt.root; <userinput>/usr/local/etc/rc.d/apache22 configtest</userinput></screen>
<screen>&prompt.root; <userinput>service apache22 configtest</userinput></screen>
<note>
@ -4619,10 +4664,8 @@ $include Kexample.com.+005+nnnnn.ZSK.key ; ZSK</programlisting>
<para>If <application>Apache</application> does not report
configuration errors, the
<application>Apache</application>&nbsp;<command>httpd</command>
can be started with the same &man.rc.8; and &man.service.8;
mechanisms:</para>
can be started with &man.service.8;:</para>
<screen>&prompt.root; <userinput>/usr/local/etc/rc.d/apache22 start</userinput></screen>
<screen>&prompt.root; <userinput>service apache22 start</userinput></screen>
<para>The <command>httpd</command> service can be tested by
@ -5046,7 +5089,7 @@ DocumentRoot /www/someotherdomain.tld
manually by executing the following command as
<username>root</username>:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/ftpd start</userinput></screen>
<screen>&prompt.root; <userinput>service ftpd start</userinput></screen>
<para>You can now log on to your FTP server by typing:</para>
@ -5155,12 +5198,15 @@ DocumentRoot /www/someotherdomain.tld
<para>The Samba Web Administration Tool (SWAT) runs as a
daemon from <application>inetd</application>. Therefore,
<application>inetd</application> must be enabled as shown in
<xref linkend="network-inetd"/>, and
the following line in <filename>/etc/inetd.conf</filename>
should be uncommented before <application>swat</application>
can be used to configure
<application>Samba</application>:</para>
<programlisting>swat stream tcp nowait/400 root /usr/local/sbin/swat swat</programlisting>
<para>As explained in <xref linkend="network-inetd-reread"/>,
the <application>inetd</application> configuration must be
reloaded after this configuration file is changed.</para>
@ -5284,6 +5330,7 @@ DocumentRoot /www/someotherdomain.tld
the following command:</para>
<screen>&prompt.root; <userinput>smbpasswd -a username</userinput></screen>
<note>
<para>The recommended backend is now
<literal>tdbsam</literal>, and the following command
@ -5318,6 +5365,7 @@ DocumentRoot /www/someotherdomain.tld
<para>Or, for fine grain control:</para>
<programlisting>nmbd_enable="YES"</programlisting>
<programlisting>smbd_enable="YES"</programlisting>
<note>
@ -5329,13 +5377,13 @@ DocumentRoot /www/someotherdomain.tld
<para>It is possible then to start
<application>Samba</application> at any time by typing:</para>
<screen>&prompt.root; <userinput>/usr/local/etc/rc.d/samba start</userinput>
<screen>&prompt.root; <userinput>service samba start</userinput>
Starting SAMBA: removing stale tdbs :
Starting nmbd.
Starting smbd.</screen>
<para>Please refer to <xref linkend="configtuning-rcd"/> for more
information about using rc scripts.</para>
<para>Please refer to <xref linkend="configtuning-rcd"/> for
more information about using rc scripts.</para>
<para><application>Samba</application> actually consists of
three separate daemons. You should see that both the
@ -5349,7 +5397,7 @@ Starting smbd.</screen>
<para>You can stop <application>Samba</application> at any time
by typing :</para>
<screen>&prompt.root; <userinput>/usr/local/etc/rc.d/samba stop</userinput></screen>
<screen>&prompt.root; <userinput>service samba stop</userinput></screen>
<para><application>Samba</application> is a complex software
suite with functionality that allows broad integration with
@ -5440,6 +5488,7 @@ Starting smbd.</screen>
<sect3>
<title>Basic Configuration</title>
<indexterm><primary>ntpdate</primary></indexterm>
<para>If you only wish to synchronize your clock when the
@ -5726,7 +5775,7 @@ syslogd_flags="-a logclient.example.com -v -v"</programlisting>
<para>At this point, the <command>syslogd</command> daemon
should be restarted and verified:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/syslogd restart</userinput>
<screen>&prompt.root; <userinput>service syslogd restart</userinput>
&prompt.root; <userinput>pgrep syslog</userinput></screen>
<para>If a <acronym>PID</acronym> is returned, the server has
@ -5802,7 +5851,7 @@ syslogd_flags="-s -v -v"</programlisting>
<para>Once added, <command>syslogd</command> must be restarted
for the changes to take effect:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/syslogd restart</userinput></screen>
<screen>&prompt.root; <userinput>service syslogd restart</userinput></screen>
<para>To test that log messages are being sent across the
network, use &man.logger.1; on the client to send a message to
@ -5839,7 +5888,7 @@ syslogd_flags="-s -v -v"</programlisting>
<programlisting>syslogd_flags="-d -a logclien.example.com -v -v"</programlisting>
<screen>&prompt.root; <userinput>/etc/rc.d/syslogd restart</userinput></screen>
<screen>&prompt.root; <userinput>service syslogd restart</userinput></screen>
<para>Debugging data similar to the following will flash on the
screen immediately after the restart:</para>
@ -5864,7 +5913,7 @@ rejected in rule 0 due to name mismatch.</screen>
<literal>logclien</literal>. After the proper alterations
are made, a restart is issued with expected results:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/syslogd restart</userinput>
<screen>&prompt.root; <userinput>service syslogd restart</userinput>
logmsg: pri 56, flags 4, from logserv.example.com, msg syslogd: restart
syslogd: restarted
logmsg: pri 6, flags 4, from logserv.example.com, msg syslogd: kernel boot file is /boot/kernel/kernel

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -11,10 +11,10 @@
<para>The &os; newcomer will find that the first section of this
book guides the user through the &os; installation process and
gently introduces the concepts and conventions that underpin &unix;.
Working through this section requires little more than the desire
to explore, and the ability to take on board new concepts as they
are introduced.</para>
gently introduces the concepts and conventions that underpin
&unix;. Working through this section requires little more than
the desire to explore, and the ability to take on board new
concepts as they are introduced.</para>
<para>Once you have traveled this far, the second, far larger,
section of the Handbook is a comprehensive reference to all manner
@ -23,11 +23,11 @@
this is noted in the synopsis at the beginning of each
chapter.</para>
<para>For a list of additional sources of information, please see <xref
linkend="bibliography"/>.</para>
<para>For a list of additional sources of information, please see
<xref linkend="bibliography"/>.</para>
<bridgehead id="preface-changes-from3" renderas="sect1">Changes from the
Third Edition</bridgehead>
<bridgehead id="preface-changes-from3" renderas="sect1">Changes
from the Third Edition</bridgehead>
<para>The current online version of the Handbook represents the
cumulative effort of many hundreds of contributors over the past
@ -35,125 +35,129 @@
the two volume third edition was published in 2004:</para>
<itemizedlist>
<listitem>
<para><xref linkend="dtrace"/>, &dtrace;, has been added with
information about the powerful &dtrace; performance analysis
tool.</para>
</listitem>
<listitem>
<para><xref linkend="dtrace"/>, &dtrace;, has been added with
information about the powerful &dtrace; performance analysis
tool.</para>
</listitem>
<listitem>
<para><xref linkend="filesystems"/>, File Systems Support, has
been added with information about non-native file systems in
&os;, such as ZFS from &sun;.</para>
</listitem>
<listitem>
<para><xref linkend="filesystems"/>, File Systems Support, has
been added with information about non-native file systems in
&os;, such as ZFS from &sun;.</para>
</listitem>
<listitem>
<para><xref linkend="audit"/>, Security Event Auditing, has
been added to cover the new auditing capabilities in &os;
and explain its use.</para>
</listitem>
<listitem>
<para><xref linkend="audit"/>, Security Event Auditing, has
been added to cover the new auditing capabilities in &os;
and explain its use.</para>
</listitem>
<listitem>
<para><xref linkend="virtualization"/>, Virtualization, has
been added with information about installing &os; on
virtualization software.</para>
</listitem>
<listitem>
<para><xref linkend="virtualization"/>, Virtualization, has
been added with information about installing &os; on
virtualization software.</para>
</listitem>
<listitem>
<para><xref linkend="bsdinstall"/>, Installing
&os;&nbsp;9.<replaceable>x</replaceable> and Later, has been
added to cover installation of &os; using the new
installation utility,
<application>bsdinstall</application>.</para>
</listitem>
<listitem>
<para><xref linkend="bsdinstall"/>, Installing
&os;&nbsp;9.<replaceable>x</replaceable> and Later, has been
added to cover installation of &os; using the new
installation utility,
<application>bsdinstall</application>.</para>
</listitem>
</itemizedlist>
<bridgehead id="preface-changes-from2" renderas="sect1">Changes from the
Second Edition (2004)</bridgehead>
<bridgehead id="preface-changes-from2" renderas="sect1">Changes
from the Second Edition (2004)</bridgehead>
<para>The third edition was the culmination of over two years of
work by the dedicated members of the &os; Documentation
Project. The printed edition grew to such a size that it was
necessary to publish as two separate volumes. The following are
the major changes in this new edition:</para>
work by the dedicated members of the &os; Documentation
Project. The printed edition grew to such a size that it was
necessary to publish as two separate volumes. The following are
the major changes in this new edition:</para>
<itemizedlist>
<listitem>
<para><xref linkend="config-tuning"/>, Configuration and
Tuning, has been expanded with new information about the
ACPI power and resource management, the <command>cron</command> system utility,
and more kernel tuning options.</para>
</listitem>
<listitem>
<para><xref linkend="config-tuning"/>, Configuration and
Tuning, has been expanded with new information about the
ACPI power and resource management, the
<command>cron</command> system utility, and more kernel
tuning options.</para>
</listitem>
<listitem>
<para><xref linkend="security"/>, Security, has been expanded with
new information about virtual private networks (VPNs), file
system access control lists (ACLs), and security
advisories.</para>
</listitem>
<listitem>
<para><xref linkend="security"/>, Security, has been expanded
with new information about virtual private networks (VPNs),
file system access control lists (ACLs), and security
advisories.</para>
</listitem>
<listitem>
<para><xref linkend="mac"/>, Mandatory Access Control (MAC), is
a new chapter with this edition. It explains what MAC is
and how this mechanism can be used to secure a &os;
system.</para>
</listitem>
<listitem>
<para><xref linkend="mac"/>, Mandatory Access Control (MAC),
is a new chapter with this edition. It explains what MAC is
and how this mechanism can be used to secure a &os;
system.</para>
</listitem>
<listitem>
<para><xref linkend="disks"/>, Storage, has been expanded with
new information about USB storage devices, file system
snapshots, file system quotas, file and network backed
filesystems, and encrypted disk partitions.</para>
</listitem>
<listitem>
<para><xref linkend="disks"/>, Storage, has been expanded with
new information about USB storage devices, file system
snapshots, file system quotas, file and network backed
filesystems, and encrypted disk partitions.</para>
</listitem>
<listitem>
<para><xref linkend="vinum-vinum"/>, Vinum, is a new chapter
<listitem>
<para><xref linkend="vinum-vinum"/>, Vinum, is a new chapter
with this edition. It describes how to use Vinum, a logical
volume manager which provides device-independent logical
disks, and software RAID-0, RAID-1 and RAID-5.</para>
</listitem>
</listitem>
<listitem>
<para>A troubleshooting section has been added to <xref
<listitem>
<para>A troubleshooting section has been added to <xref
linkend="ppp-and-slip"/>, PPP and SLIP.</para>
</listitem>
</listitem>
<listitem>
<para><xref linkend="mail"/>, Electronic Mail, has been
expanded with new information about using alternative
transport agents, SMTP authentication, UUCP, <application>fetchmail</application>,
<application>procmail</application>, and other advanced topics.</para>
</listitem>
<listitem>
<para><xref linkend="mail"/>, Electronic Mail, has been
expanded with new information about using alternative
transport agents, SMTP authentication, UUCP,
<application>fetchmail</application>,
<application>procmail</application>, and other advanced
topics.</para>
</listitem>
<listitem>
<para><xref linkend="network-servers"/>, Network Servers, is
all new with this edition. This chapter includes
information about setting up the <application>Apache HTTP Server</application>, <application>ftpd</application>,
and setting up a server for &microsoft; &windows; clients with
<application>Samba</application>. Some sections from <xref
linkend="advanced-networking"/>, Advanced Networking, were
moved here to improve the presentation.</para>
</listitem>
<listitem>
<para><xref linkend="network-servers"/>, Network Servers, is
all new with this edition. This chapter includes
information about setting up the <application>Apache HTTP
Server</application>, <application>ftpd</application>,
and setting up a server for &microsoft; &windows; clients
with <application>Samba</application>. Some sections from
<xref linkend="advanced-networking"/>, Advanced Networking,
were moved here to improve the presentation.</para>
</listitem>
<listitem>
<para><xref linkend="advanced-networking"/>, Advanced
Networking, has been expanded with new information about
using &bluetooth; devices with &os;, setting up wireless
networks, and Asynchronous Transfer Mode (ATM)
networking.</para>
</listitem>
<listitem>
<para><xref linkend="advanced-networking"/>, Advanced
Networking, has been expanded with new information about
using &bluetooth; devices with &os;, setting up wireless
networks, and Asynchronous Transfer Mode (ATM)
networking.</para>
</listitem>
<listitem>
<para>A glossary has been added to provide a central location
for the definitions of technical terms used throughout the
book.</para>
</listitem>
<listitem>
<para>A glossary has been added to provide a central location
for the definitions of technical terms used throughout the
book.</para>
</listitem>
<listitem>
<para>A number of aesthetic improvements have been made to the
tables and figures throughout the book.</para>
</listitem>
</itemizedlist>
<listitem>
<para>A number of aesthetic improvements have been made to the
tables and figures throughout the book.</para>
</listitem>
</itemizedlist>
<bridgehead id="preface-changes" renderas="sect1">Changes from the
First Edition (2001)</bridgehead>
@ -170,88 +174,99 @@
<para>A complete Index has been added.</para>
</listitem>
<listitem>
<para>All ASCII figures have been replaced by graphical diagrams.</para>
<para>All ASCII figures have been replaced by graphical
diagrams.</para>
</listitem>
<listitem>
<para>A standard synopsis has been added to each chapter to
give a quick summary of what information the chapter contains,
and what the reader is expected to know.</para>
give a quick summary of what information the chapter
contains, and what the reader is expected to know.</para>
</listitem>
<listitem>
<para>The content has been logically reorganized into three
parts: <quote>Getting Started</quote>, <quote>System Administration</quote>, and
<quote>Appendices</quote>.</para>
parts: <quote>Getting Started</quote>, <quote>System
Administration</quote>, and
<quote>Appendices</quote>.</para>
</listitem>
<listitem>
<para><xref linkend="install"/> (<quote>Installing &os;</quote>) was completely
rewritten with many screenshots to make it much easier for new
users to grasp the text.</para>
<para><xref linkend="install"/> (<quote>Installing
&os;</quote>) was completely rewritten with many
screenshots to make it much easier for new users to grasp
the text.</para>
</listitem>
<listitem>
<para><xref linkend="basics"/> (<quote>&unix; Basics</quote>) has been expanded to contain
additional information about processes, daemons, and
signals.</para>
<para><xref linkend="basics"/> (<quote>&unix; Basics</quote>)
has been expanded to contain additional information about
processes, daemons, and signals.</para>
</listitem>
<listitem>
<para><xref linkend="ports"/> (<quote>Installing Applications</quote>) has been expanded
to contain additional information about binary package
management.</para>
<para><xref linkend="ports"/> (<quote>Installing
Applications</quote>) has been expanded to contain
additional information about binary package
management.</para>
</listitem>
<listitem>
<para><xref linkend="x11"/> (<quote>The X Window System</quote>) has been completely
rewritten with an emphasis on using modern desktop
technologies such as <application>KDE</application> and <application>GNOME</application> on &xfree86; 4.X.</para>
<para><xref linkend="x11"/> (<quote>The X Window
System</quote>) has been completely rewritten with an
emphasis on using modern desktop technologies such as
<application>KDE</application> and
<application>GNOME</application> on &xfree86; 4.X.</para>
</listitem>
<listitem>
<para><xref linkend="boot"/> (<quote>The &os; Booting Process</quote>) has been
expanded.</para>
<para><xref linkend="boot"/> (<quote>The &os; Booting
Process</quote>) has been expanded.</para>
</listitem>
<listitem>
<para><xref linkend="disks"/> (<quote>Storage</quote>) has been written from what used
to be two separate chapters on <quote>Disks</quote> and <quote>Backups</quote>. We feel
that the topics are easier to comprehend when presented as a
single chapter. A section on RAID (both hardware and
software) has also been added.</para>
<para><xref linkend="disks"/> (<quote>Storage</quote>) has
been written from what used to be two separate chapters on
<quote>Disks</quote> and <quote>Backups</quote>. We feel
that the topics are easier to comprehend when presented as
a single chapter. A section on RAID (both hardware and
software) has also been added.</para>
</listitem>
<listitem>
<para><xref linkend="serialcomms"/> (<quote>Serial Communications</quote>) has been completely
reorganized and updated for &os; 4.X/5.X.</para>
<para><xref linkend="serialcomms"/> (<quote>Serial
Communications</quote>) has been completely
reorganized and updated for &os; 4.X/5.X.</para>
</listitem>
<listitem>
<para><xref linkend="ppp-and-slip"/> (<quote>PPP and SLIP</quote>) has been substantially
updated.</para>
<para><xref linkend="ppp-and-slip"/> (<quote>PPP and
SLIP</quote>) has been substantially updated.</para>
</listitem>
<listitem>
<para>Many new sections have been added to <xref linkend="advanced-networking"/>
(<quote>Advanced Networking</quote>).</para>
<para>Many new sections have been added to
<xref linkend="advanced-networking"/>
(<quote>Advanced Networking</quote>).</para>
</listitem>
<listitem>
<para><xref linkend="mail"/> (<quote>Electronic Mail</quote>) has been expanded to
include more information about configuring
<application>sendmail</application>.</para>
<para><xref linkend="mail"/> (<quote>Electronic Mail</quote>)
has been expanded to include more information about
configuring <application>sendmail</application>.</para>
</listitem>
<listitem>
<para><xref linkend="linuxemu"/> (<quote>&linux; Compatibility</quote>) has been expanded to
include information about installing
<para><xref linkend="linuxemu"/> (<quote>&linux;
Compatibility</quote>) has been expanded to include
information about installing
<application>&oracle;</application> and
<application>&sap.r3;</application>.</para>
<application>&sap.r3;</application>.</para>
</listitem>
<listitem>
<para>The following new topics are covered in this second
edition:</para>
edition:</para>
<itemizedlist>
<listitem>
<para>Configuration and Tuning (<xref linkend="config-tuning"/>).</para>
<para>Configuration and Tuning (<xref
linkend="config-tuning"/>).</para>
</listitem>
<listitem>
<para>Multimedia (<xref linkend="multimedia"/>)</para>
<para>Multimedia (<xref linkend="multimedia"/>)</para>
</listitem>
</itemizedlist>
</listitem>
</itemizedlist>
<bridgehead id="preface-overview" renderas="sect1">Organization of This
Book</bridgehead>
<bridgehead id="preface-overview" renderas="sect1">Organization of
This Book</bridgehead>
<para>This book is split into five logically distinct sections.
The first section, <emphasis>Getting Started</emphasis>, covers
@ -276,26 +291,30 @@
<!-- Part I - Introduction -->
<varlistentry>
<term><emphasis><xref linkend="introduction"/>, Introduction</emphasis></term>
<term><emphasis><xref linkend="introduction"/>,
Introduction</emphasis></term>
<listitem>
<para>Introduces &os; to a new user. It describes the
history of the &os; Project, its goals and development model.</para>
history of the &os; Project, its goals and development
model.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis><xref linkend="install"/>, Installation of
&os;&nbsp;8.<replaceable>x</replaceable> and Earlier</emphasis></term>
&os;&nbsp;8.<replaceable>x</replaceable> and
Earlier</emphasis></term>
<listitem>
<para>Walks a user through the entire installation process of
&os;&nbsp;8.<replaceable>x</replaceable> and earlier using
<application>sysinstall</application>. Some advanced installation
topics, such as installing through a serial console, are also
covered.</para>
<application>sysinstall</application>. Some advanced
installation topics, such as installing through a serial
console, are also covered.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis><xref linkend="bsdinstall"/>, Installation of
&os;&nbsp;9.<replaceable>x</replaceable> and Later</emphasis></term>
&os;&nbsp;9.<replaceable>x</replaceable> and
Later</emphasis></term>
<listitem>
<para>Walks a user through the entire installation process of
&os;&nbsp;9.<replaceable>x</replaceable> and later using
@ -303,71 +322,81 @@
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis><xref linkend="basics"/>, &unix; Basics</emphasis></term>
<term><emphasis><xref linkend="basics"/>, &unix;
Basics</emphasis></term>
<listitem>
<para>Covers the basic commands and functionality of the
&os; operating system. If you are familiar with &linux; or
another flavor of &unix; then you can probably skip this
chapter.</para>
&os; operating system. If you are familiar with &linux;
or another flavor of &unix; then you can probably skip this
chapter.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis><xref linkend="ports"/>, Installing Applications</emphasis></term>
<term><emphasis><xref linkend="ports"/>, Installing
Applications</emphasis></term>
<listitem>
<para>Covers the installation of third-party software with
both &os;'s innovative <quote>Ports Collection</quote> and standard
binary packages.</para>
both &os;'s innovative <quote>Ports Collection</quote> and
standard binary packages.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis><xref linkend="x11"/>, The X Window System</emphasis></term>
<term><emphasis><xref linkend="x11"/>, The X Window
System</emphasis></term>
<listitem>
<para>Describes the X Window System in general and using
X11 on &os; in particular. Also describes common
desktop environments such as <application>KDE</application> and <application>GNOME</application>.</para>
X11 on &os; in particular. Also describes common
desktop environments such as <application>KDE</application>
and <application>GNOME</application>.</para>
</listitem>
</varlistentry>
<!-- Part II Common Tasks -->
<varlistentry>
<term><emphasis><xref linkend="desktop"/>, Desktop Applications</emphasis></term>
<term><emphasis><xref linkend="desktop"/>, Desktop
Applications</emphasis></term>
<listitem>
<para>Lists some common desktop applications, such as web browsers
and productivity suites, and describes how to install them on
&os;.</para>
<para>Lists some common desktop applications, such as web
browsers and productivity suites, and describes how to
install them on &os;.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis><xref linkend="multimedia"/>, Multimedia</emphasis></term>
<term><emphasis><xref linkend="multimedia"/>,
Multimedia</emphasis></term>
<listitem>
<para>Shows how to set up sound and video playback support for your
system. Also describes some sample audio and video applications.</para>
<para>Shows how to set up sound and video playback support
for your system. Also describes some sample audio and video
applications.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis><xref linkend="kernelconfig"/>, Configuring the &os;
Kernel</emphasis></term>
<term><emphasis><xref linkend="kernelconfig"/>, Configuring
the &os; Kernel</emphasis></term>
<listitem>
<para>Explains why you might need to configure a new kernel
and provides detailed instructions for configuring, building,
and installing a custom kernel.</para>
and provides detailed instructions for configuring,
building, and installing a custom kernel.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis><xref linkend="printing"/>, Printing</emphasis></term>
<term><emphasis><xref linkend="printing"/>,
Printing</emphasis></term>
<listitem>
<para>Describes managing printers on &os;, including
information about banner pages, printer accounting, and
initial setup.</para>
information about banner pages, printer accounting, and
initial setup.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis><xref linkend="linuxemu"/>, &linux; Binary Compatibility</emphasis></term>
<term><emphasis><xref linkend="linuxemu"/>, &linux; Binary
Compatibility</emphasis></term>
<listitem>
<para>Describes the &linux; compatibility features of &os;.
Also provides detailed installation instructions for many
popular &linux; applications such as <application>&oracle;</application> and
Also provides detailed installation instructions for many
popular &linux; applications such as
<application>&oracle;</application> and
<application>&mathematica;</application>.</para>
</listitem>
</varlistentry>
@ -375,19 +404,22 @@
<!-- Part III - System Administration -->
<varlistentry>
<term><emphasis><xref linkend="config-tuning"/>, Configuration and Tuning</emphasis></term>
<term><emphasis><xref linkend="config-tuning"/>, Configuration
and Tuning</emphasis></term>
<listitem>
<para>Describes the parameters available for system
administrators to tune a &os; system for optimum
performance. Also describes the various configuration files
used in &os; and where to find them.</para>
administrators to tune a &os; system for optimum
performance. Also describes the various configuration files
used in &os; and where to find them.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis><xref linkend="boot"/>, Booting Process</emphasis></term>
<term><emphasis><xref linkend="boot"/>, Booting
Process</emphasis></term>
<listitem>
<para>Describes the &os; boot process and explains
how to control this process with configuration options.</para>
how to control this process with configuration
options.</para>
</listitem>
</varlistentry>
<varlistentry>
@ -400,59 +432,69 @@
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis><xref linkend="security"/>, Security</emphasis></term>
<term><emphasis><xref linkend="security"/>,
Security</emphasis></term>
<listitem>
<para>Describes many different tools available to help keep your
&os; system secure, including Kerberos, IPsec and OpenSSH.</para>
<para>Describes many different tools available to help keep
your &os; system secure, including Kerberos, IPsec and
OpenSSH.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis><xref linkend="jails"/>, Jails</emphasis></term>
<listitem>
<para>Describes the jails framework, and the improvements of jails
over the traditional chroot support of &os;.</para>
<para>Describes the jails framework, and the improvements of
jails over the traditional chroot support of &os;.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis><xref linkend="mac"/>, Mandatory Access Control</emphasis></term>
<term><emphasis><xref linkend="mac"/>, Mandatory Access
Control</emphasis></term>
<listitem>
<para>Explains what Mandatory Access Control (MAC) is and how this
mechanism can be used to secure a &os; system.</para>
<para>Explains what Mandatory Access Control (MAC) is and
how this mechanism can be used to secure a &os;
system.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis><xref linkend="audit"/>, Security Event Auditing</emphasis></term>
<term><emphasis><xref linkend="audit"/>, Security Event
Auditing</emphasis></term>
<listitem>
<para>Describes what &os; Event Auditing is, how it can be installed,
configured, and how audit trails can be inspected or monitored.</para>
<para>Describes what &os; Event Auditing is, how it can be
installed, configured, and how audit trails can be inspected
or monitored.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis><xref linkend="disks"/>, Storage</emphasis></term>
<term><emphasis><xref linkend="disks"/>,
Storage</emphasis></term>
<listitem>
<para>Describes how to manage storage media and filesystems
with &os;. This includes physical disks, RAID arrays,
optical and tape media, memory-backed disks, and network
filesystems.</para>
with &os;. This includes physical disks, RAID arrays,
optical and tape media, memory-backed disks, and network
filesystems.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis><xref linkend="GEOM-synopsis"/>, GEOM</emphasis></term>
<term><emphasis><xref linkend="GEOM-synopsis"/>,
GEOM</emphasis></term>
<listitem>
<para>Describes what the GEOM framework in &os; is and how
to configure various supported RAID levels.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis><xref linkend="filesystems"/>, File Systems Support</emphasis></term>
<term><emphasis><xref linkend="filesystems"/>, File Systems
Support</emphasis></term>
<listitem>
<para>Examines support of non-native file systems in &os;, like the Z
File System from &sun;.</para>
<para>Examines support of non-native file systems in &os;,
like the Z File System from &sun;.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis><xref linkend="vinum-vinum"/>, Vinum</emphasis></term>
<term><emphasis><xref linkend="vinum-vinum"/>,
Vinum</emphasis></term>
<listitem>
<para>Describes how to use Vinum, a logical volume manager
which provides device-independent logical disks, and
@ -460,66 +502,77 @@
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis><xref linkend="virtualization"/>, Virtualization</emphasis></term>
<term><emphasis><xref linkend="virtualization"/>,
Virtualization</emphasis></term>
<listitem>
<para>Describes what virtualization systems offer, and how they
can be used with &os;.</para>
<para>Describes what virtualization systems offer, and how
they can be used with &os;.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis><xref linkend="l10n"/>, Localization</emphasis></term>
<term><emphasis><xref linkend="l10n"/>,
Localization</emphasis></term>
<listitem>
<para>Describes how to use &os; in languages other than
English. Covers both system and application level
localization.</para>
English. Covers both system and application level
localization.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis><xref linkend="updating-upgrading"/>, Updating and Upgrading &os;</emphasis></term>
<term><emphasis><xref linkend="updating-upgrading"/>, Updating
and Upgrading &os;</emphasis></term>
<listitem>
<para>Explains the differences between &os;-STABLE,
&os;-CURRENT, and &os; releases. Describes which users
would benefit from tracking a development system and outlines
that process. Covers the methods users may take to update their
system to the latest security release.</para>
&os;-CURRENT, and &os; releases. Describes which users
would benefit from tracking a development system and
outlines that process. Covers the methods users may take
to update their system to the latest security
release.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis><xref linkend="dtrace"/>, &dtrace;</emphasis></term>
<term><emphasis><xref linkend="dtrace"/>,
&dtrace;</emphasis></term>
<listitem>
<para>Describes how to configure and use the &dtrace; tool from &sun;
in &os;. Dynamic tracing can help locate performance issues, by
performing real time system analysis.</para>
<para>Describes how to configure and use the &dtrace; tool
from &sun; in &os;. Dynamic tracing can help locate
performance issues, by performing real time system
analysis.</para>
</listitem>
</varlistentry>
<!-- Part IV - Network Communications -->
<varlistentry>
<term><emphasis><xref linkend="serialcomms"/>, Serial Communications</emphasis></term>
<term><emphasis><xref linkend="serialcomms"/>, Serial
Communications</emphasis></term>
<listitem>
<para>Explains how to connect terminals and modems to your
&os; system for both dial in and dial out connections.</para>
&os; system for both dial in and dial out
connections.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis><xref linkend="ppp-and-slip"/>, PPP and SLIP</emphasis></term>
<term><emphasis><xref linkend="ppp-and-slip"/>, PPP and
SLIP</emphasis></term>
<listitem>
<para>Describes how to use PPP, SLIP, or PPP over Ethernet to
connect to remote systems with &os;.</para>
connect to remote systems with &os;.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis><xref linkend="mail"/>, Electronic Mail</emphasis></term>
<term><emphasis><xref linkend="mail"/>, Electronic
Mail</emphasis></term>
<listitem>
<para>Explains the different components of an email server and
dives into simple configuration topics for the most popular
mail server software:
<application>sendmail</application>.</para>
<para>Explains the different components of an email server
and dives into simple configuration topics for the most
popular mail server software:
<application>sendmail</application>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis><xref linkend="network-servers"/>, Network Servers</emphasis></term>
<term><emphasis><xref linkend="network-servers"/>, Network
Servers</emphasis></term>
<listitem>
<para>Provides detailed instructions and example configuration
files to set up your &os; machine as a network filesystem
@ -528,79 +581,88 @@
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis><xref linkend="firewalls"/>, Firewalls</emphasis></term>
<term><emphasis><xref linkend="firewalls"/>,
Firewalls</emphasis></term>
<listitem>
<para>Explains the philosophy behind software-based firewalls and
provides detailed information about the configuration of the
different firewalls available for &os;.</para>
<para>Explains the philosophy behind software-based firewalls
and provides detailed information about the configuration
of the different firewalls available for &os;.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis><xref linkend="advanced-networking"/>, Advanced Networking</emphasis></term>
<term><emphasis><xref linkend="advanced-networking"/>, Advanced
Networking</emphasis></term>
<listitem>
<para>Describes many networking topics, including sharing an
Internet connection with other computers on your LAN, advanced
routing topics, wireless networking, &bluetooth;, ATM, IPv6, and
much more.</para>
Internet connection with other computers on your LAN,
advanced routing topics, wireless networking, &bluetooth;,
ATM, IPv6, and much more.</para>
</listitem>
</varlistentry>
<!-- Part V - Appendices -->
<varlistentry>
<term><emphasis><xref linkend="mirrors"/>, Obtaining &os; </emphasis></term>
<term><emphasis><xref linkend="mirrors"/>, Obtaining &os;
</emphasis></term>
<listitem>
<para>Lists different sources for obtaining &os; media on CDROM
or DVD as well as different sites on the Internet that allow
you to download and install &os;.</para>
<para>Lists different sources for obtaining &os; media on
CDROM or DVD as well as different sites on the Internet
that allow you to download and install &os;.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis><xref linkend="bibliography"/>, Bibliography </emphasis></term>
<term><emphasis><xref linkend="bibliography"/>,
Bibliography</emphasis></term>
<listitem>
<para>This book touches on many different subjects that may
leave you hungry for a more detailed explanation. The
bibliography lists many excellent books that are referenced in
the text.</para>
leave you hungry for a more detailed explanation. The
bibliography lists many excellent books that are referenced
in the text.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis><xref linkend="eresources"/>, Resources on the Internet</emphasis></term>
<term><emphasis><xref linkend="eresources"/>, Resources on the
Internet</emphasis></term>
<listitem>
<para>Describes the many forums available for &os; users to
post questions and engage in technical conversations about
&os;.</para>
post questions and engage in technical conversations about
&os;.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis><xref linkend="pgpkeys"/>, PGP Keys</emphasis></term>
<term><emphasis><xref linkend="pgpkeys"/>, PGP
Keys</emphasis></term>
<listitem>
<para>Lists the PGP fingerprints of several &os; Developers.</para>
<para>Lists the PGP fingerprints of several &os;
Developers.</para>
</listitem>
</varlistentry>
</variablelist>
<bridgehead id="preface-conv" renderas="sect1">Conventions used
in this book</bridgehead>
in this book</bridgehead>
<para>To provide a consistent and easy to read text, several
conventions are followed throughout the book.</para>
conventions are followed throughout the book.</para>
<bridgehead id="preface-conv-typographic" renderas="sect2">Typographic
Conventions</bridgehead>
<bridgehead id="preface-conv-typographic"
renderas="sect2">Typographic
Conventions</bridgehead>
<variablelist>
<varlistentry>
<term><emphasis>Italic</emphasis></term>
<listitem>
<para>An <emphasis>italic</emphasis> font is used for filenames, URLs,
emphasized text, and the first usage of technical terms.</para>
<para>An <emphasis>italic</emphasis> font is used for
filenames, URLs, emphasized text, and the first usage of
technical terms.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>Monospace</literal></term>
<listitem>
<para>A <literal>monospaced</literal> font is
<para>A <literal>monospaced</literal> font is
used for error messages, commands, environment variables,
names of ports, hostnames, user names, group names, device
names, variables, and code fragments.</para>
@ -610,7 +672,7 @@
<term><application>Bold</application></term>
<listitem>
<para>A <application>bold</application> font is used for
applications, commands, and keys.</para>
applications, commands, and keys.</para>
</listitem>
</varlistentry>
</variablelist>
@ -628,16 +690,14 @@
<keycombo action="simul">
<keycap>Ctrl</keycap>
<keycap>Alt</keycap>
<keycap>Del</keycap>
</keycombo>
</para>
<keycap>Del</keycap></keycombo></para>
<para>Meaning the user should type the <keycap>Ctrl</keycap>,
<keycap>Alt</keycap>, and <keycap>Del</keycap> keys at the same
time.</para>
<para>Keys that are meant to be typed in sequence will be separated with
commas, for example:</para>
<para>Keys that are meant to be typed in sequence will be separated
with commas, for example:</para>
<para>
<keycombo action="simul">
@ -646,9 +706,7 @@
</keycombo>,
<keycombo action="simul">
<keycap>Ctrl</keycap>
<keycap>S</keycap>
</keycombo>
</para>
<keycap>S</keycap></keycombo></para>
<para>Would mean that the user is expected to type the
<keycap>Ctrl</keycap> and <keycap>X</keycap> keys simultaneously
@ -660,9 +718,10 @@
renderas="sect2">Examples</bridgehead>
<para>Examples starting with <devicename>E:\&gt;</devicename>
indicate a &ms-dos; command. Unless otherwise noted, these commands
may be executed from a <quote>Command Prompt</quote> window in a modern &microsoft.windows;
environment.</para>
indicate a &ms-dos; command. Unless otherwise noted, these
commands may be executed from a <quote>Command Prompt</quote>
window in a modern &microsoft.windows;
environment.</para>
<screen><prompt>E:\&gt;</prompt> <userinput>tools\fdimage floppies\kern.flp A:</userinput></screen>
@ -684,10 +743,10 @@
<bridgehead id="preface-acknowledgements"
renderas="sect1">Acknowledgments</bridgehead>
<para>The book you are holding represents the efforts of many hundreds of
people around the world. Whether they sent in fixes for typos, or
submitted complete chapters, all the contributions have been
useful.</para>
<para>The book you are holding represents the efforts of many
hundreds of people around the world. Whether they sent in fixes
for typos, or submitted complete chapters, all the contributions
have been useful.</para>
<para>Several companies have supported the development of this
document by paying authors to work on it full-time, paying for
@ -697,11 +756,11 @@
improving this book full time leading up to the publication of the
first printed edition in March 2000 (ISBN 1-57176-241-8). Wind
River Systems then paid several additional authors to make a
number of improvements to the print-output infrastructure and to add
additional chapters to the text. This work culminated in the
publication of the second printed edition in November 2001 (ISBN
1-57176-303-1). In 2003-2004, <ulink
url="http://www.freebsdmall.com">&os; Mall, Inc</ulink>, paid
number of improvements to the print-output infrastructure and
to add additional chapters to the text. This work culminated in
the publication of the second printed edition in November 2001
(ISBN 1-57176-303-1). In 2003-2004, <ulink
url="http://www.freebsdmall.com">&os; Mall, Inc</ulink>, paid
several contributors to improve the Handbook in preparation for
the third printed edition.</para>

Some files were not shown because too many files have changed in this diff Show more