При обновлении ядра Linux иногда появляется сообщение, которое выглядит гораздо тревожнее, чем есть на самом деле:

W: Possible missing firmware /lib/firmware/... for module ...

Пользователь видит слова missing firmware, путь /lib/firmware и название модуля ядра, после чего возникает закономерный вопрос: не сломалось ли обновление и не останется ли компьютер без какого-нибудь устройства после перезагрузки?

В большинстве случаев повода для паники нет. Это предупреждение, а не сообщение о неудачном обновлении ядра. Оно означает, что при подготовке образа загрузки система обнаружила модуль ядра, который умеет работать с определённым оборудованием и может использовать файл прошивки, но соответствующего файла в системе не нашлось. Само ядро при этом может установиться и работать совершенно нормально.

Особенно часто такое сообщение появляется после перехода на более новое ядро. Новый модуль может получить поддержку дополнительного оборудования и начать проверять наличие соответствующих файлов прошивки, хотя конкретного устройства с таким модулем в компьютере вообще нет. В результате пользователь видит предупреждение, которое относится не к реально используемому оборудованию, а к потенциальной возможности драйвера.

Разобраться с этим предупреждением несложно. Главное, не устанавливать случайные пакеты только из-за самого факта появления строки Possible missing firmware. Сначала стоит определить, какой файл отсутствует, какой модуль его запрашивает и действительно ли этот модуль обслуживает оборудование компьютера.

Что означает сообщение Possible missing firmware при обновлении ядра

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

Поэтому наличие драйвера ещё не означает, что для работы конкретного устройства достаточно только файлов ядра.

Упрощённо процесс выглядит так:

Linux kernel
     |
     v
драйвер устройства
     |
     v
поиск firmware в /lib/firmware
     |
     v
передача прошивки оборудованию
     |
     v
работа устройства

Если необходимый файл присутствует, драйвер загружает его и продолжает работу. Если файла нет, драйвер может сообщить об ошибке загрузки прошивки. В некоторых случаях устройство действительно перестанет работать полностью или частично. В других ситуациях отсутствие конкретного файла никак не проявится, потому что соответствующего оборудования в компьютере нет или дополнительная прошивка для реального режима работы устройства не требуется.

Именно поэтому строка:

W: Possible missing firmware /lib/firmware/example.bin for module example

не равна сообщению:

Ошибка: устройство не работает

Слово Possible здесь особенно важно. Система сообщает о возможном отсутствии файла, который может понадобиться модулю. Она не утверждает, что конкретное устройство пользователя уже перестало работать.

Почему предупреждение часто появляется именно после обновления ядра

На первый взгляд ситуация выглядит странно. До обновления всё работало, после установки нового ядра появляется предупреждение о прошивке. Возникает ощущение, что новое ядро что-то сломало.

На практике механизм может быть намного проще.

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

Получается такая ситуация:

Старое ядро
    |
    +-- поддержка оборудования A
    |
    +-- всё работает

Новое ядро
    |
    +-- поддержка оборудования A
    +-- поддержка оборудования B
    |
    +-- нужен дополнительный firmware для B

Но компьютера с оборудованием B у пользователя может вообще не быть.

Модуль при этом всё равно входит в состав ядра и проверяется при формировании initramfs. Поэтому сообщение может появиться даже в совершенно исправной системе.

Именно по этой причине не каждое предупреждение Possible missing firmware требует немедленного вмешательства.

Что такое каталог /lib/firmware

Путь /lib/firmware часто присутствует непосредственно в тексте предупреждения:

W: Possible missing firmware /lib/firmware/...

Это каталог, в котором Linux обычно ищет файлы прошивок для устройств. Ubuntu указывает /lib/firmware как место размещения firmware, устанавливаемых соответствующими пакетами.

Внутри могут находиться тысячи файлов для разных устройств:

/lib/firmware/
├── i915/
├── intel/
├── amdgpu/
├── ath10k/
├── brcm/
└── ...

Конкретная структура зависит от установленного набора прошивок и версии дистрибутива.

Само наличие большого количества файлов не означает, что каждый из них используется компьютером. Один пакет может содержать прошивки для огромного числа моделей оборудования. Это позволяет одному набору файлов обслуживать множество разных конфигураций.

Поэтому отсутствие одного файла из этого каталога ещё не доказывает наличие проблемы с компьютером.

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

Не обязательно.

Если система нормально загружается, Wi-Fi работает, Bluetooth работает, графика работает, звук есть, накопители определяются, а предупреждение появилось только во время обновления ядра, сначала разумно проверить, действительно ли отсутствующий firmware нужен используемому оборудованию.

