我有一台联想 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/
linux-image-(kernel_version)-generic
linux-modules-(kernel_version)-generic
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 的型号提供正确数量的线程。
第一种方法:修补并重新编译新内核
快速指南
- 构建内核的基本依赖项是
sudo apt install libncurses-dev flex bison openssl libssl-dev dkms libelf-dev libudev-dev libpci-dev libiberty-dev autoconf
- 从以下位置下载您选择的内核源代码www.kernel.org并将其提取。
- 进入内核源目录。
sudo make mrproper
使用内核目录中的清理内核。- 将补丁下载到内核源代码父目录中。
- 使用以下方式应用补丁
patch -p1 < ../drm-i915-gt-Limit-VFE-threads-based-on-GT.patch
- 配置内核或运行
sudo make localmodconfig
以快速完成,按住 Enter 键直到所有问题都得到解答 - 使用以下命令编译内核
sudo make -j (# of CPU threads) bindeb-pkg
- 安装内核源码目录父目录中生成的deb
linux-image
包linux-headers
- 重新启动,如果需要,从 GRUB 菜单中选择新内核
根据您的喜好、硬件等优化上述过程
第二种方法:仅修补并重新编译模块
还可以为已安装的内核重建修补模块,以便能够使用官方分发内核或任何其他预编译内核。
英特尔官方的 i915 编译指南是这里,如果您将其下载为 PDF,请转至第 41 页。
您可以完全按照所示的步骤进行操作,但请注意以下事项。
如果您要为您正在运行的内核版本以外的其他内核版本重新编译模块,那么您必须将其替换
$(uname -r)
为您目标版本,例如5.8.0-29-generic
。如果您
/tmp/kernel
按照指南使用该目录,则重新启动后该目录将丢失。在第 5 步之后,你必须修补内核,
patch -p1 < ../drm-i915-gt-Limit-VFE-threads-based-on-GT.patch
假设补丁位于内核源代码的父目录中可以跳过步骤9。
在步骤12之后,您可能会收到有关模块加密验证的错误,这没有问题,模块已安装
/lib/modules/5.8.0-29-generic/extradrivers
并且系统知道它在那里,应该通过步骤13进行加载。应执行步骤 14,说明目标内核版本,以 更改
5.8.0-29-generic
如下命令sudo depmod -v 5.8.0-29-generic
。sudo 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/1872001和https://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
启动