The vision for the Ghaf platform is to create a virtualized, scalable reference platform that enables the building of secure products leveraging trusted, reusable, and portable software for edge devices. For more information on reference implementation for several devices, see Reference Implementations .
Ghaf demo desktop and applications are illustrated in the screen capture below:
✅—integrated and tested in the main
branch. No known regression.
🚧—prototyped or work in progress in the development branch.
❌—the feature has known regression or bugs.
Orin
—NVIDIA Jetson AGX Orin as the main reference device.
x86
—generic x86_64; tested on Intel NUC (Next Unit of Computing) or laptop.
Lenovo X1
—Lenovo X1 Carbon Gen 11 laptop.
aarch64
—generic AArch64; tested on an ARM server, laptop (e.g. Apple MacBook's), or NVIDIA Jetson AGX Orin.
All variants
—supported devices from Architectural Variants .
The following tables show the status of the Ghaf Platform features:
Feature Status Reference Device Details
Ghaf in virtual machine ✅ x86
nix run .#packages.x86_64-linux.vm-debug
aarch64
reference image✅ Orin
Based on Jetson Linux , OE4T and jetpack-nixos .
aarch64
reference image✅ imx8mp
Based on NXP BSP, implemented as nixos-hardware module
x86
generic image✅ x86
Generic x86 computer, based on generic NixOS . NOTE: requires device specific configuration.
Lenovo X1
reference image✅ Lenovo X1
x86_64 laptop computer, supports basic compartmentalized environment
Native build ✅ aarch64, x86
Remote aarc64
nixos builders recommended
Cross-compilation 🚧 aarch64, riscv64
Depends on NixOS nixpkgs 23.05
support for cross-compilation
CI builds ✅ All
Only main
-branch, not for all PRs .
Emulated build ❌ aarch64
binfmt
, may freeze the build machine. Not recommended. See instructions.
Feature Status Reference Device Details
Quick target update ✅ all
nixos-rebuild --flake .#nvidia-jetson-orin-debug --target-host root@ghaf-host --fast switch
aarch64
device flashing✅ Orin
Full device software flashing using x86
machine
root filesystem flashing ✅ x86, imx8mp
dd
image to bootable media - see
Debug: SSH ✅ Orin
, x86
Host access only in -debug
-target, see authentication.nix
Debug: Serial ✅ all
Host access only in -debug
-target - e.g. screen /dev/ttyACM0 115200
Compartmentalized environment 🚧 Lenovo X1
Net VM, GUI VM (with GPU passthrough) plus some App VMs
Feature Status Reference Device Details
Minimal host 🚧 all
See Minimal Host and PR #140 .
Net VM ✅ Orin
See Net VM . Passthrough with Wi-Fi works but requires SSID/password configuration.
IDS VM ✅ Orin
, Lenovo X1
Defensive networking mechanism .
GUI VM 🚧 All
, Lenovo X1
Implemented for Lenovo X1 reference device, other devices have Wayland compositor running on the host.
App VM 🚧 All
, Lenovo X1
Implemented for Lenovo X1 reference device: Chromium, GALA and Zathura VMs. Requires GUI VM in place.
Admin VM ✅ All
Not started
Inter VM comms - IP-based 🚧 All
-debug
-targets have network bridges to access VMs from host.
Inter VM comms - shared memory 🚧 All
Inter VM Wayland 🚧 All
Currently it is waypipe
over SSH, for test and demo purpose only.
SW update 🚧 All
A/B update tooling being evaluated.
USB passthrough 🚧 Orin
No reference implementation integrated yet.
PCI passthrough ✅ All
Used for reference in Net VM on Orin
.
UART passthrough 🚧 Orin
See NVIDIA Jetson AGX Orin: UART Passthrough . Not integrated to any VM.
ARM platform bus devices passthrough 🚧 Orin
NVIDIA BPMP virtualization being developed
Feature Status Reference Device Details
Wayland-compositor 🚧 Orin
, x86
Implemented for Lenovo X1
Chromium 🚧 Orin
, x86
Implemented for Lenovo X1
Element 🚧 Orin
, x86
On host
Cloud Android (CVD) client application (GALA) 🚧 Orin
, x86
Implemented for Lenovo X1
Virtualization control 🚧 All
See vmd design .
See discussion for the outline of next steps