The NanoBSD article has been translated by Bjoern Heidotting and is now

part of the german set of articles.

Submitted by:	Bjoern Heidotting
Obtained from:	The FreeBSD German Documentation Project
This commit is contained in:
Benedict Reuschling 2013-03-29 15:52:56 +00:00
parent 1079c4b09c
commit aa29bcf9d8
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=41322
3 changed files with 578 additions and 1 deletions
de_DE.ISO8859-1/articles

View file

@ -3,7 +3,6 @@
# The FreeBSD German Documentation Project
#
# $FreeBSD$
# $FreeBSDde: de-docproj/articles/Makefile,v 1.7 2010/09/18 13:58:33 bcr Exp $
# basiert auf: 1.42
SUBDIR = contributing
@ -11,6 +10,7 @@ SUBDIR+= contributing-ports
SUBDIR+= explaining-bsd
SUBDIR+= laptop
SUBDIR+= linux-comparison
SUBDIR+= nanobsd
SUBDIR+= new-users
SUBDIR+= port-mentor-guidelines
SUBDIR+= solid-state

View file

@ -0,0 +1,29 @@
#
# The FreeBSD Documentation Project
# The FreeBSD German Documentation Project
#
# $FreeBSD$
# basiert auf: r39631
#
# Article: Einführung in NanoBSD
DOC?= article
FORMATS?= html
WITH_ARTICLE_TOC?= YES
INSTALL_COMPRESSED?=gz
INSTALL_ONLY_COMPRESSED?=
# Images from the cross-document image library
IMAGES_LIB= callouts/1.png
IMAGES_LIB+= callouts/2.png
IMAGES_LIB+= callouts/3.png
IMAGES_LIB+= callouts/4.png
SRCS= article.xml
URL_RELPREFIX?=../../../..
DOC_PREFIX?= ${.CURDIR}/../../..
.include "${DOC_PREFIX}/share/mk/doc.project.mk"

View file

