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


75

当我在16.04上运行内核或NVIDIA驱动程序更新时,这会触发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的集成显卡。

使用的设备是我的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

该警告的确切含义是什么,我该如何解决?


3
我知道了W: Possible missing firmware /lib/firmware/i915/kbl_dmc_ver1.bin for module i915_bpo,我的CPU是装有Intel HD的SKylake。
卡萨巴·托斯

另外,我使用的1.158linux-firmware软件包的版本而不是主线,1.157因为只有该版本才能为我的wifi(杀手级无线)提供有效的固件。
卡萨巴·托斯

3
@CsabaToth kbl代表Kabylake,它是Skylake的继任者。由于您没有这样的CPU,因此您可以忽略该警告,或者只是从Doug Smythies的答案中提供的相同链接中安装Kabylake驱动程序。
字节指挥官

正确,i7 6820hk只是SkyLake,Kaby Lake是下一代
Csaba Toth

Answers:


62

驱动程序包滞后于内核。就我而言,缺少固件并不重要,因为我没有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

编辑3:对于使用git的用户,此答案也很好。


3
我已经成功安装了Skylake的GuC和DMC驱动程序,并且我认为该警告现在应该消失了。谢谢。
字节指挥官

4
啊,我找到了。看起来新的内核更新增加了对新的Kabylake Intel处理器的支持,现在它还希望具有用于这些处理器的模块驱动程序。可能是多余的,因为我没有Kabylake CPU,但是为了消除警告,我还从您链接的站点下载并安装了kbl DMC驱动程序。现在看起来又好了。
字节指挥官

2
“问题”是什么意思?新内核是否将无法启动,或者除了一些警告消息之外,还没有真正可见的影响?
musiKk '16

3
@musiKk:如果您的处理器不是需要丢失固件文件之一的处理器,那么它就不会“重要”,这意味着不会丢失任何后果。例如,只有Skylake处理器需要“ skl”固件。
Doug Smythies

1
@FeryArdiant:是的,警告与实际使用的处理器无关,即使您是否装有固件也是如此。
道格·史密斯

18

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

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

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

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

现在我的Sky Lakeskl)驱动程序是最新的,我可以尝试Internet上推荐的最新内核参数。对未来处理器Kaby Lakekbl),Cannon Lakecnl)和Ice Lakeicl)的警告消息已经消失,生活压力减轻了。


2018年5月26日更新

较小修订于2018年8月6日。

“ blob”的新下载屏幕

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

英特尔i915固件斑点

现在,下载文件称为固件Blob,它是固件驱动程序的新名称。它代表 inary 大号 ARGE OB JECT(BLOB)。

驱动程序按处理器排序:

  • bxt Broxton,2016年取消,Cherry Trail处理器的后继者
  • kbl 第7代Kabylake,例如i7-7700
  • skl 第6代Skylake,例如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),然后单击它。出现此屏幕:

英特尔i915驱动程序download.png

最初,您仅看到“十六进制转储”,但是单击标题为“ ”的链接后,将出现一个下载窗口,如上所示。

点击“保存文件”

简单安装驱动程序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.binbxt_guc_ver8_7.bin您下载缺少的驱动程序名称的上方。

瞧!已安装新的驱动程序。缺少英特尔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


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

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

英特尔显卡Linux驱动程序

下载KabylakeGuC-Ver 9.14)和(DMC-Ver 1.01)和BroxtonGuC-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.*

历史(原始)职位供参考

关于内核4.6.3、4.7.1、4.7.2、4.7.3和4.7.5的i915驱动程序丢失,我有两条警告消息。我忽略了它们,我的HD4000 Intel Integrated Graphics一切正常。我希望对Nvidia和Nouvaeu可以说同样的话。

如您链接中的一个答案所述,您可以访问Intel的网站,以获取最新的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)时生成的警告消息仍然存在问题:

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

瞧!没有更多警告消息。

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

如何浏览Intel Graphics for Linux网站

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

英特尔图形Linux版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目录中。

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

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

为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

2

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

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

为了解决这个问题,我做了以下工作:

  1. 重新启动Linux,然后在按主板屏幕显示的Shift菜单后立即进入;
  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内核。

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

最好的祝福!


图形固件的链接不再起作用。有谁知道现在可以从哪里获得固件?
Nickolai Leschov'2

真?我仍然可以在这里打开它。但是,也请尝试以下链接:git.kernel.org/cgit/linux/kernel/git/firmware/...
马特·梅洛

1

如果您正在运行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/tree/i915复制到此文件夹

  3. 重新配置initramfs-tools软件包:

    sudo dpkg-reconfigure initramfs-tools
    

Ubuntu的命令类似,sudo update-initramfs -u但我在打电话,因此无法确认。Debian问题不在这里,因此您的答案不太可能影响许多人。
WinEunuuchs2Unix
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.