Это особенно актуально для универсальных модулей ядра. Один модуль может поддерживать несколько поколений устройств, и только для части из них требуются конкретные файлы прошивки.

Например, модуль может быть установлен в системе и запрашивать файл:

/lib/firmware/example/device.bin

Но если соответствующего устройства нет, наличие предупреждения само по себе не означает неисправность.

Ubuntu прямо отмечает проблему такого характера: новые версии модулей могут сообщать о потенциально отсутствующих firmware для нового оборудования, хотя у пользователя может быть старое оборудование, которому этот файл вообще не нужен.

Поэтому правильный порядок действий начинается не с установки всего подряд, а с проверки.

Как понять, какой именно firmware отсутствует

В предупреждении обычно уже указано имя файла:

W: Possible missing firmware /lib/firmware/i915/example.bin for module i915

Здесь есть сразу две важные части:

/lib/firmware/i915/example.bin

и:

module i915

Первая показывает, какой файл система не нашла. Вторая показывает модуль ядра, который связан с запросом.

Имя файла можно использовать для поиска пакета, который его предоставляет.

В Debian для этого подходит apt-file. Официальная документация Debian рекомендует искать конкретный отсутствующий firmware по имени файла, а затем устанавливать пакет, в котором этот файл содержится.

Сначала можно установить инструмент:

sudo apt update
sudo apt install apt-file

После обновления базы:

sudo apt-file update

Затем выполнить поиск:

apt-file search example.bin

В результате можно получить что-то вроде:

firmware-misc-nonfree: /lib/firmware/example.bin

Тогда уже понятно, какой пакет содержит требуемый файл.

Это гораздо надёжнее, чем искать пакет по названию модуля или скачивать случайный файл из интернета.

Как установить linux-firmware в Ubuntu

В Ubuntu основной пакет с прошивками называется linux-firmware. В официальном каталоге пакетов он описывается как набор firmware для драйверов ядра. В зависимости от версии Ubuntu состав и структура пакета могут меняться, поэтому название конкретного дополнительного пакета лучше определять по имени отсутствующего файла.

Если обычный набор firmware отсутствует или повреждён, базовый вариант установки выглядит так:

sudo apt update
sudo apt install linux-firmware

После установки можно повторить обновление пакетов или пересоздать initramfs, если это требуется конкретной ситуацией:

sudo update-initramfs -u

Затем можно снова проверить наличие предупреждения при следующем обновлении ядра.

Однако важно учитывать версию Ubuntu. В новых выпусках набор firmware может быть разделён на несколько отдельных пакетов. Например, официальные данные о пакетах Ubuntu показывают наличие не только linux-firmware, но и отдельных пакетов для некоторых групп графических и других firmware.

Поэтому универсальное правило "любое предупреждение исправляется установкой одного огромного пакета" не всегда оптимально.

Как установить нужную прошивку в Debian

В Debian ситуация зависит от версии системы и подключённых компонентов репозитория.

Начиная с Debian 12, распространяемые бинарные firmware были вынесены в отдельный компонент non-free-firmware. Debian указывает, что если системе нужны такие файлы, этот компонент должен быть доступен в источниках пакетов.

После этого нужный пакет можно найти по имени файла.

Например, если поиск показал:

firmware-misc-nonfree: /lib/firmware/example.bin

установка выполняется:

sudo apt update
sudo apt install firmware-misc-nonfree

После установки Debian рекомендует обновить initramfs, если предупреждение возникало во время его создания:

sudo update-initramfs -u

Так система получит возможность включить необходимые файлы в соответствующий загрузочный образ.

Главное здесь не запоминать название каждого firmware-пакета. Названия меняются между версиями дистрибутива, а один и тот же модуль может требовать разные файлы. Гораздо полезнее уметь найти пакет по конкретному имени файла.

Почему нельзя просто скачать отсутствующий файл из случайного источника

Когда пользователь видит:

/lib/firmware/something.bin

возникает естественное желание найти something.bin через поисковик, скачать его и положить в /lib/firmware.

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

Firmware должен соответствовать конкретному драйверу и оборудованию. Неподходящий файл не обязательно даст понятную ошибку. В зависимости от устройства результатом может стать отказ загрузки прошивки или нестабильная работа оборудования.

Кроме того, самостоятельное копирование файла обходится без системы управления пакетами. Через некоторое время пакетная версия firmware обновится, а вручную установленный файл может остаться старым.

Если нужный firmware есть в репозитории дистрибутива, правильнее установить пакет. Debian прямо рекомендует сначала найти пакет, содержащий конкретный отсутствующий файл.

