更新initramfs时“W:模块i915_bpo可能缺少固件”

当我在16.04上运行内核或NVIDIA驱动程序更新时,会触发initramfs rebuild,它会输出以下警告:

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和一个Intel i5-6200U的集成显卡。

使用的设备是我的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的输出,对应于我应该使用该驱动程序的英特尔图形芯片:

  *-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处理器,但在你的情况下它可能很重要。 您可以从此处获取更新的固件。

编辑1:注意链接已更改,但读者仍应能够在新链接中找到所需内容,但有时可能很难确切知道您要查找的内容。

编辑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 

2018年5月26日更新

最近英特尔已经切换到名为blob的下载文件,这些文件代表B inary L arge OB ject(BLOB)。

要查看新的i915驱动程序安装方法,请参阅今天更新的答案 。


Skylake(skl)固件

有一个用于访问Skylake(skl)固件的新链接,用于在此处找到该图形引擎的人( 01.org – Linux图形固件下载 )。 下面是一个屏幕截图。

适用于Linux的英特尔图形4

如果您尝试选择Kabylake(kbl)或Broxton(bxt)固件,您将收到错误消息,因为这些驱动程序尚未向公众发布。

缺少Kabylake(kbl)和Broxton(bxt)固件

旧链接需要特殊登录。 英特尔已经改变了我们其他人的网站链接。

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

 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 

有一次,bug报告( bugs.launchpad.net – linux固件bug )表示驱动程序根本不存在,直到未来的芯片“kaby lake”被释放。 但是,截至2017年2月,您可以按照以下说明安装这些驱动程序:将内核更新到4.8现在缺少固件警告

使警告消息消失

截至2017年2月,请忽略此部分,并按照上一段中的说明操作。

为了使警告消息消失,我做了以下事情:

 $ 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 

瞧! 没有更多警告信息。

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

如何浏览英特尔图形Linux网站

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

适用于Linux的Intel Graphics 1

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

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

适用于Linux的英特尔图形2

在我的例子中,我选择了64位的Ubuntu 16.04,它将文件intel-graphics-update-tool_2.0.2_amd64.deb ~/Downloads到我的~/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工具,如下所示:

适用于Linux 3的Intel Graphics

为Ubuntu添加Intel签名

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. 

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

 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 

我也遇到了类似的问题,因为我已经从Ubuntu Gnome 16.04“软件”应用程序(本机包管理器)更新了内核,并且在更新时崩溃了。

因此,我被禁止再次启动Ubuntu,因为linux-image生成失败。

为了解决这个问题,我做了以下几点:

  1. 重启linux并在主板屏幕后按Shift进入grub菜单;
  2. 从菜单中选择以前的Linux版本。 在我的情况下*4.4.0-21-generic并按Enter ;
  3. 一旦Ubuntu重新启动,卸载损坏的linux-image。 在我的情况下*4.4.0-59-generic (我已经使用了Synaptic包管理器);
  4. 从英特尔页面下载并安装缺少的固件(与Doug Smythies相同) 。 就我而言,我得到了KabyLake kbl DMC - Ver 1.01 ;
  5. 最后,再次安装linux内核*4.4.0-59-generic (在我的情况下)或者只安装linux-generic以获得最新的完整通用Linux内核。

成功! 内核是最新的,所有固件工作正常!

最好的祝福!