Instalación remota del sistema operativo FreeBSD sin una consola remota

Marcas registradas

FreeBSD es una marca registrada de la Fundación FreeBSD

Muchos de los nombres usados por los fabricantes y vendedores para diferenciar sus productos son designados como marcas comerciales. Allí donde estos nombres aparezcan en este documento y el Proyecto FreeBSD fuera consciente de la alegación de marca comercial, los nombres tienen a continuación el símbolo “™” o “®”.

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 de este artículo es el resultado de una colaboración con Martin Matuska <mm@FreeBSD.org> con información valiosa proporcionada por Paweł Jakub Dawidek <pjd@FreeBSD.org>.


1. Antecedentes

Hay muchos proveedores de alojamiento en el mundo, pero pocos de ellos proporcionan soporte oficial de FreeBSD. Normalmente proporcionan una distribución Linux® para ser instalada en los servidores que ofrecen.

En algunos casos, estas compañías instalarán tu distribución Linux® favorita si lo pides. Usando esta opción, intentaremos instalar FreeBSD. En otros casos, podrían ofrecer un sistema de rescate que se podría usar en una emergencia. Es posible usar esto también para nuestros propósitos.

Este artículo cubre los pasos básicos de instalación y configuración que se necesitan para lanzar una instalación remota de FreeBSD con capacidades RAID-1 y ZFS.

2. 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.

  1. Como hemos mencionado en la sección Antecedentes, muchas de las compañías reputadas de hospedaje de servidores proporcionan alguna clase de sistema de rescate, el cual es arrancado desde su LAN y es accesible mediante SSH. Normalmente proporcionan este soporte para ayudar a sus clientes a arreglar sus sistemas operativos rotos. Como explicará este artículo, es posible instalar FreeBSD con la ayuda de estos sistemas de rescate.

  2. La próxima sección de este articulo describirá cómo configurar y construir un sistema FreeBSD minimalista en la máquina local. Esa versión eventualmente se ejecutará en la máquina remota desde un ramdisk, lo que nos permitirá instalar un sistema operativo FreeBSD completo desde un mirror FTP usando la utilidad sysinstall.

  3. El resto de este artículo describirá el procedimiento de instalación en sí mismo, así como la configuración del sistema de ficheros ZFS.

2.1. Requisitos

Para continuar con éxito, debes:

  • Tener acceso a un sistema operativo con acceso a red y SSH

  • Entender el proceso de instalación de FreeBSD

  • Familiarizarte con la utilidad sysinstall(8)

  • Tener a mano un CD o imagen ISO de instalación de FreeBSD

3. 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 msfBS se puede utilizar para construir una imagen FreeBSD diminuta. Como el nombre de msfBSD sugiere ("mfs" significa "memory file system"), la imagen resultante se ejecuta completamente desde un ramdisk. Gracias a esta característica, la manipulación de discos duros no está limitada, por lo tanto será posible instalar un sistema operativo FreeBSD completo. La página del proyecto mfsBSD incluye enlaces a la última release de la herramienta.

Por favor, ten en cuenta que el funcionamiento interno de mfsBSD y cómo encaja todo junto está fuera del alcance de este artículo. El lector que esté interesado debería consultar la documentación original de mfsBSD para más detalles.

Descarga y extrae la última versión de mfsBSD y cambia tu directorio de trabajo al directorio donde residirán los scripts de mfsBSD:

# fetch http://mfsbsd.vx.sk/release/mfsbsd-2.1.tar.gz
# tar xvzf mfsbsd-2.1.tar.gz
# cd mfsbsd-2.1/

3.1. Configuración de mfsBSD

Antes de iniciar mfsBSD, deben establecerse algunas opciones de configuración importantes. Lo más importante que tenemos que hacer 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 que configurar es la contraseña de root. Esto se puede hacer editando conf/loader.conf. Por favor, lee los comentarios que ahí se incluyen.

3.1.1. El método 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 conf/interfaces.conf:

mac_interfaces="ext1"
ifconfig_ext1_mac="00:00:00:00:00:00"
ifconfig_ext1="inet 192.168.0.2/24"

No te olvides de añadir la información defaultrouter a conf/rc.conf:

defaultrouter="192.168.0.1"

3.1.2. El método conf/rc.conf

Cuando el interfaz de red es conocido, es más conveniente utilizar conf/rc.conf para las opciones de red. La sintaxis de este fichero es la misma que la usada en el fichero estándar rc.conf(5) de FreeBSD.

