当前位置: 首页>>技术教程>>正文


更新内核到4.8现在缺少固件警告

, , , ,

问题描述

我升级了我的笔记本电脑以获得4.8内核,在此过程中出现了以下警告。

update-initramfs: Generating /boot/initrd.img-4.8.0-040800-generic
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

这些对我来说有点奇怪,因为我的CPU是i7-6700HQ,这是一个skylake,我的理解是这些是针对不同的CPU?我之前按照指示here进行操作,因为我有关于CPU系列的警告。

这些警告是我应该忽略的,还是应该为这些CPU系列安装guc /dmc驱动程序?

最佳解决思路

2018年5月26日更新

修订2018年8月6日。

“blobs”的新下载屏幕

最近,英特尔创建了一个新的download page和新的网页布局:

16.04,drivers,kernel,intel,ubuntu

下载文件现在称为固件blob,new-speak用于固件驱动程序。它代表二进制大对象(BLOB)。

驱动程序按处理器排序:

  • bxt Broxton,于2016年取消,Cherry Trail处理器的继承者

  • kbl Kabylake,第7代,例如i7-7700

  • skl Skylake,第6代,例如i7-6700

然后驱动程序按子组组织(完整说明here):

  • GUC – GuC旨在在各种图形并行引擎上执行图形工作负载调度。

  • DMC – DMC提供额外的图形low-power空闲状态。

  • 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)并单击它即可。出现此屏幕:

16.04,drivers,kernel,intel,ubuntu

最初您只看到”hex dump”,但在点击标题为plain的链接后,会出现如下图所示的下载窗口。

单击”Save File”

使用简单的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替换为您下载的缺少的驱动程序名称。

瞧!安装了新驱动程序。比以前的安装方法更简单,因为缺少Intel i915驱动程序!

长话短说探索性安装

我已经安装了驱动程序。这种冗长的安装方法让您了解复制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: Possible missing firmware /lib/firmware/i915/kbl_guc_ver9_14.bin for module i915),英特尔已在其(https://01.org/linuxgraphics/downloads/firmware)网页上发布了所需的Kabylake和Broxton驱动程序:

16.04,drivers,kernel,intel,ubuntu

下载Kabylake(GuC – Ver 9.14)和(DMC – Ver 1.01)和Broxton(GuC – 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.*

历史(原件)帖子供参考

对于Kernel的4.6.3,4.7.1,4.7.2,4.7.3和4.7.5,我有两条关于缺少i915驱动程序的警告信息。我已经忽略了它们,我的HD4000英特尔集成显卡已经很好了。我希望关于Nvidia和Nouvaeu也能说同样的话。

正如链接中的一个答案所述,您可以访问英特尔网站,获取大多数up-to-date 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 firmware bug)中所述,驱动程序根本不存在,直到未来的芯片”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 Graphics Downloads)内导航:

16.04,drivers,kernel,intel,ubuntu

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

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

16.04,drivers,kernel,intel,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工具,因为此屏幕显示:

16.04,drivers,kernel,intel,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

次佳解决思路

您可以从英特尔网站https://01.org/linuxgraphics/downloads/firmware下载缺少的内核固件

  1. 下载所需的文件

  2. 使用tar -xvf扩展文件

  3. 使用sudo bash ./install --install安装驱动程序

重复所有提到的固件,然后重新启动

参考资料

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