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

Car*_*l H 4 i915 graphics 20.10

我有一台联想 G710 笔记本电脑,从 15.04 开始就可以完美地运行 Ubuntu。

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

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

各种搜索表明图形驱动程序问题。它是英特尔 Haswell 图形芯片。

我在登录时尝试了UbuntuUbuntu 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 systemMonitor@gnome-shell-extensions.gcampax.github.com
drwxrwxr-x 3 carl carl 4096 Oct 30 14:53 user-theme@gnome-shell-extensions.gcampax.github.com
drwxrwxr-x 2 carl carl 4096 Sep 10 18:11 weatherintheclock@JasonLG1979.github.io
drwxrwxr-x 3 carl carl 4096 Oct 30 14:53 workspace-indicator@gnome-shell-extensions.gcampax.github.com
Run Code Online (Sandbox Code Playgroud)

输出 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 ubuntu-appindicators@ubuntu.com
drwxr-xr-x 3 root root 4096 Oct 30 13:53 ubuntu-dock@ubuntu.com
Run Code Online (Sandbox Code Playgroud)

输出 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
Run Code Online (Sandbox Code Playgroud)

输出 sysctl vm.swappiness

vm.swappiness = 60
Run Code Online (Sandbox Code Playgroud)

编辑 2 输出dmesg包括i915 GPU HANG

Mou*_*ffa 12

更新: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/impish-desktop-amd64.iso.zsync

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


推荐的解决方案:从您的发行版存储库安装一个有效的内核版本

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

例如,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 – Bug 1843274

如果您使用旧内核 5.4.0 引导,GUI 系统就可以使用了。终端在 5.8.0 内核下仍然可用,试试CTRL+ALT+F3.

解决办法是给i915模块打补丁。从这里下载补丁

要了解补丁,请查看Intel 的手册第 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快速完成,按住回车键直到回答完所有问题
  8. 编译内核 sudo make -j (# of CPU threads) bindeb-pkg
  9. 安装内核源码目录的父目录下生成的linux-imagelinux-headersdeb包
  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 解决。


小智 5

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