tree: 0496ee55a1a4e6a525ff678b20fe0dd3b3c2eaac [path history] [tgz]
  1. cli/
  2. integration_test/
  3. mgr/
  4. pkg/
  5. runner/
  6. scripts/
  7. third_party/
  8. vmm/
  9. MAINTAINERS
  10. README.md
bin/guest/README.md

Guest

The vmm app enables booting a guest operating system using the Zircon hypervisor.

These instructions will guide you through creating minimal Zircon and Linux guests. For instructions on building a more comprehensive linux guest system see the debian_guest package.

These instructions assume a general familiarity with how to netboot the target device.

Build host system with the guest package

Configure, build, and boot the guest package as follows:

$ fx set x64 --packages garnet/packages/experimental/disabled/linux_guest,garnet/packages/experimental/disabled/zircon_guest --args guest_display=\"framebuffer\"
$ fx full-build
$ fx boot

Building for QEMU

Configure, build, and boot the guest package as follows:

$ fx set arm64 --packages garnet/packages/experimental/disabled/linux_guest,garnet/packages/experimental/disabled/zircon_guest
$ fx full-build
$ fx run

Running guests

After netbooting the target device, to run Zircon:

$ guest launch zircon_guest

Likewise, to launch a Linux guest:

$ guest launch linux_guest

Running on QEMU

Running a guest on QEMU on x64 requires kvm (i.e. pass -k to fx run):

$ fx run -k

Running a guest on QEMU on arm64 requires either using GICv2 (pass -G 2).

$ fx run -G 2

Or using a more recent version of QEMU (try 2.12.0). Older versions of QEMU do not correctly emulate GICv3 when running with multiple guest VCPUs. If you do this, then you will need to launch the guest with gic=3.

$ fx run -q /path/to/recent/qemu/aarch64-softmmu
...
$ guest launch (linux_guest|zircon_guest) --gic=3

Running from Topaz

To run from Topaz, configure the guest package as follows:

$ fx set x64 --packages topaz/packages/topaz,garnet/packages/experimental/disabled/linux_guest,garnet/packages/experimental/disabled/zircon_guest

After netbooting the guest packages can be launched from the system launcher as linux_guest and zircon_guest.

Building for arm64

First flash Zedboot onto your VIM2:

$ cd $ZIRCON_DIR
$ scripts/build-zircon-arm64
$ scripts/flash-vim2 -m

Then configure, build, and boot the guest package as follows:

$ fx set arm64 --packages garnet/packages/experimental/disabled/linux_guest,garnet/packages/experimental/disabled/zircon_guest --args guest_display=\"framebuffer\" --netboot
$ fx full-build
$ fx boot vim2

Guest Configuration

Guest systems can be configured by including a config file inside the guest package:

{
    "type": "object",
    "properties": {
        "kernel": {
            "type": "string"
        },
        "ramdisk": {
            "type": "string"
        },
        "block": {
            "type": "string"
        },
        "cmdline": {
            "type": "string"
        },
        "balloon-demand-page": {
            "type": "string"
        },
        "balloon-interval": {
            "type": "string"
        },
        "balloon-threshold": {
            "type": "string"
        },
    }
}