执行常规的arch滚动升级,即在终端下分别运行sudo pacman -Syu和yay -Syu,发现后者升级了nvidia驱动nvidia-470xx-dkms,启动黑屏,有光屏闪烁,无法进入桌面。
重启后Alt+F2进入终端模式,先是反复卸载驱动再重装,即yay -R nvidia-470xx-dkms和yay -S nvidia-470xx-dkms,重启问题依旧。再在终端下观察分析,执行nvidia-smi显示Failed to initialize NVML: Driver/library version mismatch即驱动版本不一致。执行lsmod |grep nvidia显示有nvidia nvidia_modeset nvidia_uvm nvidia_drm四个模块,我记得这是此前为解决wayland问题自己加到/etc/mkinitcpio.conf中的。心想是不是这4个模块的版本不一致。sudo nano /etc/mkinitcpio.conf注释掉#MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm nouveau),执行sudo mkinitcpio -P /etc/mkinitcpio.conf重新生成initramfs,重启正常进入桌面。
再思考,试着恢复/etc/mkinitcpio.conf下注释的MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm nouveau),并执行sudo mkinitcpio -P /etc/mkinitcpio.conf,重启也是正常的。分析造成黑屏的原因是因手动加载了这nvidia驱动的4个模块,原initramfs中模块版本与升级后的驱动相关文件的版本不一致造成无法正确加载nvidia驱动。