kaansenol5/VibeOS
GitHub: kaansenol5/VibeOS
一个完全借助 Claude Code 从零编写的 ARM64 hobby 操作系统,具备桌面环境、网络协议栈和丰富的用户态应用。
Stars: 1442 | Forks: 108
# VibeOS
一个完全使用 Claude Code 进行 vibe coding 从零开始编写的 hobby OS。
并非所有功能都能正常运行,有些甚至未经测试,但大部分功能是可以工作的。

## 这是什么?
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
## 截图






## 快速开始
### 环境要求
- 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网络, 内存执行, 内核开发, 客户端加密, 并发处理, 操作系统, 桌面环境, 身份验证强制