Embeddable Linux Kernel Subset - ELKS
2025-08-12 15:26:14 阿炯

ELKS 是一个“16 位、无 MMU、跑在 IA16(8086 系列)上的 Linux 子集”,支持超古老的 8086/8088/80186/80286 CPU,也能跑在 SBC、FPGA、ESP32 模拟器上。首发于1999年5月。


ELKS is a project providing an early fork of the Linux OS for systems based on the Intel IA16 architecture (16-bit processors: 8086, 8088, 80188, 80186, 80286, NEC V20, V30 and compatibles). Such systems can be ancient computers (IBM-PC XT / AT and clones) as well as more recent SBCs, SoCs, FPGAs, as well as modern 80386+ x86 desktops. ELKS supports networking, graphics, ia16-elf-gcc, OpenWatcom C and its own native C compiler, and installation to HDD using both MINIX and MSDOS FAT filesystems.

• 内核:精简的 Linux 0.x/1.x 分支
• 文件系统:MINIX、FAT16(MSDOS)
• 网络:基本的 TCP/IP、telnet、netstat 等
• 编译器:ia16-elf-gcc、OpenWatcom C、ELKS 原生 C 编译器

不用额外买硬件,直接用 QEMU、v86 在线模拟都能玩,甚至可以直接 telnet 到老 BBS 站点。


能做什么
咱归根结底,玩 ELKS 就是给老硬件赋予新活力。下面这张表展示了其基本特性:
功能 要求/说明
内存需求 256K 运行,512K 更舒适,128K ROM 系统也能跑
存储 软盘(1.44MB)、硬盘(FAT、MINIX)、ROM
用户空间程序 vi、basic、nxtetris、doom(当然很简化版)
网络 网卡驱动 + TCP/IP + telnet/ftp
图形 Nano‐X 简单窗口,VGA/text 模式
开发链 ia16-elf-gcc、as86、ld86、make


随手敲几个命令:
mount /dev/fd0 /mnt
cd /bin
nxtetris

按下 'n' 就能体验 80 年代的俄罗斯方块,穿越感十足。


解决了哪些痛点
1. 古董硬件复活:1990 年代的老 PC,内存 512K、软驱一张,依然能跑当年的 “Linux” 系统。
2. 教学和研究:想研究操作系统内核,弄个小而精的内核源码,分析比现代内核可读多了。
3. 嵌入式探索:无 MMU、资源极度受限场景,ELKS 提供了极简可用的 Linux 体验,能当嵌入式学习平台。
4. 编译链自洽:全套工具链跑在宿主机和 ELKS 本机上,不用折腾复杂交叉编译环境。


优缺点
下面用表格给大家直观对比:
优点 缺点
极轻量:最低 128K 即可启动 功能少:现代常用的系统调用、库都没得用
支持多种编译器:ia16-elf-gcc、OpenWatcom C 驱动不全:显卡、网卡仅支持一小部分型号
可跑在真实硬件和模拟器上 网络性能有限,且配置稍繁琐
社区活跃:文档齐全、issue 响应快 界面原始:图形只靠 Nano‐X,体验比不上现代 GUI
超有趣:玩复古、学内核、搞嵌入式一举多得 学习曲线:IA16 架构、无 MMU 特性都要额外适应


ELKS,既是一台“穿越机”,把 8086 世界和 Linux 串起来;又是一个“小而美”的操作系统实验平台,非常适合怀旧玩家、OS 教学、嵌入式入门。
如果你手头有台老机器,或者想搞搞精简内核项目,不妨试试 ELKS,绝对能带给你前所未有的“时光倒流”体验。

最新版本:0.8
v0.8.1于2024年10月中旬发布。

项目主页:https://github.com/ghaerr/elks