Devices¶
TuxLAVA supports the following virtual devices.
- AVH
- Fastboot
- FVP
- NFS
- QEMU
- SSH
- USBG
Listing devices
You can list the supported devices with:
tuxlava --list-devices
AVH devices¶
| Device | AVH Model |
|---|---|
| avh-imx93 | i.MX93 |
| avh-rpi4b | Raspberry Pi 4 |
Fastboot devices¶
| Device |
|---|
| fastboot-aosp-dragonboard-845c |
| fastboot-aosp-qrb5165-rb5 |
| fastboot-dragonboard-410c |
| fastboot-dragonboard-845c |
| fastboot-exynos850-e850-96 |
| fastboot-gs101-oriole |
| fastboot-oe-dragonboard-845c |
| fastboot-qrb5165-rb5 |
| fastboot-x15 |
FVP devices¶
| Device |
|---|
| fvp-aemva |
| fvp-lava |
| fvp-morello-android |
| fvp-morello-baremetal |
| fvp-morello-busybox |
| fvp-morello-debian |
| fvp-morello-grub |
| fvp-morello-oe |
| fvp-morello-ubuntu |
Arm architecture version on fvp-aemva
By default fvp-aemva runs the FVP model at Armv9.7, exposing
SVE2 v3, SME2 v3, LSFE and the FP16 matrix instructions. Armv9.6
made HCR_EL2.E2H read-as-one, so nVHE is no longer
architecturally possible. Stable kernels that always run the
nVHE-flavoured SVE EL2 init (between the refactor in v5.15 and
the v6.5 hVHE rework) hang when writing ZCR_EL2. In practice
that affects linux-5.15.y and linux-6.1.y. Older kernels
(linux-5.10.y) kept a VHE guard around the nVHE setup and still
boot at Armv9.7; newer kernels (linux-6.6.y and later) inherit
the v6.5 hVHE rework and also boot unchanged. Pass
--parameters FVP_ARM_ARCH_VERSION=9.5 to clamp the model to
Armv9.5 for the affected branches. The same knob can be used to
target older architecture versions when newer ones cause issues.
NFS devices¶
| Device |
|---|
| nfs-am57xx-beagle-x15 |
| nfs-bcm2711-rpi-4-b |
| nfs-i386 |
| nfs-juno-r2 |
| nfs-rk3399-rock-pi-4b |
| nfs-x86_64 |
QEMU devices¶
| Device | Description |
|---|---|
| qemu-arm64 | 64-bit ARMv8 |
| qemu-arm64be | 64-bit ARMv8 (BE) |
| qemu-armv5 | 32-bit ARM |
| qemu-armv7 | 32-bit ARM |
| qemu-armv7be | 32-bit ARM (BE) |
| qemu-i386 | 32-bit X86 |
| qemu-m68k | 32-bit m68k (BE) |
| qemu-mips32 | 32-bit MIPS |
| qemu-mips32el | 32-bit MIPS (EL) |
| qemu-mips64 | 64-bit MIPS |
| qemu-mips64el | 64-bit MIPS (EL) |
| qemu-ppc32 | 32-bit PowerPC |
| qemu-ppc64 | 64-bit PowerPC |
| qemu-ppc64le | 64-bit PowerPC (EL) |
| qemu-riscv32 | 32-bit RISC-V |
| qemu-riscv64 | 64-bit RISC-V |
| qemu-s390 | 64-bit s390 |
| qemu-sh4 | 32-bit SH |
| qemu-sparc64 | 64-bit Sparc |
| qemu-x86_64 | 64-bit X86 |
SSH device¶
| Device | Description | Machine | CPU |
|---|---|---|---|
| ssh-device | Device with ssh access | Any | Any |
USBG devices¶
| Device |
|---|
| usbg-bcm2711-rpi-4-b |
The usbg devices boot a whole disk image that the dispatcher exports as USB mass storage. The board boots from it as if a USB disk was plugged in.
The board boots from --firmware, and --os is merged into it
by a default script download. For example:
tuxlava --device usbg-bcm2711-rpi-4-b \
--firmware https://example.com/firmware.wic.xz \
--os https://example.com/os.wic.xz
Anything else the job needs goes in with --downloads, once
per file. Use it for files a test reads on the dispatcher.
Every one of them takes an optional file name after the URL.
Some URLs have no file name in the path. A redirect endpoint
saves every file as download, so they overwrite each other
and we cannot see the compression either. Say the name and
both problems go away:
tuxlava --device usbg-bcm2711-rpi-4-b \
--firmware "https://example.com/download?id=A" firmware.wic.xz \
--os "https://example.com/download?id=B" os.wic.xz \
--downloads "https://example.com/download?id=C" packages.tar.gz
Put any commands for the job after a --. These options read
one more value after the URL, so the first command would be
taken as the file name. Every option that takes several values
works like this, --modules and --parameters too.
The compression comes from that name, so LAVA unpacks the file
during the download and it lands as packages.tar. A name with
no known suffix is left as it is.
A --downloads file is named after its file name, so
packages.tar.gz becomes packages in the job. Everything
lands in one directory, so two files that end up with the same
name is an error.
These devices retry failed downloads three times. LAVA
divides the deploy timeout by the number of tries, so
--timeouts deploy=45 gives 15 minutes per try, not 45. Keep
that in mind when you raise it.