HBOS v0.1 beta4
64-bit 高分辨率图形命令行操作系统。beta4 是自 beta3 以来最大的一次更新:全新图形桌面、真实的 C 编译器与动态链接、BusyBox 命令行工具集、网络协议栈打通,以及大量真机兼容性修复。
✨ 亮点
- 全新图形桌面:窗口管理器(缩放/拖拽/吸附/最大化最小化动画)、Windows 11 风格居中任务栏、可搜索开始菜单、HarmonyOS Sans SC 抗锯齿字体、扁平矢量图标
- 11 个内置桌面应用:文件管理器、任务管理器(新)、计算器(long long + 科学计数法)、代码工作台、控制台终端(真实 shell)、浏览器、记事本、时钟、贪吃蛇、设置、文件统计
- TinyCC (TCC) C 编译器移植:系统内可直接编译运行 C 程序,支持
#include头文件解析 - 真实动态链接:
dlopen/dlsym/dlclose,支持运行时加载共享库 - BusyBox 移植:16 个真实 coreutils 命令(
ls cat cp mv rm mkdir touch which whoami wc head dirname basename true false echo pwd) - 网络协议栈:DHCP/ARP/ICMP/DNS/TCP/HTTP,Intel E1000 网卡驱动,
socket()用户态 API - 真机兼容性:修复真实硬件上的显示卡顿、USB 鼠标识别失败、PS/2 鼠标初始化问题
图形桌面
- 全新窗口管理器:任意方向拖拽缩放(带专属光标)、贴边吸附预览、最大化/最小化动画、窗口切换器(F6)
- Windows 11 风格居中任务栏:日历弹窗、亮度滑杆、"是否显示秒数"开关
- 开始菜单重做:居中弹出、图标网格、支持拼音/英文关键词搜索过滤,键入即可启动应用
- F1 一键呼出开始菜单(原来只能鼠标点击任务栏图标)——纯键盘即可到达任意应用
- HarmonyOS Sans SC 抗锯齿比例字体,F2/F3 运行时切换字号;代码编辑器与终端使用等宽点阵字体保证对齐
- 扁平矢量图标图集(文件管理器、磁盘、计算器、贪吃蛇、浏览器等均有专属图标)
- PS/2 鼠标从"卡顿加速曲线"改为线性 1:1 映射,真机与虚拟机手感一致;修复 IRQ12/IRQ2 级联未解除屏蔽导致真实鼠标失灵的问题
- 新增应用:
- 任务管理器:查看运行中任务的 PID/名称/状态/父 PID,可结束任务,显示物理内存占用条
- 计算器:数据类型升级为
long long(原为int,溢出上限约 21 亿),溢出后自动切换科学计数法显示(D.DDDDDDDDe+NN),历史记录同步支持 - 文件管理器:显示区域跟随窗口缩放/最大化动态放大,不再被裁死在固定像素高度
- 设置、时钟、控制台终端(跑真实 shell)
- 修复一批窗口/绘制越界问题:任务管理器与计算器内容曾画出窗口边界,文件管理器列表框固定高度导致最后几行叠在状态栏上
应用生态
- TinyCC (TCC) 编译器移植:
tcc file.c -o out系统内原生编译运行,修复了#include头文件解析、-shared动态库输出等问题 - 动态链接:新增
dlopen/dlsym/dlclose系统调用,接入内核 ELF 加载器,支持运行时加载.so共享库并调用其中符号 - .hax 应用格式:自动发现
./app下的用户程序,提供 SDK(hax.h),TUI/GUI 双模式支持 - BusyBox / coreutils 移植(16 个):
ls(-l/-a/-R/-d)cat cp mv rm mkdir touch which whoami wc head dirname basename true false echo pwd,均为独立.hax程序,与 shell 内置命令共存 make ask新增交互式应用选择:可逐个选择是否将app/下的用户程序打进 ISO
网络
- Intel E1000 网卡驱动完整实现(MMIO、收发环、中断轮询)
- 协议栈:DHCP 自动配置、ARP、ICMP ping、DNS 解析、TCP(单连接)、HTTP GET(
wget) - 用户态
socket()/connect()/send()/recv()API,经真实互联网连接测试可用 - 修复
send()系统调用返回值错误(原样返回内部状态码而非发送字节数,导致所有用户程序都误以为"发送了 0 字节") - 无 DNS 服务器时自动回退到
8.8.8.8
底层修复
- 任务切换时正确保存/恢复 FPU/XMM 寄存器状态(此前浮点/SSE 状态在任务间会互相污染)
- 修复
HBOS_SYS_GETDENTS系统调用返回整个文件系统而非当前打开目录的严重 bug - 修复用户态
struct stat与内核struct stat内存布局不一致(nlink_t宽度不匹配),导致跨越户态边界的stat()/fstat()返回垃圾大小/时间戳 - 修复
printf("%d"/"%u"/"%x")在 TCC 编译的程序中截断负数/大数的问题(可变参数按错误宽度读取,-7曾被打印成4294967289) - 真机图形卡顿修复:显存映射从写回(write-back)改为写合并(write-combining),解决真实硬件上画面每 5~6 秒才刷新一次的问题
- USB HID 鼠标识别修复:兼容未声明 boot-protocol 的真实鼠标(此前仅 QEMU 模拟鼠标能被识别)
- 用户态 hax 应用输入回显修复:此前运行 hax 应用时键盘输入不会显示在屏幕上
已知限制
- RTL8139、VirtIO-net 网卡驱动已检测但未实现,仅 Intel E1000 路径完整可用
- TCP 协议栈单一时刻仅正确追踪一个连接的收发序列号,尚非真正的并发多路复用
dlopen加载的共享库暂不能回调宿主程序自身定义的符号(TCC 默认不生成完整符号表,强制生成会触发另一个未解决的函数指针崩溃问题,已在代码中详细记录)
升级方式:直接使用新构建的 build/hbos-bios.iso / build/hbos-uefi.iso,或 make release 生成 VMware/VirtualBox 镜像。无持久化用户数据需要迁移(ramfs 为主,HBFS 磁盘数据不受影响)。