裸机 x86 操作系统 · 2026 首个版本

TinyOS Genesis v0.1

从零手写的裸机 x86 操作系统 —— 可引导、可运行、真正能在真机与 QEMU 上跑起来。内核、引导器、用户程序全部自己造。

  • i386 保护模式
  • 56 KB 压缩只读文件系统
  • 27/27 端到端自动化测试通过

产品介绍

TinyOS Genesis v0.1 是从零手写的裸机 x86 操作系统:可引导镜像约 612 KB,内置 tinysh 用户态 shell、Lua 5.4.7、图形文本桌面与网络组件。它不是 Linux,也不是 Linux 内核,全部从第一行汇编与 C 写起。下面按模块进入各个专题页。

  • tinysh 在线体验

    19 条命令的用户态 shell,登录后自动进入,可在线试玩真实会话。

    进入 →
  • 文件系统

    VFS 抽象 + 压缩只读 romfs,以及 ATA 多磁盘抽象层(含 MBR 分区表)。

    进入 →
  • 软件包管理器

    用户程序打包成自定义 TNCR 格式,由 TNCR 加载器载入用户态。

    进入 →
  • 网络协议

    e1000 网卡驱动;FTP 服务器/客户端、TinySMB、TCP socket、tcping。

    进入 →
  • 开源协议

    MIT License,Copyright (c) 2026 TinyOS Genesis Project。

    进入 →

体积对比:更小,也更轻

上一代同类系统体积臃肿;Genesis 通过手写内核与压缩只读文件系统,把体积压到了原来的零头。镜像本身约 612 KB,一张软盘都装不满。

条形长度按同类指标内的最大值归一化,数值标签为真实大小。

能力矩阵

v0.1 已经内置的能力。tinysh 是真正的 TNCR 用户程序,不是内核内建;Lua 解释器也是编译成 TNCR 跑在用户态。

  • 文件系统

    VFS 抽象 + 压缩只读 romfs;tinysh 提供 ls / cd / pwd / cat / mkdir / rm / touch。

  • 进程

    用户态进程模型,tinysh 可用 ps 查看、kill 终止;sysinfo 报告进程数与内存。

  • 硬件寄存器

    devlist / readdev / writedev 直访 ISA 设备寄存器:com1 0x3F8、pit 0x40、kbd 0x60、vga 0x3D4。

  • 图形桌面

    VGA 80×25 文本模式 + PS/2 键盘 + PS/2 鼠标。

  • 网络

    e1000 网卡驱动,可在用户态做网络 I/O。

  • Lua 5.4.7

    解释器编译成 TNCR,跑在用户态:可 REPL,也可 lua /home/x.lua 执行脚本。已实现。

  • tinysh 用户态 shell

    19 条命令:help version sysinfo date ls cd pwd cat mkdir rm touch ps kill devlist readdev writedev echo clear exit。已通过 27 项端到端自动化测试。

架构分层

从按下电源到用户程序,数据是这样一层层流下来的。全程用 HTML + CSS 绘制,无图片。

  1. 引导器 NASM 汇编
  2. 内核 zig cc · freestanding ELF
  3. VFS / romfs 压缩只读文件系统
  4. TNCR 加载器 自定义可执行格式
  5. 用户程序 tinysh · Lua 5.4.7

技术栈

每一个环节都按真实情况列出来;没有 JVM、没有 Java、没有 Docker,也没有在系统里跑 C/C++ 工具链。

  • NASM

    引导器用 NASM 汇编编写。

  • zig cc

    -target x86-freestanding -mgeneral-regs-only

    内核与工具链交叉编译为 freestanding ELF。

  • TNCR

    用户程序打包成自定义 TNCR 格式,由 TNCR 加载器载入用户态。

  • Python(宿主机侧)

    构建由仓库内的 Python 脚本驱动;脚本本身运行在开发机上,不是操作系统的一部分。

快速上手(Windows)

构建与运行都由仓库内的脚本驱动(需要本机装有 zig 与 NASM)。下面是可参照的入口命令。

# 1) 安装交叉编译工具链(zig + NASM)
powershell -ExecutionPolicy Bypass -File tools\setup-toolchain.ps1

# 2) 构建用户态 TNCR 程序(tinysh / lua / 网络组件)
python tools\build_users.py

# 3) 构建可引导镜像 tinyos.img(约 612 KB)
powershell -ExecutionPolicy Bypass -File build.ps1

# 4) 启动到 QEMU
start.bat

首次启动:安装向导

镜像首次启动会跑 5 步安装向导(disk / network / software / accounts / confirm)。第 4 步 accounts 需设置 root 密码(≥3 位,输入两遍)。登录后自动进入 tinysh;exit 退回内核 shell(uname / mem / ps / disk / net / help / lua)。

提示:全部测试由 QEMU 串口自动化驱动,27/27 通过,无需人工点击。

路线图

清楚区分「已完成」与「计划中」。v0.1 已交付,下面列的是方向,不是已落地的功能。

✅ 已完成 · v0.1

  • 可引导 i386 保护模式镜像(tinyos.img)
  • tinysh 用户态 shell,19 条命令,27 项端到端测试通过
  • Lua 5.4.7 解释器(TNCR,用户态)
  • VFS / 压缩 romfs、进程、硬件寄存器直访
  • VGA 文本桌面 + PS/2 键鼠、e1000 网卡驱动

🧭 计划中

  • 真实磁盘多盘支持(已有 ATA 多盘抽象层)
  • 图形改进(更高分辨率 / 更多色彩)
  • 更多 TNCR 运行时与用户程序