Arrancar su Raspberry Pi 3 desde un USB


Como sin duda sabrá , todas las versiones de  Raspberry Pi, por pura cuestión económica y simplicidad,  instalan el sistema operativo en una tarjeta micro-SD y por lo  tanto ese es  el medio desde el que se inicia cualquier Rasberry Pi .
Desgraciadamente   las tarjetas micro-SD , aunque son económicas  y ocupan muy poco espacio, son  relativamente lentas tanto en operaciones de lectura como de escritura de datos , de modo que  cuando el S.O. tiene que hacerlo de forma intensiva, el sistema queda sin responder y aparentemente atascado a causa  precisamente de la baja tasa de transferencia de E/S en las memorias SD.
Como vamos a  ver, afortunadamente , para aumentar muy notablemente el rendimiento ( y de paso la capacidad de almacenamiento ) de la Raspberry Pi ,podemos instalar la partición del sistema operativo en una memoria USB o disco duro externo, pues  no es muy complicado y el aumento de rendimiento es notable.

A partir de abril de 2017  el soporte de arranque desde un dispositivo USB   se ha contemplado  oficialmente en el kernel    del  SO  y por tanto es totalmente apoyado por Raspbery Pi, por lo que  vamos  a ver es este post rápidamente cómo arrancar una  Raspberry Pi desde un almacenamiento USB, como unidad flash o disco duro USB.

Es importante destacar  que hay dos opciones : que  la Raspberry Pi inicie el sistema desde la tarjeta SD, por lo que aunque instalemos el sistema en un dispositivo USB, seguiremos necesitando la tarjeta SD para que contenga al menos la partición de arranque (boot) o  bien que prescinda definitivamente de esta SD.

Como nota aclaratoria, el dispositivo puede ser una memoria flash pero también  un disco duro de 2,5″,  así que en este segundo caso, al tomar la alimentación de  la propia  Raspberry Pi , asegúrese que alimenta  con corriente suficiente esta.

METODO   QUE PRESCINDE DE LA SD

Veamos  en primer lugar  como prescindir de tarjeta  micro- sd, aunque tenga mucho  cuidado pues el método puede ser irreversible.

Primero , como siempre  tendrá que descargar Rasbian , aunque este método funciona con otros sistemas operativos más recientes como OSMC desde  de abril de 2017  donde se  añadió  oficialmente  el soporte de arranque desde un dispositivo USB   en el kernel    del  SO  y por tanto es totalmente apoyado por Raspbery Pi.

 

Ahora vamos a necesitar el software de etcher,  del que hemos hablado en este blog , para escribir la imagen tanto  en nuestra tarjeta SD, como en el  dispositivo de almacenamiento USB.

 

Con todo el software descargado, ahora debe permitir escribir la imagen descargada tanto en la tarjeta SD como en  el dispositivo de almacenamiento USB.

Si no puede detectar el dispositivo de almacenamiento USB asegúrese de comprobar la opción «inseguro» en los ajustes de etcher.

grabador inseguro

PROGRAMAR USB BOOT MODE

Una vez que ambas imágenes hayan sido escritas (tanto en la miscro-sd como en el dispositivo USN)  , tendremos que insertar una línea en nuestro archivo config.txt ubicado en /boot/config.txt

Ahora agregue  el final del archivo   la siguiente  linea   en ambos dispositivos: en la  sdcard y el medio de almacenamiento USB que vaya a usar:

program_usb_boot_mode=1 

Esto establecerá un bit en la memoria OTP (One Time Programmable) en el Raspberry Pi SoC que habilitará el arranque desde un dispositivo de almacenamiento masivo USB,por lo que una vez que se ha ajustado este bit, la tarjeta SD ya no será necesaria.

Tenga en cuenta que cualquier cambio que realice en la OTP es permanente y no se puede deshacer, pero usted todavía será capaz de arrancar desde la tarjeta SD si se inserta y no cambia las operaciones de su Pi.

