Raspberry Pi, nuevo método para almacenar juegos en un disco externo en RetroPie

NES Splashscreen

Hace ya algún tiempo, en la entrada Raspberry Pi, cómo almacenar juegos en un disco externo en RetroPie, os comenté un método para almacenar juegos en una ubicación distinta de la tarjeta SD de la Raspberry Pi. Fue una entrada muy comentada y algunos de vosotros tuvisteis problemas en su ejecución.

Desde el pasado mes de diciembre de 2016, existe un post en el wiki oficial de RetroPie, Running ROMs from a USB drive, donde se especifican dos métodos para llevar a cabo esta operación:

  • Un método automático, el método fácil, que hace uso del servicio usbromservice y que personalmente no recomiendo porque funciona a veces sí y a veces no.
  • Un método manual que funciona a la perfección y que será el que veremos en este nuevo tutorial.

Para explicar el método manual, plantearemos el siguiente escenario: tenemos una unidad externa que queremos usar para almacenar roms y otros usos. 

Vamos a ello …

Paso 1. Formatear la unidad

La unidad de almacenamiento que vamos a utilizar, ya sea un disco duro o una memoria USB, debe estar formateada en FAT32 o NTFS. Si ya tienes la unidad preparada, puedes ir al paso 2 o seguir leyendo y conocer varios métodos para formatear.

Utilizaremos uno de estos dos sistemas de ficheros para poder copiar juegos en la unidad desde cualquier equipo y sistema operativo con facilidad. Mi recomendación es formatear en NTFS, puesto que FAT32 no permite almacenar archivos de más de 4 GB.

  • Formatear en Windows: Usa la opción Formatear que aparece al hacer clic con el botón derecho del ratón sobre la unidad externa. Elige el sistema de archivos y confirma.
  • Formatear en OS X: A través de la Utilidad de discos para formatear en FAT32 o alguna aplicación de terceros como Paragon NTFS for Mac para formatear en NTFS.
  • Formatear en Linux: Si te gusta ver lo que estás haciendo te recomiendo gparted, una herramienta gráfica que te guiará en el proceso de formateo. En caso de que te apasione el uso del terminal, puedes utilizar fdisk.

Paso 2. Copiar la estructura de carpetas de RetroPie

El siguiente paso será copiar la estructura de carpetas de RetroPie para que todo funcione correctamente desde la unidad externa. Es recomendable que este paso lo realicemos sin tener roms instaladas en la tarjeta SD para que el proceso sea lo más rápido posible. Si ya tenemos roms instaladas, café y paciencia … y si son pesadas, más café y más paciencia.

La estructura de carpetas es la que cuelga de /home/pi/RetroPie. En concreto son 4 carpetas: BIOS, retropiemenu, roms y splashscreens.

Podemos conseguir esta estructura de varias formas:

  1. Utilizando el servicio usbromservice.
  2. Copiando las carpetas vía Samba (SMB).
  3. Copiando las carpetas vía FTP.
  4. Copiando las carpetas directamente desde la Raspberry Pi.

Elige la opción con la que te sientas más cómodo, aunque ahora vamos a ver la forma más simple y autónoma, la opción Nº 4. Sólo necesitas un teclado conectado a la Raspberry Pi, arranca RetroPie y cuando estés en la pantalla de menús accede al modo consola pulsando la tecla F4.

Si estás leyendo este tutorial seguramente ya habrás lidiado con el modo consola. Este nos permite ejecutar comandos. Aquí va el primero de ellos:

sudo lsblk -f

Te aparecerá un listado entre los que estará tu disco externo. Lo identificarás rápidamente por el valor de la columna LABEL, que mostrará el nombre que le diste al disco. Para copiar la estructura de carpetas nos interesa el valor de la última columna MOUNTPOINT. Para más adelante, anota también el valor de la columna UUID.

Listado unidades lsblk

A continuación, copia la carpeta RetroPie con el siguiente comando:

cp -rf RetroPie/ /media/usb0/RETROPIE

Como te decía al principio de este paso, si la carpeta está vacía (sin roms), el proceso será muy rápido. En caso contrario, ármate de paciencia y espera un poco.

Una vez finalizado el proceso, comprueba que la estructura de carpetas se ha copiado correctamente con este comando:

ls -l /media/usb0/RETROPIE

Si todo ha ido bien verás las 4 carpetas que se necesitan: BIOS, retropiemenu, roms y splashscreen.

No es necesario que lo hagas, pero si desconectásemos la unidad de la Raspberry Pi y la conectásemos a nuestro equipo principal, esta sería la carpeta RETROPIE que hemos creado:

Carpeta RETROPIE

Paso 3. Modificar el fichero de arranque fstab

El directorio /mnt es la localización por defecto para montar dispositivos externos. Crea una carpeta dentro de este directorio ejecutando este comando:

sudo mkdir /mnt/discojuegos

A continuación vamos a tocar el fichero de arranque de unidades, pero antes haz una copia de seguridad con este comando:

sudo cp /etc/fstab /etc/fstab.original

Ahora sí, edita el fichero:

sudo nano /etc/fstab

Desplázate con las fechas del teclado al final del fichero y añade estas líneas:

UUID=Eluuiddetudisco /mnt/discojuegos ntfs-3g nofail,user,uid=pi,gid=pi 0 0
/mnt/discojuegos/RETROPIE /home/pi/RetroPie none nofail,bind 0 0

¡OJO! Donde pone «Eluuiddetudisco» tienes que poner precisamente eso, el UUID de tu unidad externa:

Archivo fstab

La primera línea monta la unidad en la carpeta que hemos creado en /mnt. La segunda realiza el montaje bind.

¿Y esto del montaje bind qué significa? En lugar de montar una unidad en una carpeta, montamos una carpeta en otra carpeta. Para explicarlo de manera sencilla, se podría decir que estamos haciendo una especie de acceso directo. Si alguno tiene curiosidad por conocer más detalle, en la entrada What is a bind mount? tiene una explicación más técnica y profunda.

Finalmente, guarda los cambios pulsando CTRL+X.

Por si tienes curiosidad, cada una de las línea de este fichero está compuesta por 6 campos, separados por espacios en blanco o tabuladores. De izquierda a derecha:

  1. File System: Partición o dispositivo de almacenamiento para ser montado.
  2. Directorio: Punto de montaje donde la partición será montada.
  3. Tipo:  Sistema de archivos de la partición o dispositivo.
  4. Opciones: Opciones de montaje para el sistema de archivos. En este campo podemos indicar si el sistema se montará con opciones de sólo lectura, lectura-escritura, usuarios que pueden montar la partición (user, uid=pi, gid=pi). En nuestro caso, la opción nofail, permite montar el dispositivo cuando está presente, pero ignora su ausencia.
  5. dump: Se utiliza para realizar una copia de seguridad. Si es 0, el sistema no se respalda.
  6. pass: Utilizado por la herramienta fsck para decidir el orden en que los sistemas de archivos serán comprobados. Admite los valores 0, 1 y 2. El sistema de archivos raíz debe tener la prioridad más alta, es decir, valor 1, y todos los demás sistemas un 2. Si el valor es 0, el sistema de archivos no se comprueba. Si queremos que RetroPie arranque, aunque no esté conectado el disco, debemos ajustar este campo a 0.

Paso 4. Comprobación de paquetes y reinicio

Asegúrate de tener instalado el paquete ntfs-3g. Basta con escribir el nombre del paquete en un terminal y comprobar que el sistema lo reconoce:

ntfs-3g
¡Reinicia y disfruta! … bueno, sólo te falta copiar los juegos, bien conectando el disco externo al ordenador y copiando las roms en la carpeta que corresponda o bien usando FTP o SMB.

Si tienes cualquier duda sobre éste tutorial, o quieres sugerir algún otro, deja tu comentario en esta entrada o contacta conmigo a través de Twitter en mi cuenta personal, en la cuenta de Babuleando o si lo prefieres utiliza el formulario de contacto.

¡Nos leemos!

Imagen del artículo | NES Splashscreen de shadowfax1007