aboutsummaryrefslogtreecommitdiff
path: root/es_ES.ISO8859-1/articles/nanobsd/article.xml
blob: 7429cab82c7c40ca77c87cb26631f1fff6aed743 (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
551
552
553
554
555
556
557
558
559
560
561
562
563
<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V4.5-Based Extension//EN"
	"../../../share/xml/freebsd45.dtd">

<!-- The FreeBSD Spanish Documentation Project
     Original Revision: r1.3                   -->


<article lang="es">

  <articleinfo>
    <title>Introducción a NanoBSD</title>

    <authorgroup>
      <author>
	    <firstname>Daniel</firstname>
	    <surname>Gerzo</surname>
      </author>
    </authorgroup>

    <copyright>
      <year>2006</year>
      <holder>The FreeBSD Documentation Project</holder>
    </copyright>

    <legalnotice id="trademarks" role="trademarks">
      &tm-attrib.freebsd; &tm-attrib.general;
    </legalnotice>

    <pubdate>$FreeBSD$</pubdate>

    <releaseinfo>$FreeBSD$</releaseinfo>

    <abstract>
      <para>Este documento trata sobre <application>NanoBSD</application>.
	<application>NanoBSD</application> es una herramienta que permite
        crear imágenes del sistema &os; para su uso en
        aplicaciones empotradas y listas para cargarse en una
        tarjeta Compact Flash (u otro medio de almacenamiento
        masivo).</para>
	&trans.es.german;
    </abstract>
  </articleinfo>

  <sect1 id="intro">
    <title>Introducción a NanoBSD</title>

    <indexterm><primary>NanoBSD</primary></indexterm>

    <para><application>NanoBSD</application> es una herramienta
      actualmente desarrollada por &a.phk;.  Crea una imagen del
      sistema &os; para aplicaciones empotradas lista para su uso en
      una tarjeta Compact Flash (u otro medio de almacenamiento
      masivo).</para>

    <para>Puede utilizarse para generar imágenes
      instalables especiales; está diseñado pensando en una
      instalación y mantenimiento fáciles en sistemas
      conocidos como <quote>sistemas empotrados</quote>.  Los
      sistemas empotrados tienen hardware y software
      integrado en el producto, lo que significa que todas las
      aplicaciones están preinstaladas.  Estos dispositivos
      pueden conectarse a una red dada y comenzar a trabajar
      (casi) inmediatamente.</para>

    <para>Las características
      de <application>NanoBSD</application> incluyen:</para>

    <itemizedlist>
      <listitem>
	    <para>Los ports y paquetes funcionan como en &os;:
	      Cualquier aplicación puede instalarse y usarse en
	      una imagen de <application>NanoBSD</application> de la
	      misma forma que en &os;.</para>
      </listitem>

      <listitem>
	    <para>No se pierde funcionalidad: Si es posible hacer
          algo en &os; es posible hacer lo mismo
          en <application>NanoBSD</application>, a menos que se haya
          eliminado explícitamente esa característica o
          características especiales al crear la imagen
          de <application>NanoBSD</application>.</para>
      </listitem>

      <listitem>
	    <para>Todo está en modo de sólo lectura
	      durante el funcionamiento del sistema: Un apagado
	      brusco es totalmente seguro.  No es necesario ejecutar
	      &man.fsck.8; después de que el sistema sufra
	      un apagón.</para>
      </listitem>

      <listitem>
	    <para>Fácil de generar y personalizar: Usando
	      un solo script de shell y un fichero de configuración
	      pueden generarse imágenes reducidas y personalizadas
	      que satisfagan cualquier necesidad.</para>
      </listitem>
    </itemizedlist>
  </sect1>

  <sect1 id="howto">
    <title>NanoBSD <quote>Howto</quote></title>

    <sect2 id="design">
      <title>El diseño de NanoBSD</title>

      <para>Una vez que la imagen está en el medio puede
	    arrancar <application>NanoBSD</application>.  El medio
	    de almacenamiento se divide por omisión en tres
	    partes:</para>

      <itemizedlist>
	    <listitem>
	      <para>Dos particiones de la imagen: <literal>code#1</literal>
	        y <literal>code#2</literal>.</para>
	    </listitem>

	    <listitem>
	      <para>La partición que contiene los ficheros de
	        configuración, que puede montarse bajo
	        <filename role="directory">/cfg</filename> durante el
	        funcionamiento del sistema.</para>
	    </listitem>
      </itemizedlist>

      <para>Estas particiones se montan normalmente en modo de
        sólo lectura.</para>

      <para>Los directorios <filename role="directory">/etc</filename>
        y <filename role="directory">/var</filename> son discos
        &man.md.4; (malloc).</para>

      <para>La partición de los ficheros de configuración
        permanece bajo el
        directorio <filename role="directory">/cfg</filename>.  Este
        directorio contiene ficheros que usa el
        directorio <filename role="directory">/etc</filename> y se
        monta en modo de sólo lectura inmediatamente
        después del arranque; por lo tanto, es necesario que
        los ficheros que se modifiquen
        en <filename role="directory">/etc</filename> se copien
        en <filename role="directory">/cfg</filename> si se desea que
        los cambios perduren después del reinicio del
        sistema.</para>

      <example>
	    <title>Cómo hacer cambios persistentes
	      en <filename>/etc/resolv.conf</filename></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>La partición que contiene el
	      directorio <filename role="directory">/cfg</filename>
	      debería montarse únicamente en el arranque y
	      mientras se sobreescriben los ficheros de
	      configuración.</para>

	    <para>No es buena idea montar siempre el
          directorio <filename role="directory">/cfg</filename>,
          especialmente si el
          sistema <application>NanoBSD</application> se ejecuta en un
          dispositivo de almacenamiento masivo que pueda verse
          afectado negativamente por un número elevado de
          escrituras en la partición (i.e. cuando el sistema de
          ficheros sincroniza los datos con el sistema de
          discos).</para>
      </note>
    </sect2>

    <sect2>
      <title>Cómo generar una imagen de NanoBSD</title>

      <para>Una imagen de <application>NanoBSD</application> se genera
	    usando el sencillo script de
	    shell <filename>nanobsd.sh</filename>, ubicado en el
	    directorio <filename role="directory"><replaceable>/usr</replaceable>/src/tools/tools/nanobsd</filename>.
	    El script crea una imagen que se deberá copiar al medio
	    de almacenamiento mediante la utilidad &man.dd.1;.</para>

      <para>Los comandos necesarios para generar una imagen
      de <application>NanoBSD</application> son:</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>Cambia el directorio actual por el directorio base del
	  script de generación
	  de <application>NanoBSD</application>.</para>
	</callout>

	<callout arearefs="nbsd-sh">
	  <para>Comienza el proceso de generación.</para>
	</callout>

	<callout arearefs="nbsd-cd2">
	  <para>Cambia el directorio actual por el directorio donde se
        encuentra la imagen generada.</para>
	</callout>

	<callout arearefs="nbsd-dd">
	  <para>Instala <application>NanoBSD</application> dentro del
	    medio de almacenamiento.</para>
	</callout>
      </calloutlist>
    </sect2>

    <sect2>
      <title>Personalización de una imagen de NanoBSD</title>

      <para>Esta es probablemente la característica más
        importante y más interesante
        de <application>NanoBSD</application>. Tambié es donde
        usted pasará la mayor parte del tiempo cuando esté
        desarrollando con <application>NanoBSD</application>.</para>

      <para>La invocación del siguiente comando forzará
        al script <filename>nanobsd.sh</filename> a leer su
        configuración desde el
        fichero <filename>mi-configuracion.nano</filename> ubicado en el
        directorio actual:</para>

      <screen>&prompt.root; <userinput>sh nanobsd.sh -c mi-configuracion.nano</userinput></screen>

      <para>La personalización se hace de dos maneras:</para>

      <itemizedlist>
	<listitem>
	  <para>Opciones de configuración</para>
	</listitem>

	<listitem>
	  <para>Funciones personalizadas</para>
	</listitem>
      </itemizedlist>

      <sect3>
	<title>Opciones de configuración</title>

    <para>Por medio de ajustes de configuración es posible
      configurar las opciones que se pasan a las
      fases <literal>buildworld</literal>
      e <literal>installworld</literal> del proceso de
      generación de <application>NanoBSD</application>.
      Mediante estas opciones puede reducirse el tamaño del
      sistema de manera que pueda incluso encajar en algo tan
      pequeño como un dispositivo de 64MB.  Es posible recortar &os;
      incluso más, hasta que consista únicamente
      en el kernel y dos o tres ficheros de
      <quote>userland</quote>.</para>

	<para>El fichero de configuración está compuesto por
	  opciones de configuración que sobreescriben los valores
	  por omisión.  Las directivas más importantes
	  son:</para>

	<itemizedlist>
	  <listitem>
	    <para><literal>NANO_NAME</literal> : Nombre de la
          generación que estamos ejecutando (se usa
	      para dar nombres a los directorios donde encontraremos el
          resultado del proceso).</para>
	  </listitem>

	  <listitem>
	    <para><literal>NANO_SRC</literal> : Ruta al código
	      fuente que se usará para generar la imagen.</para>
	  </listitem>

	  <listitem>
	    <para><literal>NANO_KERNEL</literal> : Nombre del fichero de
	      configuración del kernel que se usará para
	      generar el kernel.</para>
	  </listitem>

	  <listitem>
	    <para><literal>CONF_BUILD</literal> : Opciones que se pasan a
	      la fase <literal>buildworld</literal>.</para>
	  </listitem>

	  <listitem>
	    <para><literal>CONF_INSTALL</literal> : Opciones que se pasan a
	      la fase <literal>installworld</literal>.</para>
	  </listitem>

	  <listitem>
	    <para><literal>CONF_WORLD</literal> : Opciones que se pasan
	      tanto a <literal>buildworld</literal> como a
	      <literal>installworld</literal>.</para>
	  </listitem>

	  <listitem>
	    <para><literal>FlashDevice</literal> : Define el tipo de medio
	      de almacenamiento que se usará.  Para más
	      información consulte el
	      fichero <filename>FlashDevice.sub</filename>.</para>
	  </listitem>
	</itemizedlist>
      </sect3>

      <sect3>
	<title>Funciones personalizadas</title>

	<para>Puede ajustar <application>NanoBSD</application>
	  de forma muy precisa mediante el uso de funciones de
	  shell en el fichero de configuración.  En el siguiente
	  ejemplo vemos un modelo básico de función
	  personalizada.</para>

	<programlisting>cust_foo () (
	echo "bar=topless" &gt; \
	  &dollar;{NANO_WORLDDIR}/etc/foo
)
customize_cmd cust_foo</programlisting>

    <para>A continuación vemos un ejemplo más útil
      de función personalizada, que cambia el tamaño por
      omisión del directorio
      <filename role="directory">/etc</filename> de 5MB a 30MB:</para>

	<programlisting>cust_etc_size () (
	cd &dollar;{NANO_WORLDDIR}/conf
	echo 30000 &gt; default/etc/md_size
)
customize_cmd cust_etc_size</programlisting>

	<para>Hay unas pocas funciones de personalización
      predefinidas listas para su uso:</para>

	<itemizedlist>
	  <listitem>
	    <para><literal>cust_comconsole</literal> : Deshabilita
	      &man.getty.8; en los dispositivos VGA (los nodos de
	      dispositivo <filename>/dev/tty*</filename>) y habilita el
	      uso del puerto serie COM1 para que sea la consola del
	      sistema.</para>
	  </listitem>

	  <listitem>
	    <para><literal>cust_allow_ssh_root</literal> : Permite a
	      <username>root</username> acceder a través de
	      &man.sshd.8;.</para>

	  </listitem>

	  <listitem>
	    <para><literal>cust_install_files</literal> : Instala ficheros
	      de configuración desde el
	      directorio <filename role="directory">nanobsd/files</filename>,
          que contiene scripts útiles para la
	      administración del sistema.</para>
	  </listitem>
	</itemizedlist>
      </sect3>

      <sect3>
	<title>Cómo añadir paquetes</title>

	<para>Se pueden añadir paquetes a la imagen de
          <application>NanoBSD</application> usando una función
          personalizada.  La siguiente función instalará
	  todos los paquetes que se encuentren en
          <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>Ejemplo de fichero de configuración</title>

	<para>El siguiente es un ejemplo completo de fichero de
	  configuración para generar una imagen personalizada
	  de <application>NanoBSD</application>:</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>Cómo actualizar NanoBSD</title>

      <para>El proceso de actualización
        de <application>NanoBSD</application> es relativamente
        simple:</para>

      <procedure>
	    <step>
	      <para>Generar una nueva imagen
	        de <application>NanoBSD</application> de la forma
	        habitual.</para>
	    </step>

	    <step>
	      <para>Copiar la nueva imagen sobre la partición no
            	utilizada del sistema empotrado que está
            	usando <application>NanoBSD</application>.</para>

	      <para>La diferencia más importante entre este paso y
                la instalación inicial
            	de <application>NanoBSD</application> es que ahora en
            	lugar de usar el fichero <filename>_.disk.full</filename>
            	(que contiene una imagen de todo el disco) se instala
            	la imagen <filename>_.disk.image</filename> (que contiene
            	una imagen de una sola partición).</para>
	    </step>

	    <step>
	      <para>Reiniciar y arrancar el sistema desde la
            	partición que se acaba de instalar.</para>
	    </step>

	    <step>
	      <para>Si todo va bien la actualización ha
	        terminado.</para>
	    </step>

	    <step>
	      <para>Si algo va mal reinicie desde la partición
            	anterior (que contiene la imagen vieja, pero que
            	funciona) para recuperar el funcionamiento del
            	sistema lo antes posible.  Arregle los problemas
            	de la nueva generación y repita el proceso.</para>
	    </step>
      </procedure>

      <para>Para facilitar la instalación de una imagen
	nueva en su sistema <application>NanoBSD</application> en
	funcionamiento dispone de los scripts <filename>updatep1</filename>
        y <filename>updatep2</filename>, ubicados en el directorio
        <filename role="directory">/root</filename>.  La
        elección de uno u otro script depende de qué
        partición esté ejecutando el sistema,
        la primera o la segunda.</para>

      <para>Dependiendo de los servicios disponibles en
        la máquina que va a servir la nueva imagen
        de <application>NanoBSD</application> y del tipo de
        transferencia de datos que prefiera uno de estos tres
        métodos le resultará más o menos
	    interesante:</para>

      <sect3>
	    <title>Uso de &man.ftp.1;</title>

	    <para>Si la prioridad es la velocidad de la transferencia
              use usted este ejemplo:</para>

	    <screen>&prompt.root; <userinput>ftp mi-maquina
get _.disk.image "| sh updatep1"</userinput></screen>
      </sect3>

      <sect3>
	<title>Uso de &man.ssh.1;</title>

	<para>Si la prioridad es la seguridad de la transferencia
          seguramente ejecutará algo muy parecido a lo
	  siguiente:</para>

	<screen>&prompt.root; <userinput>ssh mi-maquina cat _.disk.image.gz | zcat | sh updatep1</userinput></screen>
      </sect3>

      <sect3>
	<title>Uso de &man.nc.1;</title>

	<para>Si la máquina remota no dispone de servicios de
	  &man.ftp.1; ni de &man.sshd.8; puede recurrir al siguiente
	  ejemplo:</para>

	<procedure>
	  <step>
	    <para>Primero abra un puerto TCP de escucha en la
	      máquina que sirve la imagen y envíela
	      al cliente:</para>

	    <screen>mi-maquina&prompt.root; <userinput>nc -l <replaceable>2222</replaceable> &lt; _.disk.image</userinput></screen>

	    <note>
	      <para>Asegúrese de que el puerto elegido no tenga
                bloqueadas las conexiones entrantes desde la
                máquina <application>NanoBSD</application> por
	        ningún cortafuegos.</para>
 	    </note>
	  </step>

	  <step>
	    <para>Conéctese a la máquina que va servir la
	      nueva imagen y ejecute el script
          <filename>updatep1</filename>:</para>

	    <screen>&prompt.root; <userinput>nc mi-maquina <replaceable>2222</replaceable> | sh updatep1</userinput></screen>
	  </step>
	</procedure>
      </sect3>
    </sect2>
  </sect1>
</article>