Ahora que la parte difícil se ha completado, sólo necesitamos arrancar desde la tarjeta sd primero , y a continuación  reiniciar una vez que esté completamente arrancado para asegurarse de que ha escrito el modo de arranque para el Pi.
Después de reiniciar, ahora puede quitar la tarjeta SD y conectar el dispositivo de almacenamiento USB y ya debería arrancar su Raspberry Pi.

Asegúrese eso si , de quitar el código de modo de arranque program_usb_boot_mode=1  de su tarjeta SD  ubicado en el fichero /boot/config.txt  cuando se completan estos pasos anteriores  pues,  puede si introduce nuevamente la sd por  accidente puede que no arranque provocando mas  problemas.

SOLUCIÓN DE PROBLEMAS

Si su Pi no arranca desde el dispositivo de almacenamiento USB, puede comprobar si el modo de arranque se ha escrito ejecutando este comando en el Pi arrancado desde SD

$ vcgencmd otp_dump | grep 17 : 17 : 3020000a

Asegúrese de que se muestra la salida0x302000a . En caso que no sea ésta ,el modo de arranque no se ha escrito correctamente.

También es posible que su dispositivo de almacenamiento USB no sea compatible, de modo que debería probar con otro dispositivo de almacenamiento si es posible.

 

METODO   CON SD

En este método que vamos a describir, la Raspberry Pi se inicia desde la tarjeta SD por lo que aunque instalemos el sistema en un dispositivo USB seguiremos necesitando la tarjeta SD para que contenga al menos la partición de arranque (boot).

 

Primero , como siempre  tendrá que descargar Rasbian , aunque este método funciona con otros sistemas operativos más recientes como OSMC desde  de abril de 2017  donde se  añadió  oficialmente  el soporte de arranque desde un dispositivo USB   en el kernel    del  SO  y por tanto es totalmente apoyado por Raspbery Pi.

 

Ahora vamos a necesitar el software de etcher  para escribir la imagen en el  dispositivo de almacenamiento USB.

 

Con todo el software descargado, ahora debe permitir escribir la imagen descargada  en  el dispositivo de almacenamiento USB.

Si no puede detectar el dispositivo de almacenamiento USB asegúrese de comprobar la opción «inseguro» en los ajustes de etcher.

Una vez que haya terminado, tendremos el dispositivo  USB con dos particiones una de arranque que se ve desde cualquier sistema operativo y otro que es solo visible desde Linux (Raspbian, Ubuntu, …).

Ahora arrancaremos la Raspberry Pi  ( con la sd ) de forma habitual, introduciremos la unidad  USB  en ésta , y bien desde el terminal  o por ssh ejecutamos el comando

dmesg

Este comando ,como puede imaginar, sirve  para   obtener el nombre del usb que hemos conectado, ( normalmente sera   sda o sda2).

Una vez sepamos el nombre de la  unidad  usb, podemos crear la partición  de una forma muy similar  a como lo haríamos desde linea de comandos desde un entorno windows.

De forma sintética, el proceso seria el siguiente bien desde ssh o desde el terminal:

  • Ejecutaremos fdsik   sobre  sda :    sudo fdisk /dev/sda
  • Presionamos p para ver las particiones
  • Después presionamos d para eliminar una partición, y escribimos 2 a continuación.
  • Para  crear la nueva partición, o presionamos n y crearemos la nueva partición,
  • Presionamos p para que sea primaria , y  escribimos 2.
  • Ahora nos preguntará por el primer sector de la unidad extraible , (por ejemplo en caso de  ser una unidad flash de 16GB seria de  12280 ), pulsamos Enter.
  • Pulsaremos Enter en las siguientes preguntas sin necesidad de escribir nada para que tome el valor por defecto.
  • Por ultimo pulsamos w para que se guarden los cambios.

Con esto, ya tendremos el usb preparado, por lo solo nos falta decirle a la Raspberry Pi  donde se encuentra el sistema, para ello vamos a modificar tanto el fichero cmdline.txt   como el fstab para que apunte a nuestro usb en lugar de la sd.

