fwupd, la herramienta por excelencia para la gestión de actualizaciones de firmware en Linux
Hace poco se dio a conocer el lanzamiento de fwupd 2.0, una herramienta de código abierto utilizada para gestionar y actualizar el firmware de diversos dispositivos en Linux. Su propósito es facilitar la instalación y actualización de firmware en hardware sin necesidad de acceder a las herramientas específicas del fabricante o reiniciar en un sistema operativo diferente.
fwupd utiliza el servicio de actualizaciones de firmware LVFS (Linux Vendor Firmware Service), donde los fabricantes suben sus actualizaciones de firmware. Actualmente, el catálogo de LVFS incluye firmware para más de 1,600 dispositivos de 160 fabricantes.
El uso de este directorio centralizado elimina la necesidad de que los fabricantes generen paquetes específicos para cada distribución, permitiéndoles transferir firmware en un archivo «.cab» que incluye metadatos adicionales, similar a lo que se hace al publicar firmware para Windows.
Los usuarios pueden descargar e instalar esas actualizaciones directamente desde su distribución Linux, facilitando una gran cantidad de procesos, ya que admite tanto el modo de actualización automática del firmware, asi como la opción de ejecutar la operación tras la confirmación del mismo.
Entre las principales características que se destacan de fwupd, podremos encontrar las siguientes:
- Soporte para una amplia gama de dispositivos (UEFI, USB, Thunderbolt, pantallas, etc.).
- Instalación y actualización de firmware sin reiniciar o sin salir del entorno de trabajo.
- Integración con el administrador de paquetes y actualizaciones del sistema.
- Compatible con muchas distribuciones de Linux
- Es una solución cómoda y segura para mantener actualizado el firmware
- Es compatible con los gestores de aplicaciones GNOME Software y KDE Discover.
- No solo se limita a sistemas de escritorio, también es adecuado para actualizar el firmware en dispositivos como teléfonos inteligentes, tabletas, servidores y dispositivos de Internet de las cosas.
¿Qué hay de nuevo en fwupd 2.0?
En esta nueva versión de fwupd 2.0, se ha transferido el proceso en segundo plano del uso del enlace GObject de GUsb al acceso directo a libusb y sysfs. Este cambio ha permitido mover la emulación del dispositivo a la biblioteca libfwupdplugin e implementar la emulación de actualizaciones de firmware en dispositivos ficticios hidraw y nvme, de forma similar a la emulación que se realiza con dispositivos USB ficticios. Gracias a esta característica, se han podido realizar pruebas adicionales que identifican problemas con las actualizaciones que pueden surgir después de realizar ciertos cambios en fwupd.
Asimismo, la biblioteca GUdev, que proporciona enlaces GObject sobre libudev, ha sido eliminada de las dependencias. En su lugar, el proceso fwupd ahora crea un socket netlink para analizar eventos udev transmitidos a través de este. Este cambio ha resultado en una reducción significativa en el consumo de memoria y la carga de CPU tanto al inicio como durante la operación, además de simplificar la incorporación del soporte ueventd, lo que en el futuro permitirá que fwupd sea compatible con la plataforma Android.
Se han realizado optimizaciones para disminuir el consumo de memoria al transferir firmware desde archivos a dispositivos; en lugar de copiar el firmware a la memoria, ahora se utiliza la transferencia a través de un descriptor de archivo. También se ha añadido soporte para una variedad de nuevos dispositivos.
Además, se ha interrumpido la compatibilidad con metadatos heredados y formatos de verificación de firmware, y se han eliminado las utilidades de línea de comandos que anteriormente estaban en desuso. También se ha agregado una API para cargar informes en gnome-firmware y el sistema de compilación ahora incluye soporte para la plataforma Darwin.
Por último, se ha añadido la capacidad de mostrar una lista de archivos ESP en formato JSON (utilizando el comando fwupdtool esp-list –json) y se ha incorporado la opción de especificar dispositivos emulados en la configuración.
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.
¿Cómo instalar fwupd en Linux?
Para los interesados en poder instalar fwupd, deben saber que, en la mayoría de las distribuciones, ya viene preinstalado. Sin embargo, si no lo tienes instalado, puedes hacerlo con el siguiente comando según tu distribución:
Ubuntu y derivados:
sudo apt install fwupd
Fedora:
sudo dnf install fwupd
Arch Linux y basados en este:
sudo pacman -S fwupd
¿Como usar fwupd?
El modo de uso de fwupd es bastante sencillo y se basa en la ejecución de comandos y la forma correcta de hacerlo es actualizar siempre la base de datos de firmware disponible, antes de pasar a la actualización del firmware de dispositivos. Esto lo podemos hacer tecleando:
sudo fwupdmgr refresh
Para ver qué dispositivos son compatibles con fwupd, así como su estado actual y si tienen actualizaciones disponibles, lo pueden hacer con el siguiente comando:
fwupdmgr get-devices
Una vez que hayas listado los dispositivos, pueden verificar si hay actualizaciones de firmware disponibles ejecutando:
fwupdmgr get-updates
Si hay actualizaciones de firmware disponibles, puedes aplicarlas ejecutando:
sudo fwupdmgr update
Para mostrar una lista de las actualizaciones de firmware que se han instalado a través de fwupd, pueden hacerlo con el siguiente comando:
fwupdmgr history