可能缺少固件 /lib/firmware/i915

Mal*_*chi 98 kernel i915 intel drivers 16.04

我将笔记本电脑升级为 4.8 内核,在此过程中出现了以下警告。

update-initramfs: Generating /boot/initrd.img-4.8.0-040800-generic
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
Run Code Online (Sandbox Code Playgroud)

这些对我来说似乎有点奇怪,因为我的 CPU 是 i7-6700HQ,这是一个 Skylake,我的理解是这些是针对不同的 CPU?我之前按照此处的说明进行操作因为过去我收到了有关 CPU 系列的警告。

这些警告是我应该忽略的事情,还是应该为这些 CPU 系列安装 guc/dmc 驱动程序?

Win*_*nix 148

2019 年 5 月 20 日更新

要回答您的问题,您无需为未运行的处理器更新驱动程序,但很高兴看到警告消失后您这样做。

今天我收到了这些警告:

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
Run Code Online (Sandbox Code Playgroud)

我下载了 blob(在下一节中描述),然后使用:

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

$ sudo update-initramfs -u
update-initramfs: Generating /boot/initrd.img-5.0.1-050001-generic
Run Code Online (Sandbox Code Playgroud)

现在我的Sky Lake ( skl) 驱动程序是最新的,我可以尝试互联网上推荐的最新内核参数。未来处理器Kaby Lake ( kbl)、Cannon Lake ( cnl) 和Ice Lake ( icl) 的警告消息已经消失,让生活压力更小。


2018 年 5 月 26 日更新

2018 年 8 月 6 日的小修订。

“blob”的新下载屏幕

最近英特尔创建了一个新的下载页面和新的网页布局:

英特尔 i915 固件 blob

下载文件现在称为固件blob,这是固件驱动程序的新说法。它代表inary大号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。

将错误消息与所需的驱动程序匹配

比较您收到的错误消息update-initramfsupdate-grub查找丢失的驱动程序。在您的示例中,消息是“ /lib/firmware/i915/kbl_guc_ver9_14.bin”,因此您缺少kbl_guc_ver9_14.bin上面显示的网页中名为:的 Kabylake GuC 。你不想要较新的:kbl_guc_ver9_39.bin

需要下载驱动

不再像过去的版本那样安装脚本。只需突出显示缺少的驱动程序 (blob) 并单击它。出现此屏幕:

Intel i915 驱动下载.png

最初您只能看到“十六进制转储”,但单击标题为普通的链接后,会出现如上图所示的下载窗口。

点击“保存文件”

使用简单的sudo cp(复制命令)安装驱动程序

下载后,安装很简单sudo cp(复制命令),没有复杂的tar命令或./script_name安装步骤。

快速安装

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
Run Code Online (Sandbox Code Playgroud)

重要提示:用您下载的缺少的驱动程序名称替换kbl_guc_ver9_14.binbxt_guc_ver8_7.bin以上。

瞧!安装了新的驱动程序。比以前安装英特尔 i915 驱动程序的方法简单得多!

TL;DR 探索性安装

我已经安装了驱动程序。这种冗长的安装方法让您了解复制BLOB的前后效果:

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

$ sudo update-initramfs -u
update-initramfs: Generating /boot/initrd.img-5.0.1-050001-generic
Run Code Online (Sandbox Code Playgroud)

使用下面的locate命令代替llocate


2017 年 2 月 14 日 - 英特尔发布了驱动程序

