bootlin (empresa especializada em Linux para sistemas embarcados), tornou conhecido vários dias atrás lançamento do Snagboot, projetado para restaurar e atualizar dispositivos incorporados que pararam de inicializar, por exemplo, devido a corrupção de firmware.
snagboot Nasce porque a maioria das plataformas embarcadas fornecem interfaces USB ou UART para recuperação e transferência de imagens de inicialização em caso de corrupção de firmware, mas essas interfaces são específico para cada plataforma e exigem o uso de utilitários de recuperação associados a produtos de fabricantes individuais.
Para resolver esse problema, a Bootlin tem o prazer de lançar hoje uma nova ferramenta de recuperação e atualização, chamada Snagboot , que pretende ser um substituto genérico e de código aberto para as ferramentas específicas do fornecedor mencionadas acima.
Sobre o Snagboot
Snagboot atua como um análogo de utilitários especializados, principalmente proprietários, para restaurar e atualizar dispositivos, como STM32CubeProgrammer, SAM-BA ISP, UUU e sunxi-fel.
snagboot foi projetado para funcionar com uma ampla variedade de placas e dispositivos incorporados, o que elimina a necessidade de desenvolvedores de sistemas embarcados aprenderem os prós e contras do uso de diferentes utilitários.
Por exemplo, a primeira versão do snagboot pode ser usada para recuperar dispositivos baseados em ST STM32MP1, Microchip SAMA5, NXP i.MX6/7/8, Texas Instruments AM335x, Allwinner SUNXI e Texas Instruments AM62x SoC.
Existem algumas ferramentas que aproveitam essa funcionalidade para oferecer recuperação e atualização rápidas via USB, como STM32CubeProgrammer , SAM-BA ou UUU . No entanto, essas ferramentas são todas específicas do fornecedor, o que significa que os desenvolvedores que trabalham em vários tipos de plataformas precisam alternar entre diferentes ferramentas e aprender como usar cada uma delas.
É mencionado que o Snagboot inclui dois utilitários para baixar e atualizar:
- Snagrecover- Usa mecanismos de código ROM específicos do fornecedor para inicializar a RAM externa e executar o gerenciador de inicialização U-Boot sem alterar o conteúdo da memória permanente.
- flash instantâneo- Interage com um U-Boot em execução para atualizar uma imagem do sistema para memória não volátil usando DFU (atualização de firmware do dispositivo), UMS (armazenamento em massa USB) ou Fastboot.
Para os interessados em para saber mais sobre issoSaiba que o código do Snagboot é escrito em Python e tem código aberto sob a licença GPLv2.
Como instalar o Snagboot no Linux?
Para aqueles interessados em instalar o Snagboot em seu sistema, eles devem saber que Você pode fazer isso facilmente. Eles devem instalar apenas as dependências necessárias para não ter problemas posteriormente.
O primeiro é o libhidapi que pode ser instalado da seguinte maneira (dependendo da sua distribuição). Eles só têm que abrir um terminal e nele vão digitar:
Debian / Ubuntu
sudo apt install libhidapi-hidraw0
Ou você também pode instalar:
sudo apt install libhidapi-libusb0
Arch Linux (embora também possa ser instalado a partir do AUR, veja o comando de instalação abaixo)
sudo pacman -S hidapi
RHEL/Fedora
sudo dnf -y install hidapi
Feito isso, basta instalar o Snagboot com pip e para isso, basta digitar o seguinte comando:
python3 -m pip install --user snagboot
Por fim, teremos apenas que adicionar as regras do udev para que o snagrecover tenha acesso de leitura e gravação aos dispositivos USB dos SoCs de destino:
snagrecover --udev > 80-snagboot.rules
sudo cp 80-snagboot.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm trigger
E pronto com isso você pode começar a trabalhar com esta ferramenta. No caso de usuários do Arch Linux, como mencionado anteriormente, a ferramenta pode ser instalada diretamente do AUR e para isso basta ter o repositório habilitado e ter um assistente do AUR instalado.
O comando para instalar a ferramenta é:
yay -S snagboot
Por último, mas não menos importante, para aqueles que preferem compilar por conta própria, basta executar o seguinte:
clone do git https://github.com/bootlin/snagboot.git
cd snagboot
./install.sh
Relativamente aos manuais e instruções de utilização, pode consultar toda esta informação no seguinte link.