Когда я выполняю ядро или обновление драйвера 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
Что это предупреждение означает точно и как я могу зафиксировать его?
Пакет драйверов несколько отстает от ядра. В моём случае отсутствующая прошивка не имеет значения, так как у меня нет процессора 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, этот ответ также работает хорошо.
Я также столкнулся с аналогичной проблемой, потому что я обновил ядро из приложения Ubuntu Gnome 16.04 «Программное обеспечение» (собственный менеджер пакетов), и оно вылетело во время обновления.
Мне снова запретили загружать Ubuntu, потому что образ linux был безуспешно сгенерирован.
Чтобы решить эту проблему с этого момента, я сделал следующее:
Shift
, чтобы войти в меню grub; * 4.4.0-21-generic
и нажмите Enter
; * 4.4.0-59-generic
(я использовал для него диспетчер пакетов Synaptic); KabyLake kbl DMC - Ver 1.01
; * 4.4.0-59-generic
(в моем случае) или просто linux-generic
для последнего полного универсального ядра Linux. Успех! Ядро обновлено, и все прошивки работают нормально!
С уважением!
Если вы используете debian (у меня есть Debian GNU / Linux buster), просто выполните следующие действия:
создайте папку:
sudo mkdir -p / lib / firmware / i915
скопируйте все файлы из https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/i915 в эту папку
Перенастройте пакет initramfs-tools:
sudo dpkg-reconfigure initramfs-tools
Чтобы ответить на ваш вопрос, вам не нужно обновлять драйверы для процессора, который вы не используете, но приятно видеть, что предупреждения исчезают, когда вы это делаете .
Сегодня я получил следующее предупреждение:
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
) исчезли, что сделало жизнь менее стрессовой.
Недавно компания Intel создала новая страница загрузки и новый макет веб-страницы:
Файлы загрузки теперь называются прошивкой blobs , что является новым языком для драйверов прошивки . Это означает B inary L arge OB ject (BLOB).
Драйверы сортируются по процессору:
bxt
Broxton, Отменено в 2016 году, преемник процессоров Cherry Trail kbl
Kabylake, 7-го поколения, например i7-7700 skl
Skylake, 6-го поколения, например i7-6700 Затем драйверы сгруппированы по подгруппам ( полное объяснение здесь ):
Сравните сообщение об ошибке, которое вы получаете при обновлении -initramfs
или update-grub
, чтобы найти пропавший драйвер. В вашем примере сообщение было « /lib/firmware/i915/kbl_guc_ver9_14.bin
», поэтому вам не хватает Kabylake GuC под названием: kbl_guc_ver9_14.bin
на веб-странице, показанной выше. Вам не нужен более новый: kbl_guc_ver9_39.bin
Больше нет сценария установки, как в прошлых версиях. Просто выделите отсутствующий драйвер (blob) и щелкните по нему. Появляется следующий экран:
Первоначально вы видите только «шестнадцатеричный дамп», но после щелчка по ссылке под названием 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!
У меня уже был установлен драйвер. Этот длительный метод установки дает вам представление об эффектах до и после копирования 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 .
Согласно сегодняшнему отчету об ошибке ( W: Возможно отсутствие микропрограммы /lib/firmware/i915/kbl_guc_ver9_14.bin для модуля i915 ) Intel выпустила требуются драйверы Kabylake и Broxton на их ( https://01.org/linuxgraphics/downloads/firmware ) веб-странице:
Загрузите недостающие драйверы для Kabylake ( GuC - Ver 9.14 ) и ( DMC - Ver 1.01 ) и Broxton ( GuC - Ver 8.7 ). Они имеют формат .tar.gz
и .tar.bz2
.
Хотя вы можете запустить 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
:~/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
:~/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, то есть какие различия вам нужны, чтобы исправить ситуацию.
Теперь используется версия ядра 4.8.1 (настоящая версия, а не релиз-кандидат) уже больше недели, и все работает нормально. Однако это под Ubuntu 16.04. Ubuntu 16.10 был выпущен 13 октября, и я полагаю, что он использует версию ядра 4.8.0.
Я не планирую продолжать обновлять этот ответ, но я хотел бы опровергнуть вывод о том, что у кандидатов на выпуск 4.8 могут быть проблемы. Настоящая версия - нет.
Сейчас работает основная версия ядра версии 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 ( 01.org - Загрузки графики Linux ), на котором представлен этот экран:
Введите Ubuntu 16.04
в поле поиска и нажмите кнопку Фильтр
.
Для Ubuntu 16.10 выберите первый результат. В нашем случае Ubuntu 16.04 выберите второй результат ИНСТРУМЕНТ ОБНОВЛЕНИЯ ГРАФИКИ INTEL ДЛЯ LINUX * OS V2.0.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
, как показано на этом экране:
Во время 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
Вариант прошивки-blob с sudo cp
грязный, это не чистая установка.
Как чистая установка, такая:
Загрузите новейшую прошивку linux из здесь и установите сохраненный пакет через терминал с помощью apt:
$ cd Downloads
$ sudo apt install ./linux-firmware_1.190_all.deb
Вот небольшой сценарий, основанный на основных ответах, для автоматизации загрузки и установки 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"
Мне кажется, это нормально работает, но никаких гарантий.