Por ejemplo, si sabes que la interfaz de red re(4) va a estar disponible, puedes establecer las siguientes opciones en conf/rc.conf:

defaultrouter="192.168.0.1"
ifconfig_re0="inet 192.168.0.2/24"

3.2. Construyendo una Imagen de mfsBSD

El proceso de construir una imagen mfsBSD es bastante directo.

El primer paso es montar el CD de instalación de FreeBSD, o la imagen de instalación ISO en /cdrom. Para el bien del ejemplo, en este artículo asumiremos que has descargado la ISO 10.1-RELEASE de FreeBSD. Montar esta imagen ISO en el directorio /cdrom es fácil con la utilidad mdconfig(8):

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

Puesto que las versiones recientes de FreeBSD no contienen los conjuntos de distribución regulares, es necesario extraer los ficheros de la distribución desde los archivos que se encuentran en la imagen ISO:

# mkdir DIST
# tar -xvf /cdrom/usr/freebsd-dist/base.txz -C DIST
# tar -xvf /cdrom/usr/freebsd-dist/kernel.txz -C DIST

Desués, construye la imagen arrancable de mfsBSD:

# make BASE=DIST

El make anterior se tiene que ejecutar desde el directorio raíz del árbol de directorios de mfsBSD, por ejemplo ~/mfsbsd-2.1/.

3.3. Arrancando mfsBSD

Ahora que la imagen mfsBSD está lista, se debe subir al sistema remoto ejecutando un sistema de rescate o una distribución de Linux® pre-instalada. La mejor herramienta para esta tarea es scp:

# scp disk.img root@192.168.0.2:.

Para arrancar la imagen mfsBSD de forma apropiada, se tiene que situar en la primera unidad (arrancable) de la máquina. Esto se puede conseguir utilizando el siguiente ejemplo asumiendo que sda es la primera unidad de disco arrancable:

# dd if=/root/disk.img of=/dev/sda bs=1m

Si todo fue bien, la imagen debería estar ahora en el MBR de la primera unidad y la máquina se puede reiniciar. Controla que la máquina arranca correctamente con la herramienta ping(8). Una vez que esté on-line, debería ser posible acceder a ella con ssh(1) como usuario root con la contraseña configurada.

4. Instalación del sistema operativo FreeBSD

El mfsBSD ha arrancado co éxito y debería ser posible conectarse mediante ssh(1). Esta sección describirá cómo crear y etiquetar "slices" de disco, configurar gmirror para RAID-1, y cómo utilizar sysinstall para instalar una distribución mínima del sistema operativo FreeBSD.

4.1. Preparación de los discos duros

La primera tarea es reservar espacio de disco para FreeBSD, es decir: crear particiones y "slices". Obviamente, el sistema que está actualmente en ejecución está cargado completamente en memoria y por lo tanto no habrá problemas al manipular los discos duros. Para completar la tarea, es posible usar tanto sysinstall como fdisk(8) junto con bsdlabel(8).

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

# dd if=/dev/zero of=/dev/ad0 count=2

Después, crea los "slices" y etiquétalos con tu herramienta preferida. Aunque sysinstall es considerada más fácil de usar, un método potente y quizás menos propenso a errores será usar herramientas UNIX® estándar en modo texto, como fdisk(8) y bsdlabel(8), que se cubrirán también en esta sección. La primera opción está bien documentada en el capítulo Instalar FreeBSD del FreeBSD Handbook. Como se mencionó en la introducción, esta artículo presentará cómo configurara un sistema con RAID-1 y capacidades ZFS. Nuestra configuración consistirá en un pequeño / (root), /usr y /var configurado en espejo con gmirror(8) y el resto del espacio en disco será reservado para un zpool(8) en espejo de un sistema de ficheros ZFS. Por favor, date cuenta de que el sistema de ficheros ZFS se configurará después de que el sistema operativo FreeBSD haya sido instalado con éxito y arrancado.

El siguiente ejemplo describirá cómo crear "slices" y etiquetas, inicializar gmirror(8) en cada partición y cómo crear un sistema de ficheros UFS2 en cada partición en espejo:

