¿Te has visto frustrado, repetidamente, porque tu Raspberry Pi no arranca y te has visto forzado a reisntalar el sistema operativo, como si de un Windows XP se tratase? Si quieres saber cómo arrancar la Raspberry Pi desde un disco externo, quédate.
El problema
Con demasiada frecuencia mi Raspberry Pi deja de funcionar (no arranca) y debo reinstalar el sistema operativo. Me deja «con el culo al aire» en las pruebas que hago y, evidentemente, en los artículos que escribo y que dependen de esas pruebas.
Posibles causas, las hay, ninguna de ellas justificada en mi caso:
- Las SSD tienen una vida útil determinada por los ciclos de lectura y escritura. Usos en que se requiere un continuo registro de logs, aceeso a bases de datos, etc (muchas operaciones de I/O, especialmente escritura), la situación es especialmente gravaosa.
- La falta adecuada de disipación del calor afecta a las SSD, reduciendo su vida útil y, recodemos, la micro SSD está encastrada en la propia placa base.
- Fuentes de alimentación inestables causan corrupción de los datos.
No me encuentro reflejado en ninguno de estos 3 puntos: la Raspberry Pi no la tengo en funcionamiento 24×7 (sólo es para experimentar), está conectada a un SAI con regulador de corriente y no tengo servicios que requieran de un alto volumen de escrituras. Lo dicho… no sé por qué me está ocuriendo.
Qué vamos a hacer y porqué
Vamos a descartar el uso de la micro SD como disco de la Raspberry Pi en favor de uno externo. Éstos tienen una mayor durabilidad, un mejor rendimeinto, y pueden disipar el calor de manera más eficiente.
La Raspberry Pi 3 tiene un límite de corriente en sus puertos USB que puede no ser suficiente para alimentar un SSD externo, por lo que le conviene un suministro de corriente independiente, así que usaré una caja para discos SATA, con salida USB, con su propia fuente de alimentación.

Habilitar USB externo
Partimos de un Raspberry OS instalado desde cero sin interfaz gráfica (o con GUI, lo que tú prefieras). Lo primero que debemos hacer es decirle a la Raspberry Pi es que active su el arranque desde discos USB externos:
- Nos conectamos por SSH a la Raspberry Pi mediante
ssh nombre_usuario_administrador@ip_raspberry
Ejemplo:ssh lolo@192.168.1.250
- Actualizamos toda la distribución y reiniciamos:
sudo apt update
sudo apt full-upgrade
sudo reboot
- Vuelve a ingresar por SSH y escribe
sudo nano /boot/firmware/config.txt
, añade la líneaprogram_usb_boot_mode=1
y guarda el archivo. - Reinicia con
sudo reboot
y vuelve a ingresar por SSH. - Comprobamos que se ha aplicado correctamente la directiva del paso 2, para lo que ejecutaremos la instrucción
vcgencmd otp_dump | grep 17:
que tiene que devolver17:3020000a
Ahora tienes 2 opciones: instalar desde cero el sistema operativo en el SSD externo y arrancar desde él o bien migrar el sistema desde la tarjeta micro SD al disco SSD.
Yo optaré por la opción 2 porque permite proseguir con todo lo que ya tenía instalado y configurado y no tener que empezar desde cero.
Migrar el sistema
Conecta el SSD exteno a uno de los puertos USB de la Raspberry Pi y asegurate de que lo has encendido. Ahora vamos a trasladar el contenido de la micro SD al SSD exteno:
- Ejecuta el comando
lsblk
. Debe aparecer el disco SSD. El que está etiquetado comosda
es el disco SATA SSD (el mío tiene una capacidad de 224GB). El disco etiquetado comommcblk0
es la tarjeta micro SD. - Ejecuta el comando
sudo dd if=/dev/mmcblk0 of=/dev/sda bs=4M status=progress sync
. Este comando copia todo (particiones, sistema, etc.) desde el punto de origen (ìf
) al punto de destinoof
./dev/...
es la ruta en la que Linux expone los dispositivos de hardware como si fueran archivos . Me ha llevado 12 minutos trasladar el contenido de la micro SD de 16GB. - Expandimos la partición del SSD al máximo de su capacidad. Para ello entramos en la configuración de la Raspberry Pi ejecutando
sudo raspi-config
y selccionamos Menú → Advanced Options → Expand Filesystem. Se te enuncia que en el próximo reinicio las partiones tendrán su tamaño máximo posible. - . No. No vamos a reiniciar. Lo que vamos a hacer es parar la Raspberry Pi con
sudo poweroff
y extraer la micro SD. - Arranca la Raspberry Pi, te conectas por SSH, vuelves a ejecutar
lsblk
. Verás que ya sólo aparece el discosda1
, el SSD exteno, con toda su capacidad disponible.




Bonus track
La micro SD puedes guardarla y aprovecharla para experimentos, de manera que no alteres tu nuevo y flamante disco externo. Así, simplemente, arrancando tu Raspberry Pi insertándole la micro SD (y sin conectarle el disco externo), es como si tuvieses otro ordendaor para esos momentos de experimentación, sin riesgo a una mala manipulación de tu «disco del sistema de producción». ¿No es genial?
Conclusión
Si el uso que le vas a dar a la Raspberry Pi es como pequeño servidor 24×7 con servicios críticos de domótica o monitorización -que requieren de muchas escrituras y lecturas-, de red o descarga -que requieren de una gran estabilidad-, etc, te recomiendo que des el salto a un disco extreno, sea de estado sólido o magnético, con su propia fuente de alimentación y, evidentemente, conectado a un SAI.
Trasladar desde tu micro SD a un disco externo su contenido y volver a arrancar la Raspberry Pi desde ese disco es una operación sencilla, rápida y confiable.