Hace un tiempo que os hice un tutorial en el que os mostraba como arrancar la Pi 4 desde el USB, pero, usando una microSD para el boot, algo que con la 3 no tenía mucho misterio. En la Pi4 desde su lanzamiento era algo que estaba pendiente y, ahora, por fin es viable sin necesidad de que la SD tenga que estar metida.
En mi caso, he puesto un SSD para funcionar con el sistema, pero, después de problemas con algunos conversores SATA-USB económicos, he optado por un base con su alimentación externa y así, parece que no tengo problemas con él. Sobre la instalación, tanto si optáis por Home Assistant como con Raspbian y luego instalar Home Assistant Core, la forma en la que grabar el disco SSD es la misma que si fuera una SD. Yo uso Etcher para grabar y ya está. Los cambios tenemos que hacerlos en la Pi4.
NOTA: El firmware que ha salido para poder hacer el arranque por USB está en beta, por lo que podría dar todavía algunos problemas, yo lo tengo puesto y he arrancado sin problemas. No quita que pudiera dar algún fallo, por lo que copia de seguridad y, sobretodo, bajo vuestra responsabilidad.
Hardware a usar para arrancar con la Raspberry Pi4 desde USB
Como he comentado, he tenido algunos problemas con el disco (y se de algunos que también se han quejado de lo mismo). Los conversores USB-SATA no parecen ir muy finos, por lo que si queréis hacerlo, os recomiendo alguna de estas cosas para evitar problemas:
- Discos duros externos USB SSD: Podéis verlos aquí. Recordad que si solo vais a tener HA y poco más, no necesitaréis mucho espacio. con 16GB ó 32GB es más que suficiente.
- Carcasas USB para disco. Podéis verlas aquí. Si ya tenéis disco podéis optar por alguna de estas.
- En mi caso, tenía en casa un lector grande con alimentación propia y he optado por él. Podéis verlos aquí. Como la alimentación de la Pi4 es normalita, he preferido usar el que tenía que lleva fuente de alimentación externa, tengo pinchado el disco y la Pi al lado. Igual no tenéis mucho hueco vosotros, pero, os digo la opción que he usado yo.
Configurar Raspberry Pi 4 para arrancar por USB sin SD
Cuando empecé el tutorial, esta era la versión que tenía del firmware:
Y la configuración de la Pi4 donde vemos que el arranque es “0x21” (Si no recuerdo mal, lo tengo para que mire primero por red y después SD, vosotros podéis tenerlo diferente):
Lo primero de todo, vamos a actualizar la Pi4 para que nuestro sistema esté actualizado:
sudo apt-get update sudo apt-get upgrade -y sudo rpi-update
Os preguntará para actualizar, a lo que tendréis que contestar “y”.
Cuando le dais a “y” debería actualizar de esta forma:
Una vez hecho eso, reiniciamos:
sudo reboot
Una vez que arranca la Pi4, tenemos que volver a entrar por SSH a ella y lanzamos el comando para actualizar el bootloader:
sudo apt install rpi-eeprom -y
Ahora le diremos que use el firmware beta, que es el que incluye el arranque por USB:
sudo sed -i 's/critical/beta/g' /etc/default/rpi-eeprom-update
Y, finalmente, instalamos el firmware en la Pi4 para que en el siguiente arranque, lo use.
sudo rpi-eeprom-update -d -f /lib/firmware/raspberrypi/bootloader/beta/pieeprom-2020-05-15.bin
La salida de los comandos anteriores debería ser algo así:
Ahora, como nos indica, nos toca reiniciar para que se haga efectiva. Si vuestro sistema es nuevo y tenéis el disco preparado y es el primer arranque, lo pincháis al USB y debería funcionar. Si, por el contrario, tenéis un sistema ya funcionando, seguid leyendo para ver los pasos que he tenido que hacer.
sudo reboot
Una vez que ha reiniciado, podemos comprobar tanto la versión. Ojo, si leeis el tutorial tiempo después de estar publicado, podría apareceros una versión posterior a la de Mayo, pero sería igualmente válido si el BOOT_ORDER es el correcto, ahora debe ser “0xf41” lo que indica que, mira el USB y si no hay nada, mira en la SD. Es decir, que no es excluyente, solo le han dado prioridad al USB, aquí, mi salida:
Actualizar nuestro sistema actual para que no necesite la SD (Si es sistema nuevo, no sigas leyendo)
NOTA: Si tienes el sistema totalmente en la SD, necesitarías hacer más cosas, esta parte del tutorial es para adaptar los que actualmente ya tienen el root en el USB y quieren quitarse la SD. Si queréis un tutorial completo para migrar de SD a USB, ponedlo en los comentarios y lo haré.
Si usasteis el anterior tutorial tenemos algo que cambiar, ya que, para evitar problemas de kernel, era necesario que la partición boot de nuestro sistema siguiera funcionando desde la SD. Ahora, ya no es necesario ya que no tendremos ninguna SD pinchada, por lo que tenemos que copiar lo que ahora hay en /boot a la partición 1 de nuestro disco y posteriormente cambiar el fichero /etc/fstab para montarlo desde el SSD. Para ello, podemos hacerlo así:
sudo mount /dev/sda1 /mnt/
Ahora copiamos el contenido de /boot a la partición:
sudo cp /boot/* /mnt/ -a
Tenemos que mirar los ID de las particiones para poder usar la correcta (ojo, esto cambia en cada sistema, NO copiéis mis números). Para ver los ID ejecutamos:
sudo blkid
Y debe verse algo así:
/dev/sda1: LABEL_FATBOOT="boot" LABEL="boot" UUID="4BBD-D3E7" TYPE="vfat" PARTUUID="d3f1cd9b-01" /dev/sda2: LABEL="rootfs" UUID="45e99191-771b-4e12-a526-0779148892cb" TYPE="ext4" PARTUUID="d3f1cd9b-02"
Y ahora, si miramos nuestro /etc/fstab tenemos que la partición boot no se corresponde a la de /dev/sda1, por lo que tendremos que cambiarla para que sea la correcta y quede algo así:
Debería quedar así:
ahora, salvamos el documento y, ahora apagamos la Raspberry Pi4:
sudo poweroff
Quitamos la alimentación, retiramos la SD y volvemos a alimentar, nos fijaremos en las luces de nuestro SSD a ver si se mueven y, en caso de que no arranque, volveremos a poner la SD, ya que, si no es capaz de arrancar desde el USB, lo debe seguir haciendo desde la SD.
En principio, ya está, no deberíais tener problemas. Antes de publicar lo he hecho con la mía y no he tenido ningún problema. En los reinicios, si queréis quedaros más tranquilos, podéis hacer apagados, quitar corriente y ponerla de nuevo.
Eduardo podías hacer un vídeo tutorial para que se vea mejor todo el conjunto de hardware , software y su ejecución gracias y un saludo