“W: Возможное недостающее встроенное микропрограммное обеспечение для модуля i915_bpo” при обновлении initramfs

Когда я выполняю ядро или обновление драйвера NVIDIA на моих 16.04, это инициировало initramfs, восстанавливают, который производит предупреждение ниже:

Processing triggers for initramfs-tools (0.122ubuntu8.1) ...
update-initramfs: Generating /boot/initrd.img-4.4.0-34-generic
W: Possible missing firmware /lib/firmware/i915/skl_guc_ver6.bin for module i915_bpo

У меня есть ноутбук с двумя графическими процессорами, NVIDIA GeForce 940M и интегрированная графика i5-6200U Intel.

Используемое устройство является моей картой NVIDIA:

$ inxi -G
Graphics:  Card-1: Intel Sky Lake Integrated Graphics
           Card-2: NVIDIA GM108M [GeForce 940M]
           Display Server: X.Org 1.18.3 driver: nvidia Resolution: 1920x1080@60.03hz
           GLX Renderer: GeForce 940M/PCIe/SSE2 GLX Version: 4.5.0 NVIDIA 367.35

Вот вывод lshw -c video, соответствие моему графическому процессору Intel, который должен использовать тот драйвер:

    *-display         
         description: VGA compatible controller
         product: Sky Lake Integrated Graphics
         vendor: Intel Corporation
         physical id: 2
         bus info: pci@0000:00:02.0
         version: 07
         width: 64 bits
         clock: 33MHz
         capabilities: pciexpress msi pm vga_controller bus_master cap_list rom
         configuration: driver=i915_bpo latency=0
         resources: irq:125 memory:a2000000-a2ffffff memory:b0000000-bfffffff ioport:5000(size=64)

Файл в предупреждении не существует, только они:

$ ll /lib/firmware/i915/
total 336
drwxr-xr-x  2 root root   4096 Aug 11 13:24 ./
drwxr-xr-x 74 root root  32768 Aug 11 13:24 ../
-rw-r--r--  1 root root   5872 Jul 21 17:03 bxt_dmc_ver1_04.bin
-rw-r--r--  1 root root   5872 Jul 21 17:03 bxt_dmc_ver1_05.bin
-rw-r--r--  1 root root   8380 Jul 21 17:03 bxt_dmc_ver1_06.bin
-rw-r--r--  1 root root   8380 Jul 21 17:05 bxt_dmc_ver1_07.bin
lrwxrwxrwx  1 root root     19 Jul 21 17:05 bxt_dmc_ver1.bin -> bxt_dmc_ver1_07.bin
-rw-r--r--  1 root root   8824 Jul 21 17:03 skl_dmc_ver1_23.bin
-rw-r--r--  1 root root   8928 Jul 12 21:33 skl_dmc_ver1_26.bin
lrwxrwxrwx  1 root root     19 Jul 12 21:33 skl_dmc_ver1.bin -> skl_dmc_ver1_26.bin
-rw-r--r--  1 root root 109636 Jul 21 17:03 skl_guc_ver1_1059.bin
lrwxrwxrwx  1 root root     21 Jul 21 17:03 skl_guc_ver1.bin -> skl_guc_ver1_1059.bin
-rw-r--r--  1 root root 128320 Jul 21 17:03 skl_guc_ver4_3.bin
lrwxrwxrwx  1 root root     18 Jul 21 17:03 skl_guc_ver4.bin -> skl_guc_ver4_3.bin

Последний пакет драйвера, кажется, установлен хотя:

$ apt-cache policy xserver-xorg-video-intel
xserver-xorg-video-intel:
  Installed: 2:2.99.917+git20160325-1ubuntu1
  Candidate: 2:2.99.917+git20160325-1ubuntu1
  Version table:
 *** 2:2.99.917+git20160325-1ubuntu1 500
        500 http://ftp.uni-stuttgart.de/ubuntu xenial/main amd64 Packages
        100 /var/lib/dpkg/status

Что это предупреждение означает точно и как я могу зафиксировать его?

86
задан 3 June 2017 в 21:25

6 ответов

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

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

EDIT 2: Этот ответ должен быть применим и к некоторым другим новым требованиям к прошивке, которые появились с момента написания этого ответа. Например:

W: Possible missing firmware /lib/firmware/i915/kbl_dmc_ver1_01.bin for module i915
W: Possible missing firmware /lib/firmware/i915/kbl_guc_ver9_14.bin for module i915
W: Possible missing firmware /lib/firmware/i915/bxt_guc_ver8_7.bin for module i915

EDIT 3: Для пользователей, использующих git, этот ответ также работает хорошо.