根据今天的这个错误报告(W:模块 i915 可能缺少固件 /lib/firmware/i915/kbl_guc_ver9_14.bin)英特尔已在其(https://01.org/linuxgraphics/downloads/)上发布了所需的KabylakeBroxton驱动程序固件)网页:

适用于 Linux 驱动程序的英特尔显卡

下载Kabylake ( GuC-Ver 9.14 ) 和 ( DMC-Ver 1.01 ) 和Broxton ( GuC-Ver 8.7 )缺少的驱动程序。这些是在.tar.gz.tar.bz2格式。

以“tar”格式安装驱动程序

尽管您可以运行install.sh脚本,但这些说明是最简单的。

切换到下载目录并验证文件是否存在:

cd ~/Downloads
sudo cp kbl_guc_ver9_14.bin /lib/firmware/i915
sudo cp bxt_guc_ver8_7.bin /lib/firmware/i915
Run Code Online (Sandbox Code Playgroud)

解压压缩的 tar 文件:

$ 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
Run Code Online (Sandbox Code Playgroud)

复制文件并更新 initramfs

:~$ 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
Run Code Online (Sandbox Code Playgroud)

请注意错误(警告)消息消失了!

删除工作文件

:~/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
Run Code Online (Sandbox Code Playgroud)

历史(原始)帖子供参考

我收到了两条关于内核 4.6.3、4.7.1、4.7.2、4.7.3 和 4.7.5 缺少 i915 驱动程序的警告消息。我忽略了它们,我的 HD4000 英特尔集成显卡一切正常。我希望也能对 Nvidia 和 Nouvaeu 说同样的话。

正如您链接中的一个答案所述,您可以访问英特尔的网站以获取最新的 Linux 图形驱动程序:intel-linux-graphics-firmwares。然而,当我几周前阅读该网站时,我担心在不同情况下可能出错的所有可能的事情,所以我选择退出。

您是否从 9 月 24 日安装了 4.8 候选版本 6?我相信这是 Ubuntu 中最新的。您不必回答,但我很好奇您为什么使用 4.8 而不是 4.7.5,即您需要修复哪些差异。

编辑 - 2016 年 10 月 19 日

现在使用内核版本 4.8.1(真实版本而不是候选版本)一个多星期,一切运行良好。不过,这是在 Ubuntu 16.04 下。Ubuntu 16.10 于 10 月 13 日发布,我相信它使用的是内核版本 4.8.0。

我不打算继续更新这个答案,但我想搁置 4.8 候选版本可能有问题的推断。真正的版本没有。

编辑 - 2017 年 2 月 2 日

现在运行内核版本 4.9.5 主线版本,此时 Ubuntu 16.04 已将其内核更新为 4.4.0-59。英特尔更改了 Linux驱动程序的英特尔显卡的链接,我更新了上面的新链接。

关于sudo update-initramfs -u内核版本 > 4.8(Ubuntu 16.10 和 Ubuntu 17.04)时生成的警告消息的问题仍然存在:

:~/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
Run Code Online (Sandbox Code Playgroud)

正如错误报告(bugs.launchpad.net - linux 固件错误)中所述,驱动程序根本不存在,直到未来名为“kaby Lake”的芯片发布后才会存在。

使警告消息消失

为了使警告消息消失,我执行了以下操作:

:~/Downloads$ rm -r firmware kbl_dmc_ver1_01 *.tar.*
Run Code Online (Sandbox Code Playgroud)

瞧!不再有警告消息。

程序“hello”是一个 504 字节的汇编程序,它显示“Hello World!”。您可以将任何小的可执行文件复制到错误消息中给出的固件二进制文件中。当英特尔最终发布它们时,软件更新程序将用真实版本替换它们。

如何浏览适用于 Linux 的英特尔显卡网站

有人通过评论询问如何在显示此屏幕的新英特尔网站 ( 01.org - Linux 图形下载) 中导航:

适用于 Linux 的英特尔显卡 1

Ubuntu 16.04在搜索字段中键入,然后单击Filter按钮。

对于 Ubuntu 16.10,选择第一个结果。在我们的例子中 Ubuntu 16.04 选择第二个结果INTEL GRAPHICS UPDATE TOOL FOR LINUX* OS V2.0.2,这个屏幕出现:

适用于 Linux 2 的英特尔显卡

就我而言,我选择了 Ubuntu 16.04 64 位,它将文件下载intel-graphics-update-tool_2.0.2_amd64.deb到我的~/Downloads目录中。

下一步是打开终端并使用:

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
Run Code Online (Sandbox Code Playgroud)

注意: Intel 使用ancients ttf 字体,如果它不在您的系统上,您的安装将失败。此时你需要使用:

$ 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
Run Code Online (Sandbox Code Playgroud)

现在您可以运行该Intel Graphics for Linux Updater工具,如下图所示:

适用于 Linux 3 的英特尔显卡

为 Ubuntu 添加 Intel 签名

在此期间,apt-get update您可以看到如下警告/错误消息:

cd Downloads
sudo dpkg -i intel*.deb
Run Code Online (Sandbox Code Playgroud)

您需要使用以下方法添加英特尔的签名:

sudo apt -f install
sudo apt update
sudo apt upgrade
Run Code Online (Sandbox Code Playgroud)

然后在 Ubuntu 中更新:

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.
Run Code Online (Sandbox Code Playgroud)

  • @ElderGeek 看来 Wayland 仍然需要做很多工作。这是我读过的英特尔 i915 内核参数,但不记得在哪里:`i915.enable_rc6=0 i915.enable_psr=0 i915.preliminary_hw_support=1 i915.enable_hd_vgaarb=1 i915.enable_guc_loading=1 i915.enable_guc_loading=1 i99 (2认同)

小智 6

您可以从英特尔网站https://01.org/linuxgraphics/downloads/firmware下载缺少的内核固件

  1. 下载所需文件
  2. 使用扩展文件 tar -xvf
  3. 使用安装驱动程序 sudo bash ./install --install

对所有提到的固件重复,然后重新启动