Ubuntu 装完第一次重启,屏幕就开始一明一暗地抽——不是花屏,也不是黑白噪点,而是每隔十几秒整块屏幕暗下去一瞬,鼠标一动又恢复正常。这台 16.1 英寸、2560×1600 240Hz 的机器(i7-14650HX 加 RTX 5060 8G 的组合)在 Linux 下的闪屏问题,几乎是我这两年见过最典型的“新硬件撞旧栈”案例。它不属于某一个单点故障,而是四条链路同时出问题的结果:开源显卡驱动撑不起新一代独显,内核版本对高刷 eDP 面板的自刷新机制处理不干净,安全启动拦住了专有驱动的内核模块,再加上 240Hz 加可变刷新率在 Wayland 下的时序协商。这篇文章我按实际处理的顺序拆开讲:先教你判断自己遇到的是哪一类闪,再把安装介质、固件设置、驱动安装、内核参数、面板时序这几层逐一拆解,最后给一份可以直接抄的配置文件和一页故障速查表。无论你是刚装完系统被闪到怀疑硬件的普通用户,还是想搞清楚 eDP 链路与 PSR 机制到底怎么影响观感的运维、开发,都能在这里找到对应的动作。
1. 先分清是哪一种“闪”,别急着装驱动
1.1 四种闪法对应四套完全不同的病因
很多人一看到闪屏就去搜“装 NVIDIA 驱动”,结果驱动装完照样闪,白折腾两小时。我这台机器上前后复现过四类现象,它们的表现差别其实很大,只要你肯花五分钟盯着屏幕看,基本能锁定方向。
第一类是瞬时黑屏:画面整体暗一到两帧,短的时候几乎察觉不到,长的时候能黑半秒,期间系统没有卡顿,声音正常,键盘鼠标响应也在。鼠标一动或者按一下方向键,画面立刻回来。这种基本可以确定是面板自刷新(Panel Self Refresh,PSR)在作怪——显示链路在画面静止时进入低功耗状态,唤醒时序没调好,就表现为规律性闪黑。
第二类是亮度呼吸:不是黑,是明暗缓慢起伏,像有人偷偷拧亮度旋钮。这跟显示链路无关,问题出在背光调光。低频 PWM 调光的面板在低亮度下,人眼和摄像头都能看到条纹;有些机器还会叠加环境光传感器和 Intel 的显示省电技术(DPST),一检测到深色画面就自动压暗背光。
第三类是撕裂加闪白:画面上下错位,或者边缘出现一闪而过的白条,通常在滚动网页、拖动窗口时最明显。这类问题指向刷新率协商失败,要么是可变刷新率(VRR)握手不稳,要么是 eDP 链路训练在 240Hz 下达不到稳定状态,系统来回重训练,你就看到闪。
第四类是花屏型闪烁:出现雪花点、横线、彩色块,甚至整屏变成马赛克后恢复。这种才是真正和显卡驱动、显存频率切换、GPU 供电状态相关的问题,多半发生在驱动刚装完、或者从核显切到独显渲染的那一瞬间。
我在处理时做的第一件事不是装驱动,而是把现象记下来:闪的频率、是否和鼠标键盘操作相关、是否只在低亮度出现、插拔电源适配器有没有变化。这四个观察点能省掉后面一大半的试错。
提示:用手机摄像头对着屏幕录像(不是拍照),把快门调低一点。如果录出来的画面有规律的黑带滚动,那是 PWM 调光;如果是一帧一帧的整屏暗,那是链路或 PSR;如果出现彩条,那是驱动层。
1.2 三分钟定位法:切换 TTY 是第一刀
判断问题在图形栈还是内核层,最快的办法是切到纯文本终端。按 Ctrl+Alt+F3 进入 TTY,如果 TTY 下完全不闪、稳定如老狗,那问题基本锁定在图形栈——合成器、Wayland 会话、NVIDIA 的 modeset 路径,跟内核显示驱动关系不大。反过来,TTY 下也在闪,那说明问题在更底层:内核显示驱动、固件、或者面板链路本身。
第二刀是外接显示器。这台机器有 HDMI 口,插上一台普通 1080p 60Hz 的显示器,如果外接屏一切正常、只有内置屏闪,问题范围就缩到了 eDP 链路、内置面板的 EDID 解析和 PSR 上;如果外接屏也闪,那说明是 GPU 渲染输出的问题,跟面板关系不大。这里有个细节容易被忽略:混合显卡模式下,内置屏通常由核显(Intel UHD Graphics)驱动,HDMI 口可能直连独显。所以外接屏的表现差异,有时候反映的是“核显输出”和“独显输出”两条完全不同路径的差异,而不是屏本身的好坏。
第三刀看日志。别去翻图形界面的日志工具,直接命令行:
sudo dmesg -T | grep -iE "drm|i915|nvidia|edp|link training" journalctl -b -p 3 --no-pager | tail -n 80我在这台机器上第一次跑这两条命令,dmesg 里就反复出现 eDP 链路重训练和 PSR 相关的告警,这就把方向定死了。如果日志里出现的是 nvidia 模块加载失败、签名被拒,那问题就简单得多,属于安全启动没处理。日志里什么都没有、干干净净,反而是最麻烦的情况——说明内核认为一切正常,闪是上层时序问题,只能靠调参数试。
第四刀是拿 Live USB 对比。用同一根 U 盘启动到安装镜像的试用桌面,如果试用环境也闪,说明这不是你装完之后搞坏的,而是镜像自带的内核和驱动组合本来就有问题;如果试用环境不闪、装完才闪,那八成是安装过程中选择了闭源驱动或者系统更新拉进了不匹配的内核模块。这一步很多人跳过,结果在错误的方向上反复重装系统。
2. 装之前就把地基打好:介质、BIOS 与安全启动
2.1 镜像版本决定了一半的成败
这台机器的硬件组合对内核版本相当挑剔。i7-14650HX 是混合架构(8 个性能核加 8 个能效核),调度层面需要较新的内核才能正确处理线程放置;RTX 5060 属于新一代架构,开源驱动 nouveau 基本没有可用性,必须走专有驱动,而专有驱动又要求内核版本不能太老。如果拿一个内核 6.8 的早期 LTS 镜像去装,装完大概率是能进桌面、但闪得没法用。
我的建议是直接用带 HWE 内核的更新版 LTS 镜像(也就是 24.04.2 之后的点版本),或者干脆用更新的非 LTS 版本先跑通,再回落到 LTS 加 HWE 内核。理由很实际:安装镜像里的内核版本决定了你第一次进桌面能不能看到完整画面,如果第一次就黑屏,后面所有调试都得靠盲操作和外接屏,效率低一半。
写盘这一步别省事。校验镜像的 SHA256,用 dd 或者 balenaEtcher 写入,写完确认 U 盘的 EFI 分区存在。我遇到过用某工具写入后 EFI 分区文件损坏,启动直接卡在厂商 Logo,白白怀疑了半小时硬件。
sha256sum ubuntu-*.iso sudo dd if=ubuntu-*.iso of=/dev/sdX bs=8M status=progress oflag=syncof=后面的设备名一定要看准,用lsblk确认,写错一个字母就是另一块盘的数据没了。
2.2 BIOS 里几个必须确认的开关
开机按 F10 进固件设置,有几项值得逐一确认。第一是安全启动(Secure Boot)。这不只是“能不能装”的问题,它直接决定了 NVIDIA 的内核模块能不能加载。开启状态下的正确做法是:安装驱动时系统会提示你设置一个 MOK(Machine Owner Key)密码,重启后出现蓝色的 MOK 管理界面,选择 Enroll MOK,输入刚才的密码完成注册。这一步一旦漏掉,驱动模块签名不被信任,内核会拒绝加载,系统自动退回 nouveau,然后你就看到闪屏——很多人以为是驱动装错了,其实是签名没注册。
第二是显卡模式。这类机器通常提供混合模式和独显直连两种。混合模式下内置屏由核显输出,独显负责渲染,靠 PRIME 把画面搬运过去;独显直连则让独显直接驱动内置屏。从排查角度说,这两种模式的表现差异巨大:如果混合模式闪、直连模式不闪,问题就在核显的 eDP 输出和 PSR 上;反过来如果直连模式闪得更厉害,那就是 NVIDIA 驱动的 modeset 路径有问题。我建议先用混合模式跑通基本可用,再决定要不要切直连。
第三是**快速启动(Fast Boot)**和Windows 的快速启动。这两个东西会让固件跳过部分设备初始化,Linux 拿到的硬件状态可能不完整,表现为外设异常或者显示异常。双系统用户尤其要注意,先在 Windows 里用管理员权限执行powercfg /h off关掉休眠,再关快速启动,否则 Linux 挂载 NTFS 分区还可能出问题。
第四是存储控制器模式。如果固件里有 RAID / VMD 之类的选项,装 Linux 前最好切到 AHCI,否则安装器可能根本看不到硬盘。这一步要小心:切模式前先在 Windows 里准备好对应的驱动,否则 Windows 可能起不来。稳妥做法是把重要数据备份出来,再动这个开关。
提示:改完固件设置,建议把每一项改动记在备忘录里。我见过太多人调了半天驱动,最后发现是某个固件开关被自己随手改了又忘了。
2.3 安装时的两个保命选择
安装界面出来以后,第一件事是在启动菜单里选带safe graphics的那一项。它会给内核加上nomodeset,用最基本的内核显示模式跑安装器。代价是分辨率低、动画卡,但能保证你看得清安装界面、点得动按钮。装完以后再回头处理驱动和时序,比在闪屏的安装器里盲点要靠谱得多。
分区阶段,双系统的机器要特别小心 EFI 系统分区(ESP)。这块 16.1 英寸的机器一般出厂就预装 Windows,ESP 已经有内容了,安装时选择“与其他系统共存”或者手动指定挂载点,把 ESP 挂到/boot/efi但不要格式化。根分区用 ext4,大小给到 80G 以上(编译内核、跑容器都很吃空间)。交换空间用 swapfile 就够,默认的 2G 偏小,如果你打算用休眠,改成内存大小的 1.2 倍左右。
安装器最后会问你要不要安装第三方驱动和媒体解码器。这个选项的取舍是:勾上,装完能少一步;但对新硬件来说,安装器自带的那版驱动可能比仓库里的还旧,反而添乱。我的做法是先不勾,进系统以后联网手动按需安装,可控性更高。
3. 驱动:这代显卡在 Linux 上的现实处境
3.1 为什么开源驱动一定会翻车
nouveau 是社区逆向出来的开源驱动,它的能力边界写得很清楚:能点亮、能出画、能做基本的 2D 加速,但缺少厂商提供的固件和时钟管理微码,无法正确驱动新一代 GPU 的显示引擎和电源状态机。具体到这块卡,nouveau 根本认不全它的显示控制器,eDP 链路的时序参数只能靠猜,猜不准就是闪、就是黑、就是分辨率上不去。
更麻烦的是,这台机器的内置屏是 2560×1600 240Hz,这个带宽对 eDP 链路要求很高。开源驱动没有厂商提供的链路训练参数表,只能降到很低的分辨率或者刷新率才能稳定。所以你看到的现象往往是:能进桌面,但分辨率只有 1024×768 或者刷新率锁在 60Hz 以下,稍微一动窗口就闪。
结论很直接:这块卡在 Linux 上必须用专有驱动,没有第二条路。开源驱动在这里不是“性能差一点”的问题,是“不可用”。
3.2 装 NVIDIA 驱动的正确顺序
顺序错了会付出很大代价,我按实际最省事的路径写。第一步,装完系统先别急着折腾显示,插上网线或者连上 Wi-Fi,跑一遍系统更新,把基础包和固件补上:
sudo apt update && sudo apt full-upgrade -y sudo apt install linux-firmware -y第二步,让系统自己告诉你该装哪个版本的驱动:
ubuntu-drivers devices输出里会列出可用的驱动包和推荐标记。直接装推荐版本,别自己去网上抄某个特定版本号。这代卡对驱动版本有硬性下限,低于某个版本会出现“能装、能加载、但显示异常”的情况,而系统推荐的版本通常是当前仓库里经过测试的最新稳定版。
sudo ubuntu-drivers install第三步,安装过程如果弹出一个对话框让你设置安全启动密码,别手滑按回车跳过。设一个自己记得住的密码(八位以上,纯数字字母即可),重启后会出现 MOK 管理界面,选 Enroll MOK → Continue → Yes,输入密码,然后重启。这一步做完,mokutil --sb-state应该显示 SecureBoot enabled 且驱动已注册。
第四步是验证,登录后立刻跑:
nvidia-smi cat /proc/driver/nvidia/version dkms status三条命令都要有正常输出。nvidia-smi能看到显卡型号、驱动版本、温度;dkms status里对应的模块状态应该是 installed。如果nvidia-smi报“couldn't communicate with the NVIDIA driver”,说明模块没加载,回头检查 MOK 注册和dmesg | grep -i nvidia。
如果装完直接黑屏进不去系统,别慌。重启在 GRUB 菜单按 e 编辑启动项,在内核参数行末尾加nomodeset进系统,然后执行:
sudo apt purge '^nvidia-.*' sudo apt autoremove清干净以后再重新来一遍。残留的旧模块是最常见的“装了两遍还是不行”的原因。
3.3 内核、固件与 DKMS 的三角关系
专有驱动通过 DKMS 在每次内核更新时重新编译模块。这带来一个隐患:内核升级了,但 DKMS 编译失败,重启后就没有显卡驱动,系统退回 nouveau,屏幕开始闪。这种情况在刚升级完内核的那次重启最容易出现,因为新内核的头文件可能还没装上。
所以每次系统提示内核更新,我都会手动跑一遍:
sudo apt install linux-headers-$(uname -r) sudo dkms autoinstall dkms status另外一个容易被忽略的是固件包。核显的 eDP 输出依赖 Intel 提供的显示固件,面板的 EDID 解析和链路训练参数都在里面。老版本固件对新面板支持不好,表现就是刷新率上不去或者闪。linux-firmware这个包要保持在最新,Ubuntu 会随系统更新推,但如果你手动锁定了版本,记得解开。
版本对应关系我整理成一张表,方便对照排查:
| 层次 | 关键组件 | 版本不足时的典型表现 |
|---|---|---|
| 内核 | linux-image-generic-hwe-* | 核显驱动不认新面板,分辨率或刷新率上限被锁 |
| 固件 | linux-firmware | eDP 链路训练失败,闪黑、花屏 |
| 显卡驱动 | nvidia-driver-* | 独显不工作、PRIME 切换失败、外接屏无输出 |
| 构建工具 | linux-headers-*dkms | 内核升级后驱动模块缺失,退回开源驱动 |
提示:如果你不打算频繁折腾,可以在装好可用环境后做一次系统快照(Timeshift 或者直接
dd备份根分区)。我在这台机器上至少回滚过三次,每次都省了两小时。
4. 针对高刷 eDP 面板:PSR、VRR 与链路训练
4.1 面板自刷新是闪黑的头号嫌疑人
PSR 的初衷是省电:画面静止时,GPU 不再往面板送数据,由面板自己的缓存继续显示同一帧,显示链路进入低功耗。问题在于,这条链路要在“静止”和“活动”之间来回切换,切换时序稍有偏差,用户就看到闪。高分辨率高刷面板的切换窗口更窄,出问题的概率更高。
判断是不是 PSR,有个非常直接的证据:/sys/kernel/debug/dri/0/i915_edp_psr_status这个文件会告诉你当前 PSR 状态。需要 root 权限:
sudo cat /sys/kernel/debug/dri/0/i915_edp_psr_status如果输出里有PSR1 enabled或者PSR2 enabled,同时你的闪屏是静止时闪、动一下就恢复,那基本可以确诊。
关掉它的方式是在内核启动参数里加i915.enable_psr=0。这代平台的核显走的是 i915 驱动(不是新平台那套 xe 驱动),所以参数名对得上。如果关了 PSR1 还在闪,可以再叠加i915.enable_psr2_sel_fetch=0,把 PSR2 的选择性取帧也关掉。还有两个相关的省电特性值得一起关:i915.enable_dc=0(显示控制器电源管理)和i915.enable_fbc=0(帧缓冲压缩)。FBC 在某些面板上会导致画面局部残影加闪烁。
我建议一次只加一个参数,重启观察一轮。四个参数一起上确实可能把闪屏压下去,但你永远不知道是哪一个起的作用,下次换机器或者升级内核又得从头试。这个习惯看着笨,实际最省时间。
4.2 240Hz 与可变刷新率:先降频再谈优化
如果关掉 PSR 之后还在闪,下一步就是怀疑刷新率和 VRR。判断方法很简单,把刷新率临时降到 60Hz:
xrandr --query xrandr --output eDP-1 --rate 60Wayland 会话下 xrandr 不一定好用,可以改用 GNOME 设置里的显示选项,或者临时切到 Xorg 会话测试。如果 60Hz 完全不闪、240Hz 闪,那问题就在链路带宽或者时序参数上,不在驱动逻辑上。
这种情况下有几个层次的处置。最省事的是接受 165Hz 或者 120Hz,多数人肉眼分辨不出 165 和 240 的差别,而 165Hz 对链路压力小很多,稳定性提升明显。想保留高刷的话,可以试着手动指定 eDP 的连接速率参数,但这属于比较深的调参,需要看面板的 EDID 和链路能力,成功率不高,我一般不建议普通用户走这条路。
可变刷新率的处理要单独说。GNOME 从某个版本开始支持 VRR,但和 NVIDIA 驱动的配合并不总是稳。关掉的方式是改实验特性:
gsettings set org.gnome.mutter experimental-features "[]"如果之前开过 VRR,这条命令会把它清掉。改完注销重新登录生效。另外,某些合成器版本会在窗口全屏、视频播放时自动切换刷新率,切换瞬间的闪一下是正常现象,但如果每次切换都闪好几下,那就是时序协商有问题,关 VRR 是对症的。
4.3 混合输出与 PRIME 的坑
混合显卡模式下,画面由核显输出,独显负责渲染,中间靠 PRIME 搬运。这套机制在 Linux 上跑了多年,但新一代硬件上仍然会出问题,尤其是搬运高分辨率高刷画面的时候。
首先要确认nvidia-drm.modeset=1已经生效,这是让 NVIDIA 驱动接管内核模式设置的前提。没有它,Wayland 下根本不认独显,PRIME 卸载也无从谈起。验证方式是:
cat /sys/module/nvidia_drm/parameters/modeset输出应该是Y。如果还是N,说明启动参数没生效,检查 GRUB 配置有没有更新、有没有跑update-grub。
其次,fbdev=1这个参数值得加上。它让 NVIDIA 驱动提供 framebuffer 设备,能减少开机过程中从固件画面切到内核画面时的黑屏闪烁。开机阶段那几秒的闪,很多时候就是这个切换没做好。
再就是电源管理。NVIDIA 的动态电源管理会让独显在空闲时完全断电,唤醒时如果时序不对,就会闪一下。这在笔记本上很常见,表现为“不动鼠标的时候没事,一动就闪”。配置文件里加一行:
options nvidia NVreg_DynamicPowerManagement=0x00这一行是让独显保持常开,代价是待机功耗上升、电池续航变短。想省电的话可以设成0x02(细粒度电源管理),但要看运气,某些平台组合下反而更不稳定。我的做法是插电时用0x00保稳定,出门用电池时切回默认。
外接显示器的场景也要注意。混合模式下 HDMI 口有可能直连独显,此时外接屏的一切问题都属于独显路径;如果外接屏正常而内置屏闪,那就回到 eDP 和核显这条线上查,不要在外接屏上浪费时间。
5. 一份可以直接抄的配置文件
5.1 内核启动参数怎么加、加在哪
临时测试用 GRUB 编辑模式:开机在 GRUB 菜单按 e,找到linux开头那一行,在行尾追加参数,Ctrl+X 启动。这种方式重启就失效,适合做对照实验。
长期生效改/etc/default/grub里的GRUB_CMDLINE_LINUX_DEFAULT。我给这台机器用的是一组偏保守的组合:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nvidia-drm.modeset=1 nvidia-drm.fbdev=1 i915.enable_psr=0 i915.enable_psr2_sel_fetch=0 i915.enable_dc=0"改完必须执行:
sudo update-grub有几个细节值得说。第一,quiet splash建议保留,去掉之后开机满屏日志,虽然便于排查但日常用着难受;真要排查,临时在 GRUB 编辑模式里删掉就行。第二,参数顺序无所谓,但重复写会以最后一个为准,改的时候注意别留旧参数。第三,i915.enable_fbc=0我一般放在最后加,因为它对性能有一点影响,只有前面几个压不住闪屏时才动它。
改完之后重启,用这条命令确认参数真的传进去了:
cat /proc/cmdline输出里能看到你写的每一个参数。看不到就说明update-grub没跑或者 grub 配置文件路径不对(有些机器用grub2目录结构)。
5.2 modprobe 配置:把参数写进模块加载
启动参数是全局的,模块配置更精细。在/etc/modprobe.d/下建两个文件,一个管核显,一个管独显:
# /etc/modprobe.d/i915-psr.conf options i915 enable_psr=0 enable_psr2_sel_fetch=0 enable_dc=0# /etc/modprobe.d/nvidia-power.conf options nvidia_drm modeset=1 fbdev=1 options nvidia NVreg_DynamicPowerManagement=0x00写完要重建 initramfs,否则这些配置在早期启动阶段不生效:
sudo update-initramfs -u -k all这一步很多人漏掉,结果只有进入系统后才生效,开机过程中的闪屏照旧。重建 initramfs 需要一点时间,跑完再重启。
提示:
modprobe.d里的参数和内核启动参数写在两处,容易冲突。原则是:内核启动参数优先级更高,用来做快速实验;定下来之后再写进 modprobe 配置长期保留,同时把启动参数里的重复项删掉,避免以后排查时看不懂谁在起作用。
5.3 验证、观察与回滚
调完之后要有验证手段,不能只凭“感觉不闪了”。我用的观察清单是:静止桌面挂十分钟、滚动长网页两分钟、播放一段视频全屏、插拔电源适配器三次、合盖唤醒两次、外接显示器切换一次。六个场景都过一遍,才算真的稳。
硬件层面的验证用这条:
sudo dmesg -T | grep -iE "drm|i915|nvidia" | tail -n 50重启后如果日志里不再出现链路重训练和 PSR 相关告警,基本可以放心。
回滚方案必须提前准备。最稳的是装系统时就把/home单独分区,出问题只重装根分区;更省事的是用快照工具,改配置前手动打一个快照,名字写清楚“改PSR之前”。如果真的进不去系统,用 Live USB 启动,挂载根分区后 chroot 进去改配置:
sudo mount /dev/nvme0n1p2 /mnt sudo mount /dev/nvme0n1p1 /mnt/boot/efi for i in dev proc sys run; do sudo mount --bind /$i /mnt/$i; done sudo chroot /mnt # 修改 /etc/default/grub 或删除 modprobe 配置 update-grub && update-initramfs -u exit sudo reboot这套流程我用了不下二十次,是 Linux 折腾的基本功,值得背下来。
6. 踩坑速查表与几个真实教训
6.1 故障速查表
把前面所有排查路径压缩成一张表,出问题时从上往下对:
| 现象 | 最可能原因 | 首选手法 | 验证命令 |
|---|---|---|---|
| 静止时整屏暗一帧,动鼠标恢复 | 面板自刷新 PSR | 加i915.enable_psr=0 | cat /sys/kernel/debug/dri/0/i915_edp_psr_status |
| 低亮度下明暗起伏,摄像头能拍到条纹 | PWM 背光调光 | 提高亮度或用背光参数 | 手机录像观察条纹 |
| 滚网页时撕裂加闪白 | VRR 或刷新率协商 | 降频到 60Hz 测试、关 VRR | xrandr --query |
| 一装完驱动就黑屏 | MOK 未注册或驱动不匹配 | 检查mokutil --sb-state,重装驱动 | `dmesg |
| 内核升级后突然开始闪 | DKMS 编译失败,退回开源驱动 | 装内核头文件并重建模块 | dkms status |
| 一动鼠标就闪,静止正常 | 独显动态电源管理 | 设NVreg_DynamicPowerManagement=0x00 | nvidia-smi观察状态 |
| 开机过程闪、进桌面正常 | framebuffer 切换到内核模式 | 加nvidia-drm.fbdev=1 | cat /proc/cmdline |
| 外接屏正常、内置屏异常 | eDP 链路或面板 EDID | 降分辨率刷新率测试 | xrandr --output eDP-1 --rate 60 |
表格里的“首选手法”是排序,不是替代关系。真实情况往往是叠加的,比如 PSR 关掉之后还剩一点闪,再加电源管理参数才彻底干净。
6.2 几个我实际踩过的坑
第一个坑是安全启动的密码。装驱动时设了 MOK 密码,重启进了 MOK 界面,随手按了 Continue 跳过注册。结果系统起来一切正常,唯独显卡驱动没加载,我还以为是驱动版本不对,换了三个版本、重装了两次系统。后来跑dmesg才看到签名被拒的提示。这个坑的教训是:装完驱动先跑nvidia-smi,看不到显卡就是没装好,别凭桌面能不能起来判断。
第二个坑是一次性把所有参数全加上。第一轮排查我图省事,把 PSR、DC、FBC、电源管理全都关了,闪屏确实没了。但后来发现电池续航掉了将近一半,而且休眠唤醒偶发黑屏。因为不知道是哪个参数导致的,只能从头一个个删,反过来又花了一晚上。现在我改配置一定是一次一项,并且每次改动前记录当前状态。
第三个坑是高刷和电源模式的联动。这台机器在插电时用 240Hz 会偶尔闪,用电池时系统自动降到 60Hz 就完全不闪。我一开始以为是功率不足导致链路不稳,后来发现是电源模式切换时合成器重新协商刷新率,协商过程中闪了几下。解决办法是把刷新率固定在 165Hz,两个模式下都一样,闪就没了。所以排查时一定要在插电和电池两种状态下分别观察,只看一种会得出错误结论。
第四个坑是固件更新。折腾了两天之后问题基本解决,只剩一点点偶发闪。后来想起来固件版本还是出厂的,去官方支持页面更新了 BIOS 和嵌入式控制器固件,偶发闪也消失了。这代平台的显示链路参数在固件里有一份,厂商后续更新里经常会修正 eDP 时序。所以如果你所有软件层都试过了还在闪,值得去查一下固件更新——注意更新固件要接电源、别断电,更新完把固件设置重新过一遍,很多选项会被重置。
第五个坑是降级内核的诱惑。有朋友建议降回老内核,说老内核更稳。我试过,结果这代显卡在老内核上根本认不全,闪得更厉害。新硬件配新内核是硬约束,不要用老经验套新机器。
我个人在这台机器上最终的稳定配置是:混合显卡模式、刷新率固定 165Hz、关闭 PSR 和 PSR2 选择性取帧、独显电源管理常开(插电时)、驱动按仓库推荐版本走、内核保持 HWE 最新。这套组合跑了一个多月,日常办公、编译、看视频都没再出问题。如果你手上的机器闪得没那么严重,可以先只关 PSR 试一周,很多时候一项就够了。真遇到调不动的,也不妨换个思路:把内置屏当备用,外接一块普通显示器当主力,等上游驱动和内核把这代硬件吃透再回来折腾,反而更省心。