当启动时连接两个显示器时,Linux 内核会完全挂起fb0: switching to i915 from EFI VGA
。屏幕保持打开状态并继续显示最后一条消息,但除此之外,一切都没有响应。Numlock/Capslock 灯不会切换。Alt-SysRq 通常不起作用,但我偶尔可以使用 Alt-SysRq+B 强制重新启动。Dmesg 和其他日志不会写入磁盘。当启动时连接两个显示器时,UEFI 启动图像会以较低的分辨率显示 - 所以我想知道问题是否是由 UEFI 向 Linux 提供的错误视频信息引起的。在 POST 后连接第二台显示器可以正常工作,Linux 甚至在切换到 DRM 帧缓冲区之前就开始使用显示器,并且没有挂起。nomodeset
或i915.modeset=0
也可以工作,但这显然是不可取的。
硬件
- 英特尔酷睿 i7-11700K(HD750 显卡 - gen12)
- 华硕 ROG Strix B560-A 游戏 WiFi 带 UEFI v1203
- 显示器 1:Dell P2419H,HDMI @ 1920x1080p60
- 显示器 2:Dell P2419HC,DisplayPort 1.2 @ 1920x1080p60
软件
- Pop_OS!21.10 x64(Ubuntu 21.10 也出现此问题)
- Linux pop-os 5.15.5-76051505-通用#202111250933~1638201579~21.10~09f1aa7 SMP
该问题似乎与 Linux 上与 Intel Gen12+ 显卡相关的其他问题类似:
- https://bbs.archlinux.org/viewtopic.php?id=269278
- https://forums.unraid.net/topic/105034-uhd-750-rocket-lake-igp-support/
- https://gist.github.com/Postrediori/556706b28aff3b831d9e41acb47418c5
但是,这些问题应该会在 Linux 5.15 中得到修复,而且我已经尝试了他们的解决方法。
尝试修复
UEFI
- 禁用 PCIe 低功耗模式
- 更改 eGPU 专用 VRAM 数量
- 禁用 eGPU 低功耗模式
- 禁用 VT-d
- 禁用 SR-IOV
- 禁用芯片组/DMI 低功耗模式
- 将启动画面徽标显示设置为“全屏”,而不是自动
- 禁用快速启动
systemd-boot
- 加载器.conf:
console-mode auto
console-mode max
内核命令行
- 设置
drm.edid_firmware
为从每个监视器读取固件转储 - 禁用一个显示器
video=DP-1:d
(显示器仍然打开吗?) - 强制监控模式
video=DP-1:1920x1080@60 video=HDMI-1:1920x1080@60
- 消除
quiet loglevel=0 systemd.show_status=false splash
- 设置
vga=ask
(无效) i915.force_probe=4c8a
i915.fastboot=1
和i915.fastboot=0
i915.enable_guc=2
i915.enable_dc=0
i915.enable_fbc=1
和enable_fbc=0
- 上述内容的多种组合
初始化文件系统
- 添加
i915
到 initramfs
仍需尝试
- 将引导加载程序更改为 GRUB2,因为它支持从 UEFI 覆盖分辨率。
- 编译带有 USB 串行控制台支持的内核,查看显示驱动程序失败后是否打印消息。
有什么建议么?