Snagboot es una herramienta de recuperaciĂ³n open source
Bootlin (una empresa especializada en Linux para sistemas integrados), dio a conocer hace ya varios dĂas el lanzamiento de Snagboot, diseñado para restaurar y flashear dispositivos integrados que han dejado de arrancar, por ejemplo, debido a la corrupciĂ³n del firmware.
Snagboot nace debido a que la mayorĂa de las plataformas integradas proporcionan interfaces USB o UART para la recuperaciĂ³n y la transferencia de imĂ¡genes de arranque en caso de corrupciĂ³n del firmware, pero estas interfaces son especĂficas de cada plataforma y requieren el uso de utilidades de recuperaciĂ³n asociadas con productos de fabricantes individuales.
Para abordar este problema, Bootlin se complace en lanzar hoy una nueva herramienta de recuperaciĂ³n y actualizaciĂ³n, llamada Snagboot , que pretende ser un reemplazo genĂ©rico y de cĂ³digo abierto de las herramientas especĂficas del proveedor mencionadas anteriormente.
Sobre Snagboot
Snagboot actĂºa como un anĂ¡logo de utilidades especializadas, en su mayorĂa propietarias, para restaurar y actualizar dispositivos, como STM32CubeProgrammer, SAM-BA ISP, UUU y sunxi-fel.
Snagboot estĂ¡ diseñado para funcionar con una amplia gama de placas y dispositivos integrados, lo que elimina la necesidad de que los desarrolladores de sistemas integrados aprendan los detalles del uso de diferentes utilidades.
Por ejemplo, la primera versiĂ³n de snagboot se puede usar para recuperar dispositivos basados ​​en ST STM32MP1, Microchip SAMA5, NXP i.MX6/7/8, Texas Instruments AM335x, Allwinner SUNXI y Texas Instruments AM62x SoC.
Existen algunas herramientas que aprovechan esta funcionalidad para ofrecer una recuperaciĂ³n y actualizaciĂ³n rĂ¡pidas a travĂ©s de USB, como STM32CubeProgrammer , SAM-BA o UUU . Sin embargo, estas herramientas son todas especĂficas del proveedor, lo que significa que los desarrolladores que trabajan en varios tipos de plataformas tienen que cambiar entre diferentes herramientas y aprender a usar cada una.
Se menciona que Snagboot incluye dos utilidades para descargar y actualizar:
- snagrecover: utiliza mecanismos de cĂ³digo ROM especĂficos del proveedor para inicializar la RAM externa y ejecutar el cargador de arranque U-Boot sin cambiar el contenido de la memoria permanente.
- snagflash: interactĂºa con un U-Boot en ejecuciĂ³n para flashear una imagen del sistema en una memoria no volĂ¡til mediante DFU (ActualizaciĂ³n de firmware del dispositivo), UMS (Almacenamiento masivo USB) o Fastboot.
Para los interesados en poder conocer mĂ¡s al respecto, deben saber que el cĂ³digo de Snagboot estĂ¡ escrito en Python y es de cĂ³digo abierto bajo la licencia GPLv2.
¿Como instalar Snagboot en Linux?
Para los interesados en poder instalar Snagboot en su sistema, deben saber que pueden hacerlo de una forma bastante sencilla, solo deben de instalar las dependencias necesarias para no tener problemas posteriormente.
La primera de ellas es libhidapi la cual se puede instalar de la siguiente forma (dependiendo de tu distribuciĂ³n). Solo deben de abrir una terminal y en ella van a teclear:
Debian/Ubuntu
sudo apt install libhidapi-hidraw0
O tambien pueden instalar:
sudo apt install libhidapi-libusb0
Arch Linux (aunque tambien se puede instalar desde AUR, ver mĂ¡s adelante el comando de instalaciĂ³n)
sudo pacman -S hidapi
RHEL/Fedora
sudo dnf -y install hidapi
Hecho esto, ya solo basta con instalar Snagboot con pip y para ello basta con teclear el siguiente comando:
python3 -m pip install --user snagboot
Finalmente, solo tendremos que añadir las reglas udev para que snagrecover tenga acceso de lectura y escritura a los dispositivos USB de los SoC de destino:
snagrecover --udev > 80-snagboot.rules
sudo cp 80-snagboot.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm trigger
Y listo con ello ya puedes comenzar a trabajar con esta herramienta. Para el caso de los usuarios de Arch Linux como se menciono antes, se puede instalar la herramienta directamente desde AUR y para ello solo deben de contar con el repositorio habilitado y tener un asistente de AUR instalado.
El comando para instalar la herramienta es:
yay -S snagboot
Por ultimo y no menos importante, para aquellos que prefieren realizar la compilaciĂ³n por su cuenta basta con ejecutar lo siguiente:
git clone https://github.com/bootlin/snagboot.git
cd snagboot
./install.sh
Por la parte de los manuales e instrucciones de uso, pueden consultar toda esta informaciĂ³n en el siguiente enlace.