doc/es_ES.ISO8859-1/articles/nanobsd/article.xml
2015-10-13 20:21:44 +00:00

371 lines
18 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!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="es_ES"> <info>
<title>Introducción a NanoBSD</title>
<authorgroup>
<author><personname><firstname>Daniel</firstname><surname>Gerzo</surname></personname></author>
</authorgroup>
<copyright><year>2006</year> <holder>The FreeBSD Documentation Project</holder></copyright>
<legalnotice xml:id="trademarks" role="trademarks">
<para>FreeBSD es una marca registrada de FreeBSD Foundation.</para>
<para>Muchas de las designaciones usadas por fabricantes y vendedores para vender sus productos son reclamadas como marcas. En aquellos lugares donde dichas designaciones aparecen en este documento y el proyecto FreeBSD estaba al tanto de los reclamos de marcas, dichas designaciones están acompañadas de los símbolos <quote></quote> o <quote>®</quote>.</para>
</legalnotice>
<pubdate>$FreeBSD$</pubdate>
<releaseinfo>$FreeBSD$</releaseinfo>
<abstract>
<para>Este documento provee información acerca de las herramientas <application>NanoBSD</application>, las cuales pueden ser usadas para crear imágenes del sistema de FreeBSD para aplicaciones embebidas, adecuadas para ser usadas en una tarjeta Compact Flash (o cualquier otro medio de almacenamiento masivo).</para>
</abstract>
</info>
<sect1 xml:id="intro">
<title>Introducción a NanoBSD</title>
<indexterm><primary>NanoBSD</primary></indexterm>
<para><application>NanoBSD</application> es una herramienta actualmente desarrollada por Poul-Henning Kamp <email>phk@FreeBSD.org</email>. Crea una imagen del sistema de FreeBSD para aplicaciones embebidas, adecuada para ser usada en una tarjeta Compact Flash (o cualquier otro medio de almacenamiento masivo).</para>
<para>Puede usarse para crear imágenes de instalación especializadas, diseñadas para instalar y mantener sistemas comúnmente llamados <quote>aparatos de computación</quote>. Los aparatos de computación incluyen el hardware y software en el mismo producto, lo cual significa que todas las aplicaciones vienen preinstaladas. El aparato se conecta a una red existente y puede comenzar a funcionar (casi) de inmediato.</para>
<para>Las características de <application>NanoBSD</application> incluyen:</para>
<itemizedlist>
<listitem>
<para>Los ports y packages funcionan de la misma manera que en FreeBSD — Cada aplicación puede ser instalada y usada en una imagen de <application>NanoBSD</application>, de la misma manera que en FreeBSD.</para>
</listitem>
<listitem>
<para>No hay perdida de funcionalidad — Si era posible hacer algo con FreeBSD, también será posible hacerlo con <application>NanoBSD</application>, a menos que esa característica específica haya sido removida de la imagen de <application>NanoBSD</application> cuando fue creada.</para>
</listitem>
<listitem>
<para>Todo es de solo lectura en tiempo de ejecución — Es seguro desconectar el cable. No hay necesidad de ejecutar <citerefentry><refentrytitle>fsck</refentrytitle><manvolnum>8</manvolnum></citerefentry> después de que el sistema se apague de manera brusca.</para>
</listitem>
<listitem>
<para>Es fácil de crear y personalizar — Haciendo uso de un único script y solamente un archivo de configuración, es posible crear imágenes reducidas y personalizadas para satisfacer un conjunto arbitrario de requisitos.</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 xml:id="howto">
<title>NanoBSD Paso a Paso</title>
<sect2 xml:id="design">
<title>El diseño de NanoBSD</title>
<para>Una vez que la imagen se encuentra presente en el medio es posible arrancar <application>NanoBSD</application>. El medio de almacenamiento masivo está dividido en tres partes por defecto:</para>
<itemizedlist>
<listitem>
<para>Dos particiones de imagen: <literal>code#1</literal> y <literal>code#2</literal>.</para>
</listitem>
<listitem>
<para>La partición del archivo de configuración, la cual puede ser montada bajo el directorio <filename>/cfg</filename> en tiempo de ejecución.</para>
</listitem>
</itemizedlist>
<para>Estas particiones normalmente se montan como de solo lectura.</para>
<para>Los directorios <filename>/etc</filename> y <filename>/var</filename> son discos <citerefentry><refentrytitle>md</refentrytitle><manvolnum>4</manvolnum></citerefentry> (malloc).</para>
<para>La partición del archivo de configuración reside en el directorio <filename>/cfg</filename>. Contiene archivos para el directorio <filename>/etc</filename> y es montada brevemente como una partición de solo lectura tras el arranque del sistema; por consiguiente, es necesaria para copiar archivos modificados desde <filename>/etc</filename> de vuelta hacia el directorio <filename>/cfg</filename> si se espera que los cambios persistan después de reiniciar el sistema.</para>
<example>
<title>Hacer Modificaciones Persistentes de <filename>/etc/resolv.conf</filename></title>
<screen><prompt>#</prompt> <userinput>vi /etc/resolv.conf</userinput>
[...]
<prompt>#</prompt> <userinput>mount /cfg</userinput>
<prompt>#</prompt> <userinput>cp /etc/resolv.conf /cfg</userinput>
<prompt>#</prompt> <userinput>umount /cfg</userinput></screen>
</example>
<note>
<para>La partición que contiene <filename>/cfg</filename> debería ser montada solo en el arranque y cuando se sustituyan las directivas de los archivos de configuración.</para>
<para>Mantener <filename>/cfg</filename> montado todo el tiempo no es una buena idea, especialmente si el sistema <application>NanoBSD</application> se ejecuta en un medio de almacenamiento masivo que puede ser afectado negativamente por un número alto de escrituras a la partición (como cuando el sincronizador del sistema de archivos vuelca los datos hacia los discos del sistema).</para>
</note>
</sect2>
<sect2>
<title>Compilar una imagen de NanoBSD</title>
<para>Una imagen de <application>NanoBSD</application> se compila usando un simple script de shell <filename>nanobsd.sh</filename>, que se encuentra en el directorio <filename><replaceable>/usr</replaceable>/src/tools/tools/nanobsd</filename>. Este script crea una imagen, que puede ser copiada al medio de almacenamiento usando la utilidad <citerefentry><refentrytitle>dd</refentrytitle><manvolnum>1</manvolnum></citerefentry>.</para>
<para>Los comandos necesarios para compilar una imagen de <application>NanoBSD</application> son:</para>
<screen><prompt>#</prompt> <userinput>cd /usr/src/tools/tools/nanobsd</userinput> <co xml:id="nbsd-cd"/>
<prompt>#</prompt> <userinput>sh nanobsd.sh</userinput> <co xml:id="nbsd-sh"/>
<prompt>#</prompt> <userinput>cd /usr/obj/nanobsd.full</userinput> <co xml:id="nbsd-cd2"/>
<prompt>#</prompt> <userinput>dd if=_.disk.full of=/dev/da0 bs=64k</userinput> <co xml:id="nbsd-dd"/></screen>
<calloutlist>
<callout arearefs="nbsd-cd">
<para>Cambie el directorio actual al directorio base del script de compilación de <application>NanoBSD</application>.</para>
</callout>
<callout arearefs="nbsd-sh">
<para>Comienze el proceso de compilación.</para>
</callout>
<callout arearefs="nbsd-cd2">
<para>Cambie el directorio actual por el lugar en donde se encuentren las imágenes compiladas.</para>
</callout>
<callout arearefs="nbsd-dd">
<para>Instale <application>NanoBSD</application> en el medio de almacenamiento.</para>
</callout>
</calloutlist>
</sect2>
<sect2>
<title>Personalizar una imagen de NanoBSD</title>
<para>Esta es probablemente la característica más importante y más interesante de <application>NanoBSD</application>. También es la que le llevará más tiempo cuando se encuentre desarrollando con <application>NanoBSD</application>.</para>
<para>Invocar el siguiente comando forzará a <filename>nanobsd.sh</filename> a leer su configuración desde el archivo <filename>myconf.nano</filename> localizado en el directorio actual:</para>
<screen><prompt>#</prompt> <userinput>sh nanobsd.sh -c myconf.nano</userinput></screen>
<para>La personalización puede hacerse 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>Con las preferencias de configuración, es posible configurar las opciones pasadas a las etapas <buildtarget>buildworld</buildtarget> y <buildtarget>installworld</buildtarget> del proceso de compilación de <application>NanoBSD</application>, así como también opciones internas pasadas al proceso de compilación principal de <application>NanoBSD</application>. A través de estas opciones es posible achicar el sistema, para que pueda caber en un espacio tan pequeño como 64MB. Pude utilizar estas opciones de configuración para reducir el tamaño de FreeBSD aun más, hasta que consista únicamente del kernel y dos o tres archivos en espacio de usuario.</para>
<para>El archivo de configuración consiste en opciones de configuración que sobreescriben los valores por defecto. Las directivas más importantes son:</para>
<itemizedlist>
<listitem>
<para><literal>NANO_NAME</literal> — Nombre de la compilación (utilizada para crear los nombres de los directorios de trabajo).</para>
</listitem>
<listitem>
<para><literal>NANO_SRC</literal>. Ruta al archivo fuente utilizada para compilar la imagen.</para>
</listitem>
<listitem>
<para><literal>NANO_KERNEL</literal> — Nombre del archivo de configuración del kernel utilizado para compilar el kernel.</para>
</listitem>
<listitem>
<para><literal>CONF_BUILD</literal> — Opciones pasadas a la etapa <buildtarget>buildworld</buildtarget> del proceso de compilación.</para>
</listitem>
<listitem>
<para><literal>CONF_INSTALL</literal> — Opciones pasadas a la etapa <buildtarget>installworld</buildtarget> del proceso de compilación.</para>
</listitem>
<listitem>
<para><literal>CONF_WORLD</literal> — Opciones pasadas a las etapas <buildtarget>buildworld</buildtarget> y <buildtarget>installworld</buildtarget> del proceso de compilación.</para>
</listitem>
<listitem>
<para><literal>FlashDevice</literal> — Define el tipo de medio que se usará. Consulte <filename>FlashDevice.sub</filename> para más detalles.</para>
</listitem>
</itemizedlist>
</sect3>
<sect3>
<title>Funciones personalizadas</title>
<para>Es posible configurar cada aspecto de <application>NanoBSD</application> utilizando funciones del shell en el archivo de configuración. El siguiente ejemplo ilustra el modelo básico de funciones personalizadas:</para>
<programlisting>cust_foo () (
echo "bar=baz" &gt; \
${NANO_WORLDDIR}/etc/foo
)
customize_cmd cust_foo</programlisting>
<para>Un ejemplo más útil de una función de personalización es el siguiente, el cual cambia el tamaño por defecto del directorio <filename>/etc</filename> de 5MB a 30MB:</para>
<programlisting>cust_etc_size () (
cd ${NANO_WORLDDIR}/conf
echo 30000 &gt; default/etc/md_size
)
customize_cmd cust_etc_size</programlisting>
<para>Estas son algunas funciones de personalización incluidas por defecto y listas para ser usadas:</para>
<itemizedlist>
<listitem>
<para><literal>cust_comconsole</literal> — Deshabilita <citerefentry><refentrytitle>getty</refentrytitle><manvolnum>8</manvolnum></citerefentry> en los dispositivos VGA (los nodos de dispositivo <filename>/dev/ttyv*</filename>) y habilita el uso del puerto en serie COM1 como la consola del sistema.</para>
</listitem>
<listitem>
<para><literal>cust_allow_ssh_root</literal> — Permite que <systemitem class="username">root</systemitem> se autentique mediante <citerefentry><refentrytitle>sshd</refentrytitle><manvolnum>8</manvolnum></citerefentry>.</para>
</listitem>
<listitem>
<para><literal>cust_install_files</literal> — Instala archivos desde el directorio <filename>nanobsd/Files</filename>, el cual contiene algunos scripts útiles para la administración del sistema.</para>
</listitem>
</itemizedlist>
</sect3>
<sect3>
<title>Agregando Packages</title>
<para>Pueden agregarse packages a la imagen de <application>NanoBSD</application> utilizando una funcion personalizada. La siguiente función instalará todos los paquetes situdados 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 archivo de Configuración</title>
<para>Un ejemplo completo de un archivo de configuración para crear una imagen personalizada de <application>NanoBSD</application> podría ser:</para>
<programlisting>NANO_NAME=custom
NANO_SRC=/usr/src
NANO_KERNEL=MYKERNEL
NANO_IMAGES=2
CONF_BUILD='
WITHOUT_KLDLOAD=YES
WITHOUT_NETGRAPH=YES
WITHOUT_PAM=YES
'
CONF_INSTALL='
WITHOUT_ACPI=YES
WITHOUT_BLUETOOTH=YES
WITHOUT_FORTRAN=YES
WITHOUT_HTML=YES
WITHOUT_LPR=YES
WITHOUT_MAN=YES
WITHOUT_SENDMAIL=YES
WITHOUT_SHAREDOCS=YES
WITHOUT_EXAMPLES=YES
WITHOUT_INSTALLLIB=YES
WITHOUT_CALENDAR=YES
WITHOUT_MISC=YES
WITHOUT_SHARE=YES
'
CONF_WORLD='
WITHOUT_BIND=YES
WITHOUT_MODULES=YES
WITHOUT_KERBEROS=YES
WITHOUT_GAMES=YES
WITHOUT_RESCUE=YES
WITHOUT_LOCALES=YES
WITHOUT_SYSCONS=YES
WITHOUT_INFO=YES
'
FlashDevice SanDisk 1G
cust_nobeastie() (
touch ${NANO_WORLDDIR}/boot/loader.conf
echo "beastie_disable=\"YES\"" &gt;&gt; ${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>Actualizar NanoBSD</title>
<para>El proceso de actualización de <application>NanoBSD</application> es relativamente simple:</para>
<procedure>
<step>
<para>Compile una nueva imagen de <application>NanoBSD</application>, como de costumbre.</para>
</step>
<step>
<para>Suba la nueva imagen a una partición sin usar de un aparato <application>NanoBSD</application> que se encuentre en ejecución.</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 <filename>_.disk.full</filename> (que contiene la imagen completa del disco), se instala la imagen <filename>_.disk.image</filename> (la cual contiene la imagen de una sola partición del sistema).</para>
</step>
<step>
<para>Reinicie y arranque el sistema desde la partición recientemente instalada.</para>
</step>
<step>
<para>Si todo terminó correctamente, la actualización habrá finalizado.</para>
</step>
<step>
<para>Si algo sale mal, reinicie en la partición anterior (que contiene la antigua imagen que funciona correctamente), para restaurar la funcionalidad del sistema tan rápido como sea posible. Arregle los problemas de la nueva imagen y repita el proceso.</para>
</step>
</procedure>
<para>Para instalar la nueva imagen en el sistema <application>NanoBSD</application> actual, es posible usar los scripts <filename>updatep1</filename> o <filename>updatep2</filename> que se encuentran en el directorio <filename>/root</filename>, dependiendo de la partición desde la que esté ejecutando el sistema actual.</para>
<para>Según que servicios que se encuentren disponibles en el huésped sirviendo la nueva imagen <application>NanoBSD</application> y el tipo de transferencia que se prefiera, es posible utilizar uno de estos tres métodos:</para>
<sect3>
<title>Usando <citerefentry><refentrytitle>ftp</refentrytitle><manvolnum>1</manvolnum></citerefentry></title>
<para>Si la velocidad de transferencia es una prioridad para usted, utilice este ejemplo:</para>
<screen><prompt>#</prompt> <userinput>ftp myhost
get _.disk.image "| sh updatep1"</userinput></screen>
</sect3>
<sect3>
<title>Usando <citerefentry><refentrytitle>ssh</refentrytitle><manvolnum>1</manvolnum></citerefentry></title>
<para>Si prefiere una transferencia segura, considere usar este ejemplo:</para>
<screen><prompt>#</prompt> <userinput>ssh myhost cat _.disk.image.gz | zcat | sh updatep1</userinput></screen>
</sect3>
<sect3>
<title>Usando <citerefentry><refentrytitle>nc</refentrytitle><manvolnum>1</manvolnum></citerefentry></title>
<para>Puede utilizar este ejemplo si el huésped remoto no está ejecutando los servicios <citerefentry><refentrytitle>ftpd</refentrytitle><manvolnum>8</manvolnum></citerefentry> o <citerefentry><refentrytitle>sshd</refentrytitle><manvolnum>8</manvolnum></citerefentry>:</para>
<procedure>
<step>
<para>En primer lugar, abra un puerto TCP en el huésped que se encuentra sirviendo la imagen y haga que envíe la imagen al cliente:</para>
<screen>myhost<prompt>#</prompt> <userinput>nc -l <replaceable>2222</replaceable> &lt; _.disk.image</userinput></screen>
<note>
<para>Asegúrese de que el puerto usado no esté bloqueado para recibir conexiones entrantes del huésped <application>NanoBSD</application> por el firewall.</para>
</note>
</step>
<step>
<para>Conéctese al huésped sirviendo la nueva imagen y ejecute el script <filename>updatep1</filename>:</para>
<screen><prompt>#</prompt> <userinput>nc myhost <replaceable>2222</replaceable> | sh updatep1</userinput></screen>
</step>
</procedure>
</sect3>
</sect2>
</sect1>
<index/>
</article>