Skip to content

0.1 Beta4 release

Latest

Choose a tag to compare

@lpifx lpifx released this 09 Jul 04:11

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/-dcat 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 磁盘数据不受影响)。