Page MenuHomeVyOS Platform

Support LXD Agent
Closed, ResolvedPublicFEATURE REQUEST

Description

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;

/lib/systemd/lxd-agent-setup
#!/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}"
/lib/systemd/system/lxd-agent.service
[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.

Details

Version
-
Is it a breaking change?
Unspecified (possibly destroys the router)

Event Timeline

twan created this object in space S1 VyOS Public.
Viacheslav changed the subtype of this task from "Task" to "Feature Request".Aug 1 2023, 8:46 AM

Yesterday I tested the latest 1.4-rolling-202308011218-image which includes CONFIG_VIRTIO_FS=m, and was successfully able to (manually) activate LXD Agent in my VM.
Thank you for the quick fix.

twan claimed this task.
Viacheslav moved this task from Open to Finished on the VyOS 1.4 Sagitta board.