It would be nice if the generic kernel shipped with VyOS would include virtiofs or p9, which is required to support LXD Agent when running VyOS in a virtual-machine on LXD.
I haven't found any detailed documentation of the requirements of running LXD Agent, but here are the files I found in the Debian Bookworm image built by the LXD community via distrobuilder;
#!/bin/sh set -eu PREFIX="/run/lxd_agent" # Functions. mount_virtiofs() { mount -t virtiofs config "${PREFIX}/.mnt" >/dev/null 2>&1 } mount_9p() { /sbin/modprobe 9pnet_virtio >/dev/null 2>&1 || true /bin/mount -t 9p config "${PREFIX}/.mnt" -o access=0,trans=virtio,size=1048576 >/dev/null 2>&1 } fail() { umount -l "${PREFIX}" >/dev/null 2>&1 || true rmdir "${PREFIX}" >/dev/null 2>&1 || true echo "${1}" exit 1 } # Setup the mount target. umount -l "${PREFIX}" >/dev/null 2>&1 || true mkdir -p "${PREFIX}" mount -t tmpfs tmpfs "${PREFIX}" -o mode=0700,size=50M mkdir -p "${PREFIX}/.mnt" # Try virtiofs first. mount_virtiofs || mount_9p || fail "Couldn't mount virtiofs or 9p, failing." # Copy the data. cp -Ra "${PREFIX}/.mnt/"* "${PREFIX}" # Unmount the temporary mount. umount "${PREFIX}/.mnt" rmdir "${PREFIX}/.mnt" # Fix up permissions. chown -R root:root "${PREFIX}"
[Unit] Description=LXD - agent Documentation=https://linuxcontainers.org/lxd ConditionPathExists=/dev/virtio-ports/org.linuxcontainers.lxd Before=cloud-init.target cloud-init.service cloud-init-local.service DefaultDependencies=no [Service] Type=notify WorkingDirectory=-/run/lxd_agent ExecStartPre=/lib/systemd/lxd-agent-setup ExecStart=/run/lxd_agent/lxd-agent Restart=on-failure RestartSec=5s StartLimitInterval=60 StartLimitBurst=10 [Install] WantedBy=multi-user.target
With thease modules available in the VyOS kernel it would at least be possible to initiate the LXD Agent manually. For example like this.