Portada! How-to: Utilizando un SSD para tu Raspberry Pi (Parte 3/2)

unreal4u

I solve problems.
Miembro del Equipo
ADMIN
articulo03.png


Si no ha leído las partes previas, pase a leer parte 1 y parte 2.

Originalmente esta iba a ser una guía de sólo dos partes, pero después de darme una palmaditas en la espalda luego de haber publicado la segunda parte, decidí relajar la mente, y nada mejor que perder el tiempo que YouTube. Grave error. El primer video que me salió en la lista de recomendados fue el siguiente, pero en versión thumbnail:

Screenshot_2020-05-22_02-16-50.png

Luego de exclamar fuertemente "Me tai webeando?!?!?!?" ya que se demoraron casi 1 año en sacar este update justo justo un par de días después de aburrirme de esperar y aplicar el método viejo no más, me puse a ver el video (click en la foto) y la verdad es que las instrucciones eran bastante simples, así que decidí tirarme al agua no más. Eso sí, esta funcionalidad aún está en beta, así que implementen esto a riesgo propio.

Capítulo 8: Actualizando la EEPROM

La Raspberry Pi 4 cambió bastante la forma en que funciona el bootloader y otras warifaifas: mientras que las ediciones previas a la 4 tenían una ROM (memoria de sólo lectura no programable) y ocupaban un simple archivo llamado bootcode.bin en /boot para cargar el bootloader, la complejidad en la arquitectura de la Raspberry Pi 4 hizo que esta ya no fuera una solución viable, era necesario introducir tal como en un PC de escritorio un EEPROM: un área de memoria no volátil (en el caso de la Raspberry Pi 4 de 512 KB) que es de sólo lectura, pero que es electrónicamente borrable, haciendo que esta se puede actualizar o cambiar según sea necesario.

En fin, no los quiero aburrir mucho con el barniz teórico que representa todo el tema de cómo funciona un bootloader en un PC, pero si tienen más preguntas, tienen dos opciones:
  • Pueden leer el siguiente artículo, y si están interesados en cómo funciona el tema específicamente en la Raspberry Pi 4, este otro documento los podrá ayudar más. Si son realmente hardcore, este thread los podrá ayudar mucho más allá.
  • Pueden dejar su comentario abajo y así todos aprendemos más.

