l【开源神器】Tiny386:轻量级 x86 模拟器,ESP32 也能跑 Windows 9x/NT!
前言
各位嵌入式爱好者、复古系统玩家、开源开发者,今天给大家安利一款极致便携、超轻量的 x86 PC 模拟器 ——Tiny386!
它用纯 C99 编写,核心代码仅 6000 行,最大亮点是跨平台便携性,不仅能在电脑上流畅运行老式 Windows、Linux 系统,还能完美移植到 ESP32-S3 这类微控制器(MCU)上,直接启动 Windows 9x/NT 系统,堪称嵌入式复古折腾的天花板!
本文将完整解析 Tiny386 的核心特性、编译、使用、ESP32 移植、问题排查全流程,新手也能轻松上手。
一、项目简介

  1. 核心定位
    Tiny386 是从零开发的轻量级 i386 架构 x86 PC 模拟器,主打极简、便携、跨平台,专为嵌入式设备和复古系统运行优化。
  2. 核心优势
    纯 C99 编写,编译无压力,移植性拉满
    CPU 模拟器仅~6K LOC(6000 行代码),极致精简
    支持 16/32 位软件,兼容 486/586 指令,可启动现代 Linux/Windows 内核
    完整模拟经典 PC 外设,硬件兼容性强
    支持 ESP32-S3 MCU,实现单片机跑 Win9x/NT
    二、核心功能特性
  3. CPU 模拟器
    自研极简 i386 核心,无第三方依赖
    支持 386/486/586/686 多世代 CPU 配置
    可选 x87 FPU 浮点运算单元模拟
    兼容绝大多数 16/32 位老式软件、系统
    暂未支持:调试功能、硬件任务切换、部分权限校验
  4. 完整 PC 外设模拟(移植自 TinyEMU/QEMU)
    plaintext
    8259 PIC 中断控制器
    8254 PIT 定时器
    8042 键盘控制器
    CMOS RTC 实时时钟
    ISA VGA显卡(支持Bochs VBE)
    IDE磁盘控制器
    NE2000 ISA网卡
    8257 ISA DMA控制器
    PC扬声器
    可选:Adlib OPL2声卡、SoundBlaster 16声卡
  5. 固件与启动方式
    BIOS/VGA BIOS 采用开源SeaBIOS
    支持传统 BIOS 启动
    支持无 BIOS 直接启动 Linux 内核(借鉴 JSLinux,使用 linuxstart 轻量引导代码)
    三、Linux 平台编译教程
  6. 依赖安装
    方式 1:rawdraw 图形版本
    bash
    运行
    sudo apt install libslirp-dev libx11-dev libasound2-dev
    make
    方式 2:SDL 图形版本
    bash
    运行
    sudo apt install libslirp-dev libsdl1.2-dev
    make USE_SDL=y
  7. 其他平台
    直接参考项目文件:.github/workflows/build.yml
  8. 预编译二进制文件
    官方已提供编译好的程序,无需手动编译,直接下载使用:
    👉 [预编译包下载地址]
    四、快速使用指南
  9. 编写配置文件(ini 格式)
    新建config.ini,复制以下配置,按需修改路径:
    ini
    [pc]
    ; BIOS文件路径
    bios = bios.bin
    ; VGA BIOS文件路径
    vga_bios = vgabios.bin

; 内存大小 / VGA显存大小
mem_size = 32M
vga_mem_size = 2M

; 软盘镜像(可选)
fda = floppy.img

; 硬盘/光盘镜像(可选)
hda = win95.img
cdb = win95_cd.iso

; Win9x兼容模式修复(WinNT必须设为0)
fill_cmos = 1

[display]
; 窗口分辨率
width = 720
height = 480

[cpu]
; CPU世代:3=386/4=486/5=586/6=686
gen = 3
; 关闭/开启x87浮点
fpu = 0
2. 启动模拟器
bash
运行
./tiny386 config.ini
3. 快捷键操作
Ctrl + ]:捕获 / 释放键盘、鼠标
Ctrl + [:显示 / 隐藏屏幕 OSD 控制面板(支持热切换软盘 / 光盘)
五、ESP32 移植版(核心亮点)
Tiny386 最炸裂的功能:在 ESP32-S3 单片机上运行 Windows 9x/NT!

  1. 支持硬件
    JC3248W535 开发板
    Elecrow CrowPanel Advance 7.0" HMI(ESP32-S3, 800x480)
    依赖 ESP-IDF:v5.2.x
  2. 快速烧录(推荐新手)
    下载预编译镜像:esp/flash_image_JC3248W535.bin
    打开乐鑫官方在线烧录工具:
    https://espressif.github.io/esptool-js
    烧录偏移地址:0x0000
  3. 手动编译烧录
    bash
    运行

给ESP-IDF打补丁

scripts/build.sh patch_idf

准备依赖

make prepare

进入ESP目录

cd esp

编译(二选一)

idf.py -DBOARD=jc3248w535 build

idf.py -DBOARD=elecrow7s3 build

烧录

idf.py flash
4. ESP32 配置要求
准备FAT/exFAT 格式 SD 卡
配置文件必须命名:tiny386.ini,放在 SD 卡根目录
BIOS、内核等文件可烧录到 Flash 分区(参考partition.csv)
5. 键鼠控制方案
WIFI 远程键鼠(推荐)
ESP32 监听 TCP 9999 端口,电脑运行工具转发信号:
bash
运行
./wifikbd [ESP32 IP地址] 9999
USB HID:开发中
六、常见问题排查(必看)

  1. Windows 95 安装提示 0 bytes of memory
    解决:安装命令加参数,跳过内存检测
    plaintext
    setup /im
  2. Windows 95 启动报 protection error
    解决:使用patcher9x工具修复
  3. NE2000 网卡无法使用
    解决:手动将 IRQ 中断号设置为9或2
  4. Windows NT4/2000/XP 启动卡死
    解决:配置文件中修改
    ini
    fill_cmos = 0
    七、开源许可证
    核心 CPU 模拟器 + 项目主体:BSD-3-Clause
    Adlib 声卡模拟:依赖 LGPL 库(可make USE_FMOPL=n禁用)
    SeaBIOS:GNU LGPL-3
    移植自 QEMU/TinyEMU 代码:MIT 协议
    八、总结
    Tiny386 = 轻量 x86 模拟器 + 嵌入式复古神器,6000 行核心代码实现强大功能
    电脑、ESP32-S3 通吃,轻松运行 Windows 9x/NT、老式 Linux
    编译简单、配置清晰,外设齐全,新手也能快速上手
    所有常见兼容问题均有成熟解决方案,折腾零障碍
    如果你喜欢复古系统、嵌入式开发、开源项目,Tiny386 绝对值得收藏把玩!
    源代码
    https://download.csdn.net/download/u010952129/92752550
Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