当我启动仅装有 Linux 的台式计算机时,视频模式和/或控制台字体会切换四次:
- 当 GRUB 启动时,它会从 80x25 文本切换到图形模式,以便在菜单后面绘制漂亮的背景;
- 当我从菜单中选择某个内容后,GRUB 便返回到 80x25 文本;
- 当我的显卡的 KMS 驱动程序加载时,它会切换到分辨率更高的文本模式(我不知道这是否是硬件文本模式);
- 最后 X 启动,然后进入图形界面并保持这种状态。我认为最后一个开关不会改变解决视频模式,仅具有图形性。
我希望尽可能多地摆脱这些模式切换。理想情况下,当 GRUB 接管 BIOS 时,它会直接进入 KMS 驱动程序选择的相同高分辨率文本模式,并且显示器将保持该模式,直到 X 启动并显示图形。我的印象是,这可以通过修改内核命令行和/或 GRUB 控制台模块加载参数来实现,但我不知道细节。
GRUB 1.98+20100706,内核 2.6.32.15,使用 Nouveau 视频驱动程序。发行版是 Debian 不稳定版。请不要给出涉及重新编译任何东西或拼凑最前沿的内核/驱动程序组合的答案,我不太在意这个,不想费那么大劲。
编辑:Tobu 建议将GRUB_GFXMODE
显示器的分辨率设置为全像素,并GRUB_GFXPAYLOAD_LINUX=keep
避免在菜单消失后进行模式切换。这部分满足了我的要求,但总体上却更糟糕。菜单后没有模式切换,但屏幕重绘仍然非常缓慢(我可能应该放弃 GRUB 的 gfxmode,它在 1920x1200 下太慢了)。更严重的是,现在有一个双倍的nouveaufb 加载时模式切换,以及有趣的错误消息dmesg
[ 5.923798] [drm] nouveau 0000:02:00.0: allocated 1920x1200 fb: 0x40250000, bo ffff8801ba5f4600
[ 5.923802] fb: conflicting fb hw usage nouveaufb vs EFI VGA - removing generic driver
[ 5.923821] [drm] nouveau 0000:02:00.0: PFIFO_INTR 0x00000010 - Ch 1
("PFIFO_INTR" message repeats 400+ times)
[ 5.925609] Console: switching to colour dummy device 80x25
[ 5.925802] Console: switching to colour frame buffer device 240x75
答案1
普利茅斯旨在在这方面提供帮助:
这个想法是在启动过程的早期设置计算机的本机模式,plymouth 使用该模式,并且该模式在整个启动过程中一直保持,直到 X 启动后。理想情况下,目标是消除启动过程中的所有闪烁。
由于您只安装了一个操作系统,禁用 grub 分辨率更改(无背景图形)甚至菜单本身,将其保留为 80x25 将不会导致任何变化,直到 Plymouth 接管。
答案2
探测你的分辨率和色彩深度:
xrandr -q
xdpyinfo | grep 'depth of root window' | awk '{ print $5 }'
设置以使 grub 菜单分辨率GRUB_GFXMODE=<width>x<height>x<depth>
与/etc/default/grub
KMS 分辨率相匹配。
也许也可以添加GRUB_GFXPAYLOAD_LINUX=keep
到默认值中,这样在 grub 菜单之后和设置 KMS 之前就没有中间步骤了。X11 应该保留 KMS 所使用的内容,这意味着无需担心 X11 切换。
使用以下方式应用您的编辑
sudo update-grub
答案3
您可以在 GRUB 之后立即激活 KMS,这通常会包含一个用于将其打开的内核命令行参数。对于英特尔,它是i910.modeset=1
,但除此之外,您必须查看发行版的文档。
答案4
您可以添加nomodeset
到内核的命令行参数。
nomodeset
禁用内核模式设置。大多数系统的固件都会设置显示模式并为输出提供帧缓冲内存。nomodeset
如果 DRM 和 fbdev 驱动程序可能会取代预初始化的输出,则不会加载它们。只有系统帧缓冲区可供使用。相应的驱动程序不会执行显示模式更改或加速渲染。
该参数确实存在缺点,因为许多由(非固件)图形驱动程序提供的图形功能可能不可用。
- 硬件加速视频编解码器。
- 硬件加速 3D 渲染。
- 所连接显示器的省电功能。
具体受影响的内容取决于硬件/固件功能以及安装的驱动程序/软件。