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