Los pasos a seguir son:
  • Asegúrense de estar actualizados mediante sudo apt update;sudo apt upgrade;sudo rpi-update
  • Después de reiniciar, instalen rpi-eeprom: sudo apt install rpi-eeprom
  • Ajusten la configuración para que tome la última beta en vez de sólo updates críticos, en /etc/default/rpi-eeprom-update, cambien el valor de critical a beta
  • Ahora viene la parte interesante: sobreescribir la EEPROM. Esto se hace mediante el siguiente comando: sudo rpi-eeprom-update -d -f /lib/firmware/raspberrypi/bootloader/beta/pieeprom-2020-05-15.bin
  • Otro reinicio
  • Después de este reinicio podemos verificar que estamos corriendo el nuevo bootloader mediante vcgencmd bootloader_version. Este deberá decir que es de al menos el 15 de mayo del 2020.
  • También deberemos verificar que la configuración es la adecuada: al ejecutar vcgencmd bootloader_config nos deberemos fijar en la constante BOOT_ORDER, este debería decir 0x41. Qué significa esto? Pues es el order de booteo: 1 corresponde al slot MicroSD y será la primera en probarse. Cuando no esté, se intentará la siguiente opción, 4 que corresponde a los puertos USB. También hay otras opciones que corresponden a PXE (2) y usbboot (que sería el 3).
    Actualizar los archivos en la partición /boot: para esto ejecutaremos lo siguiente (cambiar las rutas a lo que corresponde en su sistema local): rsync -av /boot/*.elf /media/pi/boot && rsync -av /boot/*.dat /media/pi/boot
  • Ahora viene la hora de la verdad: sudo shutdown -P now
  • Sacar la tarjeta MicroSD
  • Profit!

Capítulo 9: El aftermath

Excepto... no fue profit para mi lamentablemente. Cuando booteó, me saludó el siguiente mensaje de error:

IMG_7089.JPG


Me tomó una buena media hora averiguar de qué se trataba este error, pero la pista estaba ahí mismo: sucede que si leyeron bien la segunda parte de mi aventura, podrán leer que tuve que; en un determinado momento; cambié el PARTUUID del SSD. Acto seguido, tuve que editar /etc/fstab y aquí es donde está el problema: no había editado esta entrada, así que lo que pasó fue que el bootloader cargó desde el SSD y en cuanto se inicia Linux (Raspbian en este caso), cuando intenta montar las unidades /boot y /, no puede hacer el primero porque todavía estaba apuntando al PARTUUID de la MicroSD.

Esta situación no puede darse cuando uno instala el sistema desde cero o si nunca habías hecho correr el sistema operativo desde el SSD de antes que saliera esta actualización, pero lo menciono por si hay gente que está en la misma situación.

La solución fue bastante simple: metí nuevamente la MicroSD pq no tenía ganas de llevarme el SSD hacia arriba, booteé, cambié la entrada correspondiente en /etc/fstab y lo apagué nuevamente con sudo shutdown -P now. Después de sacar la tarjeta MicroSD nuevamente... EUREKA! Funcionó a la perfección!

Capítulo 10: Benchmark (de nuevo)

Después de ejecutar nuevamente mi benchmark shuper cachilupi:

Código:
sync;\
dd if=/dev/zero of=tempfile bs=1M count=1024; \
sync; \
sudo sysctl -w vm.drop_caches=3; \
dd if=tempfile of=/dev/null bs=1M count=1024; \
rm -f tempfile
Les puedo contar que el promedio me dio una cifra muy parecida: eso si esta vez no hubo throttling así que la escritura promedio me dio 210 MBps y lectura me dio un promedio de 316 MBps: cifras algo más altas que el correspondiente 197 MBps y 310 MBps de la prueba pasada, pero dentro de lo que considero un margen de error normal.

Capítulo 11: Conclusiones (nuevamente)

Estoy muy satisfecho con el resultado: la Raspberry Pi 4 no ha arrugado en cuanto a rendimiento y se siente como un equipo ágil capaz de hacer tareas domésticas sin problema alguno. Tiene obviamente sus pifias y a veces se demoran harto en sacar las actualizaciones que mejoran o incorporan nuevas funcionalidades, pero cumple y en general lo hace bastante bien, aún estando en beta.

Recomendaría esta placa con esta configuración a alguien? Por supuesto! Considerando que se le pueden conectar 2 monitores a 4K, por el precio que salen todas las piezas (fuente de poder de 3A + case + refrigeración pasiva + case para el SSD + el SSD en si mismo) se puede armar un PC de escritorio enano decente a bajo precio: no podrá jugar las últimas chupadas del mate pero hay que recordar que RetroPie lo está haciendo bastante bien también con su distro enfocada a ser una plataforma para poder sacarle el jugo. En su última versión sacada hace apenas algunos días, incluso viene con Steam de forma predeterminada, aunque el soporte para los juegos es bastante chico todavía.

Y es que es esa la gracia de la Raspberry Pi: es tan diverso lo que se puede hacer con él que ahora, con una velocidad decente y un booteo directo desde los puertos USB, sólo se verá ampliada la parrilla de posibilidades con esta máquina.
 
Última modificación:

tglaria

InExperto
Simpático.
Me servirá cuando tenga un Rpi4.
Lo que no me gusta del Rpi4 es que encuentro se dispararon con el consumo.
Si tienes alguna aplicación de bajos requerimientos en que las versiones anteriores bastaban, el consumo de ésta no la hace una buena opción al compararla con la 2 o la 3.

Estoy seguro de haber leído que escribiste que en las versiones anteriores no se podía "bootear" desde usb, asi que busqué dónde salía lo contrario.
Lo pillé, pero ahora no pillo dónde leí eso acá, pero dejo el enlace igual para qie no se pierda.

El caso es que igual se puede bootear en las Rpi 2 y 3 desde usb sin sd.
 

unreal4u

I solve problems.
Miembro del Equipo
ADMIN
Simpático.
Me servirá cuando tenga un Rpi4.
Lo que no me gusta del Rpi4 es que encuentro se dispararon con el consumo.
Si tienes alguna aplicación de bajos requerimientos en que las versiones anteriores bastaban, el consumo de ésta no la hace una buena opción al compararla con la 2 o la 3.

Estoy seguro de haber leído que escribiste que en las versiones anteriores no se podía "bootear" desde usb, asi que busqué dónde salía lo contrario.
Lo pillé, pero ahora no pillo dónde leí eso acá, pero dejo el enlace igual para qie no se pierda.

El caso es que igual se puede bootear en las Rpi 2 y 3 desde usb sin sd.
En unas semanas más saldrá de beta y será oficial, con lo cual un simple sudo apt upgrade bastará :) Una vez hecho eso, como es EEPROM quedará para siempre a menos que hagas un downgrade.

Efectivamente el consumo es mayor, nada que hacerle por ese lado: fue una de las razones por la que se cambiaron a USB-C. En cuanto a booteo de versiones anteriores desde USB, se puede hacer desde años. Capaz que me haya equivocado o que me hayas malentendido, pero así es: esto es sólo para la rpi4, previo a la 4 ya se podía hace años.

Saludos.
 

unreal4u

I solve problems.
Miembro del Equipo
ADMIN
acá tengo el error al tratar de bootear en la SSD



Enviado desde mi LYA-L29 mediante Tapatalk
Estás tratando de bootear con una imagen vieja. Bootea con la MicroSD de nuevo, ejecuta un update + rpi-update, rsync'ea esos archivos al dispositivo del USB y podrás bootear

Saludos.
 
Estás tratando de bootear con una imagen vieja. Bootea con la MicroSD de nuevo, ejecuta un update + rpi-update, rsync'ea esos archivos al dispositivo del USB y podrás bootear

Saludos.
esta todo actualizado, he visto este error en otras páginas igual

Enviado desde mi LYA-L29 mediante Tapatalk
 

unreal4u

I solve problems.
Miembro del Equipo
ADMIN
esta todo actualizado, he visto este error en otras páginas igual

Enviado desde mi LYA-L29 mediante Tapatalk
En ese caso baja los elf y dat directamente del repositorio.

Saludos.
 

xUnk

:D!
aprovechando el post perro, te puedo hacer una consulta no en base al raspberry, si no a sus alternativas, ya que pronto empezaré un proyecto y se necesita usar microcontroladores, entonces las opciones a usar son raspberry o arduino, usando sensor mq y radio frecuencia, tenía pensando en recomendar un rock pi 4 para ser la central que recibe y sube los datos (aprovechando que tiene entrada m.2, poner un nvme de 120 para s.o y bd de respaldo), y 4 (4 puntos cardinales) rock pi s, con breadboard y sus sensores que envian datos a la principal, creo que igual se podría hacer sin breadobard, conexión directa
 

unreal4u

I solve problems.
Miembro del Equipo
ADMIN
aprovechando el post perro, te puedo hacer una consulta no en base al raspberry, si no a sus alternativas, ya que pronto empezaré un proyecto y se necesita usar microcontroladores, entonces las opciones a usar son raspberry o arduino, usando sensor mq y radio frecuencia, tenía pensando en recomendar un rock pi 4 para ser la central que recibe y sube los datos (aprovechando que tiene entrada m.2, poner un nvme de 120 para s.o y bd de respaldo), y 4 (4 puntos cardinales) rock pi s, con breadboard y sus sensores que envian datos a la principal, creo que igual se podría hacer sin breadobard, conexión directa
Nunca he trabajado con los rock pi así que no tengo idea qué tan estables o inestables sean :) Sé que hace hartos años atrás ya, eran bien inestables en cuanto a GPIO, así que tendrías que investigar si ese tema lo solucionaron o no.

Saludos.

PD: De todas formas, los sensores los dejaría con un arduino c/u pq son más simples de mantener y la central puede ser cualquier PC, no necesita ser algo que soporte GPIO si no lo necesitas.
 
Subir