~ 7 minutos de lectura

Cómo instalar OpenBSD en una Raspberry Pi4

Instalación de OpenBSD en una Raspberry Pi4 en 2024 sin usar un adaptador serial

Instalar OpenBSD en una Raspberry Pi 4 ha sido un desafío para mí, especialmente con respecto a la configuración de la partición de arranque EFI. U-Boot no funciona por el momento (27/05/2024) y, aunque la mayoría de la información en internet recomienda utilizar EDK II, la información sobre cómo instalarlo está desactualizada. Este artículo describe cómo instalar OpenBSD en una RPi4 en 2024. Si tienes alguna duda y/o quieres contribuir, puedes contactarme a través de cualquiera de las redes sociales que aparecen en este blog. Todas las referencias se pueden encontrar al final del documento en caso de que las necesites. ¡Empecemos!

Materiales

  • 1 Raspberry Pi4
  • 1 tarjeta micro SD
  • 1 pendrive
  • 1 cable HDMI
  • Teclado y ratón
  • Sistema operativo GNU/Linux o similar

Preparación

El primer paso es instalar Pi OS en una tarjeta microSD. Puedes usar la misma tarjeta SD que usaremos para instalar OpenBSD, pero también puedes usar otra si quieres conservar Pi OS, lo cual te puede ser útil en otro momento.

  1. Instalar Pi OS en una tarjeta microSD

Descargaremos la última versión de RaspberryPi OS y lo descomprimimos:

wget -O - https://downloads.raspberrypi.com/raspios_armhf/images/raspios_armhf-2024-07-04/2024-07-04-raspios-bookworm-armhf.img.xz > rpiimage.img.xz && xz -d rpiimage.img.xz

Ahora vamos a escribir la imágen en la targeta microSD. Primero verifica el nombre del dispositivo, con el formato /dev/sdX (En mi caso es /dev/sdc):

lsblk

Antes que nada no olvides desmontar primero la tarjeta microSD:

sudo umount /dev/sdX

Ahora sí, escribimos la imagen a la tarjeta microSD (reemplazar /dev/sdX)

sudo dd if=rpiimage.img of=/dev/sdX bs=4M status=progress
  1. Actualizar Pi OS

Conecta teclado, mouse y cable HDMI a la raspberry pi. Inserta la tarjeta microSD en la Raspberry Pi4 y enciéndela. Después de seleccionar las opciones y configuraciones que consideras necesarias, actualizaremos el sistema (ten en cuenta que tardará un largo rato):

sudo apt update && sudo apt full-upgrade -y
sudo apt install rpi-eeprom
sudo rpi-eeprom-update
  1. Configuración de la EEPROM

Configuraremos la versión de la EEPROM a latest ejecutando:

sudo raspi-config

y seleccionamos latest en

Advanced Options -> Bootloader Version

Nos pedirá que reiniciemos pero elegiremos que no.

Por último actualizamos la EEPROM y reiniciamos

sudo rpi-eeprom-update -a
reboot
  1. Establecer el orden de inicio

El paso final de la preparación es configurar el orden de inicio para darle la mayor prioridad al pendrive. Ejecutaremos lo siguiente para ello.

sudo raspi-config

Ahora seleccionamos la opción USB Boot en

Advanced Options -> Boot Order

Salimos y nos preguntará si queremos reiniciar, por lo que elegiremos que sí. Después del reinicio, verificamos el orden de inicio.

sudo rpi-eeprom-config

Si hay una linea que aparece así, entonces la preparación se realizó correctamente:

BOOT_ORDER=0xf14 # Distinto de 0xf41

Instalación

  1. Obtener la imagen arm de OpenBSD y verificarla

Ahora, descargaremos la imagen de OpenBSD, que al momento de escribir éste artículo se encuentra en la versión 7.5. Si existe una nueva actualización, puedes probar instalar esa versión y ver si funciona (agradecería si me envías un mensaje haciéndomelo saber ;)):

wget https://cdn.openbsd.org/pub/OpenBSD/7.5/arm64/install75.img

Por último, verifica la instalación si lo deseas (puedes saltarte éste paso)

wget https://cdn.openbsd.org/pub/OpenBSD/7.5/arm64/SHA256
sha256sum -c --ignore-mising SHA256

Si la salida es install75.img: OK, entonces no ha habido ningún error.

  1. Obtener el bootloader EDK II

Usaremos la versión del bootloader EDKII compilada para RPi4 (al momento de escribir éste artículo se encuentra en la versión 1.37). La descargaremos de la siguiente manera.

wget https://github.com/pftf/RPi4/releases/download/v1.37/RPi4_UEFI_Firmware_v1.37.zip
  1. Copiar la imagen de instalación en el pendrive.

Copiaremos la imágen de OpenBSD 7.5 en el pendrive usando el comando dd nuevamente.

sudo dd if=install75.img of=/dev/sdX bs=4M status=progress

Donde /dev/sdX es el archivo que hace referencia al pendrive. Hay que tener extremo cuidado con la letra que se elige, ya que dd sobreescribirá el dispositivo. Usa lsblk para comprobar que se ha elegido el archivo correcto.

Además, borraremos los datos de la tarjeta microSD en la que se instalará OpenBSD (aunque ésto es opcional). Como dije anteriormente, tener mucho cuidado con el archivo del dispositivo.

sudo dd if=/dev/zero of=/dev/sdX bs=4M status=progress
  1. Reemplazar la partición de inicio en el pendrive y ejectarlo

