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


12

当我启动仅装有Linux的台式计算机时,视频模式和/或控制台字体会切换四次:

  • GRUB启动时,它从80x25文本切换到图形模式,因此可以在菜单后面绘制漂亮的背景。
  • 当我从菜单中选择内容后,GRUB然后返回80x25文本;
  • 加载我的视频卡的KMS驱动程序时,它会切换到分辨率更高的文本模式(我不知道这是否是硬件文本模式)。
  • 最终,X启动,它变为图形,并保持这种状态。我认为最后一个开关不会改变视频模式的分辨率,只会改变图形。

我想摆脱尽可能多的这些模式切换。理想情况下,当GRUB从BIOS接管时,它将直接进入KMS驱动程序选择的相同高分辨率文本模式,并且显示将一直保持该模式,直到X启动并显示图形。我的印象是,可以通过使用内核命令行和/或GRUB控制台模块装入参数来实现此目的,但是我不知道细节。

使用Nouveau视频驱动程序的GRUB 1.98 + 20100706,内核2.6.32.15。发行版是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
对于任何给定的像素分辨率,视频模式可以是图形的(每个像素都是可寻址的)或文本(模拟较早的字符单元终端)。我认为“图形性”是指,我列出的第四个视频模式切换是从文本变为图形,而不改变像素分辨率。
zwol

Answers:


2

普利茅斯旨在在以下方面提供帮助:

其想法是在启动过程的早期就设置了计算机的本机模式,plymouth使用该模式,并且该模式在X启动之前和之后的整个启动过程中都保持不变。理想情况下,目标是消除启动过程中的所有闪烁。

由于仅安装了一个操作系统,因此禁用grub分辨率更改(没有背景图片),甚至禁用菜单本身,将其设置为80x25都将导致更改,直到Plymouth接手为止。


1

探测分辨率和颜色深度:

xrandr -q
xdpyinfo | grep 'depth of root window' | awk '{ print $5 }'

进行设置GRUB_GFXMODE=<width>x<height>x<depth>/etc/default/grub使grub菜单分辨率与KMS分辨率匹配。

也许GRUB_GFXPAYLOAD_LINUX=keep也要添加到默认值,以便在grub菜单之后和设置KMS之前没有中间步骤。X11应该保留KMS所使用的内容,这意味着不必担心X11开关。

应用您的修改

sudo update-grub

谢谢!这确实实现了我想要的功能,但有负面影响,使其比现状更糟。我在问题中添加了细节。
zwol

0

您可以在GRUB之后立即激活KMS,这通常会在内核命令行中包含一个将其打开的参数。对于intel,它是i910.modeset=1,但除此之外,您还必须检查发行版的文档。


我相信,从加载nouveau驱动程序开始,KMS就处于活动状态,但这仅在udev的初始设备扫描期间(在用户空间运行后的一段时间内)发生。我稍微弄乱了video =和vga =命令行选项,但是没有任何运气。
zwol

您可以使用此方法告诉它在此之前加载
Daenyth

缺少使用nouveau编译的模块重建内核的方法(这很麻烦),我能够做的最好的就是将nouveau /etc/initramfs-tools/modules插入...,但是所有的操作就是更早地从“等待中”移动双模式开关。 “正在加载/ dev”,紧接在“正在加载,请稍候...”之后,目标是消除模式切换。
zwol

在这种情况下,您需要使用具有KMS功能的引导加载程序。我认为grub2可能会这样做,但是如果不这样做,那么您就完全不走运了。
丹妮斯(Daneyth)

grub2确实设置了模式并保持设置(这就是GRUB_GFXPAYLOAD_LINUX = keep完成的工作),但是对于新手和/或fb子系统来说,这还不够好,因此出现了“冲突的fb硬件使用情况”错误消息。顺便说一句,我的笔记本电脑上与i915的行为完全相同。
zwol
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.