В начале октября 2024 года состоялся релиз открытого инструментария для загрузки прошивок Fwupd 2.0 с поддержкой больших разделов в томах EFI FFS3 и возможностью стабильной работы с большинством типов CRC-32 и CRC-16. Исходный код проекта написан на C и Python и опубликован на GitHub под лицензией GNU Lesser General Public License v2.1.
По информации OpenNET, проект Fwupd предоставляет OEM-производителям и разработчикам прошивок сервис для загрузки прошивок в специальный централизованный каталог LVFS (Linux Vendor Firmware Service), который можно использовать в дистрибутивах Linux при помощи инструментария fwupd.
В настоящее время в каталоге проекта Fwupd предложены прошивки для более 1600 устройств от 160 производителей. Использование централизованного каталога избавляет производителей от необходимости формирования пакетов для дистрибутивов и позволяет передавать прошивки в архиве *.cab с дополнительными метаданными, которые также применяются при публикации прошивок для Windows.
В проекте Fwupd поддерживается режим автоматического обновления прошивок, без необходимости совершения каких-то действий со стороны пользователя, так и выполнение операции после подтверждения или запроса пользователя.
Инструментарий Fwupd и LVFS применяются в сборках RHEL, Fedora, Ubuntu, SUSE, Debian и многих других дистрибутивах Linux для автоматизированного обновления прошивок, а также поддерживаются в менеджерах приложений GNOME Software и KDE Discover. Решение Fwupd не ограничено настольными системами и пригодно для обновления прошивок на смартфонах, планшетах, серверах и устройствах интернета-вещей.
Основные изменения и добавления в Fwupd 2.0:
• фоновый процесс переведён с использования GObject-обвязки GUsb на прямое обращение к libusb и sysfs, что дало возможность вынести эмуляцию устройств в библиотеку libfwupdplugin и реализовать эмуляцию обновления прошивок на фиктивных устройствах hidraw и nvme по аналогии с эмуляцией с использованием фиктивных USB-устройств. Подобная возможность позволила реализовать дополнительные тесты, выявляющие проблемы с обновлением прошивок, возникающие после внесения в fwupd тех или иных изменений.
• из зависимостей исключена библиотека GUdev, предоставляющая GObject-обвязки над libudev. Вместо GUdev процессом fwupd теперь создаётся netlink-сокет для разбора событий udev, передаваемых через netlink. Изменение привело к значительному сокращению потребления памяти и снижению нагрузки на CPU при запуске и в процессе работы, а также упростило добавление поддержки ueventd, которая в будущем позволит реализовать в fwupd поддержку платформы Android.
• добавлены оптимизации для снижения потребления памяти в процессе потоковой передачи прошивок из архивов в устройства (вместо копирования прошивок в память теперь используется передача через файловый дескриптор).
• прекращена поддержка устаревших форматов верификации метаданных и прошивок.
• удалены утилиты командной строки, ранее объявленные устаревшими.
• добавлен API для загрузки отчётов в gnome-firmware.
• в системе сборки добавлена поддержка платформы Darwin.
• добавлена поддержка вывода списка файлов из ESP в формате JSON (fwupdtool esp-list —json).
• добавлена возможность указания в настройках эмулируемых устройств.
• добавлена поддержка новых устройств, включая:
кардридеры Algoltek с интерфейсом USB;
AMD Kria SoM;
Cable Matters USB Hub;
устройства на базе Cinterion FDL (Firmware Download Modem);
CY6611 EZ-USB HX3PD;
Dell K2 Dock;
биометрические датчики Elan 0C9F;
Dock-станции HP Fleetwood и Hendrix;
Huddly L1, S1 и Crew;
Jabra PanaCast;
Lenovo Legion HID2 и Lenovo ThinkSmart Bar;
Logitech Lemmy, Logitech Sight и сенсорные экраны Logitech;
конвертеры MediaTek;
Parade PS185;
Qualcomm S5gen2 BLE;
Telink Dual Keyboard.
Источник: habr.com