FVP¶
The FVP device-type in LAVA refers to running Fixed Virtual Platforms.
LAVA FVP Dispatcher Setup¶
LAVA executes FVP devices inside Docker containers. Therefore, like any other LAVA dispatcher that can run docker device types, Docker needs to be installed.
FVP Binaries¶
LAVA does not handle the download of FVP binaries: these are assumed to be in the Docker image defined in the LAVA job.
FVP binaries are not available in any public Docker images and must be download at developer.arm.com. Therefore, custom Docker images must be created for this purpose. Either these images should be built on the dispatcher to use a local image, or they can be pushed to a private registry: FVP binaries must not be redistributed.
Building FVP Docker Images¶
Once FVP binaries have been obtained from developer.arm.com, these must be built into a Docker image.
- There are few dependencies:
FVP Binaries
telnet
command. This is used to connect to a UART.
For these basics, here is a sample Dockerfile to create a Docker image for
running FVPs in LAVA, which can be built with a docker build
command.
Networking inside Models¶
Optionally, if you require networking in the model, here is a way to enable this. For this example the base OS is Ubuntu.
Ensure
libvirt-bin
package is installed in theDockerfile
.Add the following contents into
/etc/libvirt/hooks/network
.
#!/bin/bash
# If the change occurs to the "default" libvirt managed network
if [ "${1}" = "default" ] ; then
# If the network is started
if [ "${2}" = "started" ] ; then
ip tuntap add mode tap tap01
ip link set tap01 promisc on
ip link set tap01 up
brctl addif virbr0 tap01
fi
fi
Create a custom entrypoint script that calls
/usr/sbin/libvirtd &
before the commands given:exec "$@"
.libvirt will create a
virbr0
bridge and then a tap interfacetap01
connected to it.tap01
is what the model will use.Add the following arguments to your foundation model (other models will differ):
arguments:
- ...
- "--network=bridged"
- "--network-bridge=tap01"
This will be required if you require the use of transfer_overlay
.
This could be useful in the event you want to pass binaries to the model that
contains the filesystem but stored in a way LAVA cannot currently put the overlay into.
transfer_overlay:
# It may be required to suppress some kernel messages
download_command: echo 3 > /proc/sys/kernel/printk ; wget
unpack_command: tar -C / -xzf