我有一块 GTX 1060 GPU、一块超宽(21:9)2560x1080 显示器和一块 MSI B-450 A PRO 主板(BIOS 版本V10.C
- 2019/11/12)。
最近我将我的 BIOS 的启动模式从 CSM 更改为 UEFI。此后,我的 grub 开始使用显示器分辨率 (2560x1080),之前它仅支持不超过 1920x1080。
经过这样的改变之后,grub 变得极其慢,慢到我可以看到屏幕被渲染的程度,而且我必须注意不要在 Grub shell 中打字太快(甚至不要是中速),否则它会错过按键。
我的 /etc/default/grub 包含以下内容:
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
# info -f grub -n 'Simple configuration'
GRUB_DEFAULT="saved"
GRUB_TIMEOUT="4"
GRUB_DISTRIBUTOR="`lsb_release -i -s 2> /dev/null || echo Debian`"
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nvme_core.default_ps_max_latency_us=0"
GRUB_CMDLINE_LINUX=""
# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"
# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL="console"
# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
GRUB_GFXMODE="2560x1080x32"
GRUB_GFXPAYLOAD_LINUX="keep"
#GRUB_VIDEO_BACKEND="efi_gop"
# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID="true"
# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"
# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"
GRUB_SAVEDEFAULT="true"
GRUB_THEME="/usr/share/grub/themes/Stylish/theme.txt"
两个 gif 显示了它的渲染速度有多慢:
进入主 grub 菜单
进入 grub shell
这是完整视频链接到谷歌驱动器,在这个视频中它还显示了我的打字过程(你可以听到按键的声音)以及输入的速度有多慢。
有人知道发生了什么,以及如何解决?
注意:我已经尝试过不使用自定义主题,但它的行为方式相同(缓慢)
编辑:添加 gif 和视频文件
答案1
在操作系统加载之前(即没有加速驱动程序)在屏幕上绘图非常慢 - 基本上你会回到计算机拥有 640x480x3 屏幕但分辨率却是 72 倍的时代。
这不是 GRUB 的属性,而是 [U]EFI 模式下的屏幕渲染过程的属性:对于您输入的每个字母,系统都会重新绘制屏幕。
处理这个问题的最佳方法是只GRUB_TERMINAL="console"
在低分辨率下逐个字母绘制,而不是在高分辨率下逐个像素绘制。如果您不喜欢这种外观,只需GRUP_TIMEOUT_STYLE=hidden
在真正需要时才显示它即可。
答案2
GRUB_TERMINAL_OUTPUT="gfxterm"
为我带来原生分辨率和响应式菜单。