En 2016 puse mi primer servidor OpenBSD en producción, en la versión 5.9, y el día de hoy llegó el momento de actualizarlo a la versión 6.0. Este artículo explica el procedimiento paso a paso (con mucho mayor detalle que la FAQ oficial).

Es importante destacar que las actualizaciones en OpenBSD sólo son soportadas entre versiones consecutivas, desde una release a la inmediata posterior. No es posible saltar versiones, por ejemplo actualizar directamente desde la versión 5.8 a la 6.0, sino que se debe pasar antes por la 5.9.

El método recomendado para actualizar un sistema OpenBSD es utilizando un kernel live (bsd.rd). Este kernel provee un entorno OpenBSD que corre completamente en memoria (similar a un LiveCD de cualquier distribución GNU/Linux). Este kernel, incluye un conjunto de herramientas y utilidades que además sirven como disco de rescate.

Para comenzar la actualización, es necesario descargar el kernel bsd.rd (RAM disk) correspondiente a la versión a la que se desea actualizar, en este caso 6.0, desde cualquier mirror de OpenBSD:

Acceder al directorio correspondiente a la versión 6.0. Luego acceder al directorio correspondiente a la arquitectura de CPU del servidor (en este caso "amd64"):

Copiar la URL del kernel bsd.rd:

Desde el servidor, es posible utilizar luego wget para obtener el kernel desde la URL copiada:

# wget http://mirrors.unb.br/pub/OpenBSD/6.0/amd64/bsd.rd
--2017-01-09 09:27:57--  http://mirrors.unb.br/pub/OpenBSD/6.0/amd64/bsd.rd
Resolving mirrors.unb.br (mirrors.unb.br)... 164.41.105.6
Connecting to mirrors.unb.br (mirrors.unb.br)|164.41.105.6|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7905392 (7.5M) [chemical/x-mdl-rdfile]
Saving to: 'bsd.rd'

bsd.rd                        100%[===================================================>]   7.54M  1.42MB/s   in 5.3s   

2017-01-09 09:28:02 (1.42 MB/s) - 'bsd.rd' saved [7905392/7905392]

Mover el kernel bsd.rd de la versión 6.0 al directorio raíz:

# mv bsd.rd /bsd.rd.6

En esta versión particular, es necesario borrar las manpages antes de comenzar la actualización (antes de reiniciar):

# rm -fr /usr/share/man

Finalmente, reiniciar el sistema para comenzar la actualización:

# reboot

ADVERTENCIA: Se debe evitar realizar este tipo de actualizaciones directamente en servidores en producción. Se recomienda probar el procedimiento antes en una copia, o trabajar sobre una máquina clonada siempre que sea posible.

Iniciar seleccionando el kernel bsd.rd.6. Para ello es necesario conocer el nombre de la partición donde se encuentra el sistema de archivos raíz, en este caso es sd0a:

En el bootloader, ingresar el comando boot sd0a:/bsd.rd.6 y presionar enter:

Una vez iniciado, seleccionar 'u' para actualizar el sistema:

Configuración de teclado

El primer paso consiste en configurar la distribución de teclado:

En este caso es un teclado español.

Montar el sistema de archivos raíz

Luego se debe indicar la partición raíz sobre la que se aplicará la actualización:

Actualización de los sets

Luego se debe seleccionar un mirror desde donde descargar los sets de OpenBSD. En este punto es posible indicar un servidor proxy HTTP de acceso a Internet, si el servidor se encuentra dentro de una red corporativa con seguridad perimetral:

Luego de seleccionar todos los sets, comienza la instalación, la cual demora unos minutos:

De forma alternativa, es posible actualizar los sets desde un CD de la versión correspondiente en lugar de descargarlos desde Internet.

Actualización de los paquetes

Finalizada la actualización, es posible reiniciar el sistema y actualizar los paquetes. Primero es necesario actualizar la variable PKG_PATH:

# nano /etc/profile

Cambiar "5.9" por "6.0":

#export PKG_PATH="http://mirrors.unb.br/pub/OpenBSD/5.9/packages/amd64/"
export PKG_PATH="http://mirrors.unb.br/pub/OpenBSD/6.0/packages/amd64/"

Y luego actualizar el perfil de ksh ejecutando:

# . /etc/profile

Por último, actualizar los paquetes ejecutando:

# pkg_add -u

Al terminar la actualización de paquetes, revisar los mensajes y actuar según corresponda:

--- -cyrus-sasl-2.1.26p15 -------------------
You should also run rm -rf /var/sasl2/*
--- -dbus-1.10.6v0 -------------------
Remember to update /etc/machine-id
--- -libxml-2.9.3 -------------------
Remember to update /var/db/xmlcatalog
--- -php-5.6.18 -------------------
You should also run rm -f /etc/php-5.6/php-5.6.sample/*
--- -samba-4.1.22p0 -------------------
You should also check /etc/samba/smb.conf (which was modified)

En el sistema en cuestión sólo fue necesario borrar los siguientes directorios:

# rm -fr /var/sasl2/
# rm -fr /etc/php-5.6.sample/*

Para destacar de este sistema operativo, algo que no había visto nunca antes. Durante la actualización y cuando inicia por primera vez, el sistema envía una serie de correos notificando qué está sucediendo y las opciones utilizadas para actualizar. Maravilloso.

Referencias

OpenBSD Upgrade Guide: 5.9 to 6.0

What is bsd.rd?


Tal vez pueda interesarte


Compartí este artículo