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:
- Impresora 3D: Guía completa para empezar desde cero en 2020
- Drivers TMC: Guía sobre los mejores drivers y sus tecnologías para impresión 3D
- 6 Trucos para aumentar y mejorar la temperatura de tu cama (heatbed)
- MKS Gen L V1.0 (no originales): Solucionando problemas de inestabilidad en el Hotend
- Marlin Builder: Descargar firmwares preconfigurados ya es posible (Anet, Artillery, AnyCubic, Creality, etc.)
- Maker Ultimate 2: Análisis y funcionamiento de la última impresora de Monoprice
- Guía definitiva de filamentos 3D para tu impresora (propiedades, parámetros, fabricantes, etc.)
El porceso esta solo para la RBP4
Poseo la 3+… sera que soporta
??
Saludos
Hola,
Este sistema es para las Raspberry Pi 4, ya que disponen de una EEPROM donde se reemplaza ahora el código de arranque (y no en el bootcode.bin). Así que entiendo que no te funcionará en una 3+.
Un saludo!