GRUB 0.97:vga=xxx 无法与 EL TORITO 启动映像配合使用

GRUB 0.97:vga=xxx 无法与 EL TORITO 启动映像配合使用

目前我正在编写一个操作系统。因此,我使用 GRUB 0.97(旧版)作为引导加载程序... 它的标准输出是 80x25 文本模式。当然我想要更高的分辨率... 我已经在 GNU GRUB 网站上读到过关于标志“vga=xxx”的信息。我将其放入 menu.lst 文件中:

default 0
kernel os/kernel.img vga=792
boot

但 80x25 界面仍然保留。有人能帮我修复吗?谢谢您的建议

答案1

vga=792是 Linux 内核参数。GRUB 仅将其传递给内核映像,而不会对其执行任何其他操作。

如果 GRUB 0.97 源代码中对该选项的特殊处理vga=给你留下了不同的印象,那可能是因为该vga=选项不是原来的设置 Linux 显示模式的方法。在内核命令行参数存在之后,Linux 的早期版本在内核映像头中为参数保留了几个固定的位置:可以通过使用合适的工具编辑内核映像文件来修改这些位置,或者引导加载程序可以在将内核映像加载到内存时更新这些值。

GRUB 0.97 仍然保持与那些早期内核版本及其更有限的配置机制的兼容性:该vga=...值作为常规内核参数传递给内核,并且显示模式值也会在内核映像加载时更新到内核映像头中的旧位置。

当你为操作系统编写显示驱动程序时,它的一个功能就是设置显示分辨率(或视频模式)。vga=792是 1024x768 分辨率和 16M 色彩的 Linuxvesafb模式值。因此,您可能需要研究Linux 的vesafb帧缓冲区显示驱动程序

如果你想要更简单的选择,你可以使用(S)VGA 文本模式,比如 Linux 的旧的 vgacon 纯文本控制台驱动程序. 看起来,切换到更高分辨率的文本模式基本上只是在 VGA 兼容显示控制器的模式控制寄存器中设置一些新值,并跟踪所选分辨率下显示所需的显示内存大小。

带有参数的 Linux 内核vga=...将在内核开始执行后立即切换视频模式。切换过程发生得非常快,看上去像是 GRUB 在执行此操作,但 GRUB 0.97 没有用于切换视频模式的代码(除非打上补丁以显示启动徽标,我认为有些发行版确实如此 - 我不知道这些补丁是如何工作的)。

相关内容