Tenho o problema mencionado nesta pergunta . Tenho um sistema Ryzen (Ubuntu 24.04) e olhei a configuração do BIOS e o SVM está habilitado.
Executei as etapas iniciais nesta página para instalar o KVM, mas na etapa 4, quando executei sudo systemctl status libvirtd
, obtive:
Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; preset: enabled)
Active: active (running) since Sun 2025-01-05 12:52:55 EST; 1min 5s ago
TriggeredBy: ● libvirtd-ro.socket
● libvirtd.socket
● libvirtd-admin.socket
Docs: man:libvirtd(8)
https://libvirt.org/
Main PID: 8460 (libvirtd)
Tasks: 22 (limit: 32768)
Memory: 20.7M (peak: 25.7M)
CPU: 413ms
CGroup: /system.slice/libvirtd.service
├─1484 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/lib/li>
├─1485 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/lib/li>
└─8460 /usr/sbin/libvirtd --timeout 120
Jan 05 12:52:55 linux-mini systemd[1]: Starting libvirtd.service - libvirt legacy monolithic daemon...
Jan 05 12:52:55 linux-mini systemd[1]: Started libvirtd.service - libvirt legacy monolithic daemon.
Jan 05 12:52:55 linux-mini dnsmasq[1484]: read /etc/hosts - 8 names
Jan 05 12:52:55 linux-mini dnsmasq[1484]: read /var/lib/libvirt/dnsmasq/default.addnhosts - 0 names
Jan 05 12:52:55 linux-mini dnsmasq-dhcp[1484]: read /var/lib/libvirt/dnsmasq/default.hostsfile
Jan 05 12:52:55 linux-mini libvirtd[8460]: libvirt version: 10.0.0, package: 10.0.0-2ubuntu8.5 (Ubuntu)
Jan 05 12:52:55 linux-mini libvirtd[8460]: hostname: linux-mini
Jan 05 12:52:55 linux-mini libvirtd[8460]: Unable to open /dev/kvm: No such file or directory
Então algo está impedindo o kvm de iniciar (? - não tenho certeza se isso está correto).
sudo dmesg | grep kvm
mostra:
[ 4.403905] kvm_amd: NX (Execute Disable) not supported
[ 409.676621] kvm_amd: NX (Execute Disable) not supported
Não sei o que isso está me dizendo. lsmod | grep kvm
mostra:
kvm 1404928 0
irqbypass 12288 1 kvm
Estou tentando executar o emulador do Android, mas isso, aparentemente, está impedindo que isso aconteça. Qualquer dica é bem-vinda.
O KVM está se recusando a funcionar porque o processador não permite atualmente marcar regiões de memória como não executáveis (ou em outras palavras: para serem usadas apenas como dados, não como código de programa), o que é uma proteção importante contra várias explorações de segurança. É outro requisito do KVM moderno além de ter AMD-V/SVM habilitado em processadores AMD.
Nos comentários, você mencionou que seu processador é AMD Ryzen 7 5700U, que é um processador da era pós-Spectre/Meltdown, então ele definitivamente tem o recurso NX. Mas esse recurso é algo que pode ser habilitado/desabilitado pelas configurações do BIOS.
Esta publicação no Reddit menciona o mesmo problema, mas o EDIT: no final indica que habilitar uma configuração do BIOS chamada Modo NX corrigiu o problema para eles.
Então, verifique suas configurações de BIOS para qualquer menção a "NX" ou similar, pois os nomes das configurações de BIOS podem variar entre os fornecedores. No Windows, o recurso do sistema operacional que usa esse recurso de CPU é chamado Data Execution Prevention (DEP); acho que o programador de BIOS pode ter usado esse nome também.
Se não parece haver nenhuma maneira de habilitar o recurso do processador NX, então veja se há alguma atualização de BIOS disponível do fornecedor do seu sistema. Não ter o recurso NX disponível é uma desvantagem clara, e algo que o fornecedor gostaria de consertar o mais rápido possível.