64
ответ дан 22 November 2019 в 23:19

Я также столкнулся с аналогичной проблемой, потому что я обновил ядро ​​из приложения Ubuntu Gnome 16.04 «Программное обеспечение» (собственный менеджер пакетов), и оно вылетело во время обновления.

Мне снова запретили загружать Ubuntu, потому что образ linux был безуспешно сгенерирован.

Чтобы решить эту проблему с этого момента, я сделал следующее:

  1. Перезагрузите Linux и сразу после экрана материнской платы нажмите Shift , чтобы войти в меню grub;
  2. Выберите вашу предыдущую версию Linux из меню. В моем случае * 4.4.0-21-generic и нажмите Enter ;
  3. После того, как Ubuntu снова заработает, удалите поврежденный образ linux. В моем случае * 4.4.0-59-generic (я использовал для него диспетчер пакетов Synaptic);
  4. Загрузите и установите недостающую прошивку со страницы Intel (так же, как Дуг Смитис ) . В моем случае я получил KabyLake kbl DMC - Ver 1.01 ;
  5. И, наконец, снова установите ядро ​​linux * 4.4.0-59-generic (в моем случае) или просто linux-generic для последнего полного универсального ядра Linux.

Успех! Ядро обновлено, и все прошивки работают нормально!

С уважением!

2
ответ дан 22 November 2019 в 23:19

Если вы используете debian (у меня есть Debian GNU / Linux buster), просто выполните следующие действия:

  1. создайте папку:

     sudo mkdir -p / lib / firmware / i915
     
  2. скопируйте все файлы из https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/i915 в эту папку

  3. Перенастройте пакет initramfs-tools:

     sudo dpkg-reconfigure initramfs-tools
     
1
ответ дан 22 November 2019 в 23:19

Обновление от 20 мая 2019 г.

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

Сегодня я получил следующее предупреждение:

update-initramfs: Generating /boot/initrd.img-5.0.1-050001-generic
W: Possible missing firmware /lib/firmware/i915/skl_dmc_ver1_27.bin for module i915
W: Possible missing firmware /lib/firmware/i915/kbl_dmc_ver1_04.bin for module i915
W: Possible missing firmware /lib/firmware/i915/cnl_dmc_ver1_07.bin for module i915
W: Possible missing firmware /lib/firmware/i915/icl_dmc_ver1_07.bin for module i915
W: Possible missing firmware /lib/firmware/i915/kbl_guc_ver9_39.bin for module i915
W: Possible missing firmware /lib/firmware/i915/bxt_guc_ver9_29.bin for module i915
W: Possible missing firmware /lib/firmware/i915/skl_guc_ver9_33.bin for module i915

Я загрузил капли (описанные в следующем разделе), а затем использовал:

