Redox OS 是一个用 Rust 语言 从头编写的类 Unix 微内核操作系统,由开发者 Jeremy Soller 于 2015 年启动开发。它的目标是:
"用 Rust 语言的安全、并发和实用创新,构建一个现代的微内核操作系统和完整的应用程序生态"
它是目前最知名的完全用 Rust 编写的操作系统,代表了操作系统领域对"内存安全"和"微内核"理念的一次大规模实践。
🔑 核心特色
1. 完全用 Rust 编写
Redox OS 最大的特色是全栈 Rust——从微内核到用户空间工具链,全部使用 Rust 语言实现:
-
内存安全:Rust 的所有权模型和借用检查器在编译时防止缓冲区溢出、空指针解引用、使用后释放等常见漏洞
-
线程安全:Rust 的类型系统保证并发安全
-
零成本抽象:不牺牲性能换取安全性
-
自洽生态:不依赖第三方 C 库,从内核到 Shell 全部自研
据 MIT CSAIL 研究,传统操作系统中约 70% 的严重安全漏洞源于内存安全问题,而 Rust 可以从根本上消除这些问题。
2. 微内核架构(Microkernel)
与 Linux 的宏内核(Monolithic Kernel)不同,Redox 采用微内核设计:
| 对比项 | Redox OS(微内核) | Linux(宏内核) |
|---|---|---|
| 内核代码量 | 约 16,000–20,000 行 | 2,000 万+ 行 |
| 驱动位置 | 用户空间(隔离沙箱) | 内核空间 |
| 单个驱动崩溃 | 仅影响该服务,可自动重启 | 可能导致整个系统崩溃 |
| 攻击面 | 极小 | 极大 |
| 模块化 | 高度模块化 | 紧耦合 |
| 调试 | 可用标准用户空间工具 | 需要内核调试器 |
Redox 的内核(名为 Reactive)仅负责:
-
进程/线程管理
-
内存管理(虚拟内存、分页)
-
进程间通信(IPC)
-
基本 I/O 和中断处理
所有其他服务——文件系统、网络栈、设备驱动——都在用户空间作为独立进程运行。
3. "一切皆 URL"(Everything is a URL)
Redox 借鉴了 Plan 9 的设计哲学,将所有资源抽象为 URL:
-
文件:
file:/path/to/file -
网络:
tcp:host:port、udp:host:port -
显示:
display: -
共享内存:
shm: -
管道:
pipe:
这种统一资源模型使得注册事件处理程序和执行各种抽象变得简单一致。
4. 自研核心组件
Redox 不依赖 GNU 或 BSD 工具链,拥有完整的自研生态:
| 组件 | 名称 | 说明 |
|---|---|---|
| 内核 | Reactive | 微内核,约 20,000 行代码 |
| 文件系统 | RedoxFS | 自研文件系统 |
| C 标准库 | relibc | 用 Rust 编写的 POSIX 兼容库 |
| Shell | Ion | 自研命令行 Shell |
| 显示服务器 | Orbital | 自研图形界面和窗口管理器 |
| 包管理器 | pkg | 自研包管理工具 |
| 文本编辑器 | Sodium | 自研类 Vim 编辑器 |
| 工具包 | OrbTk | 类似 Flutter/React 的 GUI 工具包 |
🛠️ 技术架构
微内核设计详解
plain
┌─────────────────────────────────────────┐
│ 用户空间服务层 │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ 文件系统 │ │ 网络栈 │ │ 设备驱动 │ │
│ │ RedoxFS │ │ TCP/IP │ │ (隔离) │ │
│ └────┬────┘ └────┬────┘ └────┬────┘ │
│ └─────────────┴───────────┘ │
│ 通过 IPC 通信 │
├─────────────────────────────────────────┤
│ 微内核 (Reactive) │
│ 进程管理 │ 内存管理 │ IPC │ 中断处理 │
│ ~20,000 行 Rust 代码 │
└─────────────────────────────────────────┘
进程间通信(IPC)
Redox 使用 Schemes 作为主要的 IPC 机制:
-
消息传递:
chan:通道 -
共享内存:
shm:高性能数据传输 -
Unix 套接字:
uds_stream:、uds_dgram:POSIX 兼容 -
零拷贝:直接内存映射用于网络和磁盘 I/O
💻 支持的硬件与架构
| 架构 | 状态 |
|---|---|
| x86_64 | ✅ 完全支持 |
| i686 (32位 x86) | ✅ 0.8 版本起支持 |
| ARM64 (AArch64) | ⚠️ QEMU 中可用,实机支持开发中 |
| Raspberry Pi 3B+ | ⚠️ 部分兼容 |
支持的硬件包括:键盘、鼠标、触摸板(USB)、显卡、声卡、SATA(AHCI、IDE)、NVMe 等。
🖥️ 图形界面:Orbital
Redox 提供可选的 GUI 环境 Orbital:
-
自研显示服务器和窗口管理器
-
支持 GUI 库:Slint、Iced、winit
-
基于 OrbTk 工具包(类似 Flutter/React/Redux 的 API)
-
0.8 版本起初步支持多显示器
-
支持双击播放音乐和视频
演示镜像包含:DOOM、Neverball、Neverputt、Netsurf 浏览器、音乐播放器、文本编辑器等。
📦 应用兼容性与生态
POSIX 兼容层
通过 relibc(用 Rust 重写的 C 标准库),Redox 提供 POSIX 兼容接口:
-
许多 Linux/BSD 程序无需修改即可运行
-
部分程序只需少量移植工作
已移植的应用
-
编辑器:Nano、Helix、Sodium、kibi
-
开发工具:GCC、LLVM、CMake、GNU Make、Lua、Perl 5、RustPython
-
多媒体:FFmpeg、SDL2、Cairo
-
网络:Apache HTTP Server、Simple HTTP Server
-
桌面:System76 的 COSMIC Desktop 正在移植(cosmic-edit、cosmic-files 已可运行)
-
游戏:DOOM、俄罗斯方块、国际象棋(chess-tui)
截至 0.9 版本,已移植应用数量达到 1700+。
🚀 最新版本:Redox OS 0.9(2024年9月)
主要更新包括:
-
应用性能提升(线程、内存、信号管理增强)
-
从 COSMIC 环境移植文件管理器、文本编辑器和终端模拟器
-
Linux/BSD 程序跨平台兼容性提升
-
移植 Apache HTTP Server、RustPython、GNU Make 等
-
文件系统 RedoxFS 和内存管理系统改进
-
虚拟机兼容性提升
-
支持 GUI 库(Slint、Iced、winit)
-
使用 Unix 文件路径格式提升 POSIX 兼容性
-
relibc 重构为完整 Rust 结构
-
ARM64 支持改进,部分兼容 Raspberry Pi 3B+
-
UEFI 引导加载程序加速
-
新增 VirtIO 驱动
📊 与其他微内核 OS 的对比
| 特性 | Redox | MINIX 3 | seL4 | QNX |
|---|---|---|---|---|
| 编程语言 | Rust | C | C | C |
| 内存安全 | ✅ 编译时保证 | ❌ | ✅ 形式化验证 | ❌ |
| 许可证 | MIT | BSD | GPLv2/商业 | 商业 |
| POSIX 支持 | 通过 relibc | 完整 | 有限 | 完整 |
| 目标场景 | 通用桌面/服务器 | 教育/嵌入式 | 关键系统 | 实时/嵌入式 |
| IPC 机制 | Schemes | 消息传递 | 端点 | 消息传递 |
🎯 设计哲学
Redox 团队对现有操作系统持批判态度,认为:
"Linux 和 BSD 的设计是安全的,但实现不是。"
他们明确拒绝重复前辈的错误:
-
❌ 不保留永远存在的过时系统调用
-
❌ 不为已停产的硬件保留驱动
-
❌ 不构建需要导航 2500 万行代码的代码库
-
❌ 不害怕丢弃 POSIX 的糟粕,同时保持适度的 Linux API 兼容性
🌐 相关资源
-
GitLab(主仓库):https://gitlab.redox-os.org/redox-os/redox
-
文档(Redox Book):https://doc.redox-os.org/
-
社区:IRC #redox-os、Matrix 频道
发表回复