当我在 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
这个警告到底是什么意思,我该如何解决?
驱动程序包有些落后于内核。在我的情况下,缺少的固件并不重要,因为我没有 SkyLake 处理器,但在你的情况下它可能很重要。您可以从这里获取更新的固件。
编辑 1:请注意链接已更改,但读者仍然应该能够在新链接中找到他们需要的内容,尽管有时可能很难确切知道您在寻找什么。
编辑 2:此答案应适用于自最初编写此答案以来出现的其他一些新固件要求。例如:
编辑 3:对于使用 git 的用户,这个答案也很有效。
2019 年 5 月 20 日更新
要回答您的问题,您无需为未运行的处理器更新驱动程序,但很高兴看到警告在您这样做时消失。
今天我收到了这些警告:
我下载了 blob(在下一节中描述),然后使用:
现在我的Sky Lake (
skl
) 驱动程序是最新的,我可以试用互联网上推荐的最新内核参数。未来处理器Kaby Lake (kbl
)、Cannon Lake (cnl
) 和Ice Lake (icl
) 的警告消息已经消失,让生活压力减轻。2018 年 5 月 26 日更新
2018 年 8 月 6 日的小修订。
“blob”的新下载屏幕
最近英特尔创建了一个新的下载页面和新的网页布局:
下载文件现在称为固件blob,这是固件驱动程序的新说法。它代表B inary L arge OB ject (BLOB)。
驱动程序按处理器排序:
bxt
Broxton,2016 年取消,Cherry Trail 处理器的继任者kbl
Kabylake,第 7 代,例如 i7-7700skl
Skylake,第 6 代,例如 i7-6700然后按子组组织驱动程序(此处有完整说明):
将错误消息与所需的驱动程序匹配
比较您收到的错误消息
update-initramfs
或update-grub
找到丢失的驱动程序。在您的示例中,消息是“ ”,因此您在上面显示的网页/lib/firmware/i915/kbl_guc_ver9_14.bin
中缺少名为:的 Kabylake GuC 。kbl_guc_ver9_14.bin
你不想要更新的:kbl_guc_ver9_39.bin
需要下载驱动
没有像过去版本那样的安装脚本。只需突出显示缺少的驱动程序 (blob) 并单击它。出现此屏幕:
最初您只看到“十六进制转储”,但单击标题为plain的链接后,会出现如上图所示的下载窗口。
点击“保存文件”
sudo cp
使用简单(复制命令)安装驱动程序下载后,安装很简单
sudo cp
(复制命令),没有复杂的tar
命令,也没有./script_name
安装步骤。快速安装
重要提示:用您下载的缺少的驱动程序名称替换
kbl_guc_ver9_14.bin
及以上。bxt_guc_ver8_7.bin
瞧!已安装新驱动程序。比以前缺少 Intel i915 驱动程序的安装方法简单得多!
TL;DR 探索性安装
我已经安装了驱动程序。这种冗长的安装方法让您了解复制BLOB的前后效果:
使用下面的locate命令代替llocate。
2017 年 2 月 14 日 - 英特尔发布了驱动程序
根据今天的错误报告(W:模块 i915 可能缺少固件/lib/firmware/i915/kbl_guc_ver9_14.bin )英特尔已在其(https://01.org/linuxgraphics/downloads/)上发布了所需的Kabylake和Broxton驱动程序固件)网页:
下载Kabylake ( GuC - Ver 9.14 ) 和 ( DMC - Ver 1.01 ) 和Broxton ( GuC - Ver 8.7 ) 缺少的驱动程序。这些都是
.tar.gz
格式.tar.bz2
。以“tar”格式安装驱动程序
尽管您可以运行
install.sh
脚本,但这些说明是最简单的。切换到下载目录并验证文件是否存在:
提取压缩的 tar 文件:
复制文件并更新 initramfs
请注意错误(警告)消息消失了!
删除工作文件
历史(原始)帖子供参考
对于内核的 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)时生成的警告消息的问题仍然存在:正如错误报告(bugs.launchpad.net - linux 固件错误)中所述,驱动程序根本不存在,并且在未来称为“kaby Lake”的芯片发布之前不会存在。
使警告消息消失
为了使警告消息消失,我执行了以下操作:
瞧!没有更多的警告信息。
程序“hello”是一个 504 字节的汇编程序,它显示“Hello World!”。您可以将任何小型可执行文件复制到错误消息中给出的固件二进制文件中。当英特尔最终发布它们时,软件更新程序将用真实版本替换它们。
如何浏览 Intel Graphics for Linux 网站
有人通过评论询问如何在显示此屏幕的新英特尔网站 ( 01.org - Linux Graphics Downloads ) 中导航:
在搜索字段中键入
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
目录中。下一步是打开终端并使用:
注意:英特尔使用古人ttf 字体,如果系统上没有它,您的安装将失败。此时你需要使用:
现在您可以运行该
Intel Graphics for Linux Updater
工具,如此屏幕所示:为 Ubuntu 添加 Intel 签名
在此期间
apt-get update
,您可以看到如下警告/错误消息:您需要使用以下方法添加英特尔的签名:
然后在 Ubuntu 中更新:
我也遇到了类似的问题,因为我已经从 Ubuntu Gnome 16.04“软件”应用程序(本机包管理器)更新了内核,并且在更新时崩溃了。
所以,我被禁止再次启动 Ubuntu,因为 linux-image 没有成功生成。
为了解决这个问题,我做了以下事情:
Shift
立即进入 grub 菜单;*4.4.0-21-generic
,然后按Enter
;*4.4.0-59-generic
(我使用了 Synaptic 包管理器);KabyLake kbl DMC - Ver 1.01
;*4.4.0-59-generic
(在我的情况下)或仅linux-generic
安装最新的完整通用 Linux 内核。成功!内核是最新的,所有固件都可以正常工作!
此致!
如果您正在运行 debian(我有 Debian GNU/Linux buster),只需按照以下步骤操作:
创建文件夹:
将所有文件从https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/i915复制到此文件夹
重新配置 initramfs-tools 包:
固件 blob 变体
sudo cp
很脏,这不是干净的安装。像这样干净安装:
从这里下载最新的 linux-firmware并通过终端使用 apt 安装保存的包:
这是一个基于最佳答案的小脚本,用于自动下载和安装系统抱怨的固件 blob 文件。
首先它运行一个 plain
update-initramfs -u
,捕获有关任何缺少 i915 固件文件的警告。然后它将尝试将具有这些名称的文件直接从 Linux 固件 git 存储库下载到临时目录,然后将它们移动到具有正确所有权和权限的相应固件文件夹中。这对我来说似乎很好,但不能保证。