Package: libvirt-daemon-system
Version: 11.3.0-3
Followup-For: Bug #924418
X-Debbugs-Cc: [email protected]
Dear Maintainer,
(Please note: reportbug indicated newer versions 11.8.0-1/2 exist in
testing/unstable. This report confirms the bug is present in version 11.3.0-3
as currently installed on my Debian Trixie system.)
I am experiencing an issue on Debian Trixie where libvirtd fails to start
QEMU/KVM virtual machines that require UEFI and TPM 2.0 (like Windows 11),
seemingly due to an AppArmor integration problem. Both gnome-boxes and
virt-manager fail.
**Symptoms:**
1. Using gnome-boxes: Attempting to create a Windows 11 VM fails with the
generic error "incapable host system".
2. Using virt-manager: Attempting to create the same VM fails repeatedly with
a specific libvirt error: "internal error: cannot load AppArmor profile
'libvirt-[UUID]'" (where [UUID] is dynamically generated).
**System Configuration & Prerequisites Confirmed:**
* Debian Trixie (Testing) is up to date (Kernel 6.12.48+deb13-amd64).
* CPU virtualization (VT-x/AMD-V) is enabled and detected.
* Required packages `qemu-system-x86`, `libvirt-daemon-system` (11.3.0-3),
`virt-manager`, `ovmf`, and `swtpm-tools` are installed.
* User is added to `libvirt` and `kvm` groups.
* AppArmor is active. `aa-status` shows `libvirtd` and `virt-aa-helper`
profiles loaded in enforce mode.
**Debugging Steps Taken & Findings:**
1. Setting the `/etc/apparmor.d/usr.sbin.libvirtd` profile to complain mode
(`sudo aa-complain ...`) **did not** resolve the "cannot load AppArmor profile"
error in virt-manager. Profile was returned to enforce mode afterwards.
2. Identified the helper binary at `/usr/lib/libvirt/virt-aa-helper` and its
profile `/etc/apparmor.d/usr.lib.libvirt.virt-aa-helper`.
3. Setting the `/etc/apparmor.d/usr.lib.libvirt.virt-aa-helper` profile to
complain mode **did not** resolve the error, and `sudo dmesg | grep
apparmor=\\"DENIED\\"` showed **no DENIED messages** related to virt-aa-helper
or apparmor_parser during the failed VM startup attempt. This indicates the
failure is likely not a simple permission denial. Profile was returned to
enforce mode afterwards.
4. The default `virt-aa-helper` profile contains the rule
`/{usr/,}{s,}bin/apparmor_parser Ux,`. Modifying this rule to use `Px`
(`/{usr/,}{s,}bin/apparmor_parser Px,`) caused AppArmor service reload to fail
due to "conflicting x modifiers", indicating `Px` is likely incorrect or
incompatible here. The rule was reverted to `Ux`.
**Successful (but Insecure) Workaround:**
* The *only* way found to successfully start the VM was by explicitly disabling
AppArmor confinement for QEMU. This was achieved by adding the line
`security_driver = "none"` to `/etc/libvirt/qemu.conf` and restarting
`libvirtd.service`. This strongly indicates the bug lies within the
libvirt-AppArmor interaction for dynamic profile loading.
**Hypothesis:**
There appears to be a bug in how libvirtd/virt-aa-helper attempts to generate
and load the dynamic AppArmor profile for the QEMU VM process on Debian Trixie
11.3.0-3. This failure occurs even with complain mode enabled and is not
resolved by the standard `Ux` execute permission for `apparmor_parser` within
the helper's profile. The failure mode suggests an issue deeper than simple
rule denial, potentially related to profile transition or interaction with the
kernel API.
Please let me know if any further logs or testing are required.
Thank you for maintaining libvirt.
-- System Information:
Debian Release: 13.1
APT prefers stable-updates
APT policy: (500, 'stable-updates'), (500, 'stable-security'), (500, 'stable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 6.12.48+deb13-amd64 (SMP w/16 CPU threads; PREEMPT)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8),
LANGUAGE=en_GB:en
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
Versions of packages libvirt-daemon-system depends on:
ii libvirt-clients 11.3.0-3
ii libvirt-common 11.3.0-3
ii libvirt-daemon 11.3.0-3
ii libvirt-daemon-common 11.3.0-3
ii libvirt-daemon-config-network 11.3.0-3
ii libvirt-daemon-config-nwfilter 11.3.0-3
ii libvirt-daemon-driver-network 11.3.0-3
ii libvirt-daemon-driver-nodedev 11.3.0-3
ii libvirt-daemon-driver-nwfilter 11.3.0-3
ii libvirt-daemon-driver-qemu 11.3.0-3
ii libvirt-daemon-driver-secret 11.3.0-3
ii libvirt-daemon-driver-storage 11.3.0-3
ii libvirt-daemon-log 11.3.0-3
ii libvirt0 11.3.0-3
libvirt-daemon-system recommends no packages.
libvirt-daemon-system suggests no packages.
-- no debconf information