doc/es_ES.ISO8859-1/articles/nanobsd/article.xml
Gabor Kovesdan a6684b4306 - Reduce the misuse of role attribute; role="directory" should actually be
class="directory"
- Add constraint to enforce this
2013-04-04 11:40:58 +00:00

563 lines
18 KiB
XML

<?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 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 class="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 class="directory">/etc</filename>
y <filename class="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 class="directory">/cfg</filename>. Este
directorio contiene ficheros que usa el
directorio <filename class="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 class="directory">/etc</filename> se copien
en <filename class="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 class="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 class="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 class="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 class="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 class="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 class="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>