当前位置: 首页>>技术问答>>正文


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

编辑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日更新

最近英特尔已经切换到名为blobs的下载文件,它代表二进制大对象(BLOB)。

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


Skylake(skl)固件

有一个用于访问Skylake(skl)固件的新链接,用于那些具有该图形引擎的人(01.org – Linux Graphics Firmware Downloads)。下面是一个屏幕截图。

drivers,16.04,intel-graphics,initramfs,i915,ubuntu

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

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

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

当内核版本>时,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 firmware bug)表示驱动程序根本不存在,直到未来的芯片”kaby lake”被释放。截至2017年2月,您可以按照以下说明安装这些驱动程序:Updated kernel to 4.8 now missing firmware warnings

使警告消息消失

截至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 Graphics Downloads)内导航:

drivers,16.04,intel-graphics,initramfs,i915,ubuntu

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

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

drivers,16.04,intel-graphics,initramfs,i915,ubuntu

在我的例子中,我选择了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工具,如下所示:

drivers,16.04,intel-graphics,initramfs,i915,ubuntu

为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 “Software”应用程序(本机包管理器)更新了内核,并且在更新时崩溃了。

因此,我被禁止再次启动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. Intel page (same as Doug Smythies)下载并安装缺少的固件。就我而言,我得到了KabyLake kbl DMC - Ver 1.01;

  5. 最后,再次安装Linux内核*4.4.0-59-generic(在我的情况下)或只安装linux-generic以获取最新的完整通用Linux内核。

成功!内核是up-to-date,所有固件工作正常!

最好的祝福!

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1134.html,未经允许,请勿转载。