当我在 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,另一个是 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: [email protected]
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
这个警告到底是什么意思?我该如何解决它?
答案1
驱动程序包有点落后于内核。在我的情况下,缺少固件并不重要,因为我没有 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 的用户,这个答案也很好用。
答案2
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
现在我的天湖(skl
) 驱动程序已更新,我可以尝试互联网上推荐的最新内核参数。未来处理器的警告消息卡比湖(kbl
),佳能湖(cnl
) 和冰湖(icl
)的消失使得生活不再那么紧张。
2018 年 5 月 26 日更新
2018 年 8 月 6 日进行小幅修订。
新的“blobs”下载屏幕
最近,英特尔创造了一个新的下载页面和新的网页布局:
下载文件现在称为固件斑点这是固件的新说法驱动程序。 它代表乙伊纳里大号大产科对象(BLOB)。
驱动程序按处理器排序:
bxt
Broxton,2016 年取消,Cherry Trail 处理器的继任者kbl
Kabylake,第七代,例如 i7-7700skl
Skylake,第六代,例如 i7-6700
然后驱动程序按子组进行组织(完整解释这里):
- 古特比- GuC 旨在对各种图形并行引擎执行图形工作负载调度。
- 二甲基碳酸酯- DMC 提供额外的图形低功耗空闲状态。
- 哈萨克斯坦大学- HuC 旨在将一些媒体功能从 CPU 卸载到 GPU。
将错误消息与所需驱动程序匹配
比较您收到的错误消息update-initramfs
或update-grub
查找丢失的驱动程序。在您的示例中,消息为“ /lib/firmware/i915/kbl_guc_ver9_14.bin
”,因此您缺少kbl_guc_ver9_14.bin
上面显示的网页中名为:的 Kabylake GuC。您不需要较新的版本:kbl_guc_ver9_39.bin
需要下载驱动程序
与之前的版本不同,不再有安装脚本。只需突出显示缺少的驱动程序 (blob) 并单击它即可。出现以下屏幕:
最初你只能看到“十六进制转储”,但点击标题为清楚的出现如上图所示的下载窗口。
点击“保存文件”
使用简单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
瞧!已安装新驱动程序。比以前安装缺失的 Intel i915 驱动程序的方法简单得多!
TL;DR 探索性安装
我已经安装了驱动程序。这个冗长的安装方法让你了解复制大对象:
$ 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
使用定位下面的命令代替分配。
2017 年 2 月 14 日 - 英特尔发布驱动程序
根据今天的错误报告(W: 模块 i915 可能缺少固件 /lib/firmware/i915/kbl_guc_ver9_14.bin)英特尔已经发布了所需的卡比莱克和布罗克斯顿司机在他们的(https://01.org/linuxgraphics/downloads/firmware) 网页:
下载缺少的驱动程序卡比莱克(GuC - 版本 9.14) 和 (DMC - 版本 1.01) 和布罗克斯顿(GuC - 版本 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 集成显卡一切正常。我希望 Nvidia 和 Nouvaeu 也能如此。
正如您链接中的一个答案所述,您可以访问英特尔网站以获取最新的 Linux 图形驱动程序:英特尔-Linux-图形固件。然而,当我几周前读到这个网站时,我担心在不同情况下可能出现的所有问题,所以我选择退出。
您是否安装了 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!”。您可以将任何小型可执行文件复制到错误消息中给出的固件二进制文件中。当英特尔最终发布它们时,软件更新程序将用真实版本替换它们。
如何浏览适用于 Linux 的英特尔显卡网站
有人通过评论询问如何在新的英特尔网站内导航(01.org——Linux 图形下载) 显示以下屏幕:
Ubuntu 16.04
在搜索字段中输入内容并单击Filter
按钮。
对于 Ubuntu 16.10,请选择第一个结果。在我们的例子中,Ubuntu 16.04 选择第二个结果INTEL GRAPHICS UPDATE TOOL FOR LINUX* OS V2.0.2
,然后出现以下屏幕:
就我而言,我选择了 Ubuntu 16.04 64 位,它将文件下载intel-graphics-update-tool_2.0.2_amd64.deb
到我的~/Downloads
目录中。
下一步是打开终端并使用:
cd Downloads
sudo dpkg -i intel*.deb
笔记:英特尔使用古人ttf 字体,如果系统上没有该字体,安装将会失败。此时您需要使用:
sudo apt -f install
sudo apt update
sudo apt upgrade
现在您可以运行该Intel Graphics for Linux Updater
工具,如屏幕所示:
为 Ubuntu 添加英特尔签名
在此期间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
答案3
我也遇到过类似的问题,因为我从 Ubuntu Gnome 16.04“软件”应用程序(本机包管理器)更新了内核,但更新时它崩溃了。
因此,我无法再次启动 Ubuntu,因为 Linux 映像生成失败。
为了解决这个问题,我做了以下事情:
- 重新启动 Linux,在主板屏幕后立即按下
Shift
进入 grub 菜单; - 从菜单中选择您以前的 Linux 版本。 在我的情况下,
*4.4.0-21-generic
按Enter
; - 一旦 Ubuntu 重新启动,卸载损坏的 linux 映像。就我而言
*4.4.0-59-generic
(我使用了 Synaptic 包管理器); - 从以下位置下载并安装缺失的固件情报页面(与 Doug Smythies 相同)。就我而言,我得到了
KabyLake kbl DMC - Ver 1.01
; - 最后,再次安装 Linux 内核
*4.4.0-59-generic
(就我而言)或者仅linux-generic
安装最新的完整的通用 Linux 内核。
成功!内核已更新,所有固件运行正常!
此致!
答案4
固件 blob 变体sudo cp
很脏,这不是一个干净的安装。
像这样的干净安装:
从以下网址下载最新的 Linux 固件这里并使用 apt 通过终端安装保存的包:
$ cd Downloads
$ sudo apt install ./linux-firmware_1.190_all.deb