Booteando nuestra Raspberry Pi desde USB con un disco duro SSD (o pendrive)

Si eres un trastornado por el apasionante mundo de las Raspberry Pi, estás de suerte. Ahora ya puedes aumentar drásticamente la velocidad de la misma booteando tu Raspberry Pi desde USB.

Normalmente estos dispositivos se encuentran configurados para bootearlos de forma natural desde una tarjeta SDCard insertada para tal efecto. Allí es donde instalamos nuestro sistema operativo al completo, como puede ser Raspberry Pi OS.

Raspberry Pi OS, antes denominado Raspbian, está basado en la archiconocida distribución de linux Debian, la cual es una de la mejor y más estables opciones dentro del mundo linuxero (y mi preferida sin lugar a dudas).

Como mera anécdota, Debian debe su nombre a que Ian (su desarrollador) unió su nombre al de la novia que tenía en aquel entonces llamada Debra, y de allí nació en 1993 Deb-Ian, curioso la verdad.

 

Arrancando la Raspberry Pi 4 desde USB

Volviendo al tema que nos atañe, y gracias a tynic, ahora podemos hacer que nuestro arranque esté disponible directamente desde cualquier puerto USB de nuestra querida Raspberry Pi.

No obstante esta solución actualmente se encuentra disponible en modo “beta”. Quizá no quieras (o debas) utilizarla en alguna Raspberry Pi que utilices en producción. Aunque bueno, se podría afirmar que una SDCard tampoco es que sea algo adecuado para utilizar como disco duro en cualquier tipo de servidor que se precie, así que queda a tu elección.

La clara ventaja que podremos observar a primera vista será la velocidad. Un disco duro SSD es aproximadamente unas 10 veces más veloz que una SDCard. Si a eso le sumamos un sistema operativo de 64bits, la diferencia en términos de velocidad será notable.

 

Componentes necesarios

Por aquí os dejo algunos de los componentes que aparecen en el artículo. Son enlaces de afiliados a diferentes marketplaces, así que si los utilizas nos quedará una pequeña comisión y estarás ayudando a apoyar el proyecto 3DWork.io.

Raspberry Pi 4 (4GB)
Tarjeta MicroSD + Lector
Fuente alimentación 3A
Carcasa (recomendable)
Samsung 860 EVO 500GB 2.5″ SSD
ELUTENG USB3 SATA Adapter 2.5″

 

PASO 1: Actualizando el firmware de arranque

Antes de comenzar a configurar nuestra Raspberry Pi 4 para que arranque desde USB, precisamos tenerla actualizada con los últimos paquetes disponibles y reiniciarla. Para tal efecto, deberás ejecutar los siguientes comandos:

sudo apt-get update
sudo apt-get upgrade -y
sudo rpi-update 
sudo reboot

Tras asegurarnos que la Raspberry Pi 4 ha reiniciado correctamente, procederemos a instalar un paquete que nos permitirá actualizar el gestor de arranque. La última versión de Raspbian Buster ya trae este paquete, no obstante nos cercioraremos poniendo las siguientes líneas en la consola:

sudo apt install rpi-eeprom -y

Ahora ejecutaremos este otro comando para indicarle que vamos a utilizar versiones de firmware beta.

sudo sed -i 's/critical/beta/g' /etc/default/rpi-eeprom-update

Instalamos el nuevo gestor de arranque con este otro comando.

sudo rpi-eeprom-update -d -f /lib/firmware/raspberrypi/bootloader/beta/pieeprom-2020-05-15.bin

Si todo ha ido correctamente se habrá instalado el nuevo gestor y nos habrá aparecido un mensaje indicándonos “EEPROM update pending. Please reboot to apply the update”. Así que procederemos a reiniciar de nuevo nuestro sistema para que se apliquen todos los cambios efectuados con el siguiente comando (ya de sobras conocido).

sudo reboot

En este punto, puedes verificar si todo ha ido correctamente ejecutando los siguientes comandos. El primero de ellos (vcgencmd bootloader_version) te mostrará una fecha más reciente, y el segundo comando (vcgencmd bootloader_config) nos indicará el orden de arranque establecido actualmente.

vcgencmd bootloader_version 
vcgencmd bootloader_config

Si echamos un vistazo a la salida de información del segundo comando, podrás ver un parámetro denominado BOOT_ORDER. Este parámetro, o mejor dicho propiedad, va a definir la secuencia de los diferentes modos de arranque según como estén dispuestos. El gestor utilizará el primer carácter de la derecha y luego seguirá con los siguientes, si es que los hay.

pi@raspberrypi:~ $ vcgencmd bootloader_config

[all]
BOOT_UART=0
WAKE_ON_GPIO=1
POWER_OFF_ON_HALT=0
DHCP_TIMEOUT=45000
DHCP_REQ_TIMEOUT=30000
ENABLE_SELF_UPDATE=1
DISABLE_HDMI=0
SD_BOOT_MAX_RETRIES=1
BOOT_ORDER=0xf41

pi@raspberrypi:~ $

Estos son los modos de arranque disponibles, y se nos permite poner hasta 8 modos en la misma línea:

0x0 – Ninguno (Detiene arranque con patrón de error)
0x1 – SD CARD
0x2 – NETWORK
0x3 – USB device boot (usbboot)
0x4 – USB mass storage boot
0xf – RESTART (bucle) – Empieza de nuevo con el primer campo del orden de arranque

Y como puedes imaginar, aquí está el quid de la cuestión. Ahora en esta linea podrás ver “BOOT_ORDER=0xf41”, y como puedes imaginar lo que sucederá es que primero intentará cargar el sistema operativo desde la SDCARD y si no existe, desde nuestro disco duro.

Por defecto, el valor de BOOT_ORDER es 0x1, pero como hemos actualizado el firmware a la última versión beta “pieeprom-2020-05-15.bin” debería aparecernos ahora 0x41. Esto significa que intentará arrancar desde SDCard y sino encuentra una memoria probará USB Mass Storage (nuestro disco duro).

Si tienes más inquietudes sobre el resto parámetros referentes a la configuración del Bootloader, puedes encontrar la descripción completa en la documentación oficial del proyecto Raspberry Pi en el siguiente enlace.

 

PASO 2: Instalar Raspbian en tu disco SSD (o pendrive)

Ahora el segundo paso que debemos efectuar para arrancar nuestra Raspberry Pi desde USB es instalar el sistema operativo Raspbian en nuestro disco duro SSD o Pendrive, dependiendo de lo que quieras utilizar. Aquí el proceso es similar a como se instala en una SDCard, así que no procederé a detallarlo.

Cuando hayas finalizado la instalación en tu disco duro SSD, montaremos la unidad utilizando estos comandos:

sudo mkdir /mnt/usb
sudo mount /dev/sda1 /mnt/usb

Ahora, con la unidad montada y teniendo acceso a ella, le copiaremos unos archivos necesarios y el proceso de configuración habrá terminado.

sudo cp /boot/*.elf /mnt/usb
sudo cp /boot/*.dat /mnt/usb

Para finalizar, apagaremos nuestra Raspberry Pi con el comando “halt” y extraemos la tarjeta SDCard. Y si todo ha ido correctamente debería funcionar.

sudo halt

 

 

Bueno, espero que este breve mini-tutorial para bootear vuestras Raspberry Pi desde USB haya sido de vuestro agrado. Y no dudéis en agregarnos a nuestras redes sociales (Facebook, Twitter, Instagram) o a nuestro canal de Telegram.

 

Puedes encontrar más artículos interesantes en 3DWork.io en los siguientes enlaces: