Tutorial: Arrancar la Raspberry Pi 4 desde USB

Domótica Tutoriales

ACTUALIZACIÓN: He publicado un nuevo tutorial para poder arrancar la Raspberry Pi 4 desde el USB sin necesidad de microSD. Os aviso antes de que os enfrasquéis con este tutorial.

Aunque actualmente (al menos mientras escribo el tutorial) no se puede arrancar la Raspberry Pi 4 desde USB, hay una manera de hacer un arranque híbrido para que el sistema corra desde el USB. Después del primer contacto con la Raspberry Pi 4, es hora de ponerla en marcha.

En la Raspberry Pi 3 si que se puede hacer el arranque total con modificar el config.txt que se encuentra en /boot y poniendo “program_usb_boot_mode=1”. De esta forma, se escribe ne la memoria de la Raspberry y permite el arranque desde USB como principal (si no tiene USB que arranque, la microSD seguiría siendo la siguiente opción). El problema es que si hacéis esto mismo en la Raspberry Pi 4, os contestará “000008b0” cuando comprobéis si lo ha hecho en lugar de “3020000a”.

Este problema es debido a que no está soportado todavía por el firmware de la Pi 4, aunque, está puesto que junto a PXE serán añadidos próximamente, por lo que antes de hacer el tutorial, si ves que tiene tiempo, revisa porque igual es innecesario hacerlo de esta forma.

Funcionamiento para arrancar desde el USB la Raspberry Pi 4

Para comenzar, voy a explicar lo que hace esta manera de arrancar para entender lo que se está haciendo y posteriormente, cuando sea posible, se podrá cambiar a todo USB sin mucho esfuerzo. Estos son los pasos:

  • Grabaremos una microSD con Raspbian (nos crea particiones boot y roofs)
  • Grabaremos un SSD con Raspbian (también nos creará las particiones boot y rootfs)
  • Arrancaremos con la microSD y prepararemos la partición rootfs del SSD.
  • Cambiaremos en la partición boot de la microSD que el sistema es la partición rootfs del SSD en lugar de el de la propia microSD
  • Dentro de rootfs del SSD le diremos que el boot será el de la microSD en lugar de el SSD.
  • Es decir, usaremos el boot de la microSD (para que arranque) mientras que el rootfs será el del SSD

De esta forma (un poco liosa) solo necesita usar la microSD al principio en el arranque, pero una vez que el sistema se lanza, el resto ya corre desde el SSD por lo que ganamos en velocidad y en estabilidad, ya que las microSD se corrompen más y, sobretodo, cuando tengamos un Home Assistant con un log grande, acelerará ver dichos datos. Vamos a empezar con el paso a paso.

Compras necesarias

Si no tenéis un SSD, el adaptador USB-SATA o la microSD, podéis conseguirlos de los siguientes enlaces:

  • Disco SSD 60GB aquí.
  • Adaptador SATA – USB aquí.
  • MicroSD aquí.
  • Por supuesto, si no tenéis Raspberry Pi 4, podéis conseguir de aquí, aquí o aquí.

Si vuestra idea es solo usar Home Assistant no necesitáis mucho espacio.

Grabamos Raspbian tanto en la SD como en el SSD

Para este paso, tendréis que bajar la iso de Raspbian de aquí (o el sistema que queráis) y para grabar, suelo usar, etcher que podéis descargar de aquí. Abrimos etcher, seleccionamos la iso de raspbian, nuestra microSD o bien el SSD y debe quedar algo así:

raspberry pi 4 usb ssd

Y cuando termine, nos dirá algo así:

raspberry pi 4 usb ssd

Una vez que tenemos grabado los dos, metemos la microSD, montamos la partición boot (en Windows será la única que veremos) y creamos un fichero vacío dentro que se llame ssh. De esta forma, nos aseguramos que Raspbian arranca el servidor SSH para poder trabajar por red.

Ahora, conectamos el cable de red (si no tenéis cable de red, tendréis que conectar un teclado y monitor a la Pi y trabajar en local), ponemos la microSD y arrancamos la Pi 4. Después de unos segundos, podréis mirar en vuestro router para ver la IP que tiene para acceder por ssh (en windows podéis usar Putty).

Usuario por defecto “pi” y contraseña “raspberry”

Una vez dentro, comenzamos con lo siguiente.

Preparamos el SSD

Conectamos el SSD a la Raspberry (en mi caso no me ha funcionado bien en los puertos USB 3.0, por lo que lo puse en el USB 2.0).

Lo primero que tenemos que hacer es redimensionar la partición que será el root, ya que, nos cambia el identificador y no arrancará el sistema si lo hacemos a posteriori. Para ello, podemos hacerlo en la propia Raspberry con el comando “parted” o con “gparted” si estáis en un PC de escritorio.

Ejecutamos:

parted /dev/sda

Una vez que arranca escribimos:

print

Debemos ver las dos particiones:

raspberry pi 4 usb ssd

Ahora escribimos:

resizepart

Nos pedirá la partición que queremos redimensionar, hay que elegir la que es de tipo ext4, en mi caso, pondría el 2. Ahora nos pide el tamaño, en la foto, como veis, aparece que el disco /dev/sda es de 60.0GB, por lo que en tamaño elegiría 60000 y pulsamos enter.

Si volvemos a escribir print, veremos que ahora la partición ocupa los 60GB o el tamaño de vuestro SSD. Escribimos quit para salir del parted y ahora tocaría hacer:

resize2fs /dev/sda2

Puede ser que nos pida hacer antes un fsck.ext4, en tal caso, copiáis la linea tal cual dice que tenéis que ejecutar, la ejecutáis y volvéis a lanzar la linea anterior.

Ahora, deberíamos tener la partición rootfs del máximo espacio, por lo que ya solo queda adaptar el sistema para que monte las particiones como se debe.

Configurando las particiones

Montamos la partición del boot del SSD:

sudo mount /dev/sda1 /mnt

Ahora, creamos el fichero ssh para que el sistema arranque con el ssh activado:

sudo touch /mnt/ssh

Vamos a hacer una copia del boot original de la microSD para poder restaurarlo en caso de que el sistema no arranque:

sudo cp /boot /home/pi -a

Vamos a eliminar el script de redimensionado, editamos el fichero cmdline.txt:

sudo nano /mnt/cmdline.txt

Y debemos dejar la linea que aparece eliminando solo la parte final:

dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=c47f6ac5-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet init=/usr/lib/raspi-config/init_resize.sh

a esto (dejando un espacio al final de la última letra):

dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=c47f6ac5-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet

Y ahora copiaremos el boot del ssd a la microsd:

sudo cp /mnt/* /boot/ -a

Comprobamos que tenemos el fichero ssh dentro de /boot :

sudo ls /boot/

y en caso de que si, reiniciamos:

sudo reboot

Ahora el sistema debería arrancar desde el SSD, pica en la microSD pero comienza el arranque del sistema desde el disco. Si vuestro router le asigna la misma IP, os dará un error de seguridad la key de ssh porque el sistema es otro, habrá que borrar la key. Si no le da la misma key, habrá que buscar en nuestro router la nueva.

Una vez dentro de nuevo, ya solo nos queda un paso, hacer que la partición de boot sea la de la microSD en lugar de la del SSD ya que, es desde donde empieza la Raspberry a leer, para eso ejecutamos:

sudo blkid

Nos debe mostrar la salida tal que así:

raspberry pi 4 ssd

necesitamos coger la partición boot de la microSD (mmcblk0p1) y copiamos el PARTUUID, en la salida de antes, c47f6ac5-01. Ahora, con ese número copiado, editamos el fichero /etc/fstab y tenemos que cambiar el PARTUUID que está en la primera linea (asignada a /boot) por el que hemos copiado.

Guardamos el fichero y reiniciamos.

Ahora, ya debemos tener el arranque correcto y desde el SSD y montando el /boot de la microSD para posibles actualizaciones del kernel.

El tutorial es un poco largo y seguramente se me ha podido escapar algo, por lo que fallos que encontréis, podéis avisarlo en los comentarios o en el grupo de domótica de Telegram.

¿Quieres montarte tu propio sistema Smart Home?

¿Te gustaría empezar poco a poco teniendo Google Home, Alexa o Home Assistant para controlar las luces, calefacción y otros electrodomésticos de la casa? ¡Te ayudamos! Entra en nuestro Grupo de Telégram de Domótica y también puedes entrar a nuestro Foro de Domótica donde podrás empezar a leer y preguntar tus dudas. Además, si quieres estar al tanto de las ofertas de domótica que salen a diario para poder hacerte un sistema de domótica low cost, entra a nuestro Canal de ofertas de domótica y no te perderás ni una o si lo prefieres y no tienes Telegram, puedes entrar a nuestra página de ofertas de domótica o Smart Home en Facebook. ¡Síguenos también en nuestro Facebook, Twitter o Instagram! ¡Te esperamos!

Si también buscas otro tipo de ofertas, puedes echar un ojo a nuestros otros canales:
* Tecnología en general *
* Juguetes / consolas / Juegos de mesa *
* Manualidades *
Si no tienes Telegram puedes consultar todas las ofertas en Megabazar.es

8 Comentarios

  1. jandrop

    Si instalas berryboot en la microsd que es copiar y pegar todos los ficheros puedes arrancar e instalar múltiples sistemas operativos en un disco externo usb. Esta bastante guay.

    Reply
    • eduardo

      No lo conocía, gracias por la info!

      Reply
  2. David

    Genial! Gracias por la guia!
    Un apunte: Algunas versiones de diskpart en las raspberrys tienen un bug que hace que la partición redimensionada tenga el mismo UUID que la partición primaria de la SD, lo cual luego es un problema para establecer la partición de arranque.
    Despues del parted recomiendo hacer un blkid y, si la SD y el SSD tienen el mismo ID, cambiar el del SSD con fdisk antes de seguir.

    Reply

Contestar

Tu e-mail no será publicadoRequired fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*


El periodo de verificación de reCAPTCHA ha caducado. Por favor, recarga la página.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Lost Password

Registro