Ручная установка имеет смысл только тогда, когда необходимой прошивки действительно нет в репозиториях или существуют другие обоснованные причины использовать upstream-версию.

Что делать, если пакет linux-firmware уже установлен

Это одна из самых распространённых ситуаций.

Пользователь выполняет:

sudo apt install linux-firmware

и получает сообщение, что пакет уже установлен. Но при следующем обновлении ядра снова появляется:

W: Possible missing firmware ...

Это не противоречие.

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

Кроме того, отсутствующий файл может относиться к компоненту, который дистрибутив не распространяет в стандартном наборе.

Поэтому после проверки установки linux-firmware следующий шаг заключается не в бесконечной переустановке того же пакета, а в поиске конкретного файла.

Например:

apt-file search имя_отсутствующего_файла

Результат позволит определить, существует ли файл вообще в доступных пакетах.

Если он находится в другом пакете, устанавливается именно этот пакет.

Что делать, если нужного файла вообще нет в репозиториях

Иногда поиск не даёт результата.

Это означает, что в подключённых репозиториях нет пакета, который содержит указанный firmware. Причин может быть несколько. Нужный файл может относиться к более новому оборудованию, ещё не попасть в стабильную версию дистрибутива или распространяться с ограничениями, которые влияют на его включение в конкретный репозиторий.

В Debian официальная документация отдельно описывает ситуацию, когда firmware отсутствует в доступных пакетах. В таком случае рассматривается установка из проекта linux-firmware.

Но прежде чем переходить к ручной установке, стоит убедиться, что файл действительно нужен именно этому компьютеру.

Если отсутствует firmware для оборудования, которого в системе нет, ручное добавление файла только ради исчезновения предупреждения не даёт практической пользы.

Если же это firmware для реально используемого Wi-Fi-адаптера, графического контроллера или другого устройства, которое работает неправильно, тогда установка соответствующей прошивки уже становится обоснованной.

Как проверить, работает ли устройство без этого firmware

Самый простой ориентир находится не в самом предупреждении, а в фактической работе оборудования.

Если после обновления ядра:

Wi-Fi работает
Bluetooth работает
звук работает
графика работает
сетевой интерфейс работает

и единственная проблема заключается в строке Possible missing firmware, то спешить с ручным вмешательством не стоит.

Если же одновременно наблюдается конкретная неисправность, например Wi-Fi исчез после перезагрузки, графический адаптер работает неправильно или устройство не определяется, тогда предупреждение становится важной подсказкой.

Для диагностики можно посмотреть сообщения ядра:

dmesg | grep -i firmware

или:

journalctl -k | grep -i firmware

В новых системах полезно искать именно сообщения о неудачной загрузке firmware. Ubuntu также рекомендует отслеживать сообщения вида firmware: failed to load, поскольку они лучше показывают реальную проблему с загрузкой прошивки, чем одно предупреждение во время создания initramfs.

Например:

firmware: failed to load ...

намного интереснее для диагностики, чем:

Possible missing firmware ...

появившееся при сборке загрузочного образа.

Почему предупреждение не означает поломку ядра

Буква W в начале строки:

W: Possible missing firmware ...

означает предупреждение.

Это отличается от сообщения об ошибке, из-за которой операция обновления была прервана.

Если пакетный менеджер продолжил работу и обновление завершилось успешно, само наличие такой строки ещё не означает, что новое ядро не установилось.

Вполне возможна следующая картина:

Установка ядра
      |
      v
создание initramfs
      |
      v
найден модуль с потенциальным firmware
      |
      v
файл не найден
      |
      v
W: Possible missing firmware
      |
      v
создание initramfs продолжается
      |
      v
обновление завершено

Именно поэтому после появления предупреждения не нужно сразу удалять новое ядро или откатывать обновление.

Сначала проверяется результат установки и работа оборудования.

Если система загружается и все необходимые устройства работают, предупреждение может оказаться исключительно информационным.

Нужно ли удалять новое ядро из-за missing firmware

Нет, само по себе это предупреждение не является основанием для удаления нового ядра.

Новое ядро может содержать исправления безопасности, поддержку оборудования и другие изменения. Если оно нормально загружается, а проблемное firmware относится к неиспользуемому модулю, откат только ради исчезновения предупреждения не имеет практического смысла.

Более разумный подход выглядит так:

Появилось предупреждение
        ↓
Проверить имя firmware
        ↓
Проверить модуль
        ↓
Определить, есть ли такое оборудование
        ↓
Проверить работу устройства
        ↓
Если проблема реальна, найти пакет
        ↓
Установить firmware
        ↓
Обновить initramfs

Такой порядок позволяет отделить реальную неисправность от сообщения о потенциальной недостаче файла.

