超轻量级微虚拟机沙箱

NVX

nvx guest console

/dev/hvc0

$ python3 scripts/nvx.py run
boot: linux · openvmm · musl
init: nvx-managed-agent /dev/hvc0

NVX-GUEST-BOOT-OK: alpine

root@nvx:~# _

切换用户态,见证行随之变化。

微虚拟机栈

硬件强制隔离的四层

  • 01客户机用户态Alpine / Ubuntu / Azure Linux
  • 02NVX 内核单工作负载运行时
  • 03OpenVMM 控制协议策略下沉与监管
  • 04宿主 hypervisorKVM / MSHV / WHP

在硬件强制隔离下运行不受信任的工作负载。

三条命令,
一个 root 命令行。

Python 3.10+/KVM · MSHV · WHP/Alpine · Ubuntu · Azure Linux/MIT 许可 · 硬件强制隔离

01 · 启动

三条命令启动

克隆、下载、运行。成功后打印 NVX-GUEST-BOOT-OK,并打开一个 root 命令行。

01几秒钟
git clone https://github.com/microsoft/nvx

克隆仓库,拿到内核、OpenVMM 与 Rust 工具链的全部锁定版本。

02几分钟
python3 scripts/nvx.py download

下载预构建包,不必自建客户机内核与 initramfs。

03几秒钟
python3 scripts/nvx.py run

运行,拿到 root 命令行;用 /sbin/nvx-exit 0 正常退出。

02 · 构件

系统构件

九个 /sbin/nvx-* 契约、nvx-rs 机制、三个 hypervisor 与三个用户态,共用同一套微虚拟机栈。

9×静态契约
  • /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 静态链接

EXIT 0

nvx-exit · 八位退出码停止 VM

0x604

OpenVMM 控制端口

KVM

另有 MSHV 与 WHP

v1

NVX 时间 ABI

256

策略下沉与监管

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;完整说明见中文文档。