diff --git a/buildroot-external/package/lxd-guest-agent/99-lxd-agent.rules b/buildroot-external/package/lxd-guest-agent/99-lxd-agent.rules deleted file mode 100644 index 82abd4df7d9..00000000000 --- a/buildroot-external/package/lxd-guest-agent/99-lxd-agent.rules +++ /dev/null @@ -1 +0,0 @@ -ACTION=="add", SYMLINK=="virtio-ports/org.linuxcontainers.lxd", TAG+="systemd", ACTION=="add", RUN+="/bin/systemctl start lxd-agent.service" diff --git a/buildroot-external/package/lxd-guest-agent/lxd-agent.service b/buildroot-external/package/lxd-guest-agent/lxd-agent.service index 0e7314a961a..d787af8ca20 100644 --- a/buildroot-external/package/lxd-guest-agent/lxd-agent.service +++ b/buildroot-external/package/lxd-guest-agent/lxd-agent.service @@ -1,7 +1,7 @@ [Unit] Description=LXD - agent After=syslog.target network.target -ConditionPathExists=/dev/virtio-ports/org.linuxcontainers.lxd +ConditionVirtualization=lxd [Service] Type=notify diff --git a/buildroot-external/package/lxd-guest-agent/lxd-guest-agent.mk b/buildroot-external/package/lxd-guest-agent/lxd-guest-agent.mk index f5e1a73589f..87cb5000462 100644 --- a/buildroot-external/package/lxd-guest-agent/lxd-guest-agent.mk +++ b/buildroot-external/package/lxd-guest-agent/lxd-guest-agent.mk @@ -14,8 +14,6 @@ define LXD_GUEST_AGENT_INSTALL_INIT_SYSTEMD $(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 - $(INSTALL) -D -m 644 $(LXD_GUEST_AGENT_PKGDIR)/99-lxd-agent.rules \ - $(TARGET_DIR)/usr/lib/udev/rules.d/99-lxd-agent.rules endef $(eval $(generic-package)) diff --git a/buildroot-external/patches/systemd/0003-Add-LXD-Support.patch b/buildroot-external/patches/systemd/0003-Add-LXD-Support.patch new file mode 100644 index 00000000000..4c86d3309b4 --- /dev/null +++ b/buildroot-external/patches/systemd/0003-Add-LXD-Support.patch @@ -0,0 +1,79 @@ +From 9cf9bc6909bc298bc628a6b02f868af4d1a98392 Mon Sep 17 00:00:00 2001 +From: "bryan.york" +Date: Fri, 23 Sep 2022 10:33:07 -0700 +Subject: [PATCH] Add LXD Support + +--- + src/basic/virt.c | 13 ++++++++----- + src/basic/virt.h | 3 ++- + 2 files changed, 10 insertions(+), 6 deletions(-) + +diff --git a/src/basic/virt.c b/src/basic/virt.c +index 284ad95277..66550ee887 100644 +--- a/src/basic/virt.c ++++ b/src/basic/virt.c +@@ -142,7 +142,8 @@ static int detect_vm_device_tree(void) { + #if defined(__i386__) || defined(__x86_64__) || defined(__arm__) || defined(__aarch64__) || defined(__loongarch64) + static int detect_vm_dmi_vendor(void) { + static const char *const dmi_vendors[] = { +- "/sys/class/dmi/id/product_name", /* Test this before sys_vendor to detect KVM over QEMU */ ++ "/sys/class/dmi/id/board_name", /* Test this before product_name & sys_vendor to detect LXD over QEMU */ ++ "/sys/class/dmi/id/product_name", /* Test this before sys_vendor to detect KVM over QEMU */ + "/sys/class/dmi/id/sys_vendor", + "/sys/class/dmi/id/board_vendor", + "/sys/class/dmi/id/bios_vendor", +@@ -158,7 +159,8 @@ static int detect_vm_dmi_vendor(void) { + { "QEMU", VIRTUALIZATION_QEMU }, + { "VMware", VIRTUALIZATION_VMWARE }, /* https://kb.vmware.com/s/article/1009458 */ + { "VMW", VIRTUALIZATION_VMWARE }, +- { "innotek GmbH", VIRTUALIZATION_ORACLE }, ++ { "LXD", VIRTUALIZATION_LXD }, ++ { "innotek GmbH", VIRTUALIZATION_ORACLE }, + { "VirtualBox", VIRTUALIZATION_ORACLE }, + { "Xen", VIRTUALIZATION_XEN }, + { "Bochs", VIRTUALIZATION_BOCHS }, +@@ -432,7 +434,7 @@ int detect_vm(void) { + + /* We have to use the correct order here: + * +- * → First, try to detect Oracle Virtualbox and Amazon EC2 Nitro, even if they use KVM, as well as Xen even if ++ * → First, try to detect LXD, Oracle Virtualbox and Amazon EC2 Nitro, even if they use KVM, as well as Xen even if + * it cloaks as Microsoft Hyper-V. Attempt to detect uml at this stage also since it runs as a user-process + * nested inside other VMs. Also check for Xen now, because Xen PV mode does not override CPUID when nested + * inside another hypervisor. +@@ -443,7 +445,7 @@ int detect_vm(void) { + * → Third, try to detect from DMI. */ + + dmi = detect_vm_dmi(); +- if (IN_SET(dmi, VIRTUALIZATION_ORACLE, VIRTUALIZATION_XEN, VIRTUALIZATION_AMAZON)) { ++ if (IN_SET(dmi, VIRTUALIZATION_LXD, VIRTUALIZATION_ORACLE, VIRTUALIZATION_XEN, VIRTUALIZATION_AMAZON)) { + r = dmi; + goto finish; + } +@@ -1006,7 +1008,8 @@ static const char *const virtualization_table[_VIRTUALIZATION_MAX] = { + [VIRTUALIZATION_XEN] = "xen", + [VIRTUALIZATION_UML] = "uml", + [VIRTUALIZATION_VMWARE] = "vmware", +- [VIRTUALIZATION_ORACLE] = "oracle", ++ [VIRTUALIZATION_LXD] = "lxd", ++ [VIRTUALIZATION_ORACLE] = "oracle", + [VIRTUALIZATION_MICROSOFT] = "microsoft", + [VIRTUALIZATION_ZVM] = "zvm", + [VIRTUALIZATION_PARALLELS] = "parallels", +diff --git a/src/basic/virt.h b/src/basic/virt.h +index 1eafbe2cbe..537dc79857 100644 +--- a/src/basic/virt.h ++++ b/src/basic/virt.h +@@ -16,7 +16,8 @@ enum { + VIRTUALIZATION_XEN, + VIRTUALIZATION_UML, + VIRTUALIZATION_VMWARE, +- VIRTUALIZATION_ORACLE, ++ VIRTUALIZATION_LXD, ++ VIRTUALIZATION_ORACLE, + VIRTUALIZATION_MICROSOFT, + VIRTUALIZATION_ZVM, + VIRTUALIZATION_PARALLELS, +-- +2.34.1 +