286上的Linux?

ioc*_*oid 15 hardware-compatibility linux-kernel

我没有 286,也不打算在其中运行 Linux。不过既然286有保护模式,为什么经常说Linux需要386以上的CPU呢?

http://tuxmobil.org/286_mobile.html看来,ELKS 版本的 Linux 可以在 286 上运行,这是正确的吗?进行了哪些(如果有)修改以允许内核在 286 CPU 上运行?

现在显然我明白为 386 编译的内核不能在 16 位的 286 CPU 上执行。所以我的问题是,为什么不能为 286 编译标准的 Linux 内核,然后在 286 上执行?Linux 是否需要硬件 VM86 支持?

Mal*_*ous 6

286 保护模式 (PM) 与 386 所提供的完全不同。把 286 PM 想象成一个原型,它有很多缺点,几乎没有人使用过它,整个东西从头开始为 386 重新设计。

它没有使用平面内存模型,而是使用了像实模式这样的分段模型,这意味着您必须跳过箍以一次访问大于 64kB 的块中的内存。

它与当时所有可用的 (MS-DOS) 程序完全不兼容,因此一旦您进入 PM,您将无法使用任何您习惯使用的程序。

除非您重新启动 PC,否则您也无法再次退出保护模式,因此制造商提出了创造性的解决方案,例如在 RAM 中放置一个标志,然后向键盘控制器写入一个魔术值,这将轻弹 CPU 上的复位引脚以重新启动机器。BIOS 要做的第一件事是检测之前设置的标志,然后它会跳回原始程序而不是运行 POST 例程,从而允许原始程序在“退出”PM 后继续运行。

这意味着使用 286 PM 会阻止您在没有大量技巧的情况下运行正常的 DOS 程序。在只有 DOS 程序的时候,使用 PM 根本不值得。

因此,使用 286 PM 最终比没有它而生活更加复杂,并且依靠 EMS 和 XMS 来访问额外的内存。许多 286 主板具有支持 EMS 的芯片组,因此您可以使用所有额外的系统内存而无需 PM。

英特尔认识到了这些缺点,并在 386 中产生了一个全新的完全不同的 PM。扁平内存模型使得访问高达 4GB 的内存块变得简单。CPU 可以通过几条指令进出 PM,因此不需要笨拙的重启协议。VM86 意味着大多数时候你甚至不需要退出 PM,你可以在 PM 中运行 DOS 程序。

所有这些改进意味着 386 PM 不仅功能更强大,而且兼容性也显着提高。

换句话说,286 和 386 保护模式之间唯一的共同点就是名称。这就是 PM 操作系统通常为 386 或更新版本的原因。添加对 286 PM 的支持将是一项完全独立的工作,很少或没有代码可以与完全不同的 386 PM 共享。

相比之下,386 PM 的工作方式几乎相同,直到最后一个 32 位 CPU,如果您在 64 位 CPU 上运行 32 位软件,甚至更远。


小智 1

最近,Linux 内核放弃了 386 作为支持平台,并且 Linux 内核不支持Intel 286 处理器。80286 不是启动所需的 32 位 cpu。

  • Linux 最初是在 1991 年在 386 上编写的。那时 286 已经很老了,主内核树从来没有任何向后移植的代码来支持 286。 (5认同)