En la Raspberry Pi ejecutamos los siguientes comandos:

  • sudo nano /boot/cmdline.txt 
  • Sustituimos root=/dev/mmcblk0p2( es decir la sd)  por root=/dev/sda2 (por el usb en nuestro caso)
  • Pulsamos Control + O seguido de enter para guardar los cambios
  • Pulsamos  Control+X para salir del editor.
  • Ahora modificaremos el fichero /etc/fstab con el comandos:
    sudo nano /etc/fstab
  • Sustituimos root=/dev/mmcblk0p2 ( es decir la sd) por root=/dev/sda2 (por el usb en nuestro caso)
  • Pulsamos Control + O seguido de enter para guardar los cambios
  • Pulsamos  Control+X para salir del editor.

 

Hechos los cambio mencionados reiniciamos la Raspberry  Pi bien  desde el propio interfaz de Raspbian  o bien desde consola o por ssh ejecutar el comando:

sudo shutdown -r now

Una vez reiniciada la Raspberry Pi, para poder utilizar todo el espacio de nuestro usb, ejecutaremos:

sudo resize2fs /dev/sda2

Cuando haya finalizado la ejecución del comando, podremos comprobar que está todo correcto mirando el tamaño del disco, y donde se encuentra /dev/root .

Para ver el tamaño del disco ejecutaremos el comando:

df -h

Asimismo ,para ver donde se encuentra /dev/root ejecutaremos: ls -la /dev/root y debería aparecernos una flecha hacia la partición de nuestro usb.

Una vez realizado todos estos pasos, Raspbian se encontrará en nuestro usb, notaremos una mejora de velocidad y dispondremos de mas tamaño de disco del que disponíamos con la SD.

Cambio de SD

En caso de querer cambiar la  microSD por  otra mas pequeña  poner  la nueva microSD que vaya   a usar ( por ejemplo muchas personas hablan que con  una de sd de 16MB puede ser suficiente) y   copiar  todos los archivos de la partición de arranque del USB a la SD.

Ahora solo queda hacer un cambio en el archivo: cmdline.txt   y lo editamos para cambiar este texto: root=/dev/mmcblk0p2       por este otro texto: root=/dev/sda2 

Asimismo  modificaremos el fichero /etc/fstab con el comando sudo nano /etc/fstab   y sustituimos root=/dev/mmcblk0p2 ( es decir la sd) por root=/dev/sda2 (por el usb en nuestro caso)

A partir de este punto con la tarjeta SD insertada en la Raspberry Pi y el dispositivo USB conectado a uno de los puertos se iniciará la Pi desde la partición del sistema del dispositivo USB en vez de la tarjeta SD.

Con la partición del sistema instalada en una memoria o disco duro externo siguiendo algunos de los dos  métodos descritos  deberíamos notar un menor tiempo de arranque  y sobre todo  un  aumento de rendimiento considerable debido  a la mejora  en los tiempos de lectura  o escritura puestos  que es  mayor  tasa de transferencia de los dispositivos USB.

Construir una consola retro con clon Raspberry Pi :posibles problemas de instalación


Si  ha seguido  los  sencillos  pasos  que en un post anterior   y  aqui  habra visto  como es posible  de una manera muy sencilla  y gratuita  cargar en una placa que cuente con el chip  H3 / Mali (por ejemplo todas las versiones de Orange Pi o Banana Pi )  una  imagen de Retropie con la mayoría de los núcleos de Libretro encima de una versión de Jessica Desktop de Armbian preinstalada ,incluyendo   ademas  OpenELEC.

