![为什么控制台功能停留在七十年代?](https://linux22.com/image/1477795/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%8E%A7%E5%88%B6%E5%8F%B0%E5%8A%9F%E8%83%BD%E5%81%9C%E7%95%99%E5%9C%A8%E4%B8%83%E5%8D%81%E5%B9%B4%E4%BB%A3%EF%BC%9F.png)
在过去的 30 到 40 年里,我们取得了多大的进步。数 GB 的 RAM。数 TB 的磁盘空间。千兆赫处理器。4K 和 5K 平板显示器。
我的控制台有高达 80x25 个字符和 16 种 ANSI 颜色。它停留在七十年代。即使我的显卡有 4GB RAM、10 位颜色等等,控制台也不会用到它。
是的,我可以启动 X11 或使用帧缓冲控制台。但为什么我必须这样做?提供一个更好的控制台(比如说,256 种颜色)有什么难以克服的问题吗?我们已经抛弃了一些其他标准,烧毁了一些桥梁(ISA?实模式?Turbo 按钮?IBM 兼容?),为什么不最终改进 VGA 控制台?
答案1
具体到 Linux,我听到的常见理由是“我们不想让它进入内核”。尤其是当涉及到字体和语言时——没有一个内核开发人员愿意在增加对 TTF、抗锯齿、RTL、动画表情符号的支持,最终在内核空间运行所有的 freetype2 和 ICU 的过程中失败。
相反,他们在内核中放入了说得通在内核中处理 – 例如图形驱动程序,以及 KMS。如果您使用支持 KMS 的开源驱动程序,控制台将自动切换到您的原始屏幕分辨率 – 就像帧缓冲区一样,但没有任何手动配置。实际上我见过的所有 Linux 发行版都默认启动高分辨率 KMS 帧缓冲区。
一旦有了 evdev 用于输入,有了 KMS 用于输出,用户空间就可以很好地处理控制台——例如通过康或者术语表甚至有模糊的计划最终关闭内核 VT 支持,只留下一个 tty1早期启动和救援任务,并让用户空间处理其余部分。
答案2
控制台通常支持 256 色,但你可能需要更改一些设置才能在所有地方启用它,例如http://www.robmeerman.co.uk/unix/256colours
如果您仅调整终端窗口的大小,80x25 的限制就会消失,从而使您可以在 30 英寸的屏幕上填充比阅读更舒适的字符。
答案3
因为没有必要。
在内存昂贵且处理器速度缓慢的时代,硬件文本模式是合理的,因为它们速度更快,内存占用更少。如今,计算机性能强大,内存充足,因此拥有简单的帧缓冲区和在软件中实现文本显示的成本可以忽略不计。
一般来说,设计和调试硬件的成本很高,因此只有在真正有需求时才会发生这种情况。出于向后兼容性的原因,保留了旧文本模式,但当软件可以很好地处理高分辨率文本的要求时,就没有动力引入新模式。
答案4
为什么不最终改进 VGA 控制台呢?
您将控制台的概念与旧 PC 风格的 MDA 风格的文本模式混淆了。
此文本模式是一种设备/显示配置,可以显示控制台文本,但控制台的文本输出可以出现在任何可以理解控制台所用协议的设备或程序上。PuTTY 是一个用于此目的的程序,它具有更多功能,例如您提到的 256 色支持和具有除 80x25 以外的屏幕尺寸的能力。
至于为什么 MDA 样式的文本模式没有改变,嗯,图形适配器增加了更多功能,但为了兼容性,它们保留了 MDA 样式的文本模式。请记住,所有现代 AMD/Intel CPU 仍然以 8086 兼容模式启动,以防您仍想运行 DOS,而 DOS 在启动时仍然需要 80x25 文本模式。
Linux 除了支持 MDA 样式的文本模式或 X11 之外,还支持其他显示模式,它可以使用帧缓冲区作为文本模式,并支持 256 色甚至图像。
为何控制台功能还停留在七十年代?
一个基本的工程原则是 KISS。控制台功能很简单,因此实现这些功能的软件和硬件也很简单,并且易于实现可靠性。
RS-232 与基本控制台 I/O 配合良好。许多旧设备和当前设备都使用 12v RS-232,可能还有许多较新的设备使用 3v RS-232。这是一个广泛接受的硬件标准,使控制台 I/O 成为许多具有此硬件的设备所期望的功能。
因此,将控制台 I/O 作为开机时的初始 I/O 方法和所有其他方法都失败时的最后一种通信方法也是有意义的。在这种情况下,您通常会传达状态消息或错误信息,而不需要太多花哨的东西。
也正是因为这种简单性,将控制台 I/O 重定向到文件或其他设备也相对容易。例如,在许多服务器上,初始启动文本不仅显示在 VGA 屏幕上,还可以选择重定向到串行端口。所以这意味着您不需要将显示器连接到它,这对可能拥有数百或数千台服务器的数据中心很有帮助。对于使用控制台 I/O 或 RS-232 的其他设备(如工业设备等)也是如此。