# fdisk -BI /dev/ad0 (1)
# fdisk -BI /dev/ad1
# bsdlabel -wB /dev/ad0s1 (2)
# bsdlabel -wB /dev/ad1s1
# bsdlabel -e /dev/ad0s1 (3)
# bsdlabel /dev/ad0s1 > /tmp/bsdlabel.txt && bsdlabel -R /dev/ad1s1 /tmp/bsdlabel.txt (4)
# gmirror label root /dev/ad[01]s1a (5)
# gmirror label var /dev/ad[01]s1d
# gmirror label usr /dev/ad[01]s1e
# gmirror label -F swap /dev/ad[01]s1b (6)
# newfs /dev/mirror/root (7)
# newfs /dev/mirror/var
# newfs /dev/mirror/usr
1Crea una slice que use todo el disco e inicializa el boot code del sector 0 del disco seleccionado. Repite este comando para todos los discos duros en el sistema.
2Escribe una etiqueta estándar para cada disco, incluido el código de arranque.
3Ahora edita manualmente la etiqueta del disco. Lee la página de manual de bsdlabel(8) para averiguar cómo crear particiones. Crea particiones a para el sistema de ficheros / (root), b para swap, d para /var, e para /usr y finalmente f para ser usada más tarde por ZFS.
4Importa la etiqueta creada recientemente para el segundo disco duro, de forma que los dos discos estén etiquetados de la misma forma.
5Inicializa gmirror(8) en cada partición.
6Ten en cuenta que se utiliza -F para la partición swap. Esto indica a gmirror(8) que asuma que el dispositivo estará en un estado consistente después de un error del sistema/fuente de energía.
7Crea un sistema de ficheros UFS2 en cada partición del espejo.

4.2. 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:

# mount /dev/mirror/root /mnt
# mkdir /mnt/var /mnt/usr
# mount /dev/mirror/var /mnt/var
# mount /dev/mirror/usr /mnt/usr

Cuando hayas terminado, arranca sysinstall(8). Selecciona la instalación Custom en el menú principal. Selecciona Options y presiona Enter. Con la ayuda de las teclas de dirección, mueve el cursor al elemento Install Root, presiona Space y cámbialo a /mnt. Presiona Enter para hacer los cambios y sal del menú Options presionando q.

Ten en cuenta que este paso es muy importante y si lo omites, sysinstall no será capaz de instalar FreeBSD.

Ve al menú Distributions, mueve el cursor con las teclas de dirección a Minimal, y márcala presionando Space. Este artículo utiliza la distribución Minimal para ahorrar tráfico de red, porque el sistema en sí mismo será instalado mediante ftp. Sal de este menú escogiendo Exit.

Los menús Partition y Label se omitirán ya que ahora son inútiles.

En el menú Media, selecciona FTP. Selecciona el mirror más cercano y deja que sysinstall asuma que la red ya está configurada. Se te redirigirá de vuelta al menú Custom.

Finalmente, realiza la instalación del sistema seleccionando la última opción, Commit. Sal de sysinstall cuando finalice la instalación.

4.3. 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 para poder iniciar sesión en el sistema.

Ahora debes hacer chroot(8) en el sistema recién instalado para poder finalizar la instalación. Utiliza el siguiente comando:

# chroot /mnt

Para completar nuestro objetivo, sigue estos pasos:

  • Copia el kernel GENERIC al directorio /boot/kernel:

    # cp -Rp /boot/GENERIC/* /boot/kernel
  • Crea los ficheros /etc/rc.conf, /etc/resolv.conf y /etc/fstab. No olvides configurar la información de red y habilitar sshd en /etc/rc.conf. El contenido de /etc/fstab será similar a lo siguiente:

    # 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
  • Crea /boot/loader.conf con el siguiente contenido:

    geom_mirror_load="YES"
    zfs_load="YES"
  • Ejecuta el siguiente comando, el cual hará que ZFS esté disponible en el siguiente arranque:

    # sysrc zfs_enable="YES"
  • Añade usuarios adicionales al sistema usando la herramienta adduser(8). No olvides añadir un usuario al grupo wheel de forma que puedas obtener acceso root después del reinicio.

  • Vuelve a comprobar todas sus configuraciones.

Ahora el sistema debería estar listo para el siguiente arranque. Utiliza el comando reboot(8) para reiniciar tu sistema.

5. ZFS

Si tu sistema sobrevivió al reinicio, ahora deberías 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 zpool(8) y crear algunos sistemas de ficheros zfs(8). Crear y administrar ZFS es muy directo. Primero crea un pool en mirror:

# zpool create tank mirror /dev/ad[01]s1f

A continuación, crea algunos sistemas de archivos:

# 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ás interesado en más detalles acerca de ZFS en FreeBSD, por favor dirígete a la sección ZFS en la Wiki de FreeBSD.


Last modified on: 3 de enero de 2023 by Fernando Apesteguía