Hablamos  por tanto de convertir nuestro clon de Raspberry pi en una consola gracias  a la distribución de juegos y medios basada en Armbian (Debian 8), es decir  Full Armbian 5.23 con versión de escritorio de Jessie con el núcleo 3.4.113 (backdoors fijados) que permite emular   las siguintes maquinas: Nintendo DS, Neo Geo Pocket, Neo Geo, Neo Geo, Neo Geo, Nintendo, Neo Geo, Neo Geo, Neo Geo Pocket Color, PC Engine (TurboGrafx), Playstation 1, Playstation Portable, Sega32x, SegaCD, SG-1000, Super Nintendo, Vectrex, ZxSpectrum, Amiga ,Atari 5200 ,Atari 8bit (modelos 400 800 XL XE) ,Coco / Tandy ,Colecovision ,Creativision ,Daphne (emulador Philips Cdi),Dosbox (versión GLES) y Dreamcast (fijo reicast-joyconfig),OpenMSX (con soporte .dsk) ,PPSSPP ,TI99 / 4A (Texas Instruments) entre otras.

Realmente los pasos para crear  la sd e instalar los juegos de la plataforma que nos interese  no suelen dar problemas , pero  como en casi todo en esta vida, a veces la suerte no esta de nuestro lado y  hay problemas  que nos pueden impedir  cumplir nuestro cometido.

Veamos algunos de los problemas que nos podemos enfrentar en la instalación y puesta en marcha del entrono de RetroPie  en nuestro clon de Raspeberry Pi

Caso  de que no arranque su distribución

En caso de que su placa no parezca arrancar, trate de reformatear su tarjeta SD con SDFormatter 4.0 por Trendy (con ajuste de tamaño )  pruebe con una fuente de alimentación diferente (real 2A) y  otra  sdcard (Original, class10 recomendado), y por último, pero no menos importante, asegúrese de estar conectado al televisor compatible con HDMI 720 (sin adaptadores DVI)

En el primer arranque se instalará automáticamente el sistema,cambiara el tamaño de la tarjeta SD y se reiniciara de nuevo asi que por favor tenga paciencia.

Configuración de  controladores

En el primer arranque de su sistema de archivos se ampliará automáticamente, a continuación, se dará la bienvenida con la siguiente pantalla-este menú configurará los controles de emulación y emuladores RetroArch:

pantalla de bienvenida

Mantenga presionado cualquier botón de su teclado o gamepad y el nombre aparecerá en la parte inferior y luego abrir en un menú de configuración:

Welcomecreengamepadname

Siga las instrucciones en pantalla para configurar su gamepad, si se queda sin botones, simplemente mantenga presionado un botón para omitir cada botón no utilizado.Cuando llegue a OK presione el botón que ha configurado como «A» .

Welcomecreengamepadconfigure

Si desea configurar más de un controlador, puede hacerlo desde el menú de inicio de emulationstation. Para obtener más detalles sobre las configuraciones de controlador manual, consulte esta página aquí .

Vea los siguientes diagramas para referencia:

 

Snes_controller
controlador SNES

Xbox360_controller

Controlador XBox 360

Ps3_controller
Controlador PS3

 Teclas de acceso rápido

Las teclas de acceso rápido le permiten presionar una combinación de botones para acceder a funciones como guardar, cargar y salir de los emuladores.

El siguiente gráfico muestra las combinaciones de teclas de acceso directo predeterminadas. De forma predeterminada, la tecla de acceso directo está seleccionada de modo que significa que mantiene pulsada la tecla select mientras pulsa otro botón para ejecutar un comando.

Tenga en cuenta que las teclas de acceso rápido sólo son específicas para los emuladores basados ​​en retroarch / libretro.

Teclas de acceso rápido Acción
Seleccionar + Inicio Salida
Seleccionar + hombro derecho Salvar
Seleccionar + hombro izquierdo Carga
Seleccionar + Derecha Aumento de ranura de estado de entrada
Seleccionar + Izquierda Disminución de la ranura del estado de entrada
Seleccione + X Menú RGUI
Seleccione + B Reiniciar

Uso de  EmulationStation

Cuando vea EmulationStation por primera vez puede preguntarse por qué no ve sistemas como el SNES o Game Boy- no se preocupe, ellos están instalados en el sistema, las ROM solo necesitan ser agregadas a sus respectivas carpetas de ROM antes de que se vuelvan visibles

