Raspberry Pi 4 desde un disco SSD

Raspberry Pi 4 desde un disco SSD

febrero 8, 2021 Desactivado Por Synaptic

Hoy en día, iniciar la Raspberry Pi 4 a través de una unidad SSD es fácil gracias a su último firmware. Para esto simplemente tenemos que grabar la imagen de Raspbian OS en la unidad de almacenamiento SSD y encender la Raspberry Pi. No obstante detallaremos el procedimiento y que podemos hacer en el caso de que se presente un problema durante el proceso.

Nota: Si la Raspberry Pi no inicia con la unidad SSD, es posible que sea culpa del adaptador SATA – USB. La Raspberry Pi no se lleva bien con algunos tipos de adaptadores, por lo tanto les recomendamos que compren las unidades SSD y gabinetes recomendadas en este artículo.

EQUIPO NECESARIO PARA INICIAR LA RASPBERRY PI 4 VÍA SSD

Se necesitará:

  1. Unidad de almacenamiento SSD. Recomendamos  la compra de la unidad Kingston A400. Es la unidad SSD que en su uso ha funcionado sin complicaciones, es una buena opción relativamente económica.
  2. Un gabinete de disco duro con el correspondiente adaptador de SATA a USB 3.0 o simplemente un adaptador de SATA a USB 3.0. La opción ideal seria comprar un adaptador StarTech USB 3.0 a 2.5″ SATA.

CONFIGURACIÓN PARA INICIAR A TRAVÉS DE LA UNIDAD SSD

Arrancamos la Raspberry Pi a través de la tradicional tarjeta Micro SD. Una vez arrancada actualizan el sistema operativo ejecutando los siguientes comandos de CLI:

sudo apt update
sudo apt full-upgrade

Una vez ejecutada la actualización se recomienda que reinicien el equipo mediante el comando:

sudo reboot

A continuación ejecutamos el siguiente comando para instalar la última versión del firmware y del bootloader. En caso de que ya tengan las últimas versiones, el comando no retornara salida.

~ $ sudo rpi-eeprom-update -d -a
BCM2711 detected
Dedicated VL805 EEPROM detected
BOOTLOADER: up-to-date
CURRENT: jue sep  3 12:11:43 UTC 2020 (1599135103)
 LATEST: jue sep  3 12:11:43 UTC 2020 (1599135103)
 FW DIR: /lib/firmware/raspberrypi/bootloader/critical
VL805: up-to-date
CURRENT: 000138a1
LATEST: 000138a1

Nota: Si vemos la salida del comando podemos confirmar que tenemos instalada la última versión del bootloader y del firmwaer. Si tienes esta versión, o una versión más actual, la Raspberry Pi debe arrancar desde una unidad SSD sin ningún tipo de problema.

Ahora volvemos a reiniciar la Raspberry Pi. Una vez reiniciada tecleamos el siguiente comando en la terminal:

sudo raspi-config

Cuando aparezca el menú de configuración seleccionamos la opción 6 Advanced options

Acceder a la opciones de configuración avanzadas de Raspbian

En la segunda pantalla seleccionamos la opción A6 Boot Order y presionamos ‘Enter’.

Modificar el dispositivo de arranque de la Raspberry

Por último seleccionamos la opción B1 USB Boot y presionamos ‘Enter’. De esta forma, si no hay tarjeta MicroSD insertada en la Raspberry, se intentará arrancar desde la unidad SSD.

Hacer que la Raspberry Pi arranque por el disco duro SSD conectado al puerto USB

GRABAR EL SISTEMA OPERATIVO A LA UNIDAD DE ALMACENAMIENTO SSD

Una vez configurada la Raspberry Pi 4 ya pueden grabar el sistema operativo en la unidad SSD. Lo pueden realizar usando Raspberry Pi Imager siguiendo las instrucciones que les dejo en el siguiente enlace:

Herramienta Raspberry Pi Imager.

Nota: Si pretenden iniciar Raspbian desde una unidad SSD les recomiendo que usen Raspbian OS. Es posible que otras distribuciones den problemas al arrancar desde la unidad SSD. Otro sistema alternativo a Raspbian que debería arrancar desde la unidad SSD es Ubuntu 20.10.

CONECTAR LA UNIDAD DE ALMACENAMIENTO SSD Y ARRANCAR LA RASPBERRY PI

Con el SO grabado en la unidad SSD ha llegado la hora de la verdad. Para arrancar la Raspberry Pi con la unidad SSD seguiremos las siguientes instrucciones:

  1. Apagamos y desconectamos la Raspberry Pi.
  2. Quitamos la tarjeta Micro SD y todos los dispositivos de almacenamiento que tengamos en la Raspberry Pi.
  3. Conectaremos el SSD en la Raspberry Pi. La unidad de almacenamiento SSD la tienes que conectar a los puertos USB 3.0. Los puertos USB 3.0 son de color azul. De esta forma obtendremos mayor rendimiento.
  4. Finalmente arrancaremos la Raspberry Pi.

Si estás usando un adaptador SATA a USB que no genera conflictos con la Raspberry Pi y una unidad de almacenamiento adecuada, todo debería funcionar a la perfección. En el caso que tengan problemas de rendimiento o que la Raspberry no arranque pueden intentar lo siguiente.

Nota: Si queréis arrancar la Raspberry pi con varias unidades de almacenamiento conectadas deberéis indicar el orden de prioridad de arranque en el fichero /etc/fstab. De este modo la Raspberry Pi tendrá claro con el dispositivo de almacenamiento que tiene que realizar el arranque.

¿QUÉ PODEMOS HACER SI LA RASPBERRY PI NO ARRANCA CUANDO CONECTAMOS LA UNIDAD DE ALMACENAMIENTO SSD?

Si la Raspberry no arranca, da problemas o tiene un rendimiento malo posiblemente sea por el adaptador SATA a USB. Si se da el caso una solución es deshabilitar el modo UAS. Deshabilitando el modo UAS o UASP hará que el rendimiento baje, pero aún y así el rendimiento y estabilidad obtenidos seguirá siendo infinitamente superior al de una tarjeta MicroSD.

Para deshabilitar UASP tenemos que encontrar el ID de nuestro adaptador SATA a USB. Para ello conectaremos la unidad SSD a un equipo con Linux o en la Raspberry Pi y ejecutaremos el comando lsusb.

[email protected]:~ $ lsusb
Bus 002 Device 002: ID 0781:5583 SanDisk Corp. Ultra Fit
Bus 002 Device 003: ID 152d:0578 JMicron Technology Corp. / JMicron USA Technology Corp. JMS567 SATA 6Gb/s bridge
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Nota: Para que el comando lsusb funcione tienen que tener instalado el paquete usbutils. Para instalarlo se requiere ejecutar el comando sudo apt install usbutils

Si observan la salida del comando vemos que el ID de nuestro adaptador es 152d:0578. Una vez sabemos el ID accedemos a la partición boot de la unidad de almacenamiento SSD y editamos el archivo cmdline.txt con nuestro editor de textos favorito.

Editar cmdline.txt para deshabilitar UASP

Una vez se abra el editor de textos tenemos que añadir un texto del siguiente tipo en la parte inicial del fichero:

usb-storage.quirks=XXXX:XXXX:u

Donde XXXX:XXXX corresponde al ID de nuestro adaptador SATA a USB. Por lo tanto en mi caso deberé añadir el siguiente código en el archivo cmdline.txt

usb-storage.quirks=152d:0578:u

y el contenido del archivo cmdline.txt quedará del siguiente modo:

cmdline.txt editado para deshabilitar UASP y hacer que la Raspberry Pi pueda arrancar a través del disco SSD

Una vez realizados los cambios guardar y cerrar el editor de textos. A continuación ya pueden arrancar la Raspberry Pi con la unidad de almacenamiento SSD y ver si el problema se ha solucionado.

Nota: Otra solución es comprar un adaptador nuevo.

QUE HACER UNA VEZ HAYAMOS ARRANCADO CON LA UNIDAD DE ALMACENAMIENTO SSD

Una vez la Raspberry Pi arranque con la unidad de almacenamiento SSD les recomiendo que realicen las siguientes comprobaciones.

Comprobar que todo el espacio del disco está disponible

Para comprobar que la totalidad del espacio de la unidad está disponible ejecuten el comando df -h en la terminal. En mi caso los resultados obtenidos son los siguientes:

[email protected]:~ $ df -h
S.ficheros     Tamaño Usados  Disp Uso% Montado en
/dev/root        110G   1,3G  105G   2% /
devtmpfs         1,8G      0  1,8G   0% /dev
tmpfs            1,9G      0  1,9G   0% /dev/shm
tmpfs            1,9G   8,5M  1,9G   1% /run
tmpfs            5,0M   4,0K  5,0M   1% /run/lock
tmpfs            1,9G      0  1,9G   0% /sys/fs/cgroup
/dev/sda1        253M    54M  199M  22% /boot
tmpfs            383M      0  383M   0% /run/user/1000

La partición /boot tiene un tamaño de 253M mientras que la partición / de 110G. Además de los 110G de la partición root 105G están disponibles. Por lo tanto podemos concluir que el total del espacio esta disponible para uso. Así que todo está perfecto.