---
title: Instalación remota del sistema operativo FreeBSD sin una consola remota
authors:
  - author: Daniel Gerzo
    email: danger@FreeBSD.org
copyright: 2008 The FreeBSD Documentation Project
releaseinfo: "$FreeBSD$" 
trademarks: ["freebsd", "general"]
---

= Instalación remota del sistema operativo FreeBSD sin una consola remota
:doctype: article
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:source-highlighter: rouge
:experimental:
:lang: es
:toc-title: Tabla de contenidos
:part-signifier: Parte
:chapter-signifier: Capítulo
:appendix-caption: Apéndice
:table-caption: Tabla
:figure-caption: Figura
:example-caption: Ejemplo

include::shared/es/urls.adoc[]

[.abstract-title]
Resumen

Este artículo documenta la instalación remota del sistema operativo FreeBSD cuando la consola del sistema remoto no está disponible. La idea principal detrás de este artículo es el resultado de la colaboración con Martin Matuska mailto:mm@FreeBSD.org[mm@FreeBSD.org] y con información valiosa proporcionada por Paweł Jakub Dawidek mailto:pjd@FreeBSD.org[pjd@FreeBSD.org].

'''

toc::[]

[[background]]
== Antecedentes

Hay muchos proveedores de hosting en el mundo, pero muy pocos soportan oficialmente FreeBSD. Por lo general, dan soporte para instalar una distribución de Linux(R) en los servidores que ofrecen.

En algunos casos, estas compañías instalarán su distribución favorita de Linux(R) si lo solicita. Utilizando esta opción, intentaremos instalar FreeBSD. En otros casos, pueden ofrecer un sistema de rescate que se podría usar en caso de emergencia. También es posible usar esta opción para nuestros propósitos.

Este artículo cubre los pasos básicos de instalación y configuración necesarios para iniciar una instalación remota de FreeBSD con RAID-1 y ZFS.

[[intro]]
== Introducción

Esta sección resumirá el propósito del artículo y explicará mejor lo que se trata en este documento. Las instrucciones incluidas beneficiarán a quienes utilicen los servicios proporcionados por las instalaciones de colocación de servidores que no admiten FreeBSD.

[.procedure]
====
. Como hemos mencionado en la sección de <<background>>, muchas de las empresas más respetadas de hosting ofrecen algún tipo de sistema de rescate, que se inicia desde su LAN y es accesible por SSH. Por lo general, dan este soporte para ayudar a sus clientes a reparar sistemas operativos dañados. Como se explicará en este artículo, es posible instalar FreeBSD con la ayuda de estos sistemas de rescate.
+
. La siguiente sección del artículo describirá cómo configurar y compilar una versión minimalista de FreeBSD en la máquina local. Esa versión finalmente se ejecutará en la máquina remota desde ramdisk, lo que nos permitirá instalar un sistema operativo FreeBSD completo desde un mirror FTP usando la utilidad Sysinstall.
. El resto del artículo describirá el proceso de instalación, así como la configuración del sistema de archivos ZFS.
====

[[requirements]]
=== Requisitos

Para continuar con éxito, debe:

* Tener un sistema operativo accesible por la red con acceso SSH
* Entender el proceso de instalación de FreeBSD
* Estar familiarizado con la utilidad man:sysinstall[8]
* Tener a mano la imagen ISO o el CD de instalación de FreeBSD

[[preparation]]
== Preparación - mfsBSD

Antes de poder instalar FreeBSD en el sistema de destino, es necesario crear la imagen mínima de FreeBSD que se iniciará desde el disco duro. De esta manera, se puede acceder al nuevo sistema desde la red, y el resto de la instalación se puede hacer sin acceso remoto a la consola del sistema.

El conjunto de herramientas mfsBSD se puede usar para construir una imagen pequeña de FreeBSD. Como sugiere el nombre de mfsBSD ("mfs" significa "sistema de archivos en memoria"), la imagen resultante se ejecuta completamente desde ramdisk. Gracias a esta característica, la manipulación de los discos duros no estará limitada, por lo que será posible instalar un sistema operativo completo FreeBSD. La http://mfsbsd.vx.sk/[página web] de mfsBSD incluye indicaciones a la última versión del conjunto de herramientas.

Tenga en cuenta que los aspectos internos de mfsBSD están fuera del alcance de este artículo. El lector interesado debe consultar la documentación oficial de mfsBSD para obtener más detalles.

Descargue y extraiga la última versión de mfsBSD y cambie su directorio de trabajo al directorio donde se encuentren los scripts de mfsBSD:

[source,bash]
....
# fetch http://mfsbsd.vx.sk/release/mfsbsd-2.1.tar.gz
# tar xvzf mfsbsd-2.1.tar.gz
# cd mfsbsd-2.1/
....

[[mfsbsd-config]]
=== Configuración de mfsBSD

Antes de iniciar mfsBSD, deben establecerse algunas opciones de configuración importantes. Lo más importante que tenemos que configurar bien es, naturalmente, la configuración de red. El método más adecuado para configurar las opciones de red dependerá de si conocemos previamente el tipo de interfaz de red que usaremos, y el controlador de red que se cargará para nuestro hardware. Veremos cómo se puede configurar mfsBSD en cualquier caso.

Otra cosa importante es establecer la contraseña del usuario `root`. Esto se puede hacer editando [.filename]#conf/loader.conf#. Por favor lea los comentarios incluidos.

==== El método [.filename]#conf/interfaces.conf#

Cuando se desconoce la tarjeta de red instalada, es posible utilizar las funciones de detección automática de mfsBSD. Los scripts de inicio de mfsBSD pueden detectar el controlador correcto, según la dirección MAC de la interfaz, si configuramos las siguientes opciones en [.filename]#conf/interfaces.conf#:

[.programlisting]
....
mac_interfaces="ext1"
ifconfig_ext1_mac="00:00:00:00:00:00"
ifconfig_ext1="inet 192.168.0.2/24"
....

No olvide agregar `defaultrouter` a [.filename]#conf/rc.conf#:

[.programlisting]
....
defaultrouter="192.168.0.1"
....

==== El método [.filename]#conf/rc.conf#

Cuando se conoce el controlador de la interfaz de red, es más conveniente utilizar [.filename]#conf/rc.conf# para las opciones de red. La sintaxis de este fichero es la misma que la utilizada en el fichero man:rc.conf[5] de FreeBSD.

Por ejemplo, si sabe que una interfaz de red man:re[4] estará disponible, puede configurar las siguientes opciones en [.filename]#conf/rc.conf#:

[.programlisting]
....
defaultrouter="192.168.0.1"
ifconfig_re0="inet 192.168.0.2/24"
....

[[mfsbsd-build]]
=== Creando una imagen de mfsBSD

El proceso de creación de una imagen de mfsBSD es bastante sencillo.

El primer paso es montar el CD de instalación de FreeBSD, o la imagen ISO de instalación en [.filename]#/cdrom#. Por ejemplo, en este artículo asumiremos que ha descargado la ISO FreeBSD 10.1-RELEASE. Montar esta imagen ISO en el directorio [.filename]#/cdrom# es fácil con la utilidad man:mdconfig[8]:

[source,bash]
....
# mdconfig -a -t vnode -u 10 -f FreeBSD-10.1-RELEASE-amd64-disc1.iso
# mount_cd9660 /dev/md10 /cdrom
....

Como las versiones recientes de FreeBSD no contienen los sets regulares de la distribución, es necesario extraerlos de la imagen ISO:

[source,bash]
....
# mkdir DIST
# tar -xvf /cdrom/usr/freebsd-dist/base.txz -C DIST
# tar -xvf /cdrom/usr/freebsd-dist/kernel.txz -C DIST
....

A continuación, genere la imagen mfsBSD de arranque:

[source,bash]
....
# make BASE=DIST
....

[NOTE]
====
El comando make anterior debe ejecutarse desde el nivel superior del árbol de directorios de mfsBSD, por ejemplo [.filename]#~/mfsbsd-2.1/#.
====

=== Iniciando mfsBSD

Ahora que la imagen mfsBSD está lista, se debe cargar en el sistema remoto ejecutando el sistema de recuperación o una distribución de Linux(R) preinstalada. La herramienta más adecuada para esta tarea es scp:

[source,bash]
....
# scp disk.img root@192.168.0.2:.
....

Para iniciar correctamente la imagen mfsBSD, debe colocarse en el primer dispositivo (bootable) de la máquina en cuestión. Se puede hacer utilizando este ejemplo, siempre que [.filename]#sda# sea el primer dispositivo de arranque:

[source,bash]
....
# dd if=/root/disk.img of=/dev/sda bs=1m
....

Si todo ha ido bien, la imagen debe estar en el MBR del primer dispositivo y la máquina se puede reiniciar. Observe que la máquina se inicializa correctamente con la herramienta man:ping[8]. Una vez que esté en línea, debería ser posible acceder a ella con man:ssh[1] como usuario `root` con la contraseña configurada.

[[installation]]
== Instalación del sistema operativo FreeBSD

mfsBSD se ha iniciado correctamente y debería ser posible iniciar sesión a través de man:ssh[1]. En esta sección se describe cómo crear y etiquetar slices, configurar gmirror para RAID-1 y cómo utilizar Sysinstall para instalar una distribución mínima de FreeBSD.

=== Preparación de los discos duros

La primera tarea es asignar espacio en disco para FreeBSD, es decir: crear slices y particiones. Obviamente, el sistema que está actualmente en ejecución se encuentra completamente cargado en la memoria del sistema y, por lo tanto, no habrá problemas al manipular los discos duros. Para completar esta tarea, es posible usar Sysinstall o man:fdisk[8] en conjunto con man:bsdlabel[8].

Al principio, marque todos los discos del sistema como vacíos. Repita el siguiente comando para cada disco duro:

[source,bash]
....
# dd if=/dev/zero of=/dev/ad0 count=2
....

A continuación, cree las slices y etiquételas con su herramienta preferida. A pesar de que se considera más fácil usar Sysinstall, un método potente y probablemente menos defectuoso será usar herramientas estándar de UNIX(R) basadas en texto, como man:fdisk[8] y man:bsdlabel[8], también tratadas en esta sección. La primera opción está bien documentada en el capítulo de link:{handbook}#install-steps[Instalación de FreeBSD] del Manual de FreeBSD. Como se mencionó en la introducción, este artículo explicará cómo configurar un sistema con RAID-1 y ZFS. Nuestra configuración consistirá en una pequeña partición [.filename]#/# (raíz), con un conjunto de datos compuesto por [.filename]#/usr# y [.filename]#/var#, todos en mirror con man:gmirror[8] y el resto del espacio en disco asignado a un sistema de archivos ZFS en mirror con man:zpool[8]. Por favor, tenga en cuenta que el sistema de archivos ZFS se configurará después de que el sistema operativo FreeBSD se instale y se inicie correctamente.

El siguiente ejemplo describirá cómo crear slices y etiquetas, inicializar man:gmirror[8] en cada partición y cómo crear un sistema de archivos UFS2 en cada partición en mirror:

[source,bash]
....
# fdisk -BI /dev/ad0 <.>
# fdisk -BI /dev/ad1
# bsdlabel -wB /dev/ad0s1 <.>
# bsdlabel -wB /dev/ad1s1
# bsdlabel -e /dev/ad0s1 <.>
# bsdlabel /dev/ad0s1 > /tmp/bsdlabel.txt && bsdlabel -R /dev/ad1s1 /tmp/bsdlabel.txt <.>
# gmirror label root /dev/ad[01]s1a <.>
# gmirror label var /dev/ad[01]s1d
# gmirror label usr /dev/ad[01]s1e
# gmirror label -F swap /dev/ad[01]s1b <.>
# newfs /dev/mirror/root <.>
# newfs /dev/mirror/var
# newfs /dev/mirror/usr
....

<.> Cree una slice que use todo el disco e inicialice el boot code del sector 0 del disco seleccionado. Repita este comando para todos los discos duros en el sistema.

<.> Escriba una etiqueta estándar para cada disco, incluido el código de arranque.

<.> Ahora, manualmente edite la etiqueta del disco. Consulte la página de manual man:bsdlabel[8] para saber cómo crear particiones. Cree las particiones siguientes: `a` para el sistema de archivos [.filename]#/# (raíz), `b` para swap, `d` para [.filename]#/var#, `e` para [.filename]#/usr# y finalmente `f`, que luego será utilizada para ZFS.

<.> Importe la etiqueta creada recientemente para el segundo disco duro, de modo que ambos discos estén etiquetados de la misma manera.

<.> Inicialice man:gmirror[8] en cada partición.

<.> Tenga en cuenta que `-F` se utiliza para la partición swap. Esto le indica a man:gmirror[8] que asuma que el dispositivo está consistente después de un fallo de alimentación/sistema.

<.> Cree un sistema de archivos UFS2 en cada partición duplicada.

=== Instalación del sistema

Esta es la parte más importante. Esta sección describirá cómo instalar la distribución mínima de FreeBSD en los discos duros que hemos preparado en la sección anterior. Para lograr este objetivo, todos los sistemas de archivos deben montarse, para que Sysinstall pueda escribir el contenido de FreeBSD en los discos duros:

[source,bash]
....
# mount /dev/mirror/root /mnt
# mkdir /mnt/var /mnt/usr
# mount /dev/mirror/var /mnt/var
# mount /dev/mirror/usr /mnt/usr
....

Cuando haya terminado, inicie man:sysinstall[8]. Seleccione la instalación [.guimenuitem]#Custom# en el menú principal. Seleccione [.guimenuitem]#Options# y presione kbd:[Enter]. Con la ayuda de las teclas de dirección, mueva el cursor sobre el elemento `Install Root`, presione kbd:[Space] y cámbielo a [.filename]#/mnt#. Presione kbd:[Enter] para aceptar sus cambios y salga del menú [.guimenuitem]#Options# presionando kbd:[q].

[WARNING]
====
Tenga en cuenta que este paso es muy importante y, si se omite, Sysinstall no podrá instalar FreeBSD.
====

Vaya al menú [.guimenuitem]#Distributions#, mueva el cursor con las teclas de dirección a `Minimal` y compruébelo presionando la tecla kbd:[Espacio]. Este artículo utiliza la distribución mínima para ahorrar tráfico de red, ya que el sistema se instalará por ftp. Salga de este menú seleccionando `Exit`.

[NOTE]
====
Los menús [.guimenuitem]#Partition# y [.guimenuitem]#Label# se omitirán, ya que son inútiles ahora.
====

En el menú [.guimenuitem]#Media#, seleccione `FTP`. Seleccione el mirror más cercano y deje que Sysinstall asuma que la red ya está configurada. Volverá al menú [.guimenuitem]#Custom#.

Finalmente, realice la instalación del sistema seleccionando la última opción, [.guimenuitem]#Commit#. Salga de Sysinstall cuando finalice la instalación.

=== Pasos posteriores a la instalación

El sistema operativo FreBSD ya debería estar instalado; sin embargo, el proceso aún no ha terminado. Es necesario realizar algunos pasos posteriores a la instalación para permitir que FreeBSD se inicie en el futuro y pueda iniciar sesión en el sistema.

Ahora debe usar el comando man:chroot[8] en el sistema recién instalado. Use el siguiente comando:

[source,bash]
....
# chroot /mnt
....

Para completar nuestro objetivo, siga estos pasos:

* Copie el kernel `GENERIC` al directorio [.filename]#/boot/kernel#:
+
[source,bash]
....
# cp -Rp /boot/GENERIC/* /boot/kernel
....

* Cree los ficheros [.filename]#/etc/rc.conf#, [.filename]#/etc/resolv.conf# y [.filename]#/etc/fstab#. No olvide configurar correctamente la información de red y habilitar sshd en [.filename]#/etc/rc.conf#. El contenido de [.filename]#/etc/fstab# será similar al siguiente:
+
[.programlisting]
....
# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/mirror/swap        none            swap    sw              0       0
/dev/mirror/root        /               ufs     rw              1       1
/dev/mirror/usr         /usr            ufs     rw              2       2
/dev/mirror/var         /var            ufs     rw              2       2
/dev/cd0                /cdrom          cd9660  ro,noauto       0       0
....
* Cree [.filename]#/boot/loader.conf# con el siguiente contenido:
+
[.programlisting]
....
geom_mirror_load="YES"
zfs_load="YES"
....
* Ejecute el siguiente comando, hará que ZFS se encuentre disponible en el siguiente arranque:
+
[source,bash]
....
# echo 'zfs_enable="YES"' >> /etc/rc.conf
....

* Agregue usuarios adicionales al sistema usando la herramienta man:adduser[8]. No olvide agregar un usuario al grupo `wheel` para que pueda obtener acceso al usuario root después del reinicio.
* Vuelva a comprobar todas sus configuraciones.

El sistema debería estar listo para el siguiente arranque. Use el comando man:reboot[8] para reiniciar su sistema.

[[zfs]]
== ZFS

Si su sistema sobrevivió al reinicio, ahora debería poder iniciar sesión. ¡Bienvenido a la nueva instalación de FreeBSD, realizada de forma remota sin el uso de una consola remota!

El único paso que queda es configurar man:zpool[8] y crear algunos sistemas de archivos man:zfs[8]. Crear y administrar ZFS es muy sencillo. Primero, cree un pool reflejado:

[source,bash]
....
# zpool create tank mirror /dev/ad[01]s1f
....

A continuación, cree algunos sistemas de archivos:

[source,bash]
....
# zfs create tank/ports
# zfs create tank/src
# zfs set compression=gzip tank/ports
# zfs set compression=on tank/src
# zfs set mountpoint=/usr/ports tank/ports
# zfs set mountpoint=/usr/src tank/src
....

Eso es todo. Si está interesado en obtener más información sobre ZFS en FreeBSD, consulte la sección https://wiki.freebsd.org/ZFS[ZFS] de la wiki de FreeBSD.
