fwupd, a ferramenta por excelência para gerenciar atualizações de firmware em Linux

Logotipo Fwupd.

Foi anunciado recentemente lançamento do fwupd 2.0, uma ferramenta código aberto usado para gerenciar e atualizar o firmware de vários dispositivos no Linux. Sua finalidade é facilitar a instalação e atualização de firmware em hardware sem a necessidade de acessar ferramentas específicas do fabricante ou reinicializar em um sistema operacional diferente.

fwupd usa o serviço de atualização de firmware LVFS (Linux Vendor Firmware Service), onde os fabricantes carregam suas atualizações de firmware. Atualmente, o catálogo LVFS inclui firmware para mais de 1,600 dispositivos de 160 fabricantes.

A utilização de Este diretório centralizado elimina a necessidade dos fabricantes gerarem pacotes específicos para cada distribuição, permitindo-lhes transferir firmware em um arquivo ".cab" que inclui metadados adicionais, semelhante ao que é feito ao publicar firmware para Windows.

Os Os usuários podem baixar e instalar essas atualizações diretamente de sua distribuição Linux, facilitando um grande número de processos, pois suporta tanto o modo de atualização automática de firmware, quanto a opção de executar a operação após confirmação.

Entre as principais características que se destacam do fwupd, podemos encontrar o seguinte:

  • Suporte para uma ampla gama de dispositivos (UEFI, USB, Thunderbolt, monitores, etc.).
  • Instalação e atualização de firmware sem reiniciar ou sair do ambiente de trabalho.
  • Integração com gerenciador de pacotes e atualizações do sistema.
  • Compatível com muitas distribuições Linux
  • É uma solução conveniente e segura para manter o firmware atualizado
  • É compatível com os gerenciadores de aplicativos GNOME Software e KDE Discover.
  • Não se limitando apenas a sistemas desktop, também é adequado para atualizar firmware em dispositivos como smartphones, tablets, servidores e dispositivos de Internet das Coisas.

O que há de novo no fwupd 2.0?

Nesta nova versão do fwupd 2.0, mudou o processo em segundo plano do uso do gancho GObject do GUsb para acesso direto ao libusb e sysfs. Essa mudança tornou possível mover a emulação do dispositivo para a biblioteca libfwupdplugin e implementar a emulação de atualizações de firmware em dispositivos fictícios hidraw e nvme, semelhante à emulação realizada com dispositivos USB fictícios. Graças a esse recurso, conseguimos realizar testes adicionais que identificam problemas com atualizações que podem surgir após fazer determinadas alterações no fwupd.

Além disso, a biblioteca GUdev, que fornece ligações GObject sobre libudev, foi retirado do local. Em vez disso, o processo fwupd agora cria um soquete netlink para analisar eventos do udev transmitidos através dele. Esta mudança resultou em uma redução significativa no consumo de memória e na carga da CPU tanto na inicialização quanto durante a operação, além de simplificar a incorporação do suporte ueventd, que no futuro permitirá que o fwupd seja compatível com a plataforma Android.

Otimizações foram feitas para reduzir o consumo de memória ao transferir firmware de arquivos para dispositivos; Em vez de copiar o firmware para a memória, agora é usada a transferência por meio de um descritor de arquivo. Também Foi adicionado suporte para uma variedade de novos dispositivos.

Além disso, O suporte para metadados legados e formatos de verificação de firmware foi descontinuado, e utilitários de linha de comando anteriormente obsoletos foram removidos. Também adicionada API para carregar relatórios no gnome-firmware e o sistema de construção agora inclui suporte para a plataforma Darwin.

Por fim, adicionamos a capacidade de exibir uma lista de arquivos ESP no formato JSON (usando o comando fwupdtool esp-list –json) e adicionamos a opção de especificar dispositivos emulados na configuração.

Por fim, se estiver interessado em saber mais sobre o assunto, pode consultar os detalhes no link a seguir

Como instalar o fwupd no Linux?

Para quem tem interesse em instalar o fwupd, saiba que, na maioria das distribuições, ele já vem pré-instalado. Porém, caso não o tenha instalado, você pode fazê-lo com o seguinte comando dependendo da sua distribuição:

Ubuntu e derivados:

sudo apt install fwupd

Fedora:

sudo dnf install fwupd

Arch Linux e baseado nele:

sudo pacman -S fwupd

Como usar o fwupd?

A forma de usar o fwupd é bastante simples e se baseia na execução de comandos e a maneira correta de fazer isso é sempre atualizar o banco de dados do firmware disponível, antes de prosseguir com a atualização do firmware do dispositivo. Podemos fazer isso digitando:

sudo fwupdmgr refresh

Pára veja quais dispositivos suportam fwupd, bem como seu status atual e se tiverem atualizações disponíveis, podem fazê-lo com o seguinte comando:

fwupdmgr get-devices

Depois de listar os dispositivos, eles podem verifique se há atualizações de firmware disponível executando:

fwupdmgr get-updates

Se atualizações de firmware estiverem disponíveis, você pode aplicá-los executando:

sudo fwupdmgr update

Pára exibir uma lista de atualizações de firmware que foram instaladas via fwupd, você pode fazer isso com o seguinte comando:

fwupdmgr history