如何使用来自 GRUB 的实模式 BIOS / VESA 调用?

How to use real mode BIOS / VESA calls from GRUB?

我正在开发一个简单的 Grub 模块,它将在引导过程的早期启用一些额外的视频 settings/initializations。我实际最好的想法是使用一些 VESA 调用来完成任务。

不幸的是,最近我发现 Grub 无法调用实模式。

但是 GRUB 可以执行非常复杂的操作,如果没有 BIOS 的帮助,这可能是难以想象的。

怎么可能?我如何从 grub 中调用 bios?

您可以只使用 BIOS 扩展器。它们允许您从保护模式使用实模式中断!我自己没有使用过它们,尽管我听说它们确实有效。一个例子是 SudoBIOS which was able to boot MikeOS 在保护模式下,虽然我自己不能保证。

据我所知,grub使用函数grub_bios_interrupt to call 16-bit interrupts. This function internally uses the prot_to_real切换到实模式,real_to_prot切换回来。我猜你也应该能够使用这些函数,但也许你需要将它们包装在像 grub_bios_interrupt 那样的函数中。