Когда предупреждение действительно стоит исправить

Есть несколько ситуаций, когда к сообщению следует отнестись внимательно.

Первая ситуация: после обновления перестало работать конкретное устройство.

Например, до обновления ядра беспроводная сеть работала, а после перезагрузки адаптер исчез. Если предупреждение относится к firmware этого адаптера, связь между двумя событиями становится вполне вероятной.

Вторая ситуация: в журнале ядра присутствует явное сообщение о неудачной загрузке firmware.

Например:

firmware: failed to load ...

Третья ситуация: предупреждение относится к оборудованию, которое точно установлено в компьютере.

Четвёртая ситуация: проблема воспроизводится после каждой загрузки и сопровождается сообщениями драйвера.

В этих случаях уже стоит найти соответствующий пакет и установить недостающую прошивку.

Если же предупреждение относится к оборудованию, которого в компьютере нет, и никаких проблем в работе системы не наблюдается, срочного исправления обычно не требуется.

Как связаны firmware и initramfs

Пользователь часто впервые сталкивается с предупреждением именно во время выполнения:

sudo update-initramfs -u

или при установке нового ядра.

Это происходит потому, что initramfs является ранним загрузочным окружением Linux. В него включаются файлы, которые могут понадобиться системе до перехода к обычной файловой системе.

Если инструмент создания initramfs видит модуль, связанный с определёнными firmware, он может проверить наличие соответствующих файлов.

Если файла нет, появляется предупреждение:

W: Possible missing firmware ...

Debian прямо приводит такой сценарий как пример сообщения, которое можно увидеть во время обновления initramfs при установке нового ядра.

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

Проверяется содержимое загрузочного набора, а не только фактическое использование оборудования в данный момент.

Нужно ли после установки firmware пересоздавать initramfs

Если firmware был установлен после того, как предупреждение появилось во время создания initramfs, имеет смысл обновить загрузочный образ:

sudo update-initramfs -u

В Debian этот шаг прямо указан после установки пакета с недостающим firmware.

После этого можно повторно проверить, появляется ли предупреждение при дальнейших обновлениях.

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

Не стоит автоматически перезагружать компьютер после каждого изменения firmware. Сначала следует посмотреть, что именно изменилось и требуется ли перезапуск для конкретного устройства.

Почему в предупреждении может быть указан модуль, которым пользователь никогда не пользовался

Это важная особенность, из-за которой такие сообщения часто пугают пользователей.

Модуль ядра может быть частью общего набора поддержки оборудования. Сам факт существования модуля не означает, что конкретный драйвер сейчас обслуживает устройство.

Например, ядро может содержать поддержку десятков разновидностей контроллеров. В системе пользователя установлен только один из них, но во время подготовки модулей проверяются и другие компоненты.

Получается:

Модуль существует
        |
        v
модуль поддерживает много устройств
        |
        v
для одного из них нужен firmware
        |
        v
файла нет
        |
        v
появляется предупреждение

Но конкретного устройства может не быть.

Это одна из причин, почему Ubuntu отдельно обращает внимание на предупреждения о firmware после обновления ядра. Новый модуль способен сообщать о файлах, которые нужны дополнительному оборудованию, даже если пользователь использует старое устройство.

Поэтому имя модуля нужно рассматривать вместе с реальной конфигурацией компьютера.

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

Для PCI-устройств можно использовать:

lspci

Для USB:

lsusb

Например, если предупреждение относится к модулю графического адаптера, можно посмотреть список видеоустройств через lspci.

Если речь идёт о беспроводном адаптере, там же можно найти соответствующий контроллер.

Для конкретной диагностики полезно сопоставить три вещи:

имя firmware
+
имя модуля
+
реальное оборудование

Если все три связаны между собой, предупреждение заслуживает внимания.

Если модуль и firmware относятся к оборудованию, которого нет, ситуация выглядит совсем иначе.

Почему не стоит устанавливать все доступные firmware без разбора

Большой пакет прошивок может занимать значительное место на диске. Современные наборы firmware действительно могут быть весьма объёмными. Например, официальные данные Ubuntu показывают, что размер установленного набора linux-firmware может быть очень большим, а в новых выпусках пакет дополнительно разделяется на более мелкие компоненты.

Поэтому принцип "установить всё, чтобы предупреждений больше не было" не всегда разумен.

Если системе требуется конкретный файл, лучше установить пакет, который его предоставляет.

Если используется Ubuntu с подходящим стандартным набором, может быть достаточно linux-firmware.

Если используется Debian, нужный файл может находиться в одном из отдельных пакетов firmware-*.

