Skip to content

Latest commit

 

History

286 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HBOS

He Bit OS — 面向 x86_64 的轻量实验操作系统

当前版本:v0.1-beta5-pre6 · 支持 BIOS / UEFI · 正在积极开发

GUI 版本:HIVE 0.1-beta5-gui.4(Toolkit API 1.4 / TUI Kit 1.0)

HBOS 桌面截图

实机截图来自 beta5 pre6(QEMU,浅色主题)。

HBOS 从引导、内核、驱动、文件系统、网络栈到桌面环境均以“小而可用”为目标。 项目优先照顾低配置设备和清晰的模块边界;构建完成后直接运行在裸机或虚拟机, 不依赖 Linux 或其他宿主操作系统提供运行时。

Warning

HBOS 仍处于早期开发阶段,不适合保存重要数据或用于生产环境。UEFI 启动时 需要关闭 Secure Boot;真机支持取决于具体硬件。

项目概览

领域 当前能力
启动 x86_64 长模式、Multiboot2 BIOS、UEFI、ISO 与硬盘镜像
内核 物理/虚拟内存、任务调度、系统调用、ELF/HAX 用户程序、动态链接
终端 framebuffer/VGA 输出、ANSI 颜色、UTF-8/CJK、Shell 与命令历史
桌面 HIVE 桌面、窗口管理、合成器、应用启动器
应用 TinyCC、BusyBox applets、文件管理器、终端、编辑器、计算器、浏览器等
存储 ramfs、FAT32、HBFS、AHCI 优先并回退 ATA PIO
网络 E1000、DHCP、ARP、ICMP、DNS、TCP、HTTP/HTTPS、用户态 socket API
输入 PS/2 键鼠、USB xHCI HID 键盘与鼠标基础路径

HBOS 也提供不包含桌面和图形应用的 no-GUI 构建,可单独验证内核、Shell、 文件系统、网络和用户态程序。

快速开始

1. 安装构建依赖

Ubuntu / Debian:

sudo apt update
sudo apt install build-essential nasm grub-pc-bin grub-efi-amd64-bin \
  xorriso mtools dosfstools qemu-system-x86 qemu-utils ovmf \
  python3 python3-pil

Arch linux:

sudo pacman -Sy
sudo pacman -S --needed base-devel nasm grub xorriso mtools dosfstools \
  qemu-system-x86 qemu-img edk2-ovmf python python-pillow

Windows 推荐使用 WSL2 + Ubuntu。仓库也提供 scripts/build-windows.ps1scripts/build-windows.cmd 作为入口。

2. 构建

git clone --recurse-submodules https://github.com/HeBitOS/HBOS.git
cd HBOS
make

如果已经使用普通 git clone 下载、发现 limine-bin 为空,请在 HBOS 仓库目录中执行:

git submodule update --init --recursive

默认生成:

  • build/hbos-bios.iso
  • build/hbos-uefi.iso

常用构建目标:

命令 作用
make 构建 BIOS 与 UEFI ISO
make run 在 QEMU 中启动 BIOS 硬盘镜像
make run-uefi 在 QEMU 中启动 UEFI 硬盘镜像
make release 生成 ISO、VMware VMDK 和 VirtualBox VDI
make smoke 构建并启动验证全部发布格式
make nogui 构建不含 HIVE 和内嵌应用的 BIOS/UEFI ISO
make run-nogui 构建并在 QEMU 中启动 no-GUI BIOS 版
make run-nogui-uefi 构建并在 QEMU 中启动 no-GUI UEFI 版
make nogui-smoke 验证 no-GUI 的组件边界与启动
make core-only 构建 HIVE-capable 核心,但不打包应用
make hive-test 运行 HIVE 控件与事件测试
make chromium-baseline 检查 Chromium 兼容层阶段基线

运行 make help 可以查看完整目标列表。

3. 启动

QEMU 可直接使用上面的 make run / make run-uefi。虚拟机建议至少分配 512 MiB 内存:

  • VMware BIOS:挂载 build/hbos-bios.iso
  • VMware UEFI:关闭 Secure Boot,挂载 build/hbos-uefi.iso
  • VirtualBox BIOS:关闭 EFI,挂载 build/hbos-bios.iso
  • VirtualBox UEFI:启用 EFI、关闭 Secure Boot,挂载 build/hbos-uefi.iso

进入系统后可先运行:

drivers
status
hive

drivers 用于确认输入设备、USB、块设备、文件系统和网卡是否被识别; hive 启动图形桌面,guistartx 保留为兼容别名。

HIVE 桌面环境

