1
0
mirror of https://git.FreeBSD.org/doc.git synced 2026-06-02 11:25:20 +00:00
Files
doc/de_DE.ISO8859-1/articles/nanobsd/article.xml
T
2013-11-13 07:52:45 +00:00

538 lines
17 KiB
XML

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
"http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd">
<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="de">
<info><title>Einf&uuml;hrung in NanoBSD</title>
<authorgroup>
<author><personname><firstname>Daniel</firstname><surname>Gerzo</surname></personname></author>
</authorgroup>
<pubdate>$FreeBSD$</pubdate>
<copyright>
<year>2006</year>
<holder>The FreeBSD Documentation Project</holder>
</copyright>
<legalnotice xml: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&ouml;nnen ein &os; Abbild f&uuml;r eingebettete
Systeme zu erstellen, welche auf eine Compact Flash Karte
passen (oder andere Massenspeicher).</para>
<para><emphasis>&Uuml;bersetzt von Bj&ouml;rn
Heidotting</emphasis>.</para>
</abstract>
</info>
<sect1 xml:id="intro">
<title>Einf&uuml;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&uuml;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&uuml;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&ouml;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&auml;t &mdash; Wenn es m&ouml;glich
ist, etwas mit &os; zu tun, ist es auch m&ouml;glich, die
gleiche Sache mit <application>NanoBSD</application> zu tun,
es sei denn, eine oder mehrere Funktionen wurden
ausdr&uuml;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&auml;&szlig;em Herunterfahren des Systems
auszuf&uuml;hren.</para>
</listitem>
<listitem>
<para>Einfach zu bauen und anzupassen &mdash; Unter Verwendung
von nur einem Shell-Skript und einer Konfigurationsdatei ist
es m&ouml;glich, ein reduziertes und angepasstes Abbild zu
bauen, welches jegliche Reihe von Anforderungen
erf&uuml;llt.</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 xml:id="howto">
<title>NanoBSD Anleitung</title>
<sect2 xml:id="design">
<title>Das Design von NanoBSD</title>
<para>Sobald das Abbild auf dem Medium verf&uuml;gbar ist, kann
<application>NanoBSD</application> gebootet werden. Der
Massenspeicher ist standardm&auml;&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>/cfg</filename> Verzeichnis gemountet
werden kann.</para>
</listitem>
</itemizedlist>
<para>Diese Partitionen sind im Allgemeinen read-only.</para>
<para>Die <filename>/etc</filename> und
<filename>/var</filename> Verzeichnisse sind
&man.md.4; (malloc) Speicher.</para>
<para>Die Partition der Konfigurationsdatei besteht unter dem
<filename>/cfg</filename> Verzeichnis. Sie
enth&auml;lt Dateien f&uuml;r das <filename>/etc</filename> Verzeichnis und wird
direkt nach dem Botten read-only eingehangen, weshalb es
erforderlich ist ge&auml;nderte Dateien von <filename>/etc</filename> zur&uuml;ck nach <filename>/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>/cfg</filename>
Partition sollte nur w&auml;hrend des Bootvorgangs und zu
&Auml;nderungen an den Konfigurationsdateien gemountet
werden.</para>
<para>Die <filename>/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&auml;chtigt wird (z. B. wenn der Dateisystem-Syncer den
Speicher mit Daten &uuml;berflutet).</para>
</note>
</sect2>
<sect2>
<title>Ein NanoBSD Abbild erstellen</title>
<para>Ein <application>NanoBSD</application> Abbild wird &uuml;ber
ein einfaches <filename>nanobsd.sh</filename> Shell-Skript
gebaut, das sich unter <filename>/usr/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 xml:id="nbsd-cd"/>
&prompt.root; <userinput>sh nanobsd.sh</userinput> <co xml:id="nbsd-sh"/>
&prompt.root; <userinput>cd /usr/obj/nanobsd.full</userinput> <co xml:id="nbsd-cd2"/>
&prompt.root; <userinput>dd if=_.disk.full of=/dev/da0 bs=64k</userinput> <co xml: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&ouml;glich
Optionen zu &uuml;bergeben, die sowohl die
<buildtarget>buildworld</buildtarget> und
<buildtarget>installworld</buildtarget> 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&ouml;glich, das System so zu reduzieren, dass
es mit wenig Platz, etwa 64 MB auskommt. Sie k&ouml;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, welche die Standardwerte
&uuml;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&uuml;r den Bau des Abbilds
verwendet wird.</para>
</listitem>
<listitem>
<para><literal>NANO_KERNEL</literal> &mdash; Name der
Kernelkonfigurationsdatei, die f&uuml;r den Bau des Kernels
verwendet wird.</para>
</listitem>
<listitem>
<para><literal>CONF_BUILD</literal> &mdash; Optionen f&uuml;r
die <buildtarget>buildworld</buildtarget> Phase des
Bauprozesses.</para>
</listitem>
<listitem>
<para><literal>CONF_INSTALL</literal> &mdash; Optionen
f&uuml;r die <buildtarget>installworld</buildtarget> Phase
des Bauprozesses.</para>
</listitem>
<listitem>
<para><literal>CONF_WORLD</literal> &mdash; Optionen f&uuml;r
die <buildtarget>buildworld</buildtarget> und
<buildtarget>installworld</buildtarget> Phasen des
Bauprozesses.</para>
</listitem>
<listitem>
<para><literal>FlashDevice</literal> &mdash; Definiert den
zu benutzenden Medientyp. &Uuml;berpr&uuml;fen Sie die
Datei <filename>FlashDevice.sub</filename> f&uuml;r
weitere Informationen.</para>
</listitem>
</itemizedlist>
</sect3>
<sect3>
<title>Benutzerdefinierte Funktionen</title>
<para>Mit Hilfe von Shell-Funktionen in der
Konfigurationsdatei besteht die M&ouml;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&uuml;r eine Anpassung ist folgende,
welche die Standardgr&ouml;&szlig;e des <filename>/etc</filename> Verzeichnisses von 5 MB
auf 30 MB &auml;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&ouml;nnen:</para>
<itemizedlist>
<listitem>
<para><literal>cust_comconsole</literal> &mdash;
Deaktiviert &man.getty.8; auf den VGA Ger&auml;ten (den
<filename>/dev/ttyv*</filename> Ger&auml;tedateien) und
erm&ouml;glicht die Nutzung der seriellen Schnittstelle COM1
als Systemkonsole.</para>
</listitem>
<listitem>
<para><literal>cust_allow_ssh_root</literal> &mdash;
Erlaubt es <systemitem class="username">root</systemitem> sich &uuml;ber
&man.sshd.8; anzumelden.</para>
</listitem>
<listitem>
<para><literal>cust_install_files</literal> &mdash;
Installiert Dateien aus dem <filename>nanobsd/Files</filename>
Verzeichnis, das einige n&uuml;tzliche Skripte f&uuml;r die
Systemverwaltung enth&auml;lt.</para>
</listitem>
</itemizedlist>
</sect3>
<sect3>
<title>Pakete hinzuf&uuml;gen</title>
<para>Durch benutzerdefinierte Funktionen k&ouml;nnen Pakete zum
<application>NanoBSD</application> Abbild hinzugef&uuml;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&uuml;r eine Konfigurationsdatei
zum Erstellen eines benutzerdefinierten
<application>NanoBSD</application> Abbilds k&ouml;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&auml;lt ein Abbild der
gesamten Platte) die Datei
<filename>_.disk.image</filename> (enth&auml;lt ein Abbild
einer einzelnen System-Partition) installiert 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&auml;uft, starten Sie wieder in die
vorherige Partition (die das alte, funktionierende Abbild
enth&auml;lt) um die System-Funktionalit&auml;t so schnell wie
m&ouml;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&ouml;glich, entweder das <filename>updatep1</filename> oder
<filename>updatep2</filename> Skript im <filename>/root</filename> Verzeichnis zu verwenden,
je nachdem, von welcher Partition das aktuelle System
l&auml;uft.</para>
<para>In Abh&auml;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&uuml;fenden M&ouml;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 Beispiels 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&auml;uft:</para>
<procedure>
<step>
<para>Zun&auml;chst &ouml;ffnen Sie eine TCP-Listener auf dem Host
der das Abbild bereitstellt und zum Client
sendet:</para>
<screen>myhost&prompt.root; <userinput>nc -l 2222 &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&ouml;glichen.</para>
</note>
</step>
<step>
<para>Verbinden Sie sich zum Host der das Abbild
bereitstellt und f&uuml;hren Sie das
<filename>updatep1</filename> Skript aus:</para>
<screen>&prompt.root; <userinput>nc myhost 2222 | sh updatep1</userinput></screen>
</step>
</procedure>
</sect3>
</sect2>
</sect1>
<index/>
</article>