升级到 20.10 后系统无法使用 - i915 GPU 挂起

升级到 20.10 后系统无法使用 - i915 GPU 挂起

我有一台联想 G710 笔记本电脑,自 15.04 版以来一直完美运行 Ubuntu。

更新到 20.04 后,桌面偶尔会随机完全冻结。更新到 20.10 后,现在可以正常启动,登录屏幕显示正常。在我尝试打开任何应用程序之前,桌面都很好。应用程序名称出现在顶部,然后桌面完全冻结。在某些情况下,Dock 中的应用程序图标会变成像素化。有时桌面的一部分会闪烁成纯黑色。

鼠标仍然偶尔移动,我可以按 CTRL+ALT+F3 进入命令行。

各种搜索都表明显卡驱动程序存在问题。这是英特尔 Haswell 显卡芯片。

我在登录时尝试了Ubuntu和选项,都给出了相同的结果。Ubuntu on Wayland

解决这个问题的最佳方法是什么?

编辑:

输出ls -al ~/.local/share/gnome-shell/extensions

drwxrwxr-x 4 carl carl 4096 Oct 26 18:29 gTile@vibou
drwxrwxr-x 3 carl carl 4096 Aug 13 18:55 [email protected]
drwxrwxr-x 3 carl carl 4096 Oct 30 14:53 [email protected]
drwxrwxr-x 2 carl carl 4096 Sep 10 18:11 [email protected]
drwxrwxr-x 3 carl carl 4096 Oct 30 14:53 [email protected]

输出ls -al /usr/share/gnome-shell/extensions

drwxr-xr-x 2 root root 4096 Oct 30 13:53 desktop-icons@csoriano
drwxr-xr-x 3 root root 4096 Oct 30 13:53 [email protected]
drwxr-xr-x 3 root root 4096 Oct 30 13:53 [email protected]

输出free -h

              total        used        free      shared  buff/cache   available
Mem:          5.7Gi       735Mi       4.2Gi        73Mi       855Mi       4.7Gi
Swap:         2.0Gi          0B       2.0Gi

输出sysctl vm.swappiness

vm.swappiness = 60

编辑2dmesg包括的输出i915 GPU HANG

答案1

更新:Ubuntu 21.04 当前 ISO 映像已经过测试,它包含内核 5.11.0-11,并且安装正常进行。

5.11 Ubuntu 发行版内核导致了 Gnome、KDE、XFCE(至少)出现与自行编译的 5.11 内核相同的不稳定问题,如果您遇到同样的问题,请继续使用 5.11 之前的内核。

更新2:内核升级至5.11.0-22,一切正常。

提示:您可以通过以下命令同步来下载并测试最新的开发 ISO。

zsync http://cdimage.ubuntu.com/daily-live/current/jammy-desktop-amd64.iso.zsync

第一次运行该命令时,将下载 ISO,任何其他时间在 ISO 目录中运行相同的命令时,系统将检查是否有任何更改,并在必要时更新 ISO。


建议的解决方案:从发行版的存储库安装可用的内核版本

笔记:如果您想从由于此问题而导致图形安装环境崩溃的映像执行全新安装i915,请在 ISO 的启动菜单中选择(安全图形),然后在安装后执行必要的步骤。

例如,Focal Fossa 用户将从以下位置下载并安装以下软件包

https://packages.ubuntu.com/focal/kernel/

  1. linux-image-(kernel_version)-generic
  2. linux-modules-(kernel_version)-generic
  3. linux-modules-extra-(kernel_version)-generic

使用命令安装,

sudo apt install <package>

重启。

如果您尚未安装任何较新的内核,系统将自动使用新内核启动,否则请从 GRUB 菜单中选择内核。


高级方法

5.11 之前内核的解决方案在这里Red Hat Bugzilla – 错误 1843274

如果你使用旧内核 5.4.0 启动,GUI 系统就可以使用。使用 5.8.0 内核,终端仍然可以使用,请尝试CTRL+ALT+F3

解决方案是修补i915模块。从下载补丁这里

要了解补丁,请查看英特尔手册第 50 页,它与命令有关MEDIA_VFE_STATE,该命令必须根据 GPU 的型号提供正确数量的线程。

第一种方法:修补并重新编译新内核

快速指南

  1. 构建内核的基本依赖项是sudo apt install libncurses-dev flex bison openssl libssl-dev dkms libelf-dev libudev-dev libpci-dev libiberty-dev autoconf
  2. 从以下位置下载您选择的内核源代码www.kernel.org并将其提取。
  3. 进入内核源目录。
  4. sudo make mrproper使用内核目录中的清理内核。
  5. 将补丁下载到内核源代码父目录中。
  6. 使用以下方式应用补丁patch -p1 < ../drm-i915-gt-Limit-VFE-threads-based-on-GT.patch
  7. 配置内核或运行sudo make localmodconfig以快速完成,按住 Enter 键直到所有问题都得到解答
  8. 使用以下命令编译内核sudo make -j (# of CPU threads) bindeb-pkg
  9. 安装内核源码目录父目录中生成的deblinux-imagelinux-headers
  10. 重新启动,如果需要,从 GRUB 菜单中选择新内核

根据您的喜好、硬件等优化上述过程

第二种方法:仅修补并重新编译模块

还可以为已安装的内核重建修补模块,以便能够使用官方分发内核或任何其他预编译内核。

英特尔官方的 i915 编译指南是这里,如果您将其下载为 PDF,请转至第 41 页。

您可以完全按照所示的步骤进行操作,但请注意以下事项。

  1. 如果您要为您正在运行的内核版本以外的其他内核版本重新编译模块,那么您必须将其替换$(uname -r)为您目标版本,例如5.8.0-29-generic

  2. 如果您/tmp/kernel按照指南使用该目录,则重新启动后该目录将丢失。

  3. 在第 5 步之后,你必须修补内核,patch -p1 < ../drm-i915-gt-Limit-VFE-threads-based-on-GT.patch假设补丁位于内核源代码的父目录中

  4. 可以跳过步骤9。

  5. 在步骤12之后,您可能会收到有关模块加密验证的错误,这没有问题,模块已安装/lib/modules/5.8.0-29-generic/extradrivers并且系统知道它在那里,应该通过步骤13进行加载。

  6. 应执行步骤 14,说明目标内核版本,以 更改5.8.0-29-generic如下命令sudo depmod -v 5.8.0-29-genericsudo update-initramfs -k 5.8.0-29-generic -u

重启后您的系统将可以再次使用。

应该对任何新内核执行此过程,直到 Ubuntu 解决问题为止。

答案2

我从 Kubuntu 20.04 迁移到 20.10,在 Acer 720p 上遇到了同样的“GPU 挂起”错误。在等待修复期间,我将内核从 5.8 降级到 5.4,现在运行良好。

答案3

这是最新 Linux 内核中 i915 驱动程序的一个现有错误。

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1872001https://gitlab.freedesktop.org/drm/intel/-/issues/673

到目前为止,还没有解决方案或解决方法。我已用 Ubuntu 18.04 替换了 Ubuntu 20.10。

更新- 我接受了另一个答案,因为根据赞成票数判断它是正确的,这对遇到此问题的其他人来说应该更有用。
(免责声明 - 我自己还没有尝试过)

答案4

nomodeset 不是解决方案!

除非您不想使用任何图形驱动程序,否则不要在 grub 中使用 nomodeset!

附加i915.enable_psr=0然后/etc/default/grub GRUB_CMDLINE_LINUX_DEFAULT重新sudo update-grub2启动

相关内容