А если файла нет в репозитории, сначала стоит проверить, действительно ли он необходим конкретному устройству.

Такой подход одновременно экономит место и делает конфигурацию системы понятнее.

Что делать после установки недостающего firmware

После установки подходящего пакета полезно выполнить:

sudo update-initramfs -u

Затем проверить сообщения:

dmesg | grep -i firmware

или:

journalctl -k | grep -i firmware

Если конкретное устройство работает нормально и сообщения о неудачной загрузке firmware исчезли, проблема решена.

Если предупреждение при следующем обновлении всё ещё появляется, нужно посмотреть точное имя файла. Возможно, установлен один firmware-пакет, а сообщение относится к другому файлу.

Например:

W: Possible missing firmware /lib/firmware/a.bin for module x

и:

W: Possible missing firmware /lib/firmware/b.bin for module x

это две разные ситуации, даже если модуль один и тот же.

Нельзя автоматически считать, что установка одного пакета закроет все возможные требования этого модуля.

Что делать, если всё работает и предупреждение осталось

Это как раз тот случай, когда ничего срочного делать не нужно.

Если после обновления:

система загружается;
Wi-Fi работает;
Bluetooth работает;
звук работает;
графика работает;
сеть работает;

а единственным симптомом является:

W: Possible missing firmware ...

то можно оставить ситуацию как есть и наблюдать.

Особенно если поиск показывает, что отсутствующий firmware относится к оборудованию, которого нет в компьютере.

Не каждое предупреждение нужно превращать в исправление. В Linux достаточно часто встречаются диагностические сообщения, которые сообщают о потенциальной ситуации, а не о фактической неисправности.

Главное отличие здесь заключается между "файл потенциально нужен модулю" и "используемое устройство не смогло получить необходимую прошивку".

Вторая ситуация уже требует действий.

Короткая последовательность диагностики

Если при обновлении ядра появилась строка:

W: Possible missing firmware /lib/firmware/... for module ...

не стоит сразу переустанавливать ядро. Сначала нужно определить, что именно отсутствует.

Практический порядок действий такой:

  1. Записать точное имя отсутствующего файла и название модуля;

  2. Проверить, есть ли в компьютере устройство, связанное с этим модулем;

  3. Проверить работу соответствующего оборудования после обновления ядра;

  4. Посмотреть сообщения dmesg или journalctl, особенно строки firmware: failed to load;

  5. Если firmware действительно нужен, найти пакет по имени отсутствующего файла;

  6. В Ubuntu при необходимости установить linux-firmware или соответствующий дополнительный пакет;

  7. В Debian определить подходящий пакет firmware-* и убедиться, что доступен компонент non-free-firmware;

  8. После установки обновить initramfs командой sudo update-initramfs -u;

  9. Повторно проверить работу оборудования.

Такой алгоритм позволяет не путать предупреждение о потенциально отсутствующем файле с реальной аппаратной проблемой.

Главное, что нужно знать о Possible missing firmware

Сообщение:

W: Possible missing firmware /lib/firmware/... for module ...

означает, что во время работы с модулем ядра система обнаружила потенциально отсутствующий файл прошивки.

Это не означает автоматически, что обновление ядра прошло неправильно.

Это не означает автоматически, что компьютер перестанет загружаться.

Это не означает автоматически, что конкретное устройство уже неисправно.

Смысл предупреждения становится понятен только после сопоставления имени firmware, модуля и реального оборудования.

Если устройство, к которому относится прошивка, используется и действительно имеет проблемы, нужный пакет стоит найти и установить. В Debian для этого можно искать конкретный файл через apt-file, а затем установить пакет, который его содержит.

В Ubuntu для большого набора стандартных прошивок используется linux-firmware, однако в новых версиях часть компонентов распределяется по отдельным пакетам. Поэтому точное имя пакета лучше определять по конкретному отсутствующему файлу и версии системы.

Если же система работает нормально, а предупреждение относится к модулю для оборудования, которого в компьютере нет, устанавливать случайные файлы только ради исчезновения строки обычно не имеет смысла.

Самый правильный подход здесь довольно простой: сначала определить, относится ли предупреждение к реально используемому оборудованию, и только потом устанавливать firmware.

Так предупреждение Possible missing firmware перестаёт выглядеть как загадочная поломка ядра. В большинстве случаев это всего лишь сигнал о том, что новый или обновлённый модуль знает о большем количестве оборудования, чем физически установлено в конкретном компьютере. Если нужная прошивка действительно требуется устройству, её можно установить штатным пакетом и обновить initramfs. Если же соответствующего оборудования нет и система работает нормально, одно такое предупреждение само по себе не является причиной для паники или отката ядра.