减少 Linux 启动期间的视频模式切换

减少 Linux 启动期间的视频模式切换

当我启动仅装有 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/grubKMS 分辨率相匹配。

也许也可以添加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 渲染。
  • 所连接显示器的省电功能。

具体受影响的内容取决于硬件/固件功能以及安装的驱动程序/软件。

相关内容