mirror of
https://github.com/home-assistant/operating-system.git
synced 2025-07-27 23:16:31 +00:00
Add LXD VM Guest Agent Support (#2145)
* Add LXD VM Guest Agent Support * Add systemd patch, remove udev rules, change to kernel modules, fix linter * Remove systemd patch, add conditionals to qemu-guest and lxd-agent * Update buildroot-external/package/qemu-guest-agent/qemu-guest.service Co-authored-by: Stefan Agner <stefan@agner.ch>
This commit is contained in:
parent
e53196d176
commit
2ac9dc1c75
@ -8,6 +8,7 @@ source "$BR2_EXTERNAL_HASSOS_PATH/package/khadas-boot/Config.in"
|
||||
source "$BR2_EXTERNAL_HASSOS_PATH/package/os-agent/Config.in"
|
||||
source "$BR2_EXTERNAL_HASSOS_PATH/package/pi-bluetooth/Config.in"
|
||||
source "$BR2_EXTERNAL_HASSOS_PATH/package/qemu-guest-agent/Config.in"
|
||||
source "$BR2_EXTERNAL_HASSOS_PATH/package/lxd-guest-agent/Config.in"
|
||||
source "$BR2_EXTERNAL_HASSOS_PATH/package/rpi-eeprom/Config.in"
|
||||
source "$BR2_EXTERNAL_HASSOS_PATH/package/rpi-rf-mod/Config.in"
|
||||
source "$BR2_EXTERNAL_HASSOS_PATH/package/rtl88x2bu/Config.in"
|
||||
|
@ -16,6 +16,16 @@ CONFIG_VMWARE_VMCI=y
|
||||
CONFIG_VMWARE_BALLOON=y
|
||||
CONFIG_VMWARE_PVSCSI=y
|
||||
|
||||
# These options are for LXD Guest Support
|
||||
CONFIG_NET_9P=m
|
||||
CONFIG_NET_9P_VIRTIO=m
|
||||
CONFIG_9P_FS=m
|
||||
CONFIG_9P_FS_POSIX_ACL=m
|
||||
CONFIG_PCI=y
|
||||
CONFIG_VSOCKETS=m
|
||||
CONFIG_VIRTIO_VSOCKETS_COMMON=m
|
||||
CONFIG_VHOST_VSOCK=m
|
||||
|
||||
# VirtualBox
|
||||
CONFIG_VBOXGUEST=m
|
||||
|
||||
|
@ -124,6 +124,7 @@ BR2_PACKAGE_HASSIO_MACHINE="qemux86-64"
|
||||
BR2_PACKAGE_OS_AGENT=y
|
||||
BR2_PACKAGE_OS_AGENT_BOARD="Ova"
|
||||
BR2_PACKAGE_QEMU_GUEST_AGENT=y
|
||||
BR2_PACKAGE_LXD_GUEST_AGENT=y
|
||||
BR2_PACKAGE_RPI_RF_MOD=y
|
||||
BR2_PACKAGE_RTL88X2BU=y
|
||||
BR2_PACKAGE_RTL8821CU=y
|
||||
|
9
buildroot-external/package/lxd-guest-agent/Config.in
Normal file
9
buildroot-external/package/lxd-guest-agent/Config.in
Normal file
@ -0,0 +1,9 @@
|
||||
config BR2_PACKAGE_LXD_GUEST_AGENT
|
||||
bool "LXD Guest Agent"
|
||||
depends on BR2_USE_MMU # libglib2
|
||||
depends on BR2_USE_WCHAR # libglib2
|
||||
depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2
|
||||
select BR2_PACKAGE_LIBGLIB2
|
||||
select BR2_PACKAGE_ZLIB
|
||||
help
|
||||
LXD guest agent for LXD based virtualisations
|
39
buildroot-external/package/lxd-guest-agent/lxd-agent-setup
Executable file
39
buildroot-external/package/lxd-guest-agent/lxd-agent-setup
Executable file
@ -0,0 +1,39 @@
|
||||
#!/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 >/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}"
|
17
buildroot-external/package/lxd-guest-agent/lxd-agent.service
Normal file
17
buildroot-external/package/lxd-guest-agent/lxd-agent.service
Normal file
@ -0,0 +1,17 @@
|
||||
[Unit]
|
||||
Description=LXD - agent
|
||||
After=syslog.target network.target
|
||||
ConditionPathExists=/dev/virtio-ports/org.linuxcontainers.lxd
|
||||
|
||||
[Service]
|
||||
Type=notify
|
||||
WorkingDirectory=-/run/lxd_agent
|
||||
ExecStartPre=/usr/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
|
@ -0,0 +1,19 @@
|
||||
################################################################################
|
||||
#
|
||||
# lxd-guest-agent
|
||||
#
|
||||
################################################################################
|
||||
|
||||
LXD_GUEST_AGENT_DEPENDENCIES = host-pkgconf
|
||||
|
||||
define LXD_GUEST_AGENT_INSTALL_INIT_SYSTEMD
|
||||
$(INSTALL) -D -m 644 $(LXD_GUEST_AGENT_PKGDIR)/lxd-agent.service \
|
||||
$(TARGET_DIR)/usr/lib/systemd/system/lxd-agent.service
|
||||
$(INSTALL) -D -m 755 $(LXD_GUEST_AGENT_PKGDIR)/lxd-agent-setup \
|
||||
$(TARGET_DIR)/usr/lib/systemd/lxd-agent-setup
|
||||
$(INSTALL) -d $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants
|
||||
ln -fs /usr/lib/systemd/system/lxd-agent.service \
|
||||
$(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/lxd-agent.service
|
||||
endef
|
||||
|
||||
$(eval $(generic-package))
|
@ -3,6 +3,7 @@ Description=QEMU Guest Agent
|
||||
After=syslog.target network.target
|
||||
ConditionVirtualization=|kvm
|
||||
ConditionVirtualization=|qemu
|
||||
ConditionPathExists=!/dev/virtio-ports/org.linuxcontainers.lxd
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/libexec/qemu-ga -m virtio-serial -p /dev/virtio-ports/org.qemu.guest_agent.0
|
||||
|
Loading…
x
Reference in New Issue
Block a user