Running trs + xen on AVA

Running trs + xen on AVA

EFI / Bootloader

To avoid having to setup the boot options, I enter the EFI Boot menu by pressing Escape during the AVA booting process, then select “Boot Maintenance Manager” → “Boot from file” and select “xen.efi” from the disk where the TRS image is flashed.

Creating the Xen guest

How to change the QEMU invocation command flags for a guest

Using the device_model_override option inside a guest .cfg file we can change the QEMU binary that runs for a guest. The following Python3 script can be used as a device_model_override binary and launch the QEMU build of your choice with the command flags you want.

  • Custom command flags for QEMU go to the hard-coded global variable guest_device_args list in the script’s source code.

  • QEMU Binary path is hard-coded in the QEMU_BINARY_PATH global variable.

  • Environment flags can be set by adding os.environ["ENV_VAR"] = "VALUE" lines.

  • stdout/stderr are redirected to the path in the hard-coded LOG_FILE global variable.

Save the following source code as qemu_device_model.py, set executable permissions with chmod +x qemu_device_model.py and override the xen device model parameter in the guest .cfg file:

device_model_version="qemu-xen" device_model_override="/home/root/qemu_device_model.py"

This will call the script with the same arguments it’d otherwise pass to the QEMU binary.

The source code:

Create guest

xl create /path/to/guest.cfg

Inspect guest domain state:

xl list

Sometimes, QEMU doesn’t exit cleanly and the guest shows up as (null) . Issue pkill qemu and it should go away.

Attach to guest console

xl console -t pv -n 0 GUEST_NAME

where GUEST_NAME is the value of "name" in the guest configuration.

Example guest .cfg file