把 Redox 跑在 Cloud Hypervisor 上:从 Virtio-FS 到抛弃老式 PC 硬件
来源:redox-os.org — 2026-11-08
📋 概述
MJ Pooladkhay 为 Redox OS 写了 Virtio-FS 驱动,并把系统搬上了 Cloud Hypervisor,两者都已合并进主仓库。这不是玩具:面向公网的软件大多跑在虚拟机里,而 Redox 是 Rust 写的微内核系统,驱动、文件系统、网络栈都是独立的用户态进程,崩溃只影响自己,加上能力制安全,每个服务只能拿到它真正需要的文件、套接字与设备。跑在 VM 里还让硬件变成宿主的问题——裸机上 Redox 要为每种磁盘控制器和网卡写驱动,VM 里只需要几个 VirtIO 驱动。
🔑 核心要点
- 文章把 hypervisor 解释成「进程是操作系统的操作系统」:客户机直接跑在 CPU 上,只有 VM exit 时才交给 hypervisor,内存要经过 GVA→GPA→HVA→HPA 四级,KVM 用嵌套页表把中间两步合成一步。
- 上 Cloud Hypervisor 的过程就是找出所有「以为自己跑在 PC 上」的地方:bootloader 传给 ExitBootServices 的内存映射 key 过期、virtio-blk 被当成 transitional 设备、串口输入中断打向不存在的 8259。
- 最漂亮的 bug 是「ping 只 ping 一次」:第一个包立刻回复,之后杳无音信。原因是 timeout::trigger 唯一调用者是 PIT 中断处理程序,而 Cloud Hypervisor 既无 PIT 也无 HPET;连调度器的抢占 tick 也一并停了,系统悄悄变成协作式调度。
- 修法是改用每颗 x86 CPU 都有的 local APIC 定时器,在 TSC-deadline 模式下把纳秒换算成 TSC 刻度,处理器接手 PIT 的老工作,抢占恢复。
- 路线图上还有:关机(硬件精简 ACPI 平台要写 sleep control register)、cloud-init 兼容的首次配置、PVH 直接引导(也是通往 Firecracker 的门)、virtio-vsock/balloon/rng、快照恢复。
- 往后看还有「Redox 作为宿主」:内核只加 AMD SVM 支持,VMM 是跑在普通 Redox 进程里的 rust-vmm 小程序,把没驱动的设备透传给一个小 Linux 客户机借用驱动。
💡 金句
我能想到最容易理解 hypervisor 的方式,是把它当成一个操作系统,只不过它的进程是操作系统。
👍 0
👎 0
← 返回 Lobsters 首页