HIVE(HBOS Interface & Visual Environment) 是 HBOS 的独立桌面项目,并以 HIVE/ Git 子模块固定在 HBOS 仓库中。它包含 窗口管理器、合成器、桌面 Shell、用户态控件库和应用 SDK;HIVE 内部还递归 包含必需的 HPT 子模块。

当前 HIVE Toolkit API 1.4 提供:

  • Label、Button、Textbox、Checkbox、Radio、Toggle、List、Dropdown、 Progress、Slider、Spinbox、Scrollbar、Menu、Image、Canvas、Panel、 Groupbox、Separator;
  • 行布局、网格布局、控件树与窗口尺寸变化后的重新排布;
  • 鼠标悬停、按下、拖动、松开和窗口外释放捕获;
  • Tab 焦点、Enter/Space、方向键、Home/End、PageUp/PageDown;
  • 集中式主题配置、文本选区和 UTF-8 安全编辑。

HBOS 暂时保留 HIVE runtime 的集成副本,以确保完整版本和 no-GUI 版本都能 持续构建。拆仓边界与迁移顺序见 docs/REPOSITORY_SPLIT_BOUNDARIES.md。 使用 git clone --recurse-submodules 会同时取得 HIVE、HPT 和其他依赖。 make hive-sync 默认同步仓库内的 HIVE/;若需要操作其他 HIVE 工作副本, 可显式传入 HIVE_REPO=/path/to/HIVE

应用开发

HAX(HBOS Application eXecutable)是 HBOS 的用户应用格式。应用本质上是带 .haxmeta 元数据的 ELF64 用户态程序,可作为 TUI、GUI 或两者兼容的应用。

最小 TUI 应用:

#include <hax.h>

HAX_APP("myapp", "My HBOS application", HAX_KIND_TUI);

int main(int argc, char **argv) {
    (void)argc;
    (void)argv;
    hax_println("Hello, HBOS!");
    return 0;
}

把源码保存到 app/myapp.c 后运行 make,构建系统会自动生成并打包 myapp.hax。这只是开发示例,不作为系统预装应用。应用也可以放在独立仓库:

make APP_DIR=/path/to/apps hax-apps

图形应用优先包含 <hive.h>,只依赖公开的 HAX/HIVE SDK,不直接访问 framebuffer、窗口管理器或桌面私有状态。

完整开发资料:

模块化构建

HBOS、HIVE 与应用遵循以下依赖方向:

graph TD
    App["应用 (Apps)"] --> SDK["HAX / HIVE SDK"]
    SDK --> HIVE["HIVE"]
    HIVE --> UAPI["HBOS Kernel UAPI / gui_service"]
    UAPI --> Core["HBOS Core<br/>(不依赖具体 GUI 或应用)"]
Loading
变体 命令 HIVE 内嵌应用
完整系统 make
no-GUI make nogui
GUI 核心 make core-only
外部应用 make APP_DIR=/path/to/apps hax-apps 仅 SDK 单独产物

构建开关包括 HBOS_ENABLE_GUI=0|1HBOS_BUNDLE_APPS=0|1APP_DIR=/pathBUILD_DIR=/path

硬件支持

硬件 状态 说明
x86_64 CPU 可用 需要长模式
BIOS / UEFI 可用 UEFI 不支持 Secure Boot
PS/2 键盘、鼠标 可用 建议真机优先测试
USB xHCI HID 基础可用 键盘、鼠标兼容性仍在扩展
AHCI SATA 可用 优先块设备后端
ATA PIO 可用 AHCI 不可用时回退
Intel E1000 可用 当前主要网络路径
RTL8139 可用 轮询收发、DHCP/协议栈已接通
VirtIO-net 仅检测 数据收发尚未实现
AC97 基础可用 依设备和虚拟机配置而定

发现真机问题时,请附上 driversstatus 和串口日志,并注明 CPU、主板、 存储控制器、网卡及启动方式。

仓库结构

HBOS/
├── app/                HAX 应用与公开 SDK 头文件
├── docs/               API、模块边界与兼容性文档
├── scripts/            构建、启动和 smoke test 脚本
├── src/
│   ├── api/            内核与可选组件的公开契约
│   ├── core/           任务、内存和中断核心
│   ├── crypto/         TLS 使用的密码学实现
│   ├── graphics/       终端、字体与 GUI 图形资源
│   ├── gui/            HIVE runtime 集成副本
│   ├── input/          键盘与鼠标输入
│   ├── shell/          Shell 和命令注册
│   ├── tools/          系统、文件、网络和图形命令
│   └── user/           用户态运行时、libc 和程序加载
├── third_party/        移植的第三方组件
├── Makefile            构建入口
└── version.mk          版本号来源