@ -0,0 +1,548 @@
<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V4.2-Based Extension// EN" "../../../share/xml/freebsd42.dtd" [
<!ENTITY % entities PUBLIC "-//FreeBSD//ENTITIES DocBook FreeBSD Entity Set/ /DE" "../../share/xml/entities.ent">
%entities;
]>
<article lang="de">
<articleinfo>
<title>Einführung in NanoBSD</title>
<authorgroup>
<author>
<firstname>Daniel</firstname>
<surname>Gerzo</surname>
<!-- 14 March 2006 -->
</author>
</authorgroup>
<pubdate>$FreeBSD$</pubdate>
<copyright>
<year>2006</year>
<holder>The FreeBSD Documentation Project</holder>
</copyright>
<legalnotice id="trademarks" role="trademarks">
&tm-attrib.freebsd;
&tm-attrib.general;
</legalnotice>
<abstract>
<para>Dieses Dokument stellt Informationen zu den
<application>NanoBSD</application> Werkzeugen bereit, die dazu
verwendet werden können ein &os; Abbild für eingebettete
Systeme zu erstellen, welche auf eine Compact Flash Karte
passen (oder andere Massenspeicher).</para>
<para><emphasis>&Uuml;bersetzt von Björn
Heidotting</emphasis>.</para>
</abstract>
</articleinfo>
<sect1 id="intro">
<title>Einführung in NanoBSD</title>
<indexterm><primary>NanoBSD</primary></indexterm>
<para><application>NanoBSD</application> ist ein Werkzeug welches
derzeit von &a.phk; entwickelt wird. Es erstellt ein &os;
Systemabbild für eingebettete Systeme, die auf eine Compact
Flash Karte passen (oder andere Massenspeicher).</para>
<para>Es kann dazu benutzt werden um spezialisierte
Installationsabbilder zu bauen, entworfen für die einfache
Installation und Wartung von Systemen die als "Computer
Appliances" bekannt sind. Computer Appliances haben ihre Hard-
und Software fest verbaut, dass bedeutet alle Anwendungen sind
vorinstalliert. Die Appliance wird an ein bestehendes Netzwerk
angeschlossen und kann mit der Arbeit (fast) sofort
beginnen.</para>
<para>Zu den Eigenschaften von <application>NanoBSD</application>
gehören:</para>
<itemizedlist>
<listitem>
<para>Ports und Pakete funktionieren wie in &os; &mdash; Jede
einzelne Anwendung kann auf dem
<application>NanoBSD</application> Abbild installiert und
benutzt werden, auf die gleiche Weise wie Sie es aus &os;
gewohnt sind.</para>
</listitem>
<listitem>
<para>Keine fehlende Funktionalität &mdash; Wenn es möglich
ist, etwas mit &os; zu tun, ist es auch möglich, die gleiche
Sache mit <application>NanoBSD</application> zu tun, es sei
denn, eine oder mehrere Funktionen wurden ausdrücklich vor
dem Bau des <application>NanoBSD</application> Abbilds
entfernt.</para>
</listitem>
<listitem>
<para>Zur Laufzeit ist alles read-only &mdash; Es ist sicher
den Stromstecker zu ziehen. Es besteht dann keine
Notwendigkeit, einen &man.fsck.8; nach einem nicht
ordnungsgemä&szlig;em Herunterfahren des Systems
auszuführen.</para>
</listitem>
<listitem>
<para>Einfach zu bauen und anzupassen &mdash; Unter Verwendung
von nur einem Shell-Skript und einer Konfigurationsdatei ist
es möglich, ein reduziertes und angepasstes Abbild zu bauen,
welches jegliche Reihe von Anforderungen erfüllt.</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 id="howto">
<title>NanoBSD Anleitung</title>
<sect2 id="design">
<title>Das Design von NanoBSD</title>
<para>Sobald das Abbild auf dem Medium verfügbar ist, kann
<application>NanoBSD</application> gebootet werden. Der
Massenspeicher ist standardmä&szlig;ig in drei Teile
unterteilt:</para>
<itemizedlist>
<listitem>
<para>Zwei Abbild Partitionen: <literal>code#1</literal> und
<literal>code#2</literal>.</para>
</listitem>
<listitem>
<para>Die Partition der Konfigurationsdatei, welche zur
Laufzeit unter dem <filename
class="directory">/cfg</filename> Verzeichnis gemountet
werden kann.</para>
</listitem>
</itemizedlist>
<para>Diese Partitionen sind im Allgemeinen read-only.</para>
<para>Die <filename class="directory">/etc</filename> und
<filename class="directory">/var</filename> Verzeichnisse sind
&man.md.4; (malloc) Speicher.</para>
<para>Die Partition der Konfigurationsdatei besteht unter dem
<filename class="directory">/cfg</filename> Verzeichnis. Sie
enthält Dateien für das <filename
class="directory">/etc</filename> Verzeichnis und wird
direkt nach dem Botten read-only eingehangen, weshalb es
erforderlich ist geänderte Dateien von <filename
class="directory">/etc</filename> zurück nach <filename
class="directory">/cfg</filename> zu kopieren falls die
&Auml;nderungen nach einem Neustart bestehen bleiben
sollen.</para>
<example>
<title>Dauerhafte &Auml;nderungen in
<filename>/etc/resolv.conf</filename> vornehmen</title>
<screen>&prompt.root; <userinput>vi /etc/resolv.conf</userinput>
[...]
&prompt.root; <userinput>mount /cfg</userinput>
&prompt.root; <userinput>cp /etc/resolv.conf /cfg</userinput>
&prompt.root; <userinput>umount /cfg</userinput></screen>
</example>
<note>
<para>Die <filename class="directory">/cfg</filename>
Partition sollte nur während des Bootvorgangs und zu
&Auml;nderungen an den Konfigurationsdateien gemountet
werden.</para>
<para>Die <filename class="directory">/cfg</filename>
Partition jederzeit gemountet zu haben ist keine gute Idee,
besonders wenn das <application>NanoBSD</application> System
auf einem Massenspeicher betrieben wird, der eventuell druch
eine gro&szlig;e Anzahl von Schreiboperationen nachteilig
beeinträchtigt wird (z. B. wenn der Dateisystem-Syncer den
Speicher mit Daten überflutet).</para>
</note>
</sect2>
<sect2>
<title>Ein NanoBSD Abbild erstellen</title>
<para>Ein <application>NanoBSD</application> Abbild wird über
ein einfaches <filename>nanobsd.sh</filename> Shell-Skript
gebaut, das sich unter <filename
class="directory"><replaceable>/usr</replaceable>/src/tools/tools/nanobsd</filename>
befindet. Das Skript erstellt ein Abbild, welches dann
mittels &man.dd.1; auf einen Massenspeicher kopiert werden
kann.</para>
<para>Die folgenden Kommandos sind notwendig um ein
<application>NanoBSD</application> Abbild zu erstellen:</para>
<screen>&prompt.root; <userinput>cd /usr/src/tools/tools/nanobsd</userinput> <co id="nbsd-cd"/>
&prompt.root; <userinput>sh nanobsd.sh</userinput> <co id="nbsd-sh"/>
&prompt.root; <userinput>cd /usr/obj/nanobsd.full</userinput> <co id="nbsd-cd2"/>
&prompt.root; <userinput>dd if=_.disk.full of=/dev/da0 bs=64k</userinput> <co id="nbsd-dd"/></screen>
<calloutlist>
<callout arearefs="nbsd-cd"> <para>Wechsel in das
Basisverzeichnis des <application>NanoBSD</application>
Skripts.</para>
</callout>
<callout arearefs="nbsd-sh">
<para>Den Bauprozess starten.</para>
</callout>
<callout arearefs="nbsd-cd2">
<para>Wechsel in das Verzeichnis, in dem das gebaute Abbild
liegt.</para>
</callout>
<callout arearefs="nbsd-dd">
<para><application>NanoBSD</application> auf einem
Massenspeicher installieren.</para>
</callout>
</calloutlist>
</sect2>
<sect2>
<title>Ein NanoBSD Abbild anpassen</title>
<para>Dies ist wahrscheinlich das wichtigste und interessanteste
Merkmal von <application>NanoBSD</application>. Hierbei
werden Sie auch die meiste Zeit mit der Entwicklung von
<application>NanoBSD</application> verbringen.</para>
<para>Der Aufruf des folgenden Kommandos wird
<filename>nanobsd.sh</filename> dazu zwingen, seine
Konfiguration aus <filename>myconf.nano</filename> aus dem
aktuellen Verzeichnis zu lesen:</para>
<screen>&prompt.root; <userinput>sh nanobsd.sh -c myconf.nano</userinput></screen>
<para>Die Anpassung wird auf zwei Arten geschehen:</para>
<itemizedlist>
<listitem>
<para>Konfigurations-Optionen</para>
</listitem>
<listitem>
<para>Benutzerdefinierte Funktionen</para>
</listitem>
</itemizedlist>
<sect3>
<title>Konfigurations-Optionen</title>
<para>Durch Konfigurationseinstellungen ist es möglich
Optionen zu übergeben, die sowohl die
<maketarget>buildworld</maketarget> und
<maketarget>installworld</maketarget> Phasen des
<application>NanoBSD</application> Bauprozesses betreffen,
sowie interne Optionen, die den Haupt-Bauprozess von
<application>NanoBSD</application> beeinflussen. Durch diese
Optionen ist es möglich, das System so zu reduzieren, dass
es mit wenig Platz, etwa 64 MB auskommt. Sie können die
Konfigurationsdateien dazu nutzten &os; noch weiter zu
trimmen, bis es nur noch aus dem Kernel und zwei oder drei
Dateien im Userland besteht.</para>
<para>Die Konfigurationsdatei besteht aus
Konfigurations-Optionen, die die Standardwerte
überschreiben.</para>
<itemizedlist>
<listitem>
<para><literal>NANO_NAME</literal> &mdash; Name des Build
(wird verwendet, um die workdir Namen zu
konstruieren).</para>
</listitem>
<listitem>
<para><literal>NANO_SRC</literal> &mdash; Pfad zum
Quelltextverzeichnis, das für den Bau des Abbilds
verwendet wird.</para>
</listitem>
<listitem>
<para><literal>NANO_KERNEL</literal> &mdash; Name der
Kernelkonfigurationsdatei, die für den Bau des Kernels
verwendet wird.</para>
</listitem>
<listitem>
<para><literal>CONF_BUILD</literal> &mdash; Optionen für
die <maketarget>buildworld</maketarget> Phase des
Bauprozesses.</para>
</listitem>
<listitem>
<para><literal>CONF_INSTALL</literal> &mdash; Optionen für
die <maketarget>installworld</maketarget> Phase des
Bauprozesses.</para>
</listitem>
<listitem>
<para><literal>CONF_WORLD</literal> &mdash; Optionen für
die <maketarget>buildworld</maketarget> und
<maketarget>installworld</maketarget> Phasen des
Bauprozesses.</para>
</listitem>
<listitem>
<para><literal>FlashDevice</literal> &mdash; Definiert den
zu benutzenden Medientyp. &Uuml;berprüfen Sie die Datei
<filename>FlashDevice.sub</filename> für weitere
Informationen.</para>
</listitem>
</itemizedlist>
</sect3>
<sect3>
<title>Benutzerdefinierte Funktionen</title>
<para>Mit Hilfe von Shell-Funktionen in der
Konfigurationsdatei besteht die Möglichkeit zur
Feinabstimmung von <application>NanoBSD</application>. Das
folgende Beispiel illustriert das Grundmodell von
benutzerdefinierten Funktionen:</para>
<programlisting>cust_foo () (
echo "bar=baz" &gt; \
&dollar;{NANO_WORLDDIR}/etc/foo
)
customize_cmd cust_foo</programlisting>
<para>Ein besseres Beispiel für eine Anpassung ist folgende,
welche die Standardgrö&szlig;e des <filename
class="directory">/etc</filename> Verzeichnisses von 5 MB
auf 30 MB ändert:</para>
<programlisting>cust_etc_size () (
cd &dollar;{NANO_WORLDDIR}/conf
echo 30000 &gt; default/etc/md_size
)
customize_cmd cust_etc_size</programlisting>
<para>Es gibt ein paar vordefinierte Standardfunktionen die
Sie nutzen können:</para>
<itemizedlist>
<listitem>
<para><literal>cust_comconsole</literal> &mdash;
Deaktiviert &man.getty.8; auf den VGA Geräten (den
<filename>/dev/ttyv*</filename> Gerätedateien) und
ermöglicht die Nutzung der seriellen Schnittstelle COM1
als Systemkonsole.</para>
</listitem>
<listitem>
<para><literal>cust_allow_ssh_root</literal> &mdash;
Erlaubt es <username>root</username> sich über
&man.sshd.8; anzumelden.</para>
</listitem>
<listitem>
<para><literal>cust_install_files</literal> &mdash;
Installiert Dateien aus dem <filename
class="directory">nanobsd/Files</filename>
Verzeichnis, das einige nützliche Skripte für die
Systemverwaltung enthält.</para>
</listitem>
</itemizedlist>
</sect3>
<sect3>
<title>Pakete hinzufügen</title>
<para>Durch benutzerdefinierte Funktionen können Pakete zum
<application>NanoBSD</application> Abbild hinzugefügt
werden. Die nachfolgende Funktion installiert alle Pakete
aus
<filename>/usr/src/tools/tools/nanobsd/packages</filename>:</para>
<programlisting>install_packages () (
mkdir -p ${NANO_WORLDDIR}/packages
cp /usr/src/tools/tools/nanobsd/packages/* ${NANO_WORLDDIR}/packages
chroot ${NANO_WORLDDIR} sh -c 'cd packages; pkg_add -v *;cd ..;'
rm -rf ${NANO_WORLDDIR}/packages
)
customize_cmd install_packages</programlisting>
</sect3>
<sect3>
<title>Beispiel einer Konfigurationsdatei</title>
<para>Ein komplettes Beispiel für eine Konfigurationsdatei zum
Erstellen eines benutzerdefinierten
<application>NanoBSD</application> Abbilds könnte folgende
sein:</para>
<programlisting>NANO_NAME=custom
NANO_SRC=/usr/src
NANO_KERNEL=MYKERNEL
NANO_IMAGES=2
CONF_BUILD='
NO_KLDLOAD=YES
NO_NETGRAPH=YES
NO_PAM=YES
'
CONF_INSTALL='
NO_ACPI=YES
NO_BLUETOOTH=YES
NO_CVS=YES
NO_FORTRAN=YES
NO_HTML=YES
NO_LPR=YES
NO_MAN=YES
NO_SENDMAIL=YES
NO_SHAREDOCS=YES
NO_EXAMPLES=YES
NO_INSTALLLIB=YES
NO_CALENDAR=YES
NO_MISC=YES
NO_SHARE=YES
'
CONF_WORLD='
NO_BIND=YES
NO_MODULES=YES
NO_KERBEROS=YES
NO_GAMES=YES
NO_RESCUE=YES
NO_LOCALES=YES
NO_SYSCONS=YES
NO_INFO=YES
'
FlashDevice SanDisk 1G
cust_nobeastie() (
touch &dollar;{NANO_WORLDDIR}/boot/loader.conf
echo "beastie_disable=\"YES\"" &gt;&gt; &dollar;{NANO_WORLDDIR}/boot/loader.conf
)
customize_cmd cust_comconsole
customize_cmd cust_install_files
customize_cmd cust_allow_ssh_root
customize_cmd cust_nobeastie</programlisting>
</sect3>
</sect2>
<sect2>
<title>NanoBSD aktualisieren</title>
<para>The Update-Prozess von <application>NanoBSD</application>
ist relativ einfach:</para>
<procedure>
<step>
<para>Erstellen Sie ein neues
<application>NanoBSD</application> Abbild.</para>
</step>
<step>
<para>Laden Sie das neue Abbild in eine unbenutzte Partition
eines laufenden <application>NanoBSD</application>
Systems.</para>
<para>Der wichtigste Unterschied dieses Schrittes zur ersten
<application>NanoBSD</application> Installation besteht
darin, das jetzt anstatt der Datei
<filename>_.disk.full</filename> (enthält ein Abbild der
gesamten Platte) die Datei
<filename>_.disk.image</filename> (enthält ein Abbild
einer einzelnen System-Partition) installiet wird.</para>
</step>
<step>
<para>Neustart, um das System von der neu installierten
Partition zu starten.</para>
</step>
<step>
<para>Wenn alles gut geht, ist die Aktualisierung
abgeschlossen.</para>
</step>
<step>
<para>Wenn etwas schief läuft, starten Sie wieder in die
vorherige Partition (die das alte, funktionierende Abbild
enthält) um die System-Funktionalität so schnell wie
möglich wieder herzustellen. Beheben Sie alle Probleme des
neu gebauten Abbilds, und wiederholen Sie den
Vorgang.</para>
</step>
</procedure>
<para>Um das neue Abbild auf das laufende
<application>NanoBSD</application> System zu installieren, ist
es möglich, entweder das <filename>updatep1</filename> oder
<filename>updatep2</filename> Skript im <filename
class="directory">/root</filename> Verzeichnis zu verwenden,
je nachdem, von welcher Partition das aktuelle System
läuft.</para>
<para>In Abhängigkeit davon welche Dienste der Host, der das
<application>NanoBSD</application> Abbild anbietet, und welche
Art von Transfer bevorzugt wird, bestehen eine von drei zu
prüfenden Möglichkeiten:</para>
<sect3>
<title>Verwendung von &man.ftp.1;</title>
<para>Wenn die &Uuml;bertragungsgeschwindigkeit an erster
Stelle steht, verwenden Sie dieses Beispiel:</para>
<screen>&prompt.root; <userinput>ftp myhost
get _.disk.image "| sh updatep1"</userinput></screen>
</sect3>
<sect3>
<title>Verwendung von &man.ssh.1;</title>
<para>Wenn eine sichere &Uuml;bertragung bevorzugt wird,
sollten Sie die Verwendung dieses Beipiels in Betracht
ziehen:</para>
<screen>&prompt.root; <userinput>ssh myhost cat _.disk.image.gz | zcat | sh updatep1</userinput></screen>
</sect3>
<sect3>
<title>Verwendung von &man.nc.1;</title>
<para>Verwenden Sie dieses Beispiel, wenn auf dem Remote-Host
kein &man.ftpd.8; oder &man.sshd.8; Dienst läuft:</para>
<procedure>
<step>
<para>Zunächst öffnen Sie eine TCP-Listener auf dem Host
der das Abbild bereitstellt und zum Client
sendet:</para>
<screen>myhost&prompt.root; <userinput>nc -l <replaceable>2222</replaceable> &lt; _.disk.image</userinput></screen>
<note>
<para>Stellen Sie sicher das der benutzte Port nicht
blockiert wird, um eingehende Verbindungen, vom
<application>NanoBSD</application> Host durch die
Firewall, zu ermöglichen.</para>
</note>
</step>
<step>
<para>Verbinden Sie sich zum Host der das Abbild
bereitstellt und führen Sie das
<filename>updatep1</filename> Skript aus:</para>
<screen>&prompt.root; <userinput>nc myhost <replaceable>2222</replaceable> | sh updatep1</userinput></screen>
</step>
</procedure>
</sect3>
</sect2>
</sect1>
</article>