Linux 如何在启动时或运行过程中检测屏幕分辨率?
我想在嵌入式 Linux 目标上强制自定义分辨率,该目标的用户界面不基于 X 服务器。
当检测到的分辨率不是标准分辨率之一时,Linux 如何重新配置系统?
如果可能的话,请给我提供一些能够解释启动时图形初始化机制的文本。
短暂性脑缺血。
答案1
在基于 x86 的系统上,Linux 内核将使用一项名为VESA BIOS 扩展在启动时设置分辨率。
如果您希望控制台以特定的分辨率运行,您可以vga=X+0x200
在启动时将其传递给内核,其中 X 是特定分辨率的 VESA BIOS 代码。
比如说你想要 1600x1200 @ 24 位颜色:
这非标准此分辨率的 VESA 标识符为0x011F(287)。
另一方面,Linux 将其标识为0x011F+0x0200=0x031F(799)。
您可以将其添加vga=799
到启动字符串中以获得具有 24 位色彩的 1600x1200。
此代码不能保证在所有视频卡上都能工作,VESA 很久以前就停止发布标准分辨率代码,任何高于 1280x1024 的代码都是非标准的。