定位与修复流程
- 先获取完整线索:在图形异常时切到 tty1~tty6(快捷键 Ctrl+Alt+F1~F6),登录后执行以下命令收集信息
- 内核日志:
- dmesg | tail -n 100
- dmesg | grep -iE “error|fail|timeout|firmware|gpu|drm|i915|nouveau|amdgpu|radeon|panic”
- 实时观察:dmesg -w
- 系统日志:
- journalctl -k -b -e(本次启动的内核日志)
- journalctl -u gdm3/lightdm/sddm -b(显示管理器)
- journalctl -b -e(本次启动全部日志)
- tail -n 200 /var/log/Xorg.0.log /var/log/syslog
- 显示管理器状态:
- systemctl status display-manager
- cat /etc/X11/default-display-manager
- 硬件与驱动:
- lspci | grep -iE “vga|3d|display”
- lsmod | grep -iE “drm|i915|nouveau|amdgpu|radeon”
- 临时切回图形:startx(若安装了 Xorg),或重启显示管理器:sudo systemctl restart gdm3/lightdm/sddm
以上步骤能快速判断是内核/驱动、显示管理器还是会话组件导致的问题。
常见 dmesg 线索与对应处理
| 线索关键词 |
典型含义 |
快速处置 |
| drm/i915/nouveau/amdgpu/radeon 相关 error/fail |
GPU 驱动加载或初始化失败 |
1) 确认内核参数是否禁用/启用正确驱动(如 nomodeset、i915.modeset=1、nouveau.modeset=0、amdgpu.dc=1 等) 2) 升级内核/固件与图形驱动;在 Ubuntu/Debian 可尝试 sudo apt install --reinstall xserver-xorg-video-<驱动名> 3) 回退到上一个稳定内核测试 |
| firmware 缺失 |
GPU 固件未就绪 |
安装/更新 linux-firmware;嵌入式平台(如 Rockchip RK3399/RK3588)需确保对应 DTB/内核 与固件匹配 |
| timeout / unable to handle page fault |
设备无响应或内存访问异常 |
检查硬件连接与供电;若为内存/主板问题,按 ECC/内存通道规则排查与更换 |
| invalid superblock / DIMM checksum error |
存储/内存故障征兆 |
先备份数据;运行内存检测(memtest86+);检查磁盘健康(smartctl);必要时更换内存/磁盘 |
| pwm-fan / probe failed with error -22 |
设备树/驱动不匹配(常见于嵌入式) |
核对内核版本与补丁、设备树配置与驱动兼容性,必要时应用修复补丁或回退版本 |
以上处理要点与嵌入式 RK 平台驱动适配、以及内存/存储类报错的典型修复方向一致。
显示管理器与用户会话故障的修复
- 进入救援模式:在 GRUB 启动项按 e,在 linux 行末尾临时添加 3(多用户文本模式),启动后登录。
- 切换默认目标:
- systemctl set-default multi-user.target(先切到命令行)
- 排查完成后切回:systemctl set-default graphical.target
- 排查显示管理器:
- 查看状态:systemctl status gdm3/lightdm/sddm
- 重启服务:sudo systemctl restart gdm3/lightdm/sddm
- 重新配置默认显示管理器:sudo dpkg-reconfigure gdm3(或 lightdm/sddm)
- 若登录界面出现但进不去桌面:
- 查看会话日志:journalctl -u gdm3/lightdm/sddm -b -e
- 常见为会话组件异常(如 gnome-shell 崩溃),需完整更新相关包或回退版本解决依赖冲突。
内核与驱动的回退与更新
- 回退到旧内核:在 GRUB 高级选项中选择上一个内核启动,确认问题是否消失;若旧内核正常,说明近期内核/驱动变更引入回归。
- 完整更新/修复依赖:
- Debian/Ubuntu:sudo apt update && sudo apt full-upgrade && sudo apt install -f
- RHEL/CentOS:sudo yum update(若有冲突,避免 --skip-broken,先解决依赖)
- 嵌入式平台(如 RK3399/RK3588):确保 内核配置、DTB、驱动与固件 版本匹配;必要时使用厂商提供的工具链与固件重新打包烧写。
最小化验证与应急
- 仅加载基础驱动启动:在 GRUB 的 linux 行末尾添加 nomodeset,仅用基本帧缓冲启动,以确认是否为 GPU 驱动导致;若能进桌面,再逐步恢复驱动参数。
- 临时进入桌面:startx(若已安装 Xorg);或重启显示管理器。
- 持续观察:dmesg -w 与 journalctl -k -f 联用,复现问题时抓取最新日志以便精确定位。