超轻量级微虚拟机沙箱
NVX
nvx guest console
/dev/hvc0
$ python3 scripts/nvx.py run
boot: linux · openvmm · musl
init: nvx-managed-agent /dev/hvc0NVX-GUEST-BOOT-OK: alpine
root@nvx:~# _切换用户态,见证行随之变化。
微虚拟机栈
硬件强制隔离的四层
- 01客户机用户态Alpine / Ubuntu / Azure Linux
- 02NVX 内核单工作负载运行时
- 03OpenVMM 控制协议策略下沉与监管
- 04宿主 hypervisorKVM / MSHV / WHP
在硬件强制隔离下运行不受信任的工作负载。
三条命令,
一个 root 命令行。
01 · 启动
三条命令启动
克隆、下载、运行。成功后打印 NVX-GUEST-BOOT-OK,并打开一个 root 命令行。
git clone https://github.com/microsoft/nvx克隆仓库,拿到内核、OpenVMM 与 Rust 工具链的全部锁定版本。
python3 scripts/nvx.py download下载预构建包,不必自建客户机内核与 initramfs。
python3 scripts/nvx.py run运行,拿到 root 命令行;用 /sbin/nvx-exit 0 正常退出。
02 · 构件
系统构件
九个 /sbin/nvx-* 契约、nvx-rs 机制、三个 hypervisor 与三个用户态,共用同一套微虚拟机栈。
- /sbin/nvx-console-pending
- /sbin/nvx-mmio-write
- /sbin/nvx-reseed
- /sbin/nvx-exit
- /sbin/nvx-device-io
- /sbin/nvx-managed-agent
- /sbin/nvx-ingress
- /sbin/nvx-time
- /sbin/nvx-time-probe
/sbin/nvx-* · musl 静态链接
nvx-exit · 八位退出码停止 VM
OpenVMM 控制端口
另有 MSHV 与 WHP
NVX 时间 ABI
策略下沉与监管
nvx-rs 将 egress 策略编译为 OpenVMM 原生规则,每动作最多 256 条;Instance 监督实例全生命周期。
$ python3 scripts/nvx.py sandbox --help run · provision · start · exec · stop · deprovision
一个内核,三个用户态:Alpine · Ubuntu · Azure Linux 共用同一 NVX 内核。
03 · 谱系
研究谱系
由微软研究院系统研究组与 Azure 系统研究院联合开发,建立在 Nanvix 研究之上。
微软研究院
MSR 系统研究组
Azure 研究院
Azure 系统研究院
研究基础
Nanvix
虚拟化平台
OpenVMM
客户机内核
Linux
客户机工具链
Rust
04 · 开始
现在就跑起来
Python 3.10+,克隆仓库,下载预构建包,然后运行它。
第一条命令
$ git clone https://github.com/microsoft/nvx然后 nvx.py download 与 nvx.py run;完整说明见中文文档。