diff --git a/es_ES.ISO8859-1/articles/fbsd-from-scratch/Makefile b/es_ES.ISO8859-1/articles/fbsd-from-scratch/Makefile
new file mode 100644
index 0000000000..a7b6990bad
--- /dev/null
+++ b/es_ES.ISO8859-1/articles/fbsd-from-scratch/Makefile
@@ -0,0 +1,27 @@
+#
+# $FreeBSD$
+#
+# Article: FreeBSD From Scratch
+
+DOC?= article
+
+FORMATS?= html
+
+MAINTAINER= schweikh@FreeBSD.org
+
+INSTALL_COMPRESSED?= gz
+INSTALL_ONLY_COMPRESSED?=
+
+# 
+#WITH_ARTICLE_TOC?=YES
+
+# SGML content
+SRCS= article.sgml fase_1.sh fase_2.sh fase_3.mk
+
+DOC_PREFIX?= ${.CURDIR}/../../..
+
+afterinstall:
+	${INSTALL_DOCS} ${.CURDIR}/fase_1.sh ${.CURDIR}/fase_2.sh \
+	    ${.CURDIR}/fase_3.mk ${DESTDIR}
+
+.include "${DOC_PREFIX}/share/mk/doc.project.mk"
diff --git a/es_ES.ISO8859-1/articles/fbsd-from-scratch/article.sgml b/es_ES.ISO8859-1/articles/fbsd-from-scratch/article.sgml
new file mode 100644
index 0000000000..68ee29ec1f
--- /dev/null
+++ b/es_ES.ISO8859-1/articles/fbsd-from-scratch/article.sgml
@@ -0,0 +1,722 @@
+<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [
+<!ENTITY % man PUBLIC "-//FreeBSD//ENTITIES DocBook Manual Page Entities//EN">
+%man;
+<!ENTITY % freebsd PUBLIC "-//FreeBSD//ENTITIES DocBook Miscellaneous FreeBSD Entities//EN">
+%freebsd;
+<!ENTITY scratch.ap "<application>FreeBSD From Scratch</application>">
+]>
+
+<article>
+  <articleinfo>
+    <title>FreeBSD From Scratch</title>
+
+    <author>
+      <firstname>Jens</firstname>
+      <surname>Schweikhardt</surname>
+      <affiliation>
+        <address><email>schweikh@FreeBSD.org</email></address>
+      </affiliation>
+    </author>
+    <copyright>
+      <year>2002</year>
+      <holder>Jens Schweikhardt</holder>
+    </copyright>
+
+    <pubdate>$FreeBSD$</pubdate>
+  </articleinfo>
+
+    <abstract>
+      <para>&scratch.ap; explica la instalaci&oacute;n totalmente automatizada 
+        de un sistema &os; hecho a medida y compilado desde las fuentes, 
+        proceso que incluye adem&aacute;s la compilaci&oacute;n de sus 
+        <quote>ports</quote> favoritos y configurado para coincidir con 
+        su idea del sistema perfecto.  Si cree que 
+        <command>make world</command> es un concepto fascinante 
+        &scratch.ap; lo ampl&iacute;a hasta ser 
+        <command>make evenmore</command>.  N. del T. : Juego de palabras 
+        intraducible basado en el nombre que en &os; se da al proceso de 
+        recompilar todo el sistema desde los fuentes, <command>make world</command>, 
+        que podr&iacute;a traducirse muy libremente como <quote>hacer, o m&aacute;s bien rehacer el 
+        mundo entero</quote> y <command>make evenmore</command>, osea, <quote>hacer m&aacute;s 
+        a&uacute;n</quote>.  </para>
+    </abstract>
+
+  <sect1 id="introduction">
+    <title>Introducci&oacute;n</title>
+
+    <para>&iquest;Ha actualizado alguna vez su sistema mediante 
+      <command>make world</command>?.  Si solamente tiene un sistema 
+      en sus discos se encontrar&aacute; con un problema.  Si 
+      <maketarget>installworld</maketarget> falla a la mitad 
+      su sistema quedar&aacute; da&ntilde;ado e incluso 
+      puede ser incapaz de arrancar de nuevo.  O quiz&aacute;s 
+      <maketarget>installworld</maketarget> se ha ejecutado sin problemas 
+       pero el nuevo kernel no arranca.  Se impone buscar el CD de 
+       Rescate y tratar de encontrar algo &uacute;til en aquellos 
+       <quote>backups</quote> que hizo hace seis meses.</para>
+
+    <para>Creo en el paradigma de <quote>al actualizar sistemas operativos 
+      instala desde cero</quote>.  Haci&eacute;ndolo as&iacute;, esto es, 
+      al borrar sobreescribiendo en los discos o mejor dicho las particiones, 
+      nos aseguraremos de no dejar datos antiguos en ellos, un aspecto  
+      &eacute;ste del que la mayor&iacute;a de los procesos de 
+      actualizaci&oacute;n no se preocupan en absoluto.  
+      Por otra parte borrar las particiones significa 
+      que tendr&aacute; que recompilar/reinstalar todos sus 
+      <quote>ports</quote> y <quote>packages</quote> y despu&eacute;s de eso 
+      rehacer todas y cada una de las configuraciones que con muchos esfuerzos 
+      atesoraba.  Si usted tambi&eacute;n piensa que &eacute;sta tarea 
+      deber&iacute;a automatizarse siga leyendo.</para>
+  </sect1>
+
+  <sect1 id="why">
+    <title>&iquest;Por qu&eacute; (no) deber&iacute;a interesarme 
+      &scratch.ap;?</title>
+
+    <para>Esa es una pregunta muy razonable.  Tenemos 
+      <application>sysinstall</application>, una compilaci&oacute;n 
+      del kernel que funciona sin sorpresas y tenemos tambi&eacute;n 
+      las herramientas de entorno de usuario.</para> 
+
+    <para>El problema que tiene <application>sysinstall</application> 
+      es que est&aacute; extremadamente limitado cuando se trata de 
+      qu&eacute;, d&oacute;nde y c&oacute;mo queremos que haga la 
+      instalaci&oacute;n.</para>
+
+    <itemizedlist>
+      <listitem>
+        <para>Normalmente se usa para instalar distribuciones precompiladas 
+          y <quote>packages</quote> desde diversas fuentes (CD, DVD, 
+          FTP).  No puede instalar el resultado de 
+          <literal>make buildworld</literal>.</para>
+      </listitem>
+
+      <listitem>
+        <para>No puede instalar un segundo sistema en un directorio 
+          de un sistema en funcionamiento.</para>
+      </listitem>
+
+      <listitem>
+        <para>No puede hacer una instalaci&oacute;n en particiones 
+          <application>Vinum</application>.</para>
+      </listitem>
+
+      <listitem>
+        <para>No puede compilar <quote>ports</quote>, s&oacute;lo 
+          instala <quote>packages</quote> precompilados.</para>
+      </listitem>
+
+      <listitem>
+        <para>Es dif&iacute;cil automatizar mediante 
+          <quote>scripts</quote> o incluso hacer de forma manual 
+          los cambios que considere 
+          necesarios despu&eacute;s de la instalaci&oacute;n</para> 
+      </listitem>
+
+      <listitem>
+        <para>Por si todo esto fuera poco 
+          <application>sysinstall</application>
+          est&aacute; semioficialmente al final de su 
+          <quote>Ciclo de Vida &Uacute;til</quote>.</para>
+      </listitem>
+    </itemizedlist>
+
+    <para>El archiconocido proceso de <quote>constru&iacute;r/instalar 
+      el mundo</quote> (<quote>build/install world</quote>), explicado en 
+      <ulink url="http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html">el 
+      Handbook</ulink>, por defecto realiza la tarea de sustitu&iacute;r el 
+      sistema existente.  S&oacute;lo respeta el kernel y los 
+      m&oacute;dulos.  Los binarios del sistema, los ficheros de 
+      cabecera y muchos otros ficheros son sobreescritos;  hay ficheros 
+      obsoletos que se quedan donde estaban y pueden causar 
+      sorpresas.  Si el proceso de actualizaci&oacute;n falla por alguna 
+      raz&oacute;n puede ser dif&iacute;cil o incluso imposible volver a 
+      dejar el sistema en el estado inicial.</para> 
+
+    <para>&scratch.ap; resuelve todos esos problemas.  La estrategia es 
+      simple:  utiliza un sistema en funcionamiento para instalar un nuevo 
+      sistema en un &aacute;rbol de directorios y montar nuevas particiones 
+      limpiamente en ese &aacute;rbol.  Muchos ficheros de 
+      configuraci&oacute;n pueden copiarse al sitio que les corresponda y 
+      &man.mergemaster.8; se encargar&aacute; de aquellos a los que 
+      no.  Pueden hacerse cambios discrecionales tras la 
+      instalaci&oacute;n del nuevo sistema desde el viejo, 
+      como si  el nuevo sistema estuviera dentro de un 
+      <quote>chroot</quote>.  El proceso tiene tres fases, 
+      cada una de los cuales consiste en ejecutar un 
+      <quote>script de shell</quote> o invocar 
+      <command>make</command>:</para>
+
+    <orderedlist>
+      <listitem>
+        <para><filename>fase_1.sh</filename>:
+          Crea un sistema nuevo y capaz de arrancar en un directorio 
+          vac&iacute;o y combina o copia tantos ficheros como sea 
+          necesario. Una vez acabado esto arranca el nuevo sistema.</para>
+      </listitem>
+
+      <listitem>
+        <para><filename>fase_2.sh</filename>:
+          Instala los <quote>ports</quote> que hayamos elegido.</para>
+      </listitem>
+
+      <listitem>
+        <para><filename>fase_3.mk</filename>:
+          Remata la configuraci&oacute;n del software instalado en la 
+          fase anterior.</para>
+      </listitem>
+    </orderedlist>
+
+    <para>Una vez que ha usado &scratch.ap; para constru&iacute;r un 
+      segundo sistema y ha comprobado que funciona satisfactoriamente 
+      durante unas cuantas semanas puede usarlo de nuevo para reinstalar 
+      el sistema original.  Desde ese momento cada vez que crea que 
+      debe actualizar un sistema simplemente elija las particiones que 
+      hay que borrar y reinstalar.</para> 
+
+    <para>Puede que haya o&iacute;do hablar o incluso haya usado ya 
+     <ulink
+        url="http://www.linuxfromscratch.org/">Linux From Scratch</ulink>,
+      LFS para ser m&aacute;s breve.  LFS abarca tambi&eacute;n c&oacute;mo 
+      constru&iacute;r e instalar un sistema desde cero en particiones 
+      vac&iacute;as  partiendo de un sistema en funcionamiento.  El 
+      objetivo de LFS parece ser mostrar la raz&oacute;n de ser y de estar 
+      de todas y cada una de las partes del sistema (como el kernel, 
+      el compilador, los dispositivos, la shell, la base de datos de 
+      terminales, etc.) y los detalles de la instalaci&oacute;n de cada 
+      parte.  &scratch.ap; no entra en detalles tan exahustivos.  Mi 
+      intenci&oacute;n es facilitar una instalaci&oacute;n automatizada y 
+      completa, no explicar cada detalle escabroso del cicl&oacute;peo 
+      proceso que arrancamos cuando hacemos un 
+      <command>make world</command>.  Si desea usted explorar &os; de 
+      modo tan profundo comience por leer  
+      <filename>/usr/src/Makefile</filename> y siga cuidadosamente lo 
+      que sucede al teclear  
+      <command>make buildworld</command>.</para>
+
+    <para>Hay tambi&eacute;n algunos detalles delicados con los que 
+      me encontr&eacute; durante el desarrollo de &scratch.ap; que 
+      deber&iacute;a tener muy en cuenta.</para>
+
+      <!-- XXX: Ser�a una buena idea escribir el fase_2.sh usando un 
+           "jail" situada en el sistema nuevo instalado en la primera 
+           fase.  Si disponemos de una direcci�n de red bien configurada 
+           como IP primaria de esa "jail" podr�a ser posible incluso 
+           compilar "ports" en un "chroot" sin desinstalar nada del 
+           sistema anfitri�n.  No obstante tenga en cuenta que incluso 
+           las "jail" est�n ejecutando el kernel anfitri�n.--> 
+
+    <itemizedlist>
+      <listitem>
+        <para>El sistema no puede ser usado normalmente 
+          durante la compilaci&oacute;n de los <quote>ports</quote> 
+          que tiene lugar en la segunda fase.  Si va a ejecutar 
+          el proceso en un servidor en producci&oacute;n tenga en cuenta 
+          el tiempo de parada provocado por la fase dos.  Los 
+          <quote>ports</quote> compilados por 
+          <filename>fase_2.sh</filename> necesitan aproximadamente 4 horas 
+          para acabar en un sistema SCSI AMD1800+ con discos de 10.000 rpm 
+          y 1GB de RAM.</para> 
+      </listitem>
+    </itemizedlist>
+
+  </sect1>
+
+  <sect1 id="prerequisites">
+    <title>Requisitos previos</title>
+
+    <para>Para poder usar &scratch.ap; 
+      necesitar&aacute; lo siguiente:</para>
+
+    <itemizedlist>
+      <listitem>
+        <para>Un sistema &os; con el &aacute;rbol de <quote>ports</quote> y 
+          los fuentes instalados.</para>
+      </listitem>
+
+      <listitem>
+        <para>Al menos una partici&oacute;n vac&iacute;a donde instalaremos 
+          el nuevo sistema.</para> 
+      </listitem>
+
+      <listitem>
+        <para>Experiencia en el uso de &man.mergemaster.8; o al menos no 
+          tener miedo de usarlo.</para>
+      </listitem>
+
+      <listitem>
+        <para>Si su acceso a Internet es lento o si no dispone del mismo 
+          necesitar&aacute; los <quote>distfiles</quote> de los ports que 
+          vaya a instalar.</para>
+      </listitem>
+
+      <listitem>
+        <para>Conocimientos b&aacute;sicos de confecci&oacute;n de 
+          <quote>scripts</quote> de shell con la shell Bourne, 
+          &man.sh.1;</para>
+      </listitem>
+
+      <listitem>
+        <para>Finalmente, deber&iacute;a ser capaz de decirle a su 
+          <quote>boot loader</quote> (cargador de arranque) c&oacute;mo arrancar el nuevo 
+          sistema, en modo interactivo o mediante un fichero de 
+          configuraci&oacute;n.</para>
+      </listitem>
+    </itemizedlist>
+
+  </sect1>
+
+  <sect1 id="stage1">
+    <title>Primera Fase: Instalaci&oacute;n del Sistema</title>
+
+    <para>Lo que vamos a explicar m&aacute;s adelante es mi 
+      <filename>fase_1.sh</filename>.  Tendr&aacute; que modificarlo 
+      en varios sitios para que cuadre con su propia idea del 
+      <quote>sistema perfecto</quote>.  He intentado inclu&iacute;r 
+      todos los comentarios posibles en los sitios donde deber&iacute;a 
+      usted introducir sus cambios.  Los puntos a estudiar son:</para>
+
+    <itemizedlist>
+      <listitem>
+        <para>Esquema de particiones.</para>
+
+        <para>No estoy de acuerdo con la idea de una sola 
+          partici&oacute;n inmensa en la que instalar todo el 
+          sistema.  Mis sistemas tienen generalmente al menos 
+          una partici&oacute;n para 
+          <filename>/</filename>, 
+          <filename>/usr</filename> y 
+          <filename>/var</filename> con 
+          <filename>/tmp</filename> enlazado simb&oacute;licamente a 
+          <filename>/var/tmp</filename>.
+          Adem&aacute;s comparto los sistemas de ficheros en los que 
+          ubico
+          <filename>/home</filename> (los directorios de los usuarios),
+          <filename>/home/ncvs</filename> (r&eacute;plica del repositorio 
+          de &os;, 
+          <filename>/usr/ports</filename> (el &aacute;rbol de ports),
+          <filename>/src</filename> (diversos &aacute;rboles de fuentes de 
+          procedencias varias) y 
+          <filename>/share</filename> (otros datos compartidos que no 
+           necesitan ser guardados, por ejemplo mensajes de 
+           <quote>news</quote>.</para>
+      </listitem>
+
+      <listitem>
+        <para><quote>Lujos</quote>.</para>
+
+        <para>Me refiero a lo que usaremos inmediatamente tras el arranque 
+          del nuevo sistema e incluso antes de la segunda fase.  En mi caso 
+          se trata de <filename 
+          role="package">shells/zsh</filename> puesto 
+          que es la shell que aparece en mi cuenta de usuario en <filename>
+          /etc/passwd</filename>.  De todos modos la tarea puede culminarse 
+          sin esos <quote>lujos</quote> (de ah&iacute; su nombre), todo lo 
+          que necesita es entrar en el sistema como root y pasar a la 
+          siguiente fase.</para>
+          
+        <para>&iquest;Por qu&eacute; no instalar entonces todos mis ports 
+          en la primera fase?:  en teor&iacute;a y en la pr&aacute;ctica 
+          nos encontraremos con problemas de arranque y de consistencia: 
+          durante la primera fase tendr&aacute; funcionando su viejo kernel 
+          mientras el entorno <quote>chroot</quote> dispone de sus propios 
+          binarios y ficheros de cabecera todos nuevos.  Si por ejemplo el 
+          sistema nuevo integra una nueva llamada al sistema (conforme a sus 
+          cabeceras) algunos <quote>scripts</quote> de configuraci&oacute;n 
+          podr&iacute;an intentar usarla y en concuencia ver <quote>
+          muertos</quote> sus procesos al tratar de ejecutarse en el viejo 
+          kernel.  He tenido problemas de otro tipo al intentar 
+          constru&iacute;r <filename 
+          role="package">lang/perl5</filename>.</para>
+      </listitem>
+    </itemizedlist>
+
+    <para>Antes de ejecutar <filename>fase_1.sh</filename> aseg&uacute;rese 
+      de haber cumplido con las tareas previas a un 
+      <command>make installworld installkernel</command>, es decir:</para>
+
+    <itemizedlist>
+      <listitem>
+        <para>haber adaptado el fichero de configuraci&oacute;n de su 
+            kernel</para>
+      </listitem>
+
+      <listitem>
+        <para>haber completado sin errores <command>
+            make buildworld</command></para>
+      </listitem>
+
+      <listitem>
+        <para>haber completado sin errores<command>
+            KERNCONF=<replaceable>
+            nombre_de_su_kernel</replaceable></command></para>
+      </listitem>
+    </itemizedlist>
+
+
+    <para>Cuando ejecute <filename>fase_1.sh</filename> por primera vez 
+      y copie sus ficheros de configuraci&oacute;n de su sistema en
+      funcionamiento a su nuevo sistema no est&aacute;n al d&iacute;a 
+      con respecto a lo que hay bajo 
+      <filename>/usr/src</filename>, as&iacute; que <command>
+      mergemaster</command> le preguntar&aacute; por lo que quiere 
+      hacer.  Le recomiendo combinar los cambios. (Nota del traductor: 
+      merge (to): unir, fusionar, mezclar).  Si se cansa de pelear con 
+      los di&aacute;logos de <command>mergemaster</command> puede 
+      simplemente actualizar sus ficheros una vez en el sistema <emphasis>
+      original</emphasis> (pero s&oacute;lo si existe esa opci&oacute;: 
+      por ejemplo, si uno de sus sistemas usa <literal>-STABLE</literal> y 
+      el otro <literal>-CURRENT</literal> los cambios tienen bastantes 
+      probabilidades de ser incompatibles).  En posteriores usos 
+      de <command>mergemaster</command> detectar&aacute; que los ID de 
+      las versiones RCS de esos ficheros coinciden con los que est&aacute;n 
+      bajo <filename>/usr/src</filename> y no les prestar&aacute; m&aacute;s 
+      atenci&oacute;n.</para>
+
+    <para>El <quote>script</quote> <filename>fase_1.sh</filename> 
+      detendr&aacute; su ejecuci&oacute;n si falla alguno de los 
+      comandos que contiene (si alguno da una salida distinta de 
+      cero) por inclu&iacute;r <command>set -e</command>, as&iacute; 
+      que es imposible que pase por alto alg&uacute;n error.  Antes 
+      de seguir adelante deber&iacute;a asegurarse de que no hay errores 
+      en su versi&oacute;n de 
+      <filename>fase_1.sh</filename>.</para>
+
+    <para>En <filename>fase_1.sh</filename> invocamos 
+      <command>mergemaster</command>.  Tanto si alguno de los ficheros 
+      requiere ser combinado como si no, <command>mergemaster</command> 
+      emitir&aacute; el siguiente mensaje</para> 
+
+    <screen>*** Comparison complete
+
+Do you wish to delete what is left of /var/tmp/temproot.fase1? [no] <userinput>no</userinput></screen>
+
+    <para>es decir</para>
+
+    <screen>*** Comparaci&oacute;n completada
+
+&iquest;Quiere borrar el contenido de /var/tmp/temproot.fase1? [no] <userinput>no</userinput></screen>
+
+    <para>Por favor, responda <literal>no</literal> o simplemente pulse 
+      <keycap>Enter</keycap>.  Eso es debido a que <command>
+      mergemaster</command> habr&aacute; dejado unos cuantos ficheros 
+      de longitud igual a cero en <filename>
+      /var/tmp/temproot.fase1</filename> y los copiar&aacute; al nuevo 
+      sistema (a menos que ya est&eacute;n ah&iacute;).</para>
+
+    <para>Despu&eacute;s mostrar&aacute; los ficheros que ha instalado
+      mediante &man.more.1; o si lo prefiere mediante &man.less.1;):</para>
+
+<screen>*** You chose the automatic install option for files that did not
+    exist on your system.  The following were installed for you:
+      /rootnuevo/etc/defaults/rc.conf
+      ...
+      /rootnuevo/COPYRIGHT
+
+(END)</screen>
+
+    <para>es decir</para>
+
+ <screen>*** Ha elegido la opci&oacute;n de instalar autom&aacute;ticamente 
+     los ficheros que no existen en su sistema. Han sido instalados los 
+     siguientes:
+       /rootnuevo/etc/defaults/rc.conf
+       ...
+       /rootnuevo/COPYRIGHT
+
+       </screen>
+
+    <para>Tecl&eacute;e <keycap>q</keycap> para salir del 
+      paginador.  Ahora se le informar&aacute; sobre <filename>
+      login.conf</filename>:</para>
+
+    <screen>*** You installed a login.conf file, so make sure that you run
+    '/usr/bin/cap_mkdb /newroot/etc/login.conf'
+    to rebuild your login.conf database
+
+    Would you like to run it now? y or n [n]</screen>
+
+    <para>es decir</para>
+
+    <screen>*** Ha instalado un fichero login.conf as&iacute; que 
+    aseg&uacute;rese de ejecutar '/usr/bin/cap_mkdb /rootnuevo/etc/login.conf' 
+    para reconstru&iacute;r la base de datos de login.conf
+
+   &iquest;Quiere ejecutarlo ahora mismo? (s)i o (n)o [n]</screen>
+
+    <para>La respuesta no tiene importancia puesto que ejecutaremos 
+      &man.cap.mkdb.1; en todos los casos.</para> 
+
+    <para>Todo lo que hace <filename>fase_1.sh</filename> queda registrado 
+      en un fichero <quote>log</quote> para que pueda examinarse con 
+      detalle si es preciso.</para>
+
+    <para>&Eacute;ste es el <filename>fase_1.sh</filename> del autor, 
+      as&iacute; que tendr&aacute; que modificarlo a conciencia, 
+      en especial los pasos 1, 2, 5 y 6.</para>
+
+    <warning>
+      <para>Por favor, ponga una atenci&oacute;n esmerada a las 
+        entradas en las que aparece &man.newfs.8;.  Si bien 
+        es cierto que es imposible crear nuevos sistemas de archivos en 
+        particiones montadas nuestro <quote>script</quote> no tendr&aacute; 
+        ning&uacute;n inconveniente en borrar cualquier partici&oacute;n 
+        que no est&eacute; montada y con los nombres que aparezcan en 
+        &eacute;l, en nuestro caso 
+        <filename>/dev/da3s1a</filename>, <filename>/dev/vinum/var_a</filename>
+        y <filename>/dev/vinum/usr_a</filename>.  Puede provocar un desastre, 
+        as&iacute; que aseg&uacute;rese de cambiar los nombres de los 
+        dispositivos como corresponda.</para>
+    </warning>
+
+<programlisting><inlinegraphic fileref="fase_1.sh" format="linespecific"></programlisting>
+
+    <para>Descargue <ulink
+        url="fase_1.sh"><filename>fase_1.sh</filename></ulink>.</para>
+
+    <para>La ejecuci&oacute;n de &eacute;ste <quote>script</quote> instala 
+      un sistema equipado con lo siguiente:</para>
+    <itemizedlist>
+      <listitem>
+        <para>Usuarios y grupos heredados del anterior sistema.</para>
+      </listitem>
+      <listitem>
+        <para>Acceso a Internet mediante Ethernet y PPP protegido por 
+          un cortafuegos.</para>
+      </listitem>
+      <listitem>
+        <para>NTP y zona horaria correctas.</para>
+      </listitem>
+      <listitem>
+        <para>Algunos ficheros secundarios como 
+        <filename>/etc/ttys</filename> e
+        <command>inetd</command>.</para>
+      </listitem>
+    </itemizedlist>
+
+    <para>Hay otras &aacute;reas listas para ser configuradas pero 
+      no las tocaremos hasta conclu&iacute;r la segunda fase.  Por ejemplo, 
+      hemos copiado unos cuantos ficheros para configurar la impresi&oacute;n 
+      y X11.  Sin embargo la impresi&oacute;n suele necesitar de aplicaciones 
+      que no se encuentran en el sistema base, por ejemplo PostScript.  X11
+      no funcionar&aacute; hasta que no compilemos el servidor, las 
+      bibliotecas y los programas.</para>
+  </sect1>
+
+  <sect1 id="stage2">
+    <title>Segunda Fase: Instalaci&oacute;n de <quote>
+      ports</quote></title>
+
+    <note>
+      <para>En &eacute;sta fase es posible instalar <quote>packages</quote>
+        (que vienen precompilados) en lugar de compilar <quote>
+        ports</quote>.  Para poder hacerlo convertiremos <filename>
+        fase_2.sh</filename> en poco m&aacute;s que una lista de 
+        comandos <command>pkg_add</command>.  Conf&iacute;o en que 
+        ser&aacute; usted capaz de escribir un <quote>script</quote> 
+        como ese.  Ahora nos concentraremos en el sistema tradicional 
+        y mucho m&aacute;s flexible de funcionamiento de los 
+        <quote>ports</quote>.</para>
+    </note>
+
+    <para>El siguiente <quote>script</quote> <filename>
+      fase_2.sh</filename> es el que yo uso para instalar mis <quote>
+      ports</quote> favoritos.  Puede ejecutarse tantas veces como sea 
+      preciso y no prestar&aacute; atenci&oacute;n a los <quote>
+      ports</quote> que ya est&eacute;n instalados.  Incluye tambi&eacute;n 
+      soporte para la 
+      opci&oacute;n <option>-n</option> que hace un <emphasis>ensayo 
+      general con todo</emphasis>, es decir, muestra lo que hubiera sucedido 
+      si se hubiera ejecutado.  Seguro que tiene que editar la lista de 
+      <quote>ports</quote> y probablemente tenga que cambiar unas cuantas 
+      variables de entorno.</para>
+
+    <para>La lista de <quote>ports</quote> consiste en l&iacute;neas 
+      de dos o m&aacute;s palabras separadas por espacios: la categor&iacute;a 
+      y el <quote>port</quote>. Es opcional situar detr&aacute;s 
+      un comando de instalaci&oacute;n que compilar&aacute; e instalar&aacute; 
+      el <quote>port</quote> (por defecto <command>make install</command>).  
+      Se ignoran las l&iacute;neas vac&iacute;s y las que comienzan 
+      por #.  La mayor&iacute;a de las veces es suficiente inclu&iacute;r el 
+      nombre del <quote>port</quote> y la categor&iacute;a a que pertenece pero 
+      existen unos pocos <quote>ports</quote> en cuya compilaci&oacute;n 
+      podemos afinar mucho asignando valores a variables de <command>
+      make</command>; veamos un ejemplo:</para> 
+
+    <programlisting>www mozilla make WITHOUT_MAILNEWS=yes WITHOUT_CHATZILLA=yes install
+mail procmail make BATCH=yes install</programlisting>
+
+    <para>De hecho puede usted usar comandos de <quote>shell</quote> a 
+      su criterio, as&iacute; que no tiene que limitarse a simples 
+      invocaciones de <command>make</command>:</para>
+
+    <programlisting>java linux-sun-jdk13 yes | make install
+news inn-stable CONFIGURE_ARGS="--enable-uucp-rnews --enable-setgid-inews" make install</programlisting>
+
+    <para>Observe que la l&iacute;nea de <filename
+        role="package">news/inn-stable</filename> es un ejemplo de una 
+      asignaci&oacute;n de entrada a la variable del int&eacute;rprete de 
+      mandatos <literal>CONFIGURE_ARGS</literal>.  El fichero <filename>Makefile</filename> 
+      del <quote>port</quote> la usar&aacute; como valor inicial y la 
+      completar&aacute; con otros argumentos esenciales.  La diferencia respecto a 
+      a especificar la variable para <filename>make</filename> en la l&iacute;nea de 
+      comandos mediante </para>
+
+    <programlisting>news inn-stable make CONFIGURE_ARGS="--enable-uucp-rnews --enable-setgid-inews" install</programlisting>
+
+    <para>est&aacute; en que esto &uacute;ltimo sustituye directamente el valor 
+      en lugar de completarlo.  El m&eacute;todo m&aacute;s adecuado depende de cada 
+      <quote>port</quote> en particular.</para> 
+
+    <para>Compruebe cuidadosamente que ninguno de sus <quote>ports</quote> 
+      tenga una instalaci&oacute;n interactiva, es decir, que ninguno 
+      deber&iacute; intentar recibir de stdin nada que no le d&eacute; 
+      usted en stdin.  Si alguno lo hace leer&aacute; la siguiente o 
+      siguientes l&iacute;neas de &eacute;ste documento y no entender&aacute; 
+      nada de nada.  Si <filename>fase_2.sh</filename> pasa por alto 
+      un <quote>port</quote> o cesa su ejecuci&oacute;n sin raz&oacute;n 
+      aparente es muy posible que esa sea la raz&oacute;n.</para>
+
+    <para>He aqu&iacute; <filename>fase_2.sh</filename>.  Crea un fichero 
+      <quote>log</quote> por cada port que instala y les da nombres 
+      seg&uacute;n el esquema <filename>
+      DIRECTORIO_LOG/categor&iacute;a+port</filename>.  Si no tiene una 
+      copia de su <filename>fase_2.sh</filename> en una partici&oacute;n 
+      compartida no olvide copiarlo al sistema nuevo antes de 
+      arrancarlo.</para>
+
+<programlisting><inlinegraphic fileref="fase_2.sh" format="linespecific"></programlisting>
+
+    <para>Descargue <ulink
+        url="fase_2.sh"><filename>fase_2.sh</filename></ulink>.</para>
+  </sect1>
+
+  <sect1 id="stage3">
+    <title>Tercera Fase</title>
+
+    <para>Ya hemos conclu&iacute;do la segunda fase y ya est&aacute;n 
+      instalados sus querid&iacute;simos <quote>ports</quote>, pero 
+      algunos de ellos requieren un poco de configuraci&oacute;n.  En 
+      eso consistir&aacute; la tercera fase, a&ntilde;adir los 
+      detalles espec&iacute;ficos de las configuraciones.  Podr&iacute;a  
+      haberlos integrado en el <quote>script</quote> <filename>
+      fase_2.sh</filename> pero creo que hay una diferencia conceptual 
+      entre instalar un <quote>port</quote> y en modificar la 
+      configuraci&oacute;n con la que viene por defecto para adaptarla 
+      a nuestros gustos o necesidades y creo por lo tanto que esa 
+      diferencia justifica una separaci&oacute;n en una fase 
+      propia.</para>
+
+    <para>He cre&iacute;do m&aacute;s conveniente implementar la 
+      tercera fase como un <filename>Makefile</filename> porque 
+      admiten la selecci&oacute;n de lo que quiera configurar 
+      tecleando simplemente:
+
+    <informalexample>
+      <screen>&prompt.root; <userinput>make -f fase_3.mk <replaceable>
+          nombre_del_port</replaceable></userinput></screen>
+    </informalexample>
+
+    <para>Al igual que con <filename>fase_2.sh</filename> aseg&uacute;rese 
+      de que dispone de una copia de su <filename>fase_3.mk</filename> una 
+      vez que arranca el sistema nuevo, bien situ&aacute;ndolo en una 
+      partici&oacute;n compartida bien copi&aacute;ndolo en alg&uacute;n 
+      lugar dentro del nuevo sistema.</para> 
+
+<programlisting><inlinegraphic fileref="fase_3.mk" format="linespecific"></programlisting>
+
+    <para>Descargue <ulink
+        url="fase_3.mk"><filename>fase_3.mk</filename></ulink>.</para>
+  </sect1>
+
+  <sect1 id="limitations">
+    <title>Restricciones</title>
+
+    <para>La instalaci&oacute;n automatizada de un <quote>port</quote> 
+      puede resultar dif&iacute;cil si es interactiva y no soporta 
+      <command>make BATCH=YES install</command>.  En algunos casos 
+      la interacci&oacute;n se reduce a teclear <literal>yes</literal> 
+      cuando se le pregunta si acepta alguna licencia.  Si esa entrada de 
+      datos ha de llegar por la entrada est&aacute;ndar simplemente 
+      redirigiremos las respuestas pertinentes a la orden de 
+      instalaci&oacute;n (que suele ser <command>make install</command>; 
+      ese es el modo en el que hemos procedido con <filename
+        role="package">java/linux-sun-jdk13</filename> en 
+      <filename>fase_2.sh</filename>).</para>
+
+    <para>No obstante &eacute;sta estrategia no funciona con <filename
+        role="package">editors/staroffice52</filename>, que exige que X11 
+      est&eacute; funcionando.  El proceso de instalaci&oacute;n comprende 
+      un buen n&uacute;mero de pulsaciones de rat&oacute;n y de tecleo, 
+      con lo que es imposible automatizarlo tal y como se hace con otros 
+      <quote>ports</quote>.  Sin embargo el siguiente atajo workaround 
+      nos soluciona el problema: previamente he creado un <filename>
+      staroffice</filename> en el sistema original con</para>
+
+    <informalexample>
+      <screen>&prompt.root; <userinput>cd /usr/ports/editors/staroffice52</userinput>
+&prompt.root; <userinput>make package</userinput>
+===>  Building package for staroffice-5.2_1
+Creating package /usr/ports/editors/staroffice52/staroffice-5.2_1.tbz
+Registering depends:.
+Creating bzip'd tar ball in '/usr/ports/editors/staroffice52/staroffice-5.2_1.tbz'</screen>
+    </informalexample>
+
+    <para>y durante la segunda fase usamos:</para>
+
+    <informalexample>
+      <screen>&prompt.root; <userinput>pkg_add /usr/ports/editors/staroffice52/staroffice-5.2_1.tbz</userinput></screen>
+    </informalexample>
+
+    <para>Debe usted tambi&eacute;n tener muy en cuenta posibles 
+      problemas con los ficheros de configuraci&oacute;n a la hora de 
+      actualizar. En general no sabemos cu&aacute;ndo van a hacerse cambios 
+      en el formato o el contenido de un fichero de configuraci&oacute;n. 
+      Es posible que haya que a&ntilde;adir un nuevo grupo a <filename>
+      /etc/group</filename>, o quiz&aacute;s <filename>/etc/passwd</filename> 
+      necesite un nuevo campo en sus entradas.  &Eacute;stas cosas han 
+      sucedido en alguna ocasi&oacute;n anteriormente.  Si simplemente 
+      copiamos un fichero de configuraci&oacute;n del sistema viejo al nuevo 
+      ser&aacute; suficiente la mayor&iacute;a de la veces pero ya hemos 
+      visto dos casos en los que no lo era.  Si actualiza su sistema siguiendo 
+      el sistema ortodoxo (sobreescribiendo los ficheros ant&iacute;guos) 
+      tendr&aacute; que usar <command>mergemaster</command> para proceder 
+      con los cambios que quiera inclu&iacute;r en 
+      la configuraci&oacute;n de su nuevo sistema, teniendo en cuenta que 
+      entre esos cambios hay  o puede haber nuevos ficheros.  Por desgracia 
+      <command>mergemaster</command> s&oacute;lo es &uacute;til con ficheros 
+      del sistema base y no para aquellos relacionados con los <quote>
+      ports</quote>.  Adem&aacute;s, ciertas aplicaciones parecen 
+      especialmente dise&ntilde;adas para sacarme de mis casillas por el 
+      procedimiento de cambiar el fichero de configuraci&oacute;n cada quince 
+      d&iacute;as.  Lo &uacute;nico que puede hacerse es estar alerta, 
+      sobre todo cuando cambia el n&uacute;mero de versi&oacute;n.  
+      En ocasiones anteriores he tenido que modificar o reescribir 
+      ficheros para servidores web, servidores y clientes de <quote>news</quote>.  
+      Cualquier tipo de software cuyo mantenimiento sea muy activo es un firme 
+      candidato a que sus ficheros de configuraci&oacute;n merezcan nuestro 
+      examen.</para>
+
+    <para>He usado &scratch.ap; varias veces para actualizar un sistema 
+      <literal>5-CURRENT</literal> a <literal>5-CURRENT</literal>, esto es, 
+      nunca he intentado instalar <literal>5-CURRENT</literal> desde un 
+      sistema <literal>4-STABLE</literal> o viceversa, pero dada la 
+      cantidad de cambios existentes entre las diferentes <quote>
+      RELEASE</quote> no ser&iacute;a insensato esperar que esa tarea 
+      sea un tanto compleja.  Usar &scratch.ap; para actualizaciones 
+      dentro del campo de <literal>4-STABLE</literal> deber&iacute;a 
+      ser mucho menos penoso (aunque yo a&uacute;n no lo he 
+      intentado).  Si quiere hacerlo deber&iacute;a tener en cuenta 
+      lo siguiente:</para>
+
+    <itemizedlist>
+      <listitem>
+        <para>Si no usa el sistema de ficheros de dispositivo
+        (<literal>devfs</literal>) puede necesitar crear los 
+        dispositivos necesarios para su hardware con &man.MAKEDEV.8; 
+        en la primera fase, sexto paso.</para>
+      </listitem>
+    </itemizedlist>
+
+  </sect1>
+</article>
diff --git a/es_ES.ISO8859-1/articles/fbsd-from-scratch/fase_1.sh b/es_ES.ISO8859-1/articles/fbsd-from-scratch/fase_1.sh
new file mode 100644
index 0000000000..22d76fc8d0
--- /dev/null
+++ b/es_ES.ISO8859-1/articles/fbsd-from-scratch/fase_1.sh
@@ -0,0 +1,243 @@
+#!/bin/sh
+#
+# fase_1.sh - FreeBSD From Scratch, Primera Fase: Instalaci�n del Sistema.
+#              Uso: ./fase_1.sh
+#
+# $FreeBSD$
+
+set -x -e
+PATH=/bin:/usr/bin:/sbin:/usr/sbin
+
+# Requisitos:
+#
+# a) Haber completado sin errores "make buildworld" y "make buildkernel"
+# b) Particiones sin usar (al menos una para el sistema de ficheros ra�z, 
+#    probablemente m�s para los nuevos /usr y /var, a gusto de cada uno.)
+
+# El punto montaje de la ra�z bajo la que va usted a crear el sistema nuevo.
+# S�lo va a usarse como punto de montaje; que no se usar� espacio en �l 
+# puesto que todos los ficheros ser�n depositados en el o los sistemas 
+# de ficheros que est�n efectivamente montados.
+DESTDIR=/rootnuevo
+SRC=/usr/src         # Aqu� est� su �rbol de fuentes.
+
+# ---------------------------------------------------------------------------- #
+# Primer Paso: Creaci�n de un �rbol de directorios vac�o bajo $DESTDIR. 
+# ---------------------------------------------------------------------------- #
+
+step_one () {
+  # El nuevo ra�z del sistema de ficheros. Obligatorio.
+  # Cambie los nombres de dispositivo (DEV_*) para hacerlos acordes con 
+  # sus necesidades o el "script" le
+  # estallar� en la cara.
+  DEV_ROOT=/dev/da3s1a
+  mkdir -p ${DESTDIR}
+  newfs ${DEV_ROOT}
+  tunefs -n enable ${DEV_ROOT}
+  mount -o noatime ${DEV_ROOT} ${DESTDIR}
+
+  # Sistemas de ficheros extra y sus correspondientes puntos de montaje. 
+  # Opcional.
+  DEV_VAR=/dev/vinum/var_a
+  newfs ${DEV_VAR}
+  tunefs -n enable ${DEV_VAR}
+  mkdir -m 755 ${DESTDIR}/var
+  mount -o noatime ${DEV_VAR} ${DESTDIR}/var
+
+  DEV_USR=/dev/vinum/usr_a
+  newfs ${DEV_USR}
+  tunefs -n enable ${DEV_USR}
+  mkdir -m 755 ${DESTDIR}/usr
+  mount -o noatime ${DEV_USR} ${DESTDIR}/usr
+
+  mkdir -m 755 -p ${DESTDIR}/usr/ports
+  mount /dev/vinum/ports ${DESTDIR}/usr/ports
+
+  # Aqu� crearemos los dem�s directorios. Obligatorio.
+  cd ${SRC}/etc; make distrib-dirs DESTDIR=${DESTDIR}
+  # Personalmente me gusta enlazar tmp a var/tmp. Opcional.
+  cd ${DESTDIR}; rmdir tmp; ln -s var/tmp
+}
+
+# ---------------------------------------------------------------------------- #
+# Segundo Paso: Poblamos el �rbol de directorios /etc que est� vac�o a�n y 
+#               ubicamos unos cuantos ficheros en /.
+# ---------------------------------------------------------------------------- #
+
+step_two () {
+  # A�ada o borre de �sta lista seg�n su criterio. La mayor�a son obligatorios.
+  for f in \
+    /.profile \
+    /etc/group \
+    /etc/hosts \
+    /etc/inetd.conf \
+    /etc/ipfw.conf \
+    /etc/make.conf \
+    /etc/master.passwd \
+    /etc/nsswitch.conf \
+    /etc/ntp.conf \
+    /etc/printcap \
+    /etc/profile \
+    /etc/rc.conf \
+    /etc/resolv.conf \
+    /etc/start_if.xl0 \
+    /etc/ttys \
+    /etc/ppp/* \
+    /etc/mail/aliases \
+    /etc/mail/aliases.db \
+    /etc/mail/hal9000.mc \
+    /etc/mail/service.switch \
+    /etc/ssh/*key* \
+    /etc/ssh/*_config \
+    /etc/X11/XF86Config-4 \
+    /boot/splash.bmp \
+    /boot/loader.conf \
+    /boot/device.hints ; do
+    cp -p ${f} ${DESTDIR}${f}
+  done
+  # Borre el temproot que haya creado mergemasger. Si lo ha creado.
+  TEMPROOT=/var/tmp/temproot.fase1
+  if test -d ${TEMPROOT}; then
+    chflags -R 0 ${TEMPROOT}
+    rm -rf ${TEMPROOT}
+  fi
+  mergemaster -i -m ${SRC}/etc -t ${TEMPROOT} -D ${DESTDIR}
+  cap_mkdb ${DESTDIR}/etc/login.conf
+  pwd_mkdb -d ${DESTDIR}/etc -p ${DESTDIR}/etc/master.passwd
+
+  # Mergemaster no crea ficheros vac�os por ejemplo en /var/log. Lo haremos 
+  # aqu� pero sin sobreescribir (y destru�r) ficheros copiados en el bucle
+  # de m�s arriba.
+  cd ${TEMPROOT}
+  find . -type f | sed 's,^\./,,' |
+  while read f; do
+    if test -r ${DESTDIR}/${f}; then
+      echo "${DESTDIR}/${f} ya existe; no copiado"
+    else
+      echo "Creando ${DESTDIR}/${f} vac�o"
+      cp -p ${f} ${DESTDIR}/${f}
+    fi
+  done
+  chflags -R 0 ${TEMPROOT}
+  rm -rf ${TEMPROOT}
+}
+
+# ---------------------------------------------------------------------------- #
+# Tercer  Paso: Instalando el mundo (install world).
+# ---------------------------------------------------------------------------- #
+
+step_three () {
+  cd ${SRC}
+  make installworld DESTDIR=${DESTDIR}
+}
+
+# ---------------------------------------------------------------------------- #
+# Cuarto Paso: Instalaci�n del kernel y los m�dulos.
+# ---------------------------------------------------------------------------- #
+
+step_four () {
+  cd ${SRC}
+  # loader.conf y device.hints son necesarios para installkernel.
+  # Si en el segundo paso no los ha copiado h�galo tal y como se muestra en 
+  # las dos l�neas siguientes.
+  #   cp sys/boot/forth/loader.conf ${DESTDIR}/boot/defaults
+  #   cp sys/i386/conf/GENERIC.hints ${DESTDIR}/boot/device.hints
+  make installkernel DESTDIR=${DESTDIR} KERNCONF=NOMBRE_DE_SU_KERNEL
+}
+
+# ---------------------------------------------------------------------------- #
+# Quinto Paso: Instalaci�n y modificaci�n de algunos ficheros clave.
+# ---------------------------------------------------------------------------- #
+
+step_five () {
+  # Creamos /etc/fstab; obligatorio. Modif�quelo para que coincida con sus 
+  # dispositivos.
+  cat <<EOF >${DESTDIR}/etc/fstab
+# Device         Mountpoint          FStype    Options              Dump Pass#
+/dev/da3s1b      none                swap      sw                   0    0
+/dev/da4s2b      none                swap      sw                   0    0
+/dev/da3s1a      /                   ufs       rw                   1    1
+/dev/da1s2a      /src                ufs       rw                   0    2
+/dev/da2s2f      /share              ufs       rw                   0    2
+/dev/vinum/var_a /var                ufs       rw                   0    2
+/dev/vinum/usr_a /usr                ufs       rw                   0    2
+/dev/vinum/home  /home               ufs       rw                   0    2
+/dev/vinum/ncvs  /home/ncvs          ufs       rw,noatime           0    2
+/dev/vinum/ports /usr/ports          ufs       rw,noatime           0    2
+#
+/dev/cd0         /dvd                cd9660    ro,noauto            0    0
+/dev/cd1         /cdrom              cd9660    ro,noauto            0    0
+proc             /proc               procfs    rw                   0    0
+EOF
+
+  # M�s directorios; opcional.
+  mkdir -m 755 -p ${DESTDIR}/src;       chown root:wheel ${DESTDIR}/src
+  mkdir -m 755 -p ${DESTDIR}/share;     chown root:wheel ${DESTDIR}/share
+  mkdir -m 755 -p ${DESTDIR}/dvd;       chown root:wheel ${DESTDIR}/dvd
+  mkdir -m 755 -p ${DESTDIR}/home;      chown root:wheel ${DESTDIR}/home
+  mkdir -m 755 -p ${DESTDIR}/usr/ports; chown root:wheel ${DESTDIR}/usr/ports
+  # Configuraci�n de la zona horaria; no es obligatorio pero casi.
+  cp ${DESTDIR}/usr/share/zoneinfo/Antarctica/South_Pole ${DESTDIR}/etc/localtime
+  if test -r /etc/wall_cmos_clock; then
+     cp -p /etc/wall_cmos_clock ${DESTDIR}/etc/wall_cmos_clock
+  fi
+}
+
+# ---------------------------------------------------------------------------- #
+# Sexto Paso: Lo que considero importante tener cuando accedo a un sistema
+# nuevo por primera vez.
+# NOTA: No instale demasiados binarios en �ste paso. Con el sistema viejo 
+# en funcionamiento y los nuevos binarios y ficheros de cabecera instalados 
+# es casi seguro tener problemas de bootstrap. Los "ports" deber�an compilarse 
+# despu�s de haber arrancado el nuevo sistema.
+# ---------------------------------------------------------------------------- #
+
+step_six () {
+  chroot ${DESTDIR} sh -c "cd /usr/ports/shells/zsh; make clean install clean"
+  chroot ${DESTDIR} sh -c "cd /etc/mail; make install"  # configuraci�n 
+                                                        # de sendmail
+
+  # Si no enlazamos simb�licamente compat los ficheros de linux_base 
+  # ir�n a parar al sistema de ficheros ra�z.
+  cd ${DESTDIR}; mkdir -m 755 usr/compat
+  chown root:wheel usr/compat; ln -s usr/compat
+  mkdir -m 755 usr/compat/linux
+  mkdir -m 755 boot/grub
+
+  # Creaci�n de los directorios "spool" para las impresoras que hay en 
+  # mi /etc/printcap
+  cd ${DESTDIR}/var/spool/output/lpd; mkdir -p as od ev te lp da
+  touch ${DESTDIR}/var/log/lpd-errs
+
+  # M�s ficheros que quiero heredar del sistema ant�guo.
+  for f in \
+    /var/cron/tabs/root \
+    /var/mail/* \
+    /boot/grub/*; do
+    cp -p ${f} ${DESTDIR}${f}
+  done
+
+  # Si no tiene /home en una partici�n compartida es un buen momento para 
+  # copiarlo al sitio correcto.
+  # mkdir -p ${DESTDIR}/home
+  # cd /home; tar cf - . | (cd ${DESTDIR}/home; tar xpvf -)
+
+  # Como novedad en FreeBSD 5.x perl est� en /usr/local/bin pero la 
+  # mayor�a de "scripts" esperan encontrarlo en /usr/bin/perl y as� lo 
+  # reflejan en su primera l�nea; use un enlace simb�lico para que funcionen.
+  cd ${DESTDIR}/usr/bin; ln -s ../local/bin/perl
+  cd ${DESTDIR}/usr; rmdir src; ln -s ../src/current src
+}
+
+do_steps () {
+  step_one
+  step_two
+  step_three
+  step_four
+  step_five
+  step_six
+}
+
+do_steps 2>&1 | tee fase_1.log
+
+# EOF $RCSfile: fase_1.sh,v $    vim: tabstop=2:expandtab:
diff --git a/es_ES.ISO8859-1/articles/fbsd-from-scratch/fase_2.sh b/es_ES.ISO8859-1/articles/fbsd-from-scratch/fase_2.sh
new file mode 100644
index 0000000000..411e9272eb
--- /dev/null
+++ b/es_ES.ISO8859-1/articles/fbsd-from-scratch/fase_2.sh
@@ -0,0 +1,148 @@
+#!/bin/sh
+#
+# fase_2.sh - FreeBSD From Scratch, Segunda Fase: Instalaci�n de Ports.
+#              Uso: ./fase_2.sh
+#
+# $FreeBSD$
+
+DBDIR=/var/db/pkg
+PORTS=/usr/ports
+LOGDIR=/home/root/setup/ports.log; mkdir -p ${LOGDIR}
+
+# Creamos unas cuantas variables que usa m�s de un port.
+PAPERSIZE=a4;    export PAPERSIZE
+USA_RESIDENT=NO; export USA_RESIDENT
+
+MYNAME=$(basename $0)
+usage () {
+	exec >&2
+	echo "uso: ${MYNAME} [-hn]"
+	echo ""
+	echo "  Opciones:"
+	echo "  -h    �ste mensaje de ayuda."
+	echo "  -n    muestra qu� pasar�a si se hubiera ejecutado."
+	echo ""
+	exit 1
+}
+
+args=`getopt hn $*`
+if test $? != 0; then
+	usage
+fi
+set -- $args
+DRYRUN=
+for i; do
+	case "$i" in
+	-n) DRYRUN=yes;;
+	--) break;;
+	*) usage;;
+	esac
+done
+
+cat << EOF |
+lang perl5
+security sudo
+x11-servers XFree86-4-Server
+x11 wrapper
+x11 XFree86-4-libraries
+x11 XFree86-4-clients
+x11-fonts XFree86-4-font75dpi
+x11-fonts XFree86-4-font100dpi
+x11-fonts XFree86-4-fontScalable
+x11-fonts urwfonts
+x11-fonts webfonts
+x11-toolkits open-motif
+x11 rxvt
+x11-wm ctwm
+security openssh-askpass
+astro xplanet
+astro setiathome make BATCH=yes install
+astro xephem
+editors vim
+print ghostscript-gnu make A4=yes BATCH=yes install
+print a2ps-a4
+print psutils-a4
+print gv
+print acroread5
+print transfig
+archivers zip
+archivers unzip
+java linux-sun-jdk13 yes | make install
+java jdk13
+www apache2
+www weblint
+www amaya
+www mozilla make WITHOUT_MAILNEWS=yes WITHOUT_CHATZILLA=yes install
+www netscape48-navigator
+www checkbot
+www privoxy
+graphics xfig
+graphics xv
+graphics fxtv
+lang expect
+news tin
+net freebsd-uucp
+net cvsup-without-gui
+net pathchar make NO_CHECKSUM=yes install
+ftp wget
+ftp ncftp3
+textproc ispell
+german ispell-neu
+german ispell-alt
+textproc docproj make JADETEX=yes HAVE_MOTIF=yes install
+sysutils samefile
+sysutils pstree
+sysutils mkisofs
+sysutils cdrtools
+sysutils grub
+devel ddd
+devel ctags
+devel ElectricFence
+mail procmail make BATCH=yes install
+mail metamail
+mail mutt
+mail spamoracle
+emulators mtools
+sysutils portupgrade
+news inn-stable CONFIGURE_ARGS="--enable-uucp-rnews --enable-setgid-inews" make install
+misc figlet-fonts
+textproc gmat
+EOF
+while read CATEGORY NAME CMD; do
+	case "${CATEGORY}" in
+	\#*) continue;;
+	'') continue;;
+	esac
+	DIR="${PORTS}/${CATEGORY}/${NAME}"
+	if ! test -d "${DIR}"; then
+		echo "$DIR no existe -- ignorado"
+		continue
+	fi
+	cd ${DIR}
+	PKGNAME=`make -V PKGNAME`
+	if test -d "${DBDIR}/${PKGNAME}"; then
+		echo "${CATEGORY}/${NAME} ya instalado como ${PKGNAME}"
+		continue
+	fi
+	LOG="${LOGDIR}/${CATEGORY}+${NAME}"
+	echo "==> Instalando ${CATEGORY}/${NAME}; registrando instalaci�n en ${LOG}"
+	test -n "${CMD}" || CMD="make install"
+	if test -n "${DRYRUN}"; then
+		echo "${CMD}"
+		continue
+	fi
+	date "++++++++++ %v %T +++++++++" > ${LOG}
+	echo "CMD: ${CMD}" >> ${LOG}
+	(
+		make clean
+		eval "${CMD}"
+		# make clean # Descom�ntelo si no le sobra espacio bajo ${PORTS}.
+	) 2>&1 | tee -a ${LOG}
+done
+
+# Instalamos StarOffice como "package", previamente creado en el sistema 
+# ant�guo mediante "make package" porque el "port" usa una instalaci�n 
+# interactiva en X11.
+#pkg_add ${PORTS}/editors/staroffice52/staroffice-*.tbz
+
+# EOF $RCSfile: fase_2.sh,v $    vim: tabstop=4:
diff --git a/es_ES.ISO8859-1/articles/fbsd-from-scratch/fase_3.mk b/es_ES.ISO8859-1/articles/fbsd-from-scratch/fase_3.mk
new file mode 100644
index 0000000000..24d48cdf27
--- /dev/null
+++ b/es_ES.ISO8859-1/articles/fbsd-from-scratch/fase_3.mk
@@ -0,0 +1,150 @@
+# fase_3.mk - FreeBSD From Scratch, Tercera Fase: Ajustes Personalizados 
+#                                                 de la Configuraci�n de 
+#                                                 los Ports.
+#              Uso: make -f fase_3.mk all     (configurar todos los ports)
+#                or   make -f fase_3.mk target  (configurar s�lo target)
+#
+# Es una buena idea asegurarse de que ning�n "target" pueda hacerse m�s de 
+# una vez sin efectos no deseados. 
+#
+# $FreeBSD$
+
+.POSIX:
+
+message:
+	@echo "Por favor, use uno de los siguientes \"targets\":"
+	@echo "config_apache"
+	@echo "config_inn"
+	@echo "config_javaplugin"
+	@echo "config_privoxy"
+	@echo "config_setiathome"
+	@echo "config_sgml"
+	@echo "config_sudo"
+	@echo "config_TeX"
+	@echo "config_tin"
+	@echo "config_uucp"
+	@echo "all -- todos los anteriores"
+
+all: config_apache \
+	config_inn \
+	config_javaplugin \
+	config_privoxy \
+	config_setiathome \
+	config_sgml \
+	config_sudo \
+	config_TeX \
+	config_tin \
+	config_uucp
+
+config_apache:
+	# 1. Modificaci�n httpd.conf.
+	perl -pi \
+	-e 's/#ServerName new.host.name/ServerName hal9000.s.shuttle.de/;' \
+	-e 's/^ServerAdmin.*/ServerAdmin schweikh\@schweikhardt.net/;' \
+	-e 's,/usr/local/www/cgi-bin/,/home/opt/www/cgi-bin/,;' \
+	  /usr/local/etc/apache2/httpd.conf
+    # 2. Restitu�r los enlaces simb�licos a los sitios web.
+	cd /usr/local/www/data; \
+	ln -fs /home/schweikh/prj/homepage schweikhardt.net; \
+	ln -fs /home/opt/www/test .
+
+config_inn:
+	pw usermod -n news -d /usr/local/news -s /bin/sh
+    # Facilitar al sistema de news su configuraci�n inicial.
+	cd /home/root/setup; \
+	install -C -o news -g news -m 664 active newsgroups /usr/local/news/db
+    # El innd.sh que viene con el "port" falla: busca 
+    # history.pag, fichero que no existe. 
+	cd /home/root/setup; \
+	install -C -o root -g wheel -m 555 innd.sh /usr/local/etc/rc.d
+    # Configuraci�n del m�todo de almacenamiento.
+	cd /home/root/setup;      \
+	printf "%s\n%s\n%s\n%s\n" \
+		"method tradspool {"  \
+		"  newsgroups: *"     \
+		"  class: 0"          \
+		"}"                   \
+	>storage.conf;            \
+	install -C -o news -g news -m 664 storage.conf /usr/local/news/etc
+    # Configuraci�n de newsfeeds.
+	printf "%s\n%s\n" \
+		"ME:*::"      \
+		"shuttle/news2.shuttle.de:!junk,!control:B32768/512,Tf,Wfb:" \
+	>/usr/local/news/etc/newsfeeds
+    # Configuraci�n de inn.conf
+	perl -pi                                                   \
+	-e 's/^(organization:\s*).*/$$1 An Open Pod Bay Door/;'    \
+	-e 's/^(pathhost:\s*).*/$$1 hal9000.schweikhardt.net/;'    \
+	-e 's/^(server:).*/$$1 localhost/;'                        \
+	-e 's/^(domain:).*/$$1 schweikhardt.net/;'                 \
+	-e 's/^(fromhost:).*/$$1 schweikhardt.net/;'               \
+	-e 's,^(moderatormailer:).*,$$1 \%s\@moderators.isc.org,;' \
+	-e 's,/usr/local/news/spool,/share/news/spool,;'           \
+	/usr/local/news/etc/inn.conf
+
+config_javaplugin:
+	cd /usr/local/lib/netscape-linux/plugins; \
+	if ! test -h javaplugin.so; then \
+		ln -s ../../../linux-sun-jdk1.3.1/jre/plugin/i386/ns4/javaplugin.so; \
+	fi; \
+	ls -l javaplugin.so
+
+config_privoxy:
+	install -C -o root -g wheel -m 644 config /usr/local/etc/privoxy
+
+config_setiathome:
+	perl -pi \
+	-e 's,^.*seti_wrkdir.*#,seti_wrkdir=/home/nobody/setiathome #,;' \
+	/usr/local/etc/rc.setiathome.conf
+
+config_sgml:
+	cp -p /usr/local/share/gmat/sgml/ISO_8879-1986/entities/* \
+	      /usr/local/share/sgml/docbook/4.1
+
+config_sudo:
+	if ! grep -q schweikh /usr/local/etc/sudoers; then \
+		echo 'schweikh ALL = (ALL) NOPASSWD: ALL' >> /usr/local/etc/sudoers; \
+	fi
+
+config_TeX:
+    # En el fichero textproc/docproj se especifica: para generar el FreeBSD 
+    # Handbook con JadeTex cambie los siguientes par�metros a los valores que se 
+    # indican a continuaci�n:
+    #
+	perl -pi                                   \
+	-e 's/^% original texmf.cnf/% texmf.cnf/;' \
+	-e 's/^(hash_extra\s*=).*/$$1 60000/;'     \
+	-e 's/^(pool_size\s*=).*/$$1 1000000/;'    \
+	-e 's/^(max_strings\s*=).*/$$1 70000/;'    \
+	-e 's/^(save_size\s*=).*/$$1 10000/;'      \
+	/usr/local/share/texmf/web2c/texmf.cnf
+
+config_tin:
+    # Dirigimos tin a nuestros archivos.
+	printf "%s\n%s\n%s\n"                              \
+		"activefile=/usr/local/news/db/active"         \
+		"newsgroupsfile=/usr/local/news/db/newsgroups" \
+		"spooldir=/share/news/spool/articles"          \
+	>/usr/local/etc/tin.defaults
+
+config_uucp:
+    # UUCP cuenta con encontrar /usr/bin/rnews.
+	cd /usr/bin; ln -fs ../local/news/bin/rnews .
+    # Configuraci�n de UUCP.
+	echo nodename js2015           > /usr/local/etc/uucp/config
+	echo shuttle js2015 `cat uucp` > /usr/local/etc/uucp/call
+	printf 'port tcp\ntype tcp\n'  > /usr/local/etc/uucp/port
+	printf "%s\n%s\n%s\n%s\n%s\n%s\n%s\n" \
+		"call-login    *"                 \
+		"call-password *"                 \
+		"time          any"               \
+		"system        shuttle"           \
+		"address       mail.s.shuttle.de" \
+		"commands      rmail rnews"       \
+		"port          tcp"               \
+	>/usr/local/etc/uucp/sys
+	cd /usr/local/etc/uucp; chown uucp:uucp *; chmod o-rwx *
+    # Activar uucico tras el arranque del sistema.
+	mkdir -p /usr/local/etc/rc.d; cp uucp.sh /usr/local/etc/rc.d
+
+# EOF $RCSfile: fase_3.mk,v $    vim: tabstop=4: