Все об Arch Linux

Arch Linux будет тем, что вы из него сделаете!

linux-firmware: что обновляется и зачем

Сразу к делу: linux-firmware — это огромный набор бинарных прошивок для самого разного железа, от видеокарт AMD до Wi-Fi-адаптеров Intel. Пакет обновляется почти при каждом обновлении системы, потому что в него складывают новые и исправленные прошивки для GPU, Wi-Fi, Bluetooth, сетевых карт, NVMe и звука. Обновлять его нужно: без свежих прошивок новое железо может не завестись, а старое — работать с багами. Если после обновления что-то сломалось, пакет откатывается за пару команд.

Что такое linux-firmware и зачем он нужен

linux-firmware — коллекция бинарных файлов, которые ядро загружает в устройства при старте. Сами прошивки лежат в /usr/lib/firmware. Ядро не умеет «разговаривать» с большинством устройств напрямую: видеокарте, Wi-Fi-чипу или NVMe-контроллеру нужен свой микрокод, который загружается в память устройства при инициализации.

Пакет linux-firmware — зависимость пакета linux, поэтому он ставится практически в любой системе Arch Linux автоматически. Даже если ты не ставил его руками, он уже есть. Удалять его нельзя: без прошивок часть железа просто не заработает.

Важно не путать прошивку и драйвер. Драйвер — это модуль ядра, код, который работает в системе и управляет устройством. Прошивка — это код, который загружается внутрь самого устройства и выполняется на его собственном процессоре. Модуль ядра запрашивает файл прошивки по имени, ядро находит его в /usr/lib/firmware и передаёт устройству. Поэтому обновление прошивки не требует пересборки ядра или модулей: достаточно положить новый файл на место.

Что лежит внутри

Каталог /usr/lib/firmware занимает сотни мегабайт и содержит тысячи файлов. Там прошивки для:

  • видеокарт AMD (amdgpu, radeon) и NVIDIA (для новых карт через nouveau и GSP);
  • Wi-Fi-адаптеров Intel (iwlwifi), Qualcomm (ath11k, ath12k), MediaTek (mt76), Realtek (rtw88, rtw89);
  • Bluetooth-контроллеров (btusb, qca, rtl_bt);
  • проводных сетевых карт (r8169, igb, e1000e);
  • NVMe, USB4/Thunderbolt, звуковых карт и многого другого.

Отдельно живут подпакеты для редкого старого железа: linux-firmware-bnx2x, linux-firmware-qlogic и другие. Они не ставятся по умолчанию. Если у тебя древняя сетевая карта Broadcom или QLogic — поставь соответствующий подпакет, иначе устройство не заработает.

Что именно обновляется в linux-firmware

amdgpu и radeon

Видеокарты AMD — главный потребитель прошивок. Для каждой модели GPU в пакете лежит несколько файлов: микрокод, таблицы powerplay (настройки питания и температур), прошивки для дисплейного движка и видеодекодера. Обновления amdgpu-прошивок часто приносят исправления для новых карт, а иногда — правки поведения вентиляторов и энергопотребления.

iwlwifi и другие Wi-Fi

Intel Wi-Fi — второй по важности блок. Прошивки iwlwifi обновляются часто: в них правят стабильность соединения, поддержку новых стандартов и роуминг. Аналогично для Qualcomm (ath11k, ath12k), MediaTek (mt76) и Realtek (rtw88). Если после обновления Wi-Fi стал отваливаться — первое подозрение именно на свежую прошивку.

NVIDIA

Для новых видеокарт NVIDIA в linux-firmware тоже лежат прошивки: они нужны драйверу nouveau и загрузке GSP-микроконтроллера. Проприетарный драйвер NVIDIA обычно приносит свои прошивки в пакете nvidia, но для свежих карт без файлов из linux-firmware nouveau не заведётся. Если у тебя видеокарта NVIDIA и ты используешь nouveau — обновление linux-firmware может изменить поведение карты.

Bluetooth, сетевые карты и прочее

Bluetooth-контроллеры (особенно у Qualcomm и Realtek) тоже получают прошивки в linux-firmware. Проводные сетевые карты Realtek (r8169) — частый источник обновлений: там правят проблемы с отключением линка и скоростью. Плюс в пакет попадают прошивки для NVMe, USB4/Thunderbolt и звуковых чипов.

Как обновление попадает в систему

Никакой магии: linux-firmware обновляется обычным pacman -Syu вместе со всем остальным. Отдельных действий не требуется. Прошивки загружаются при инициализации устройств, поэтому после обновления пакета стоит перезагрузиться — иначе новая прошивка применится только при следующей загрузке.

Обновление linux-firmware не требует пересборки initramfs и не трогает загрузчик. Пакет просто заменяет файлы в /usr/lib/firmware. Единственное, что стоит сделать после обновления, — перезагрузиться, чтобы устройства инициализировались с новыми прошивками.

Прошивок в пакете тысячи, и каждая живёт своей жизнью. Кто-то из разработчиков чипов исправил баг в прошивке Wi-Fi, кто-то добавил поддержку новой видеокарты — всё это попадает в очередной релиз linux-firmware. Пакет выходит часто, потому что это «сырьё» для всего железа сразу. Частота обновлений — норма, а не признак нестабильности.

Какие проблемы бывают после обновления

Самая частая беда — регрессия: новая прошивка для твоего конкретного адаптера оказывается хуже старой. Типичные симптомы:

  • Wi-Fi отваливается или теряет скорость;
  • Bluetooth не находит устройства или не сопрягается;
  • видеокарта меняет поведение вентиляторов или температурные пороги;
  • в dmesg появляются предупреждения «firmware file not found».

Важно понимать: прошивки в linux-firmware собираются со всего мира, и разработчики не могут протестировать их на каждом адаптере. Новая прошивка может быть написана под новую ревизию чипа, а на старой ревизии работать хуже. Это нормально и лечится откатом.

Отдельная история — amdgpu. В прошивках зашиты таблицы powerplay: пороги температур, кривые вентиляторов, лимиты мощности. После обновления карта может начать греться сильнее или, наоборот, тише крутить вентиляторы. Это не поломка, а новые настройки от производителя. Если поведение не нравится — можно откатить пакет или настроить параметры через драйвер.

Как проверить, какие прошивки использует твоё железо

Сначала посмотри версию пакета:

pacman -Q linux-firmware

Затем узнай, какие прошивки запрашивает твой Wi-Fi-модуль:

modinfo -F firmware iwlwifi

Команда выведет список файлов, которые нужны модулю. Для видеокарты AMD:

modinfo -F firmware amdgpu

А что реально загрузилось при старте, покажет dmesg:

dmesg | grep -i firmware

В выводе будут строки вида Direct firmware load for iwlwifi-... failed. Если такие есть — ядро не нашло нужный файл. Причины: пакет не обновлён, модуль новее пакета или устройство требует прошивку, которой ещё нет в linux-firmware.

Посмотреть, какие файлы прошивок реально лежат в системе для твоего адаптера, можно так:

ls /usr/lib/firmware | grep iwlwifi

Сравни список файлов с тем, что запрашивает modinfo. Если файл из вывода modinfo отсутствует в каталоге — вот и причина предупреждений.

Что делать, если после обновления что-то сломалось

Откати пакет

Если регрессия появилась сразу после обновления, проще всего откатить linux-firmware. Сначала проверь, есть ли старая версия в кэше pacman:

ls /var/cache/pacman/pkg/linux-firmware*

Если есть — ставь её:

sudo pacman -U /var/cache/pacman/pkg/linux-firmware-<версия>.pkg.tar.zst

Кэша нет — качай нужную версию с archive.archlinux.org. Общая схема отката пакета разобрана в статье «Откат обновления GRUB» — она применима к любому пакету, не только к загрузчику.

