首页 / BOS

BOS

一个没有 Linux 内核、没有 GRUB、没有现成 libc 的操作系统。512 字节的启动扇区把 CPU 拽进 32 位保护模式, 然后交给手写的 C 内核。目标很明确:插上 U 盘就能在真机上跑起来。

32-bit 保护模式 AHCI / SATA .bosapp BIOS + UEFI 裸机验证

它现在能做什么

BOS 不追求通用性,追求的是"每一步都自己实现过"。磁盘读写走自己写的 AHCI 驱动, 可执行程序走自定义的 .bosapp 格式,连启动管理器 BOOTMGR 都是手搓的。

启动扇区引导

512 字节完成实模式到保护模式的切换,加载 stage2 与内核映像。

AHCI / SATA 磁盘驱动

已通,支持从真实 SATA 硬盘读写扇区,不依赖 BIOS 中断。

.bosapp 应用格式

自定义可执行格式,diskman、bootsfc 等工具以该格式交付。

双输入兼容

PS/2 兜底,USB 键鼠(UHCI + HID)正在接入,两条路都要能走。

启动链路

ROM / 固件加载启动扇区

BIOS 读 0 磁道扇区,UEFI 读 BOOTX64.EFI,两条路径分别铺好。

实模式 → 32 位保护模式

构建 GDT,打开 A20,置位 CR0.PE,跳转进 stage2。

stage2 装载 C 内核

解析分区与文件系统,把内核映像搬进内存并交出控制权。

内核初始化 + AHCI 探测

枚举 PCI 总线,定位 SATA 控制器,建立磁盘读写通道。

USB 键鼠驱动(UHCI + HID)

进行中:完成 HID 报告描述符解析后,与 PS/2 形成互补输入。

diskman.bosapp 落地

把磁盘工具的 5 条命令整理成正式应用,随系统一起发布。

下载 BOS

四个镜像,按你的机器固件挑一个。不确定就选第一个混合版本,BIOS 和 UEFI 都能认。

文件适用场景大小
BOS-v0.9.iso
首选:BIOS 与 UEFI 都能启动
ISO / 混合启动4.1 MB 下载
BOS-For-Linux.tar.gz
Linux/WSL 用户:核心源码 + QEMU 一键启动脚本 + 构建说明
TAR.GZ / 源码包411 KB 下载
先提醒一句:这是测试版内核,USB 键鼠尚未完成,部分机器上可能只有 PS/2 键盘能输入。 建议在虚拟机里先跑一遍,确认能进引导后再写 U 盘试真机。写盘前记得备份数据。

在 QEMU 里跑

最省事的验证方式,不用写盘、不碰真机。装好 QEMU 后一条命令:

bash
# 光盘方式启动(推荐)
qemu-system-x86_64 -cdrom bos-v0.9-bios-uefi.iso -m 256

# 软盘镜像方式
qemu-system-x86_64 -fda bos-disk.img -m 256

# 挂一块虚拟硬盘,验证 AHCI 读写
qemu-system-x86_64 -cdrom bos-v0.9-bios-uefi.iso \
  -drive file=disk.qcow2,format=qcow2,if=none,id=d0 \
  -device ich9-ahci,id=ahci \
  -device ide-hd,drive=d0,bus=ahci.0

写到真机 U 盘

裸机才是 BOS 的主场。Windows 下可用 Rufus 或 balenaEtcher:

dd — Linux / macOS
# 先确认磁盘号,写错盘会丢数据
lsblk

# 写入(以 /dev/sdb 为例,去掉分区号)
sudo dd if=bos-v0.9-bios-uefi.iso \
     of=/dev/sdb bs=4M status=progress
sync

写完插到目标机器,进固件启动菜单选 U 盘。若屏幕停在 BOOTMGR 提示,多半是键鼠驱动未命中,换 PS/2 键盘再试。