根本原因是各系统独立加载显卡驱动且引导层未统一edid传递与显示初始化逻辑;若仅在grub菜单、tty或windows启动logo前几秒异常而桌面正常,即为引导阶段分辨率协商失败,需启用uefi gop、禁用csm、配置grub_gfxmode并更新grub,windows侧则通过bcdedit启用nointegritychecks。

多系统引导(如Windows + Linux双启动)时,屏幕在GRUB菜单、Linux登录界面或Windows启动动画阶段突然变模糊、拉伸、字体炸裂或黑屏,根本原因是各系统独立加载显卡驱动,且引导层(UEFI/BIOS)与操作系统间未统一EDID信息传递和显示初始化逻辑。
确认问题是否由引导层分辨率控制失效引发
开机时紧盯屏幕——若仅在GRUB菜单、Linux tty终端(Ctrl+Alt+F1~F6)、或Windows启动LOGO前几秒出现异常,而进入桌面后一切正常,则基本可判定为引导阶段分辨率未被正确协商。此时Windows和Linux各自桌面环境已加载完整驱动,但UEFI固件或GRUB本身未获得显示器原生EDID参数,只能回退到安全模式下的低分辨率(如640×480或1024×768)。
这一步无需操作,纯观察判断。若异常持续到桌面,则不属于本流程覆盖范围。
强制UEFI固件输出原生分辨率(适用于支持UEFI GOP的现代主板)
方法一:进入UEFI设置界面重置显示协议
关机后按厂商指定键(如Del、F2、F12)反复敲击进入UEFI BIOS设置。找到“Advanced” → “Video Configuration”或“Chipset” → “Graphics Configuration”类目。确认“Graphics Output Protocol (GOP)”或“UEFI Video Support”处于【Enabled】状态。若为Disabled或Legacy Only,切换为Enabled并保存退出。
方法二:禁用CSM兼容性支持(关键步骤)
在UEFI设置中定位“Boot Mode”或“Launch CSM”,将其设为【Disabled】。CSM(Compatibility Support Module)启用时会强制降级为传统VGA BIOS初始化方式,完全绕过UEFI GOP,导致分辨率锁定在640×480。关闭CSM后,所有引导阶段(包括GRUB和Windows Boot Manager)将统一使用UEFI图形协议输出,才能真正匹配显示器物理规格。
注意:关闭CSM后,若你安装的是传统MBR分区的旧系统(非GPT+UEFI启动),将无法启动。请先确认你的Linux和Windows均为UEFI模式安装。
针对GRUB引导菜单手动指定分辨率
第一步:编辑GRUB配置文件
在Linux系统中打开终端,执行sudo nano /etc/default/grub。
第二步:添加或修改分辨率参数
找到以GRUB_GFXMODE=开头的行,将其改为类似GRUB_GFXMODE=1920x1080,1280x1024,1024x768的形式——把你的显示器原生分辨率放在最前面。若不确定,可先运行sudo hwinfo --framebuffer查看当前内核识别到的所有可用模式。
第三步:启用GRUB图形终端
在同一文件中,确保GRUB_TERMINAL_OUTPUT=gfxterm这一行未被注释(即前面没有#号)。缺少此行会导致GRUB放弃图形渲染,退回文本模式,分辨率设置无效。
第四步:更新GRUB并重启
执行sudo update-grub(Debian/Ubuntu系)或sudo grub2-mkconfig -o /boot/grub2/grub.cfg(RHEL/CentOS/Fedora系),然后重启生效。
修复Windows Boot Manager在双启动下的分辨率降级
Windows Boot Manager(WinBootMgr)默认不读取Linux侧的GRUB设置,且自身无图形分辨率配置项。唯一可靠方案是通过BCD编辑强制启用高分辨率支持:
以管理员身份运行Windows命令提示符,依次执行:
bcdedit /set {bootmgr} displaybootmenu yes
bcdedit /set {bootmgr} timeout 5
bcdedit /set {bootmgr} advancedoptions yes
最关键的是这句:bcdedit /set {bootmgr} nointegritychecks on——它允许Boot Manager绕过部分UEFI安全校验,从而更稳定地调用GOP驱动。执行后无需重启立即生效,下次启动时Boot Manager菜单将采用UEFI固件协商出的最高可用分辨率。
若执行失败提示“拒绝访问”,需先在UEFI中关闭Secure Boot,或使用bcdedit /set {bootmgr} integrityservices disable替代。











