基于 Fiasco 微内核构建的操作系统。Fiasco 是一个 L4 家族的微内核,TuringOS 在其之上通过 L4Re 运行时环境提供驱动和应用程序支持。
turingos/
├── kernel/ # Fiasco 微内核源码 (Git 子模块)
├── l4re/ # L4Re 运行时环境 (Git 子模块)
├── l4mk/ # L4Re 构建系统入口 (启动项 conf/modules.list 在此)
├── pkg/ # 驱动、服务与应用(扁平结构,约 50+ 个包)
│ ├── native_shell/ # 交互式 Shell
│ ├── spawn/ # spawnd 进程加载服务
│ ├── filesystem/ext4/ # ext4 文件系统服务
│ ├── virtio-*/ # VirtIO 块 / 网络 / 串口驱动
│ ├── fb-drv/ lvgl/ # 显示子系统
│ ├── benchmark/ # cyclictest / ipcbench / smp-spawn-bench
│ └── ... # 传感器、CAN、WebAssembly(wamr) 等
├── conf/ # 启动配置 (*.cfg)
├── docs/ # 设计文档与 todo
├── tools/ # 测试与 CI 脚本 (ci_smp_smoke.sh 等)
├── build.sh # 构建脚本 (--board rpi4|bbb|virt|imx6ul)
├── run_qemu*.sh # QEMU 启动脚本 (virt / rpi4 / imx6ul)
├── Kconfig # 驱动配置定义
├── Makefile # 顶层 Makefile (menuconfig / defconfig)
└── build/ # 构建产物输出目录
| 目标板 | SoC / 架构 | --board 参数 |
备注 |
|---|---|---|---|
| QEMU ARM Virt | Cortex-A15 (ARMv7) | virt |
主力开发 / 验证平台,功能最完整(run_qemu_virt.sh) |
| Raspberry Pi 4B | ARM64 (AArch64) | rpi4(CLI 默认) |
支持 QEMU 模拟 |
| BeagleBone Black | AM335x / ARM | bbb |
仅支持真机部署 |
| i.MX6UL | Cortex-A7 (ARMv7) | imx6ul |
QEMU mcimx6ul-evk |
- 交叉编译工具链(上游要求 GCC 11+,本项目 virt/bbb/imx6ul 统一用 GCC 12)
- RPi4 (ARM64):
aarch64-elf-gcc(macOS:brew install aarch64-elf-gcc) - virt / BBB / imx6ul (ARMv7):
arm-linux-gnueabihf-gcc(macOS:brew tap messense/macos-cross-toolchains && brew install arm-unknown-linux-gnueabihf)
- RPi4 (ARM64):
- GNU Make 4+ — macOS 自带 Make 3.81 过旧,需
brew install make(脚本会自动检测gmake) - Perl — 内核构建需要
- flex / bison — menuconfig 功能需要
- QEMU(可选)—
brew install qemu,用于 virt / RPi4 模拟测试
可通过 CROSS_COMPILE 环境变量覆盖默认工具链前缀:
export CROSS_COMPILE=aarch64-none-elf-# 推荐:构建并在 QEMU 运行 virt 平台(功能最完整)
./build.sh --board virt all && ./run_qemu_virt.sh
# 完整构建 (CLI 默认 RPi4)
./build.sh
# 仅构建内核
./build.sh kernel
# 仅构建 L4Re 运行时
./build.sh l4re
# 仅生成引导镜像 (需先完成 kernel 和 l4re)
./build.sh bootstrap
# 交互式驱动配置
./build.sh menuconfig
# 清理所有构建产物
./build.sh clean为 BeagleBone Black 构建时加 --board bbb:
./build.sh --board bbb # BBB 全量构建
./build.sh --board bbb l4re # 仅构建 BBB 的 L4ReVirt 平台(推荐) —— 功能最完整,含网络、ext4、显示、SMP:
./build.sh --board virt all # 构建
./run_qemu_virt.sh # 启动 native-shell(默认,含网络)
./run_qemu_virt.sh --cfg cyclictest # 启动指定配置
./run_qemu_virt.sh --help # 查看全部选项(--gpu / --disk / --smp 等)默认账号 root / 12345678。退出按 Ctrl-A X。
RPi4 平台:
./run_qemu.sh # 启动默认镜像
./run_qemu.sh <entry> # 启动指定 entry
./run_qemu.sh --check # 仅验证镜像结构,不启动 QEMU
./run_qemu.sh --timeout 5 # 设置超时(秒),0 为不限BBB (AM335x) 不支持 QEMU 模拟,使用
--check可验证镜像结构。
-
构建 BBB 镜像:
./build.sh --board bbb
-
将 ELF 转换为 U-Boot 可引导的 uImage:
arm-linux-gnueabihf-objcopy -O binary build/bootstrap.elf bootstrap.bin mkimage -A arm -T kernel -C none -a 0x80000000 -e 0x80000000 -d bootstrap.bin uImage
-
将
uImage复制到 SD 卡 FAT 分区。 -
在 U-Boot 控制台中执行:
fatload mmc 0 0x80000000 uImage bootm 0x80000000
系统启动项通过 conf/modules.list 和 conf/system.ned 配置。详见 docs/boot-entry-config.md。