环境信息
系统: manjaro-kde 6.6.12-1-MANJARO
显卡:Radeon RX 580 2048SP
问题描述
偶现开机黑屏,无法进入登录界面,无法进入 tty
检查 /var/log/Xorg.0.log
日志,可以发现以下异常信息:
AMDGPU(0): get vblank counter failed: Invalid argument
很有可能是 AMD 图形驱动模块 AMDGPU 获取垂直空白(vblank)计数器失败。
vblank 计数器用于同步显示器的刷新率,获取它的失败通常可以导致下面的问题:
-
画面撕裂(tearing)
由于 GPU 渲染的帧率和显示器刷新率不同步,会出现部分画面不连贯的情形。 -
屏幕抖动或闪烁
显示输出不稳定,时断时续。 -
性能下降
未能成功同步垂直同步会对性能产生影响。 -
启动失败
严重时可能导致 X 服务器或图形环境启动失败。
解决方法
以下方法适用于基于 Xorg 显示服务器的系统,可以通过
echo $XDG_SESSION_TYPE
命令查看当前使用的是 Wayland 还是 Xorg。
-
安装 AMDGPU 驱动
sudo pacman -S xf86-video-amdgp
-
禁用 Wayland
编辑
/etc/sddm.conf
文件,在[Wayland]
下配置Enable=false
来确保禁用 Wayland. -
增加配置
/etc/X11/xorg.conf.d/20-amdgpu.conf
(20 是用于控制解析顺序)Section "Device" Identifier "AMD" Driver "amdgpu" Option "TearFree" "true" EndSection
-
编辑
/etc/mkinitcpio.conf
文件,修改 MODULES 配置项:MODULES=(amdgpu)
-
重新生成 initramfs 镜像
# 查看有哪些内核版本 /etc/mkinitcpio.d
sudo mkinitcpio -p linux61 # linux61 是内核版本,表示针对其内核版本去生成对应的 initramfs 镜像
这一步可以确保 initramfs 包含了最新的模块和配置,配合新的内核版本使用。在修改了相关配置、更新了驱动后,都建议重新生成一次 initramfs。