本章由 Cedric Adjih 友情提供,尽管我修改了一些小的部分。请注意:另一种在文本模式下获得更好分辨率的方法是使用 framebuffer 驱动程序(如上面的 X-Windows 章节所述)。此方法需要内核重新配置(一些 Linux 发行版已经包含合适的内核)以及在以下文件中添加新条目 (vga=NNN):/etc/lilo.conf。在文本模式下,即使对于 2.0 版本之前的 VESA BIOSes 也能工作,至少在我可以测试的模型上是这样。虽然 SVGATextMode 方法可能更快(尚未对此进行检查)。
关于 Neomagic 芯片组 NM20xx 一个鲜为人知的事实是,您可以运行 100x37(即 800x600)的文本模式。这种文本模式非常好(与丑陋的 80x25 相比)。我用 HP OmniBook 800 尝试过,并认为它也可能适用于其他使用 NeoMagic 芯片的笔记本电脑。
主要问题是设置起来有点困难,并且如果您在使用 SVGATextMode 或 restoretextmode 命令时出错,LCD 上的一些结果可能会令人害怕。尽管我多次尝试出错但并没有损坏我的 LCD,免责声明:这可能会损坏您的硬件。您已被警告。请自行承担风险遵循以下说明。如果发生任何不好的事情,我概不负责。
您需要执行三个主要步骤
使 Linux 能够在 800x600 文本模式下启动。问题是,在完成以下两个步骤之前,您将看不到任何文本。
自动运行 restoretextmode 并使用正确的寄存器数据。
自动运行 SVGATextMode。
我修改的所有文件,目前都可以在 我的页面 上找到
最近的内核 (2.2.x) 需要在定义了 CONFIG_VIDEO_GFX_HACK 的情况下编译。默认是关闭。(查看/usr/src/linux-2.2.x/arch/i386/boot/video.S)
这是通过将参数 vga=770 传递给旧内核或将 vga=7 传递给 2.2.x 内核来完成的。例如,使用lilo.conf:
image=/boot/bzImage-modif label=22 append="svgatextmode=100x37x8_SVGA" #explained later vga=7 read-only |
在启动时运行 restoretextmode 和 SVGATextMode。您必须安排在启动时运行 restoretextmode <textreg.dat 文件的名称> 和 SVGATextMode 100x37x8_SVGA。
一个例子textreg.dat用于 restoretextmode 的 (使用 savetextmode 获得) 在我的 tar 存档中的tmp/,以及一个例子/etc/TextConfig.
因为我很懒,所以我只是将 SVGATextMode 和 restoretextmode 放在了/etc/rc.boot/kbd来自我的 Debian/GNU Linux 的文件,它在启动时执行(也可在 tar 存档中找到)。
使用 CONFIG_VIDEO_GFX_HACK 重新编译内核 2.2.x
将带有正确参数的 restoretextmode 插入到初始化脚本中,无需其他更改。
以普通文本模式 (80x25) 启动,但使用 restoretextmode:您应该看到屏幕变为 100x37,但只有 80x25 可用。暂时不要使用 SVGATextMode。
最好像我一样条件化您的初始化代码,以保持在两种模式下启动的可能性:您现在可以通过一些重启来测试这一点(启动或不启动 restoretextmode)。
使用参数 vga=7 (lilo.conf) 以 100x37 文本模式启动,您应该在某个时候看到白色背景,但字符将是黑底黑字。这没关系。您现在必须盲目重启。
在初始化脚本中的 restoretextmode 之后插入 <路径>/SVGATextMode 100x37x8_SVGA。
使用 vga=7 (lilo.conf) 重启
现在应该可以了。尽情享用。