$ sudo cp ~/Downloads/*.bin /lib/firmware/i915/

$ sudo update-initramfs -u
update-initramfs: Generating /boot/initrd.img-5.0.1-050001-generic

Теперь мои драйверы Sky Lake ( skl ) обновлены, и я могу опробовать последние параметры ядра, рекомендованные в Интернете. Предупреждающие сообщения для будущих процессоров Kaby Lake ( kbl ), Cannon Lake ( cnl ) и Ice Lake ( icl ) исчезли, что сделало жизнь менее стрессовой.


Обновление от 26 мая 2018 г.

Незначительная редакция от 6 августа 2018 г.

Новый экран загрузки «капель»

Недавно компания Intel создала новая страница загрузки и новый макет веб-страницы:

Intel i915 firmware blobs

Файлы загрузки теперь называются прошивкой blobs , что является новым языком для драйверов прошивки . Это означает B inary L arge OB ject (BLOB).

Драйверы сортируются по процессору:

  • bxt Broxton, Отменено в 2016 году, преемник процессоров Cherry Trail
  • kbl Kabylake, 7-го поколения, например i7-7700
  • skl Skylake, 6-го поколения, например i7-6700

Затем драйверы сгруппированы по подгруппам ( полное объяснение здесь ):

  • GUC - GuC предназначен для выполнения планирования графической нагрузки на различных графических параллельных движках.
  • DMC - DMC обеспечивает дополнительную графику с низким энергопотреблением в режиме ожидания
  • HUC - HuC предназначен для разгрузки некоторых мультимедийных функций с CPU на GPU.

Соответствует сообщению об ошибке необходимому драйверу

Сравните сообщение об ошибке, которое вы получаете при обновлении -initramfs или update-grub , чтобы найти пропавший драйвер. В вашем примере сообщение было « /lib/firmware/i915/kbl_guc_ver9_14.bin », поэтому вам не хватает Kabylake GuC под названием: kbl_guc_ver9_14.bin на веб-странице, показанной выше. Вам не нужен более новый: kbl_guc_ver9_39.bin

Требуется загрузка драйвера

Больше нет сценария установки, как в прошлых версиях. Просто выделите отсутствующий драйвер (blob) и щелкните по нему. Появляется следующий экран:

Intel i915 drivers download.png

Первоначально вы видите только «шестнадцатеричный дамп», но после щелчка по ссылке под названием plain открывается окно загрузки, как показано выше.

Нажмите «Сохранить файл»

Установить драйвер с помощью простого sudo cp (команда копирования)

После загрузки установка выполняется простой sudo cp (команда копирования) и нет сложных команд tar , или ./ script_name шаги установки.

Быстрая установка

cd ~/Downloads
sudo cp kbl_guc_ver9_14.bin /lib/firmware/i915
sudo cp bxt_guc_ver8_7.bin /lib/firmware/i915

ВАЖНО: Замените kbl_guc_ver9_14.bin и bxt_guc_ver8_7.bin выше отсутствующими имена драйверов, которые вы скачали.

VOILA! Новый драйвер установлен. Намного проще, чем предыдущие методы установки при отсутствии драйверов Intel i915!

TL; DR Исследовательская установка

У меня уже был установлен драйвер. Этот длительный метод установки дает вам представление об эффектах до и после копирования BLOB :

$ sudo updatedb
$ llocate kbl_guc_ver9_14.bin
ACCESS      OWNER  GROUP  SIZE    MODIFIED    NAME (updatdb last ran: 2018-05-26 12:07:57)
-rw-rw-r--  rick   rick   142656  2018-05-26  /home/rick/Downloads/kbl_guc_ver9_14.bin
-rw-rw-r--  rick   rick   142656  2017-02-24  /home/rick/Downloads/kbl_guc_ver9_14/kbl_guc_ver9_14.bin
-rw-r--r--  root   root   142656  2017-10-26  /lib/firmware/i915/kbl_guc_ver9_14.bin
$ diff /home/rick/Downloads/kbl_guc_ver9_14/kbl_guc_ver9_14.bin /lib/firmware/i915/kbl_guc_ver9_14.bin
# Blank line appears here signifying no differences from previous version
$ sudo cp /home/rick/Downloads/kbl_guc_ver9_14/kbl_guc_ver9_14.bin /lib/firmware/i915
$ llocate kbl_guc_ver9_14.bin
ACCESS      OWNER  GROUP  SIZE    MODIFIED    NAME (updatdb last ran: 2018-05-26 12:07:57)
-rw-rw-r--  rick   rick   142656  2018-05-26  /home/rick/Downloads/kbl_guc_ver9_14.bin
-rw-rw-r--  rick   rick   142656  2017-02-24  /home/rick/Downloads/kbl_guc_ver9_14/kbl_guc_ver9_14.bin
-rw-r--r--  root   root   142656  2018-05-26  /lib/firmware/i915/kbl_guc_ver9_14.bin

Используйте команду locate ниже вместо llocate .


14 февраля 2017 г. - Intel выпустила драйверы

Согласно сегодняшнему отчету об ошибке ( W: Возможно отсутствие микропрограммы /lib/firmware/i915/kbl_guc_ver9_14.bin для модуля i915 ) Intel выпустила требуются драйверы Kabylake и Broxton на их ( https://01.org/linuxgraphics/downloads/firmware ) веб-странице:

Intel Graphics for Linux Drivers

Загрузите недостающие драйверы для Kabylake ( GuC - Ver 9.14 ) и ( DMC - Ver 1.01 ) и Broxton ( GuC - Ver 8.7 ). Они имеют формат .tar.gz и .tar.bz2 .

Установите драйверы в формате «tar»

Хотя вы можете запустить install.sh сценарии эти инструкции самые простые.

Перейдите в каталог загрузки и проверьте наличие файлов:

:~$ cd Downloads

:~/Downloads$ ll *tar*
-rw-rw-r-- 1 rick rick 69329 Feb 14 21:05 bxtgucver87.tar.gz
-rw-rw-r-- 1 rick rick  4338 Feb 14 21:06 kbldmcver101.tar.bz2
-rw-rw-r-- 1 rick rick 70402 Feb 14 21:06 kblgucver914.tar.gz

Извлеките сжатые файлы tar:

:~/Downloads$ tar -zxvf bxtgucver87.tar.gz
firmware/bxt/guc/bxt_guc_ver8_7/
firmware/bxt/guc/bxt_guc_ver8_7/install.sh
firmware/bxt/guc/bxt_guc_ver8_7/ReleaseNotes.txt
firmware/bxt/guc/bxt_guc_ver8_7/bxt_guc_ver8_7.bin

:~/Downloads$ tar -xjvf kbldmcver101.tar.bz2
kbl_dmc_ver1_01/
kbl_dmc_ver1_01/kbl_dmc_ver1_01.bin
kbl_dmc_ver1_01/install.sh
kbl_dmc_ver1_01/ReleaseNotes.txt

:~/Downloads$ tar -zxvf kblgucver914.tar.gz
firmware/kbl/guc/kbl_guc_ver9_14/
firmware/kbl/guc/kbl_guc_ver9_14/install.sh
firmware/kbl/guc/kbl_guc_ver9_14/kbl_guc_ver9_14.bin
firmware/kbl/guc/kbl_guc_ver9_14/ReleaseNotes.txt

Скопируйте файлы и обновите initramfs

:~/Downloads$ sudo cp -t /lib/firmware/i915/ firmware/bxt/guc/bxt_guc_ver8_7/bxt_guc_ver8_7.bin kbl_dmc_ver1_01/kbl_dmc_ver1_01.bin firmware/kbl/guc/kbl_guc_ver9_14/kbl_guc_ver9_14.bin
:~/Downloads$ sudo update-initramfs -u
update-initramfs: Generating /boot/initrd.img-4.9.9-040909-generic

Обратите внимание на ошибку (предупреждение ) сообщения исчезли!

Удалить рабочие файлы

:~/Downloads$ rm -r firmware kbl_dmc_ver1_01 *.tar.*

Историческое (исходное) сообщение для справки

У меня было два предупреждающих сообщения об отсутствии драйверов i915 для ядра 4.6.3, 4.7.1, 4.7.2, 4.7 .3 и 4.7.5. Я проигнорировал их, и с моей интегрированной графикой Intel HD4000 все было хорошо. Я бы хотел, чтобы то же самое можно было сказать о Nvidia и Nouvaeu.

Как указано в одном из ответов в вашей ссылке, вы можете перейти на веб-сайт Intel, чтобы получить самые последние версии драйверов графики Linux по адресу: intel-linux-graphics -прошивки . Однако, когда я прочитал этот сайт несколько недель назад, меня беспокоили все возможные проблемы, которые могут пойти не так при различных сценариях, поэтому я отказался.

Вы установили релиз-кандидат 4.8 от 24 сентября? Я считаю, что это самая последняя версия Ubuntu. Вам не нужно отвечать, но мне любопытно, почему вы выбрали 4.8 вместо 4.7.5, то есть какие различия вам нужны, чтобы исправить ситуацию.

Изменить - 19 октября 2016 г.

Теперь используется версия ядра 4.8.1 (настоящая версия, а не релиз-кандидат) уже больше недели, и все работает нормально. Однако это под Ubuntu 16.04. Ubuntu 16.10 был выпущен 13 октября, и я полагаю, что он использует версию ядра 4.8.0.

Я не планирую продолжать обновлять этот ответ, но я хотел бы опровергнуть вывод о том, что у кандидатов на выпуск 4.8 могут быть проблемы. Настоящая версия - нет.

Редактировать - 2 февраля 2017 г.

Сейчас работает основная версия ядра версии 4.9.5, которая на данный момент Ubuntu 16.04 обновила свое ядро ​​до 4.4.0-59. Intel изменила ссылку на драйверы Intel Graphics для Linux , и я обновил новую ссылку выше.

По-прежнему остаются вопросы о предупреждающих сообщениях, генерируемых sudo update-initramfs -u , когда ядро версия> 4.8 (Ubuntu 16.10 и Ubuntu 17.04):

W: Possible missing firmware /lib/firmware/i915/kbl_dmc_ver1_01.bin for module i915
W: Possible missing firmware /lib/firmware/i915/kbl_guc_ver9_14.bin for module i915
W: Possible missing firmware /lib/firmware/i915/bxt_guc_ver8_7.bin for module i915

Как указано в отчете об ошибке ( bugs.launchpad.net - ошибка прошивки Linux ), драйверы просто не существуют и не появятся до тех пор, пока не появится будущий чип. под названием "kaby lake" выпущено.

Отключить предупреждающие сообщения

Чтобы отключить предупреждающее сообщение, я сделал следующее:

$ sudo cp assembly/hello /lib/firmware/i915/kbl_dmc_ver1_01.bin
$ sudo cp assembly/hello /lib/firmware/i915/kbl_guc_ver9_14.bin
$ sudo cp assembly/hello /lib/firmware/i915/bxt_guc_ver8_7.bin
$ sudo update-initramfs -u
update-initramfs: Generating /boot/initrd.img-4.9.5-040905-generic

Voila! Больше никаких предупреждающих сообщений.

Программа "hello" - это программа на ассемблере размером 504 байта, которая говорит "Hello World!". Вы можете скопировать любой небольшой исполняемый файл в двоичные файлы прошивки, указанные в сообщениях об ошибках. Когда Intel в конце концов выпустит их, программа обновления программного обеспечения заменит их настоящими версиями.

Как перемещаться по веб-сайту Intel Graphics для Linux

В комментариях был задан вопрос, как перемещаться на новом веб-сайте Intel ( 01.org - Загрузки графики Linux ), на котором представлен этот экран:

Intel Graphics for Linux 1

Введите Ubuntu 16.04 в поле поиска и нажмите кнопку Фильтр .

Для Ubuntu 16.10 выберите первый результат. В нашем случае Ubuntu 16.04 выберите второй результат ИНСТРУМЕНТ ОБНОВЛЕНИЯ ГРАФИКИ INTEL ДЛЯ LINUX * OS V2.0.2 , и появится следующий экран:

Intel Graphics for Linux 2

В моем случае я выбрал 64-разрядную версию Ubuntu 16.04, которая загрузила файл intel-graphics-update-tool_2.0.2_amd64.deb в мой каталог ~ / Downloads .

Следующим шагом является открытие терминала и использование:

cd Downloads
sudo dpkg -i intel*.deb

ПРИМЕЧАНИЕ: Intel использует шрифт ancients ttf, и ваша установка не удастся, если его нет в вашей системе. На этом этапе вам необходимо использовать:

sudo apt -f install
sudo apt update
sudo apt upgrade

Теперь вы можете запустить инструмент Intel Graphics for Linux Updater , как показано на этом экране:

Intel Graphics for Linux 3

Добавить подписи Intel для Ubuntu

Во время apt- get update вы можете увидеть такие сообщения об ошибках / предупреждениях:

W: GPG error: https://download.01.org/gfx/ubuntu/16.04/main xenial InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 56A3DEF863961D39
E: The repository 'https://download.01.org/gfx/ubuntu/16.04/main xenial InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

Вам нужно будет добавить подписи Intel, используя:

wget --no-check-certificate https://download.01.org/gfx/RPM-GPG-KEY-ilg-4 -O - | \
sudo apt-key add -

Затем обновите в Ubuntu:

sudo apt update
sudo apt upgrade
24
ответ дан 22 November 2019 в 23:19

Вариант прошивки-blob с sudo cp грязный, это не чистая установка.

Как чистая установка, такая:

Загрузите новейшую прошивку linux из здесь и установите сохраненный пакет через терминал с помощью apt:

$ cd Downloads

$ sudo apt install ./linux-firmware_1.190_all.deb
0
ответ дан 5 January 2021 в 22:37

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

Сначала он запускает простой update-initramfs -u , собирая предупреждения о любых недостающих файлах прошивки i915. Затем он попытается загрузить файлы с этими именами напрямую из git-репозитория микропрограмм Linux во временный каталог, прежде чем переместить их в соответствующую папку микропрограмм с соответствующими правами владельца и разрешениями.

#!/bin/bash

WARNING_PATTERN='(?<=W: Possible missing firmware /lib/firmware/i915/)[\w.]+.bin(?= for module i915)'
DOWNLOAD_URL='https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915/{}'
FIRMWARE_DIR='/lib/firmware/i915'

shopt -s nullglob

WORKDIR="$(mktemp -d)"
cd "$WORKDIR" || exit 1
echo "Will check for missing i915 firmware and download blobs in '$WORKDIR'."

sudo update-initramfs -u |&
    grep -Po "$WARNING_PATTERN" |
    xargs -t -I {} curl -O "$DOWNLOAD_URL"

if [[ -n "$(shopt -s nullglob; echo ./*.bin)" ]] ; then
    sudo chown root: ./*.bin
    sudo chmod 644 ./*.bin
    sudo mv ./*.bin "$FIRMWARE_DIR"
    sudo update-initramfs -u
else
    echo 'No missing firmware found/downloaded.'
fi

rmdir "$WORKDIR"

Мне кажется, это нормально работает, но никаких гарантий.

0
ответ дан 27 April 2021 в 00:25

Другие вопросы по тегам:

Похожие вопросы: