kaansenol5/VibeOS

GitHub: kaansenol5/VibeOS

一个完全借助 Claude Code 从零编写的 ARM64 hobby 操作系统,具备桌面环境、网络协议栈和丰富的用户态应用。

Stars: 1442 | Forks: 108

# VibeOS 一个完全使用 Claude Code 进行 vibe coding 从零开始编写的 hobby OS。 并非所有功能都能正常运行,有些甚至未经测试,但大部分功能是可以工作的。 ![VibeOS 桌面](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/6ea89550d6104022.png) ## 这是什么? VibeOS 是一个从零开始为 ARM64 (aarch64) 编写的操作系统。它可以在 QEMU 和真实的 Raspberry Pi Zero 2W 上运行。整个操作系统是与 Claude 合作,经过 64 个会话构建完成的,详细记录在[会话日志](SESSION_LOG_1.md)中。 ## 因为缺少 tlse.c 导致编译错误? cd vendor/ git clone https://github.com/kaansenol5/tlse ## 没有 DOOM? 你需要找到 doom1.wad(自行搜索)并将其放在 vibeos_root/games/doom1.wad ## 功能 **核心** - 自定义 kernel,支持协作式多任务(preemptive backup) - 支持[长文件名](https://en.wikipedia.org/wiki/Long_filename)的 FAT32 文件系统 - 内存分配器、进程调度器、中断处理 - GIC-400 (QEMU) 和 BCM2836/BCM2835 (Pi) 中断控制器 - 可配置的启动(splash screen、启动目标) **GUI** - 带有可拖拽窗口的桌面环境 - 菜单栏、dock、窗口最小化/最大化/关闭 - 鼠标和键盘输入 - 受现代 macOS 启发的设计美学 **网络** - 完整的 TCP/IP 协议栈(Ethernet、ARP、IP、ICMP、UDP、TCP) - DNS 解析器 - HTTP 客户端 - 支持 HTTPS 的 TLS 1.2 **应用** - 带有 HTML/CSS 渲染的 Web 浏览器 - 带有 readline 风格 shell 的终端模拟器 - 带有语法高亮的文本编辑器(vim clone) - 支持拖拽的文件管理器 - 音乐播放器(MP3/WAV) - 计算器、系统监视器 - VibeCode IDE - DOOM **开发** - TCC (Tiny C Compiler) - 直接在 VibeOS 上编译 C 程序 - 带有完整 kernel API 绑定的 MicroPython 解释器 - 60 多个用户态程序(coreutils、游戏、GUI 应用) **硬件** - 运行于 Raspberry Pi Zero 2W - 通过 DWC2 驱动支持 USB 键盘和鼠标 - 通过 EMMC 驱动支持 SD 卡 - 1920x1080 framebuffer ## 截图 ![桌面](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/6ea89550d6104022.png) ![浏览器](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/c3468d34da104028.png) ![DOOM](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/4f73147788104033.png) ![终端](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/1fedefcb71104039.png) ![VibeCode](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/2dfc0a519e104044.gif) ![Pi 启动](https://raw.githubusercontent.com/kaansenol5/VibeOS/main/screenshots/pi-boot.gif) ## 快速开始 ### 环境要求 - macOS 或 Linux - `aarch64-elf-gcc` 交叉编译器 - 带有 `qemu-system-aarch64` 的 QEMU 在 macOS 上: ``` brew install aarch64-elf-gcc qemu ``` ### 编译并运行 ``` # 创建磁盘镜像(仅首次) make disk # 构建并运行 make run ``` 这会编译 kernel 和所有用户态程序,将它们同步到磁盘镜像,并启动带有 GUI 窗口的 QEMU。 ### 操作控制 - 鼠标和键盘按预期工作 - 点击 dock 图标启动应用 - 在编辑器中使用 Ctrl+S 保存 - 在终端中输入 `help` 查看 shell 命令 ### 启动配置 编辑 `/etc/boot_cfg` 以自定义启动行为: ``` # VibeOS 启动配置 splash=on # on/off - show boot splash animation boot=desktop # desktop/vibesh - boot target ``` ## 在 Raspberry Pi Zero 2W 上运行 ### 为 Pi 编译 ``` make TARGET=pi ``` ### 安装到 SD 卡 ``` # 查找你的 SD 卡 diskutil list # macOS lsblk # Linux # 安装(示例:/dev/disk4) make install DISK=/dev/disk4 ``` 这会对 SD 卡进行分区,安装 bootloader 和 kernel,并复制所有程序。 ### 在 Pi 上可用的功能 - 1920x1080 分辨率下的完整桌面 GUI - USB 键盘和鼠标(包括通过 hub 连接) - SD 卡文件系统 - 所有用户态程序 - 2 倍缩放下的 DOOM ### 在 Pi 上缺失的功能 - 网络(没有适用于 Pi 的 WiFi/Ethernet 驱动) - 音频(没有适用于 Pi 的音频驱动) ## 排查 Pi 上的 USB 问题 如果你在 Pi Zero 上启动,连接了一个插有键盘和鼠标的 USB hub,但你的键盘无法工作,请尝试更改它们插入 hub 的顺序。键盘应该在鼠标之前插入(插在编号更低的端口上)。 这(我不确定)是因为有些鼠标会同时识别为一个鼠标和几个键盘,因此 vibeos 没有找到真正的键盘。 此外,Pi 上的 USB 不支持热插拔。如果你拔下或忘记插入任何一个外设,都必须重启。 如果确认了以上两点后 USB 仍然无法工作,请重启直到它正常工作,通常最多尝试 5 次就能成功。 ## 文档 - [USAGE.md](USAGE.md) - 如何使用 VibeOS(shell 命令、应用、键盘快捷键) - [PROGRAMMING.md](PROGRAMMING.md) - 为 VibeOS 编写程序(TCC、Python、交叉编译、vibe.h API) - [CLAUDE.md](CLAUDE.md) - 技术参考、注意事项、架构决策 ## 第三方代码 VibeOS 包含以下第三方库: | 库 | 许可证 | 用途 | |---------|---------|----------| | [doomgeneric](https://github.com/ozkl/doomgeneric) | GPL-2.0 | DOOM 移植 | | [MicroPython](https://micropython.org/) | MIT | Python 解释器 | | [TCC](https://bellard.org/tcc/) | LGPL-2.1 | C 编译器 | | [TLSe](https://github.com/nickarls/tlse) | BSD-2-Clause | TLS 1.2 实现 | | [minimp3](https://github.com/lieff/minimp3) | CC0 | MP3 解码 | | [stb_truetype](https://github.com/nothings/stb) | MIT | TrueType 字体渲染 | | [stb_image](https://github.com/nothings/stb) | MIT | 图片加载 | ## 许可证 MIT。详见 [LICENSE](LICENSE)。 DOOM 移植为 GPL-2.0。详见 [user/bin/doom/LICENSE](user/bin/doom/LICENSE)。 ## 会话日志 VibeOS 的开发过程记录在 64 个会话中: - [会话日志 1](SESSION_LOG_1.md) - 会话 1-10:Bootloader、kernel、shell、VFS、FAT32、GUI 基础 - [会话日志 2](SESSION_LOG_2.md) - 会话 11-20:桌面应用、PIE 重定位、终端、中断 - [会话日志 3](SESSION_LOG_3.md) - 会话 21-32:电源管理、LFN、音频、网络、浏览器 - [会话日志 4](SESSION_LOG_4.md) - 会话 33-49:TLS/HTTPS、Pi 移植、USB 驱动、优化 - [会话日志 5](SESSION_LOG_5.md) - 会话 50-55:USB 修复、DMA、性能调优 - [会话日志 6](SESSION_LOG_6.md) - 会话 56-64:MicroPython、TCC、DOOM、VibeCode、完善
标签:ARM64, Raspberry Pi, TCP/IP网络, 内存执行, 内核开发, 客户端加密, 并发处理, 操作系统, 桌面环境, 身份验证强制