Los emuladores ya están instalados , pero sólo aparecen en EmulationStation cuando se agregan roms.

Para agregar ROMs, simplemente coloque los archivos en la carpeta / home / pi / RetroPie / roms / $ CONSOLE, donde $ CONSOLE es el nombre de la consola de destino, por ejemplo, snes o arcade.
Puede iniciar Desktop desde EmulationStation y conectar una unidad USB con sus ROMs. Las carpetas de Roms también son partes de samba.

primer arranque

Gestión de la tarjeta SD

RetroPie se construye sobre Raspbian (un sistema operativo Linux para el Raspberry Pi) y como tal la partición en la tarjeta SD es EXT4 (un sistema de archivos linux) que no es visible en los sistemas Windows, por lo que la tarjeta se mostrará como un Tamaño más pequeño que de costumbre y usted no será capaz de ver todo en la tarjeta, pero todo está allí. Podrá acceder al sistema de archivos a través de la red por smb  o bien usando cualquier utilidad de sftp.

Transferencia de Roms

Debido a la naturaleza / complejidad de la Ley de Derechos de Propiedad Intelectual / Propiedad Intelectual, que difiere significativamente de País a País, los ROM no pueden ser provistos con RetroPie y deben ser proporcionados por el usuario. Teóricamente sólo debería  tener ROMs de juegos que posee o haya poseído en alguna ocasión .

Hay tres métodos principales de transferencia de roms  (USB,SFTP y SMB):

 1-USB

Asegúrese de que su USB esté formateado a FAT32 o NTFS

      • Primero cree una carpeta llamada retropie en su memoria USB
      • Enchúfelo en el pi y espere a que termine de parpadear
      • Sacar el USB y conectarlo a una computadora
      • Agregue las roms a sus respectivas carpetas (en la carpeta retropie/roms )
      • Vuelva a enchufarlo en la frambuesa pi
      • Espere a que termine de parpadear
      • Refresque emulationstation eligiendo reiniciar emulationstation desde el menú de inicio

Vea este video como referencia:

 

 2- SFTP

Es necesario habilitar SSH para que SFTP funcione.  A partir de RetroPie 4.2, para mantener la imagen predeterminada segura, SSH se desactiva de forma predeterminada, pero se puede volver a habilitar en raspi-config :

sudo raspi-config

Opciones de interfaz >> SSH >> Habilitar >> reiniciar tu pi

Necesitara  que ambos PC y placa estén conectados  por  cable Ethernet

.Hay muchos programas de SFTP por ahí, para las ventanas muchas personas utilizan WinSCP para mac se puede utilizar algo como Cyberduck

Winscp

En el caso de  la Orange Pi , Usuario: root y  contraseña predeterminada: orangepi

 3-Smb

En una red   Windows  simplemente busque la unidad de red  \RETRORANGEPI\roms en el explorador  de  su pc

También puede reemplazar retrorangepie con la dirección IP de su placa

rom2

En caso de MAC OS X, seleccione el menú «Ir» y «Conectar al servidor».Escriba smb://retroorangepi y pulse «Conectar».

Personalización vía shell

Se  pueden ejecutar comandos en nuestra distribución de Retropie  como en cualquier otra distribución basada en Linux

Debido a la configuración personalizada, no ejecute ‘sudo apt-get upgrade’ pues puede romper algunas cosas.

A continuación algunas comandos básicos ;

Reiniciar:sudo reboot

Apagar: sudo shutdown -h now

Cambio de directorio cd /path/to/directory

Lista de archivos en el directorio actual ls

Retropie Script de instalación: sudo /home/pi/RetroPie-Setup/retropie_setup.sh

Editar archivos con Nano: sudo nano /path/to/file.txt

Cambio de propietario a Pi: sudo chown pi:pi filetobechanged

Cambiar el propietario de la carpeta y todos los archivos de la carpeta a Pi: sudo chown -R pi:pi /folder/to/be/changed

Hacer script de shell ejecutable:sudo chmod +x yourshellscript.sh

Volver a  la interfaz: exit