Если регрессия повторяется при каждом обновлении, можно временно закрепить старую версию через IgnorePkg в /etc/pacman.conf:

IgnorePkg = linux-firmware

Но не забывай про эту строку: через пару месяцев сними пакет из списка и попробуй обновиться снова — к тому времени проблему наверняка починят.

Поставь linux-firmware-git

Если нужна самая свежая прошивка (например, для нового железа, которое ещё не попало в стабильный пакет), собери linux-firmware-git из AUR:

yay -S linux-firmware-git

Пакет собирает прошивки прямо из git-репозитория linux-firmware. Минус — обновляется часто и может быть менее стабильным. Для повседневной системы обычно хватает обычного пакета.

Замени один файл прошивки

Иногда достаточно подложить конкретный старый файл. Скачай старую версию пакета, распакуй её и скопируй нужный файл в /usr/lib/firmware:

tar -xf linux-firmware-<старая-версия>.pkg.tar.zst
sudo cp usr/lib/firmware/iwlwifi-*.ucode /usr/lib/firmware/

Чтобы pacman не перезаписал файл при следующем обновлении, добавь его в NoUpgrade в /etc/pacman.conf:

NoUpgrade = usr/lib/firmware/iwlwifi-*.ucode

Не удаляй /usr/lib/firmware руками

Категорически не стоит чистить каталог /usr/lib/firmware вручную, чтобы «освободить место». Часть прошивок нужна не только ядру, но и другим компонентам. Удаление лишнего файла может сломать устройство, которое ты не используешь сейчас, но подключишь завтра. Если место реально нужно — ищи другие кандидаты на очистку.

Частые вопросы

После обновления linux-firmware пропал Wi-Fi — что делать?

Сначала проверь, видит ли система адаптер: ip link. Если адаптер на месте, но не подключается — откати пакет. Если адаптера нет вообще — возможно, проблема не в прошивке, а в модуле. Похожая ситуация разобрана в статье «Пропал модуль Wi-Fi после обновления».

Нужно ли перезагружаться после обновления linux-firmware?

Да. Прошивки загружаются при инициализации устройств, то есть при загрузке системы. Чтобы новая прошивка применилась, перезагрузись. Для некоторых устройств хватает перезагрузки модуля, но проще и надёжнее перезагрузить систему целиком.

Можно ли удалить linux-firmware?

Технически можно, но не нужно. Пакет — зависимость ядра, и без него часть железа не заработает. Экономия места не стоит проблем. Если хочется уменьшить размер — есть выборочные варианты, но это экзотика для продвинутых.

Чем linux-firmware-git отличается от обычного пакета?

Обычный пакет обновляется по релизам, linux-firmware-git собирается из git-репозитория и содержит самые свежие прошивки. Для нового железа git-версия может быть единственным способом завести устройство. Для стабильной системы обычного пакета достаточно.

Откуда берутся предупреждения «firmware file not found»?

Ядро запрашивает файл прошивки, которого нет в /usr/lib/firmware. Причины: пакет не обновлён, модуль новее пакета или устройство требует прошивку, которой нет в linux-firmware (например, для совсем нового железа). Проверь dmesg | grep -i firmware и сверь с modinfo -F firmware <модуль>.

Полезные ресурсы

Заключение

linux-firmware — незаметный, но важный пакет: он обновляет прошивки для GPU, Wi-Fi, Bluetooth и сетевых карт. Обновлять его нужно, а при регрессии — откатить за пару команд. Проверяй dmesg и modinfo, не удаляй /usr/lib/firmware руками — и железо будет работать как надо.



Не получилось? Поможем настроить

Задай вопрос в чате — отвечаем быстро, по делу и без воды.

Читайте также

Комментарии

Загрузка…

Откроется GitHub: создайте новый issue с вашим комментарием (кнопка «Submit new issue»). После отправки обновите эту страницу — комментарий появится ниже.

Telegram Max