我收到安装最新 Ubuntu 的提示HWE(硬件支持堆栈):
我没有多想,就点击了安装。重启后,我注意到以下问题:
- 我的第二台显示器是黑的,只显示鼠标指针,没有其他任何东西。
- 有很多图形闪烁
我正在使用 AMD 显卡:
$ lspci | grep VGA
01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Caicos XTX [Radeon HD 8490 / R5 235X OEM]
这是我的机器重新启动后的状态:
$ uname -r
4.4.0-38-generic
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.5 LTS
Release: 14.04
Codename: trusty
$ dpkg -l | egrep "utopic|vivid|wily|xenial"
ii linux-generic-lts-utopic 3.16.0.77.68 amd64 Complete Generic Linux kernel and headers
ii linux-generic-lts-xenial 4.4.0.38.28 amd64 Complete Generic Linux kernel and headers
ii linux-headers-generic-lts-utopic 3.16.0.77.68 amd64 Generic Linux kernel headers
ii linux-headers-generic-lts-xenial 4.4.0.38.28 amd64 Generic Linux kernel headers
ii linux-image-generic-lts-utopic 3.16.0.77.68 amd64 Generic Linux kernel image
ii linux-image-generic-lts-xenial 4.4.0.38.28 amd64 Generic Linux kernel image
$ dpkg -l | grep fglrx
ii fglrx-amdcccle-updates 2:15.201-0ubuntu0.14.04.1 amd64 Catalyst Control Center for the AMD graphics accelerators
ii fglrx-updates 2:15.201-0ubuntu0.14.04.1 amd64 Video driver for the AMD graphics accelerators
ii fglrx-updates-core 2:15.201-0ubuntu0.14.04.1 amd64 Minimal video driver for the AMD graphics accelerators
$ fglrxinfo
X Error of failed request: BadRequest (invalid request code or no such operation)
Major opcode of failed request: 157 (ATIFGLEXTENSION)
Minor opcode of failed request: 66 ()
Serial number of failed request: 13
Current serial number in output stream: 13
答案1
我的问题的根本原因是只安装了 HWE 的内核部分,这意味着内核已升级但图形堆栈未升级。由于Xenial 内核与专有的 fglrx AMD 驱动程序不兼容,这导致了图形问题。
在做任何其他事情之前,最好先进行一些清理:
删除所有乌托邦式、生动、狡猾的 HWE 包,因为它们不再受支持(如果没有这个,升级 HWE 的提示将继续出现)
sudo apt purge `dpkg --get-selections | egrep "utopic|vivid|wily" | awk '{print $1}' | tr '\n' ' '`
删除所有 utopic (3.16)、vivid (3.19) 和 wily (4.2) 内核,自它们也不再受支持(这会导致 hwe-support-status 打印安全警告)
sudo apt purge `dpkg --get-selections | egrep "linux-.+-(3\.16|3\.19|4\.2)" | awk '{print $1}' | tr '\n' ' '`
完成之后,有两个解决方案:
(推荐)安装完整的 Xenial HWE
下列的此处的说明,安装完整的 Xenial HWE:
sudo apt install --install-recommends linux-generic-lts-xenial xserver-xorg-core-lts-xenial xserver-xorg-lts-xenial xserver-xorg-video-all-lts-xenial xserver-xorg-input-all-lts-xenial libwayland-egl1-mesa-lts-xenial
这应该安装新的图形堆栈,也应该删除 fglrx
确保 fglrx 已被删除,以确保安全
sudo apt remove fglrx fglrx-core fglrx-updates fglrx-updates-core
删除所有其他未使用的包
sudo apt-get autoremove
重启
你的机器的最终状态应该是这样的:
$ uname -r
4.4.0-112-generic
$ dpkg --get-selections | grep xenial | wc -l
40
$ dpkg --get-selections | grep fglrx | wc -l
0
$ fglrxinfo
fglrxinfo: command not found
如果此时一切似乎都运行正常,那么最好继续升级到 16.04,因为14.04 仅支持到 2019 年 4 月。
(不推荐)完全删除 Xenial HWE
删除 xenial HWE 包
sudo apt purge `dpkg --get-selections | grep xenial | awk '{print $1}' | tr '\n' ' '`
删除 xenial 内核(4.4)
sudo apt purge `dpkg --get-selections | egrep "linux-.+-4\.4" | awk '{print $1}' | tr '\n' ' '`
删除所有其他未使用的包
sudo apt-get autoremove
重新配置 xserver-xorg(由于某种原因,清理 HWE 会删除从 /etc/X11/X 到 /usr/bin/Xorg 的符号链接,从而破坏 X;这可以修复它)
sudo dpkg-reconfigure xserver-xorg
重启
你的机器的最终状态应该是这样的:
$ uname -r
3.13.0-119-generic
$ dpkg --get-selections | egrep "utopic|vivid|wily|xenial" | wc -l
0
$ dpkg --get-selections | grep fglrx | wc -l
4
$ dpkg -l | grep fglrx
ii fglrx-amdcccle-updates 2:15.201-0ubuntu0.14.04.1 amd64 Catalyst Control Center for the AMD graphics accelerators
ii fglrx-updates 2:15.201-0ubuntu0.14.04.1 amd64 Video driver for the AMD graphics accelerators
ii fglrx-updates-core 2:15.201-0ubuntu0.14.04.1 amd64 Minimal video driver for the AMD graphics accelerators
$ fglrxinfo
display: :0.0 screen: 0
OpenGL vendor string: Advanced Micro Devices, Inc.
OpenGL renderer string: AMD Radeon(TM) HD8490
OpenGL version string: 4.5.13399 Compatibility Profile Context 13.35.1005
答案2
您无法将 fglrx 与内核 4.4 和 14.04.5 HWE 堆栈中的 Xorg 一起使用。要继续使用 fglrx,您需要从 14.04.4 恢复到较旧的 Xorg 和内核。否则,对于您的卡,您将不得不使用开源雷響驱动程序,可能就是现在正在使用的驱动程序。所描述的问题可能是驱动程序与您的卡一起使用时出现的错误。
AMD 不支持 fglrx 的新 API,并且不会发布更新来支持其较新的内核或 Xorg 版本。