RepoMicrosoftMicrosoftpublished Aug 22, 2023seen 4d

microsoft/openvmm-deps

Shell

Open original ↗

Captured source

source ↗
published Aug 22, 2023seen 4dcaptured 10hhttp 200method plain

microsoft/openvmm-deps

Description: Dependencies for OpenVMM

Language: Shell

License: MIT

Stars: 14

Forks: 11

Open issues: 8

Created: 2023-08-22T17:37:25Z

Pushed: 2026-06-10T19:46:19Z

Default branch: main

Fork: no

Archived: no

README: This repo contains a small build system for openvmm dependencies.

To use, first clone this repo:

git clone https://github.com/microsoft/openvmm-deps

If you are cross-compiling you will need qemu-user-static:

apt install qemu-user-static

Then build the Dockerfile to produce the results for the desired architecture:

docker build --platform x86_64 --output type=local,dest=out .
docker build --platform aarch64 --output type=local,dest=out .

The output directory is laid out so that each top-level subdirectory maps to one GitHub release artifact:

out/
openvmm-deps/ sdk + dbgrd + shell + petritools sysroots
initrd/ shared busybox-based test rootfs (cpio.gz)
linux-6.1/ vmlinux, bzImage/Image, config (kernel only)
linux-6.18/ vmlinux, bzImage/Image, config (kernel only)
qemu/ qemu-system-aarch64, qemu-system-x86_64

The release pipeline packs each of these into its own tarball:

| Artifact | Contents | | ----------------------------------------------------- | ------------------------------------- | | openvmm-deps...tar.gz | sdk + dbgrd + shell + petritools | | openvmm-test-initrd...tar.gz | shared initrd (used with any kernel) | | openvmm-test-linux-6.1...tar.gz | 6.1 LTS kernel images + final config | | openvmm-test-linux-6.18...tar.gz | 6.18 kernel images + final config | | openvmm-test-virtio-win..tar.gz | virtio-win NetKVM drivers (all OS/arch)| | qemu-linux-static...tar.gz | static QEMU system emulators (TCG) |

The openvmm-deps tarball no longer contains a kernel; consumers that need a Linux-direct boot kernel (e.g. petri's Firmware::LinuxDirect) should fetch the matching openvmm-test-linux- artifact for the kernel and openvmm-test-initrd for the userland (the same initrd is used with every kernel version). Additional kernel lines may be added as separate openvmm-test-linux- artifacts in future releases.

For local testing, you can:

  • Copy out/openvmm-deps/sysroot.tar.gz to /.packages/openvmm-deps/
  • untar the file to overwrite the libs
  • rebuild openvmm

To build only one target (e.g. just a kernel) use --target:

docker build --platform x86_64 --target result-linux-6.1 \
--output type=local,dest=out/linux-6.1 .

virtio-win drivers

A separate Dockerfile.virtio-win extracts Windows virtio drivers from the virtio-win ISO. This build is architecture-independent (the ISO contains Windows PE binaries for multiple guest architectures) and runs separately from the main cross-compilation pipeline.

docker build -f Dockerfile.virtio-win --output type=local,dest=out .

The output preserves the ISO's directory layout (e.g. NetKVM/2k22/amd64/, NetKVM/2k25/ARM64/). Currently only NetKVM drivers are extracted; to add more driver families, extend the grep filter in Dockerfile.virtio-win.

The ISO is mirrored to the `virtio-iso-v1` GitHub release, pinned by sha256 checksum.