文档与路线图

文档 内容
docs/README.md 文档索引与 PDF 生成方式
docs/HIVE_DESKTOP_API.md HIVE 控件、事件和应用迁移
docs/REPOSITORY_SPLIT_BOUNDARIES.md 内核、GUI、应用拆仓边界
docs/CHROMIUM_COMPAT_BASELINE.md Chromium 兼容工作的阶段 1 基线
CHROMIUM_COMPAT_ROADMAP.md Chromium 平台兼容层十阶段计划
docs/LINUX_KDE_COMPAT.md 轻量 Linux ABI 与原版 KDE 分阶段路线
HIVE/docs/BROWSER_BILIBILI_UPGRADE.md 浏览器现状、Vue/Bilibili 技术栈审计与分级验收方案

Chromium 目前尚未移植;路线图描述的是兼容层建设计划,而不是已经可运行的 Chromium 浏览器。

HBOS Linux ABI 兼容层进展

HBOS 正在建设轻量级 Linux ABI 兼容层,长期目标是在不修改上游源码的情况下运行 KDE/Qt/Plasma


核心特性与进展

  • 核心 ABI & 系统调用

    • 支持原生 x86-64 syscall、静态 ELF/PIE 加载。
    • 提供 poll / epoll / eventfd / futex / memfdMAP_SHARED 基础支持。
  • 网络与 AF_UNIX

    • 支持 AF_UNIX 套接字、getsockname/getpeernameSCM_RIGHTS (文件描述符传递)。
    • 本地/对端地址及 Abstract Socket 语义已通过回归测试。
  • 动态链接与重定位

    • 流式加载:主程序 execve 按 ELF 段流式加载,支持 PT_INTERP
    • 符号重定位:支持 dlopen 共享库(GD __thread)、GNU 符号版本/dlvsym 及 ring3 安全执行的 GNU IFUNC/IRELATIVE。
    • 并发安全:Loader 采用按 TID 递归事务锁,覆盖构造函数重入与多线程并发引用压力。
  • 进程与 Libc 兼容性

    • 线程控制:支持 clone/clone3 线程子集,可恢复新栈、FS/TLS 与 TID 生命周期。
    • musl 1.2.5:通过多线程 pthread、mutex、条件变量、读写锁、pthread_once 及 FPU 继承。
    • glibc 2.43:通过真实动态 loader、2.1 MiB libc.so.6malloc 及基础 pthread/静态 TLS 验证。
  • 文件系统与 VFS

    • 目录与符号链接:支持 openat/renameat2 目录整树改名(watch 随迁移);提供无堆分配、最多 8 层的符号链接解析。
    • 文件监控 & 伪文件系统:支持固定容量 inotify 机制,以及只读 procfs (self/exe, maps, status 等) 与 sysfs
  • 内存与信号处理

    • COW Fork:原生 fork 基于物理页引用计数与软件 PTE 位实现 4 KiB 写时复制。
    • Page Fault Handler:Page Fault 转为同步 SIGSEGV,支持通过 rt_sigreturn 修复映射并重试故障指令。

注意:完整 TLS ABI、复杂共享库程序和通用发行版 Linux 二进制目前仍不在支持范围内。


当前限制

  • 项目 ABI、文件格式和桌面接口仍可能在 beta 阶段变化。
  • 真机驱动覆盖有限,QEMU E1000 + AHCI 是最稳定的验证组合。
  • 自研网络栈和浏览器仍以基础兼容性为主,不能替代成熟浏览器。
  • HIVE runtime 正从内核链接代码迁移为独立用户态服务。
  • 不提供 Secure Boot、权限隔离和生产级安全保证。

版本简史

  • beta5 pre6:HIVE Toolkit API 1.4(Radio/Toggle/Dropdown/Spinbox/Groupbox/Separator)、TUI Kit 1.0 文本控件、浅色省墨控制台。
  • beta5 pre5:HIVE Toolkit API 1.3、no-GUI 构建边界、浏览器/TLS 兼容性和模块化路线。
  • beta4:新桌面、TinyCC、动态链接、BusyBox、网络栈和真机输入修复。
  • beta3:桌面交互、任务栏、日历、字体、终端刷新与虚拟机启动改进。
  • beta2:BIOS/UEFI 双 ISO、文件工作流、HBFS、系统自测与磁盘工具。
  • beta1:CJK 输出、模块化 Shell、PS/2 输入和早期任务框架。

License

HBOS 使用 GNU General Public License v3.0 发布。

About

A 64-bit command-line operating system primarily written in C

Resources

Stars

5 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages