aboutsummaryrefslogtreecommitdiff
path: root/de_DE.ISO8859-1/articles/nanobsd/article.xml
blob: 02c0d32a81b92ef6b8c4cd936a6e9a66cd30463d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V4.5-Based Extension//EN"
	"../../../share/xml/freebsd45.dtd">

<article lang="de">
  <articleinfo>
    <title>Einf&uuml;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&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>
  </articleinfo>

  <sect1 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 id="howto">
    <title>NanoBSD Anleitung</title>

    <sect2 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
	      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&auml;lt Dateien f&uuml;r das <filename
	  class="directory">/etc</filename> Verzeichnis und wird
	direkt nach dem Botten read-only eingehangen, weshalb es
	erforderlich ist ge&auml;nderte Dateien von <filename
	  class="directory">/etc</filename> zur&uuml;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&auml;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&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
	  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&ouml;glich
	  Optionen zu &uuml;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&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 <maketarget>buildworld</maketarget> Phase des
	      Bauprozesses.</para>
	  </listitem>

	  <listitem>
	    <para><literal>CONF_INSTALL</literal> &mdash; Optionen
	      f&uuml;r die <maketarget>installworld</maketarget> Phase
	      des Bauprozesses.</para>
	  </listitem>

	  <listitem>
	    <para><literal>CONF_WORLD</literal> &mdash; Optionen f&uuml;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&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
	    class="directory">/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 <username>root</username> sich &uuml;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&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
	  class="directory">/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 <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&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 <replaceable>2222</replaceable> | sh updatep1</userinput></screen>
	  </step>
	</procedure>
      </sect3>
    </sect2>
  </sect1>

  <index/>
</article>