Az alábbi hibüzenet keletkezik a qemu/kvm virtuális gép indítása után:
File "/usr/lib/python3/dist-packages/libvirt.py", line 1234, in create
if ret == -1: raise libvirtError ('virDomainCreate() failed', dom=self)
libvirt.libvirtError: internal error: qemu unexpectedly closed the monitor: qemu-system-x86_64: -acpitable file=/var/lib/libvirt/images/SSDT1.dat: can't open file /var/lib/libvirt/images/SSDT1.dat: Permission denied
Előzmény:
Adott egy notebook, intel GPU-val és egy notebookos Geforce kártyával. QEMU/KVM virtuális környezetbe lett telepítve Windows 10.
GPU passthrough-val kapja meg a Geforce kártyát a guest windows rendszer. A probléma az, hogy az Nvidia notebook geforce driver nem települ, mert nem találja az akkut. (Ellenőrzött információ)
Megoldás egy akku bekamuzása a virtuális gépbe, amihez létre kell hozni egy /var/lib/libvirt/images/SSDT1.dat fájlt a megfelelő tartalommal.
Utána természetesen hozzá kell adni a megfelelő xml csoportot a konfigurációhoz. Itt kavar be az AppArmour!
A jogok természetesen be vannak állítva:
-rw-r-xr--+ 1 libvirt-qemu kvm 161 Jan 21 03:40 /var/lib/libvirt/images/SSDT1.dat
Továbbá
sudo setfacl -m u:libvirt-qemu:rx /var/lib/libvirt/
sudo getfacl -e /var/lib/libvirt/images/
getfacl: Removing leading '/' from absolute path names
# file: var/lib/libvirt/images/
# owner: libvirt-qemu
# group: kvm
user::rwx
user:libvirt-qemu:r-x #effective:r-x
group::r-x #effective:r-x
mask::r-x
other::r-x
Azonban továbbra is /var/lib/libvirt/images/SSDT1.dat: Permission denied hibát kapok a virtuális gép indításakor.
Hozzászólások
Az AppArmor (nincs benne "u") nem a fájlrendszer jogosultságaival dolgozik (csúnya is lenne...) - kell az alkalmazásnak, ami elhasal egy profilt csinálni (vagy a meglévőt kireszelni), hogy az adott fájlt tudja olvasni. Kiindulásnak javasolt doksi: https://ubuntu.com/tutorials/beginning-apparmor-profile-development#1-o…
Az owner-nek (libvirt-qemu) nem kell két különböző jogosultságot megadnod. (Unix: rw, ACL: rx).
aa-teardown utan is?
neked aztan fura humorod van...
A processzt futtató usernek van rx joga a teljes útvonal minden elemére (könyvtárak)?
Az elvart mukodes egy virtualis gep generalt apparmor profiljanal az, hogy csak a sajat dolgaihoz fer hozza (pl. UUID alapjan elnevezett image, hugepages es hasonlok). Hacsak nincs teljesen lecsapva az aa profilban a logolas a kernel audit logjaban ott is kell viritania, hogy beleblokkolt. A megolda pedig jo esellyel valahol az /etc/apparmor.d/libvirt/... kornyeken az adott virtualis gep profiljanak a kiegeszitese.