Ahora reemplazaremos la partición de boot con U-Boot en el pendrive por EDK II. Para ello primero montamos la partición de boot (X es la letra del dispositivo). Lamentablemente, la única forma en la que he podido distinguir la partición de boot, fue a prueba y error. En mi caso terminó siendo /dev/sdb9:

sudo mount -o -t msdos /dev/sdXX /mnt

Luego eliminamos todos los archivos excepto la carpeta efi. Ésto lo haremos moviendo la carpeta a /tmp y eliminamos todos los archivos en el punto de montaje. Luego movemos la carpeta efi a su directorio original.

sudo mv /mnt/efi /tmp
sudo rm -fr /mnt/*
sudo mv /tmp/efi /mnt

Por último extraemos los contenidos del archivo zip que contiene el EDK II en el directorio montado. Por último desmontamos el dispositivo:

sudo unzip -x ./UEFI-1.37.zip -d /mnt
sudo umount /mnt

Instalación de OpenBSD en la tarjeta SD

  1. Conectar un teclado, el pendrive, el cable HDMI, la tarjeta SD y conectar un cable Ethernet

Ésta es la mejor parte, la instalación de OpenBSD. Primero conectamos el pendrive con el instalador, un teclado, el cable HDMI y un cable Ethernet. Ya conectado todo encendemos la raspeberry pi4. Cuando aparezca la imagen de raspberry, presiona la tecla <esc>. Ésto hará que el bootloader ingrese a una pantalla similar a la BIOS. Puede tardar mucho o poco dependiendo los dispositivos utilizados, así que hay que estarse atento.

Conectamos la tarjeta microSD en la que instalaremos OpenBSD. Hacerlo de esta forma nos garantiza que el proceso de arranque comience desde el dispositivo que tiene el firmware EDK II.

En la pantalla del BIOS, seleccionamos la opción Boot Manager y luego el pendrive que contiene la imágen de instalación.

  1. Instalar OpenBSD en la tarjeta SD; tener cuidado con los discos

Ahora realizaremos la instalación de OpenBSD en la microSD. Al iniciar, nos encontraremos con un prompt y elegiremos la opción de install. El proceso de instalación es bastante sencillo. Hay 2 problemas que pueden surgir:

  • Tener cuidado con los discos. Revisa con detenimiento el disco donde se va a instalar el sistema operativo para no sobreescribir el pendrive que se está utilizando.
  • Si hay un error al seleccionar repositorios, mi solución fue cambiar la cdn de donde se descargarán los paquetes.

Al final de la instalación, nos encontraremos con éste prompt. Elegiremos la opción (S)hell:

Exit to (S)hell, (H)alt or (R)eboot?

Ahora ejecutamos los siguientes comandos para establecer la consola y apagar la raspberry pi4, respectivamente:

echo 'set tty fb0' > /mnt/etc/boot.conf
halt -p
  1. Reemplazar el firmware en el nuevo sistema.

Para reemplazar el firmware en el nuevo sistema, muchos hacen la copia del bootloader desde la raspberry, pero ésto a mi no me funcionó. Por lo tanto, vamos a realizarla desde la PC.

Primero montamos la partición de boot en la tarjeta SD que contiene nuestra nueva instalación de OpenBSD 7.5. De nuevo, a prueba y error, en mi caso la partición de boot fue /dev/sdb9:

sudo mount -o -t msdos /dev/sdXX /mnt

Luego copiamos el bootloader como hicimos anteriormente (Reemplaza path por la ruta donde descargaste el firmware).

sudo mv /mnt/efi /tmp
sudo rm -fr /mnt/*
sudo mv /tmp/efi /mnt
sudo unzip -x /path/to/UEFI-1.37.zip -d /mnt

Como último paso, desmontamos la partición:

sudo umount /mnt

Post instalación

Ya habiendo realizado la instalación, podemos hacer algunos cambios opcionales yendo a Device Manager > Raspberry Pi Configuration > Advanced Configuration en la BIOS (al iniciar la raspberry pi4 presionamos Esc).

Por un lado, podemos quitar el límite de RAM de 3GB

"Limit RAM to 3 GB" ----> "Disabled"

Por otro lado, si usaremos wi-fi, deberemos la siguiente opción para habilitarlo. Ésto lo deberás hacer luego de configurar las redes, ya que lamentablemente no se puede usar monitor y la conexión inalámbrica al mismo tiempo (con lo cúal la única opción que quedaría es ingresar por ssh).

"System Table Selection" ----> "Devicetree"

Presionamos F10 para guardar, luego <Esc> repetidas veces y seleccionamos Reset para reiniciar.

Conclusión

¡Listo! Ahora podés disfrutar de la seguridad que brinda OpenBSD y la comodidad de tener una Raspberry Pi4 al mismo tiempo. Hay muchas cosas que puedes hacer, acá te dejo unos ejemplos:

  • Actualizar el sistema y el firmware
  • Instalar paquetes como zsh, vim, neofetch, htop, lsblk
  • Configurar chrony, history, doas
  • Crear un servidor web con apache/nginx
  • Armar un buen firewall
  • Cambiar de shell
  • Configurar wifi y habilitar sshd
  • Configurar SMTP
  • … y mucho más

Si te ha servido el artículo, puedes ayudarme compartiendolo en alguna red social. En caso de encontrar un error o bug, no dudes en enviarme un mail o un mensaje. ¡Muchas gracias por leer!

Referencias

  • openbsdhandbook.com
  • mtsapv.com/rpi4obsd
  • undeadly.org/cgi?action=article&sid=20170409123528
  • github.com/AshyIsMe/openbsd-rpi4
Compartelo: