Android Studio: autorizzazione del dispositivo / dev / kvm negata


557

Quando provo a eseguire la mia app Android su un emulatore ottengo questo errore:

Autorizzazione / dev / kvm negata.

Ho controllato le autorizzazioni e ho aggiunto l'utente con cui ho effettuato l'accesso al gruppo kvm. Che c'è?

Risposte:


870

Come accennato nei commenti, a partire da Ubuntu 18.04 e Linux Mint Tara devi prima sudo apt install qemu-kvm.

Per verificare la proprietà /dev/kvmdell'uso

ls -al /dev/kvm

L'utente era root, il gruppo kvm. Per verificare quali utenti sono nel kvmgruppo, utilizzare

grep kvm /etc/group

Questo è tornato

kvm:x:some_number:

sul mio sistema: poiché non c'è nulla a destra della finale :, non ci sono utenti nel kvmgruppo.

Per aggiungere il tuo utente al gruppo kvm , puoi usare

sudo adduser $USER kvm

che aggiunge l'utente al gruppo e controlla ancora con grep kvm /etc/group.

Come menzionato da @marcolz, il comando newgrp kvmdovrebbe cambiare l'appartenenza al gruppo dal vivo per te. Se ciò non ha funzionato, @Knossos ha affermato che potresti voler disconnetterti e riconnetterti (o riavviare), affinché le autorizzazioni abbiano effetto. Oppure fai come @nmirceac menzionato e accedi nuovamente nella stessa shell tramite su - $USER.


124
Dopo l'installazione qemu-kvme aggiungere il mio utente al gruppo kvmnon ha funzionato. Ma lo ha fatto dopo il riavvio del computer (Ubuntu 18.04).
sdlins,

7
E se l'utente fosse roote il gruppo lo fosse root. Dovremmo cambiare il suo gruppo?
Michael Fulton,

4
Ho dovuto ogni volta che ho acceso il mio PC sudo chown -R username: username / dev / kvm Questi passaggi mi hanno salvato il mal di testa di ogni volta. Thansk @ serv-inc Questo dovrebbe essere accettato come risposta corretta.
Sajid Zeb,

3
Puoi usare questo comando per aggiungere automaticamente l'utente corrente a kvmsudo adduser $USER kvm
Munish Chandel il

17
Avevo bisogno di concedere la proprietà di kvm anche all'utente: sudo chown $USER /dev/kvm
Iván Rodríguez Torres

534

È così che l'ho fatto funzionare in Ubuntu 18.04

sudo apt install qemu-kvm

Aggiungi il tuo utente al gruppo kvm usando:

sudo adduser <Replace with username> kvm

Se mostra ancora l' autorizzazione negata :

sudo chown <Replace with username> /dev/kvm

Provalo.


2
salva la mia giornata con la tua ultima risposta.
Sathish Sundharam,

14
il passaggio 2 potrebbe richiedere un riavvio
Jakob Eriksson,

10
non dovresti cambiare la proprietà della /dev/kvm/cartella. dovresti invece aggiungere l'utente al kvmgruppo come in questa risposta: stackoverflow.com/a/45749003/1213934
disconnessione il

3
@JakobEriksson Richiede uno per accedere nuovamente. I riavvii sono riservati per Windows (e gli aggiornamenti di systemd) ;-)
Bayou

3
Sì, come ha suggerito @logoff, non dovresti cambiare la proprietà di / dev / kvm, perché così facendo rompi l'ACL predefinito del tuo sistema Linux, che non è una buona pratica di sicurezza. Seguire questa istruzione invece: stackoverflow.com/a/45749003/7206497
eVagabond

33

Prova questo, ha funzionato per me:

  1. sudo apt install qemu-kvm

  2. sudo chown -R <username>:<username> /dev/kvm –


1
Potrebbe essere necessario accedere nuovamente affinché abbia effetto.
Vadim Peretokin,

6
Ciò è discutibile, poiché tratta un sistema multiutente come un sistema a singolo utente. Nessun altro utente sarà in grado di utilizzare KVM seguendo questo approccio. È una buona idea? Ne dubito ...
Arkacha

1
Questa soluzione è chiaramente sbagliata in quanto modifica i diritti predefiniti in / dev / kvm. Non è solo che non persisterà tra riavvi / aggiornamenti di sistema. Modifica anche con forza le impostazioni di sistema. Stai lontano.
andrzejwp

Non fare chown- aggiungi il tuo nome utente ai gruppi appropriati - kvm o libvirt. Vedere la documentazione per [ help.ubuntu.com/community/KVM/Installazioneation_n_(Ubuntu) .
Daisuke Aramaki,

Perché chown ricorsivamente un file del dispositivo? Inoltre, cosa c'è con il suffisso? Questo sicuramente produce un errore.
maxschlepzig

29

Hai anche provato a seguire, dovrebbe funzionare:

sudo chown <username> /dev/kvm
sudo chmod o+x /dev/kvm

1
chmod o+xè completamente inutile. Il primo comando lo fa funzionare, ma vedi i miei altri commenti in fondo perché questa è una cattiva idea.
Gerd,

1
Funziona ma non persiste il riavvio. Sono su POP OS però!
Arka Prava Basu,

1
Questa soluzione è errata in quanto modifica i diritti predefiniti di /dev/kvm. Non è solo che non persisterà tra riavvi / aggiornamenti di sistema. Modifica anche con forza le impostazioni di sistema. Stai lontano.
andrzejwp

Questo non è persistente al riavvio. Il demone udev potrebbe ri-regolare le autorizzazioni durante il suo runtime e dato ad altri il bit di autorizzazione eseguibile è semplicemente superfluo.
maxschlepzig,

27

Questo è perché /dev/kvm non è accessibile. Per rendere accessibile da Android Studio eseguire il comando seguente

sudo chmod 777 -R /dev/kvm

Chiederà la tua password. Successivamente riavvia Android Studio.

KVMè richiesto per l'emulatore di rum. Se non lo hai ancora installato, installalo

sudo apt install qemu-kvm

Questa risposta ha funzionato nel mio caso dopo aver seguito la risposta più votata! Grazie!
Crono,

1
Non farlo. Vedi la mia risposta sopra.
andrzejwp

@andrzejwp: quale risposta? Non vedo nessuna risposta da te. Dato quanto sei irremovibile riguardo alla tua risposta, puoi collegarti ad essa ?
Dan Dascalescu il

Perché ricorsivamente ( -R) modifichi le autorizzazioni su un singolo file del dispositivo? Inoltre, le autorizzazioni di esecuzione sono superflue. Infine, udev può regolare le autorizzazioni dopo l'avvio di ciascun emulatore.
maxschlepzig

25
sudo chown $USER /dev/kvm

Eseguendo semplicemente quel comando ha funzionato per me qui a settembre 2019 in esecuzione:

Descrizione: Ubuntu 18.04.3

Rilascio LTS: 18.04

Nome in codice: bionico


1
Non farlo. Vedi la mia risposta sopra.
andrzejwp

1
@andrzejwp Dov'è la tua risposta? È in un commento? Se lo è, è probabilmente crollato e non riesco a vederlo. Ho cercato nella pagina il tuo tag utente, ma non riesco a trovare. Sono felice di provare la tua risposta - perché la mia risposta non è del tutto corretta (non persiste) - ma non riesco a trovarla. Lascia un link o crea una nuova risposta e la proverò.
Raddevus,

Usa la risposta più votata. Non usare chmod / chown.
andrzejwp

@andrzejwp: collega le tue risposte, invece di dire "sopra". Cosa succede se la tua risposta finisce sotto quella a cui stai commentando?
Dan Dascalescu il

Questo non è persistente al riavvio e il demone udev potrebbe riaggiustare la proprietà /dev/kvmdurante il suo runtime.
maxschlepzig

21

Sto usando Ubuntu 18.04. Stavo affrontando lo stesso problema. Eseguo questo comando nel terminale e il problema è stato risolto.

sudo chown $USER /dev/kvm

il comando sopra è per tutti gli utenti presenti nel tuo sistema.

Se si desidera consentire l'accesso solo a un utente specifico, eseguire questo comando

sudo chown UserNameHere /dev/kvm

1
No. Non è qualcosa che dovresti fare. Vedi la mia risposta sopra.
andrzejwp

Come è risposta diversa da @raddevus' risposta che ha inviato un mese prima?
maxschlepzig,

20

Questa è una breve versione della risposta di Gerd

aprire il terminale ed eseguire i seguenti comandi

sudo groupadd -r kvm

sudo gedit /lib/udev/rules.d/60-qemu-system-common.rules

Aggiungi la seguente riga al file aperto e salvalo

KERNEL == "kvm", GROUP = "kvm", MODE = "0660"

Esegui infine:

sudo usermod -a -G kvm <your_username>

Riavvia il PC e Fine!


Questo è un cattivo consiglio. Non modificare mai direttamente la configurazione udev sotto /lib/udev/rules.d. Udev ha un meccanismo di sovrapposizione in cui la configurazione inserita /etc/udev/rules.dha la priorità su una disponibile sotto /lib/udev/rules.d.
maxschlepzig

Non sono un utente Linux professionale, è solo una soluzione che ha funzionato per me e decido di renderlo breve e facile da leggere per gli altri come me. grazie per il vostro chiarimento, Max.
Nasir Jafarzadeh,

15

Ho contrastato lo stesso problema e per risolvere questo problema basta digitare i seguenti comandi nel terminale per i client Linux

   sudo apt-get install qemu-kvm

    // type your password

   sudo chmod 777 -R /dev/kvm

e dopo provare a eseguire il simulatore funzionerà


1
Dio no. Vedi i miei commenti sopra.
andrzejwp

Installazione superflua di qemu-kvm, uso superfluo dell'opzione ricorsiva e impostazione superflua del permesso esecutivo. Anche non persistente al riavvio e persino durante il runtime di udev.
maxschlepzig,

13

Non è assolutamente necessario installare qemu-kvm(e tutte le sue dipendenze) se si desidera eseguire solo l'emulatore Android Studio.

L'unica cosa che devi fare è dare al tuo utente (cioè quello con cui hai effettuato l'accesso) il diritto di accedere al /dev/kvmdispositivo.

Questo viene fatto in tre semplici passaggi.

Primo:

Crea il kvmgruppo

groupadd -r kvm

L'opzione -rcrea un gruppo di sistema, ovvero con un GID <= 999 (vedi /etc/login.defs=> SYS_GID_MAX)

Secondo:

Modifica autorizzazioni su /dev/kvm. Questo potrebbe essere fatto come parte dell'installazione qemu-kvm, poiché sta installando una delle dipendenze qemu-system-common(sugli attuali sistemi Ubuntu, il nome del pacchetto può variare), che a sua volta installa il file /lib/udev/rules.d/60-qemu-system-common.rulescontenente quanto segue:

KERNEL=="kvm", GROUP="kvm", MODE="0660"

Quindi, se stai semplicemente creando un file /etc/udev/rules.d/60-qemu-permissions.rulescontenente la riga sopra, hai finito con il primo passo.

Terzo:

Aggiungi il tuo nome utente al gruppo eseguendo

usermod -a -G kvm <your_username>- -aè importante per aggiungere il tuo utente al gruppo kvm. Senza questo, sovrascriverai le impostazioni di gruppo per il tuo utente affinché appartengano solo a "kvm" ...

Questo è tutto.

Per rendere effettive le nuove regole udev e le impostazioni di gruppo è più semplice riavviare e accedere nuovamente.

Puoi anche eseguire

udevadm control --reload-rules && udevadm trigger

per ricaricare le regole ma è necessario disconnettersi e accedere nuovamente per quanto riguarda il nuovo gruppo.


10

Sto usando Linux debian e sto affrontando allo stesso modo. Nel mio AVD che mi mostra un messaggio "/ dev / kvm permesso negato" e ho provato a trovare la soluzione, allora quello che faccio per risolverlo è, nel terminale digitare questo:

sudo chmod -R 777 /dev/kvm

garantirà un accesso per la cartella / dev / kvm, quindi ricontrollerà sul tuo AVD , il messaggio di errore scomparirà, spero che ti sia d'aiuto.


1
Questo è completamente sbagliato. Non farlo mai. Vedi i miei commenti sopra.
andrzejwp

1
@andrzejwp: commenti sopra, DOVE ?!
Dan Dascalescu il

L'opzione ricorsiva è superflua, le autorizzazioni di esecuzione sono superflue. Modifica non persistente al riavvio. Modifica non stabile durante il runtime di udev.
maxschlepzig,

9
sudo setfacl -m u:$USER:rwx /dev/kvm

Ha funzionato per me.


2
Molto meglio di tutti gli chownesempi qui, ma ometterei xle autorizzazioni.
Gerd,

Il cambiamento non è persistente al riavvio.
maxschlepzig,

5

Solo un leggero miglioramento sulla risposta di Jerrin sulla correzione di questo errore con Ubuntu 18.04 utilizzando la $USERvariabile disponibile nel terminale bash. Quindi è possibile utilizzare i seguenti comandi due comandi:

sudo apt install qemu-kvm

Aggiungi l'utente corrente al gruppo kvm

sudo adduser $USER kvm

Inoltre, se i problemi persistono, un altro problema per me è stato il modo in cui ho installato Ubuntu. Ho fatto l'errore di selezionare la casella durante l'installazione per l'installazione di software di terze parti che non funzionava bene con la mia scheda grafica NVIDIA per lo sviluppo. Quindi ho reinstallato Ubuntu con questo software di terze parti deselezionato .

inserisci qui la descrizione dell'immagine

Quindi, dopo l'installazione, apri Software e aggiornamenti e vai alla scheda Driver aggiuntivi. Seleziona i driver proprietari più aggiornati che sono stati testati e applica le modifiche. Dovrebbe riavviare la macchina affinché le modifiche abbiano effetto.

inserisci qui la descrizione dell'immagine


3

Questo ha funzionato per me su Linux (x18) ☑ Spero che funzionerà anche per te

sudo chown hp /dev/kvm

2
No non lo farà, e per favore non farlo.
andrzejwp

Il cambiamento non è persistente al riavvio.
maxschlepzig,

3

Sotto Ubuntu, le autorizzazioni di /dev/kvmsolito sembrano così:

$ ls -l /dev/kvm
crw-rw---- 1 root kvm 10, 232 May 24 09:54 /dev/kvm

L'utente che esegue l'emulatore Android (ovvero il tuo utente) deve accedere a questo dispositivo.

Quindi, ci sono sostanzialmente 2 modi per ottenere l'accesso:

  • Assicurati che il tuo utente faccia parte del gruppo kvm (richiede un nuovo accesso del tuo utente dopo la modifica)
  • Amplia le autorizzazioni di quel dispositivo in modo tale che il tuo utente abbia accesso (richiede una modifica alla configurazione del demone udev)

Aggiungi utente al gruppo KVM

Controlla se il tuo utente fa già parte del gruppo kvm, ad esempio:

$ id 
uid=1000(juser) gid=1000(juser) groups=1000(gms),10(wheel)

Se non è che aggiungerlo con ad esempio:

$ sudo usermod --append --groups kvm juser

Dopo tale modifica, è necessario disconnettersi e accedere nuovamente per rendere effettiva la modifica del gruppo (verificare di nuovo con id).

Ampliare le autorizzazioni

In alternativa, puoi semplicemente ampliare le autorizzazioni del /dev/kvmdispositivo.

Esempio:

echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' \
    | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm

FWIW, questo è il valore predefinito su altre distribuzioni come Fedora e CentOS.

Verificare l'efficacia dei comandi sopra con un altro ls. Dovresti vedere anche un output simile:

$ ls -l /dev/kvm
crw-rw-rw-. 1 root kvm 10, 232 2020-05-16 09:19 /dev/kvm

Grande vantaggio: non è necessario disconnettersi e accedere nuovamente per rendere effettiva questa modifica.

Non-Solutions

  • chiamando chmode chowndirettamente su /dev/kvm- 1) queste modifiche non sono persistenti al riavvio e 2) da allora/dev/kvm autorizzazioni sono controllate dal demone udev, può "riparare" le sue autorizzazioni in qualsiasi momento, ad esempio dopo l'esecuzione di ciascun emulatore
  • aggiunta di autorizzazioni eseguibili a /dev/kvm : l'emulatore richiede solo autorizzazioni di lettura e scrittura
  • cambiare le autorizzazioni in modo ricorsivo /dev/kvm- non so cosa succede - sembra un culto del carico
  • l'installazione di pacchetti extra come qemu - hai già installato il tuo emulatore - devi solo accedere al /dev/kvmdispositivo

1

Apri Terminale e accedi come amministratore

sudo su

Vai alla cartella dev

cd /dev/

Cambia la modalità kvm

chmod 777 -R kvm

Penso che intendi cd /devinvece di sudo.
JJJ,

sì, cd / dev.
Damindu Lakmal,

1
Questo funziona Ma devi farlo ogni volta che il computer si riavvia.
Lanil Marasinghe,

Perché chiami? chmod con -R? La modifica ricorsiva delle autorizzazioni su un singolo file del dispositivo /dev/kvmnon sembra troppo utile. Inoltre, le autorizzazioni di esecuzione sono superflue su quel dispositivo. Infine, udev può regolare nuovamente le /dev/kvmautorizzazioni dopo ogni esecuzione. Pertanto, questo metodo non è molto efficace.
maxschlepzig,

0

Mi trovavo in una situazione simile con lo stesso errore delle autorizzazioni su / dev / kvm, avevo eseguito le installazioni necessarie ma non ho aggiunto l'utente al gruppo kvm Tutto quello che dovevo fare era

sudo adduser <Replace with username> kvm

e ovviamente NON dimenticare di riavviare l'istanza di Ubuntu.


6
Il logout / login non è sufficiente?
user1053510

0

Ciò che finalmente risolto per me su Ubuntu 18.04 era:

sudo apt install qemu-kvm
sudo adduser $USER kvm
sudo chown $USER /dev/kvm

Come è la vostra risposta diversa da quella di Mehedi Abdullah risposta ?
maxschlepzig,

-1

Ho ricevuto questo errore dopo aver aggiornato Ubuntu a 18.04.1. Scarico semplicemente la nuova immagine di sistema per l'emulatore oppure puoi dire che scarica il nuovo emulatore e funziona per me.


1
Questo non cambierà nulla riguardo al problema originale con /dev/kvm-permissions.
Gerd

-1

Digitare il terminale:

sudo apt install qemu-kvm -y
sudo chown $USER /dev/kvm

-1

Sebbene KVM sia un modulo integrato nel kernel Linux stesso, ciò non significa che tutti i pacchetti necessari siano inclusi nell'installazione Ubuntu / Linux per impostazione predefinita. Ne avrai bisogno di alcuni per iniziare e possono essere installati con questo comando nel terminale:

& sudo apt install qemu-kvm libvirt-clients libvirt-daemon-system bridge-utils virt-manager    

Configurare il bridge di rete

Affinché le tue macchine virtuali possano accedere alla tua interfaccia di rete e ricevere i propri indirizzi IP, dobbiamo configurare reti collegate sul nostro sistema.

Innanzitutto, esegui il seguente comando Linux per scoprire quale nome è stato assegnato alla tua interfaccia di rete. Sapendo questo ci permetterà di effettuare ulteriori configurazioni in un secondo momento.

$ ip a     

Determina il nome dell'interfaccia di rete

Nel mio caso, viene chiamata l'interfaccia di rete enp2s0. Probabilmente il tuo nome sarà molto simile.

Per dire a Ubuntu che vogliamo collegare la nostra connessione, dovremo modificare il file di configurazione delle interfacce di rete. Ciò non avrà alcun impatto negativo sulla tua connessione. Permetterà solo che tale connessione sia condivisa con le macchine virtuali.

Usa code(Visual Studio Code) o il tuo editor di testo preferito per aprire il seguente file:

$ code /etc/network/interfaces     

Quando si apre questo file per la prima volta, potrebbe essere vuoto o contenere solo un paio di righe. La tua interfaccia bridge viene chiamata br0, quindi aggiungi la seguente riga affinché l'interfaccia venga visualizzata per impostazione predefinita:

auto br0    

Sotto questa riga, aggiungi la seguente riga per la tua attuale interfaccia di rete (quella che hai nominato precedentemente definito).

iface enp2s0 inet manual

Successivamente, è possibile aggiungere le informazioni sul bridge. Queste linee indicano a Ubuntu che il bridge utilizzerà DHCP per l'assegnazione automatica dell'indirizzo IP e che il bridge gestirà l'interfaccia corrente.

iface br0 inet dhcp
      bridge_ports enp2s0

Ecco come dovrebbe apparire il tuo file una volta applicate tutte le modifiche (se hai anche un paio di righe che erano già lì, va bene averle anche tu):

File di configurazione delle interfacce di rete

Salvare le modifiche e uscire dal file.

Aggiungi il tuo utente ai gruppi

Per gestire le macchine virtuali senza i privilegi di root, l'utente dovrà appartenere a due gruppi di utenti. Eseguire i comandi seguenti per aggiungere l'utente ai gruppi appropriati (sostituendo l'utente1 con il nome dell'utente):

$ sudo adduser user1 libvirt
$ sudo adduser user1 libvirt-qemu
$ sudo adduser user1 kvm

Al termine, è necessario riavviare il sistema per assicurarsi che tutte le modifiche apportate all'utente e alla configurazione di rete abbiano la possibilità di entrare in vigore.


Downvote: questo thread non riguarda il funzionamento di KVM. Si tratta solo di omettere un messaggio "permesso negato" durante l'avvio dell'emulatore impacchettato con Andoid Studio. Non è necessario libvirte non è necessario configurare interfacce ...
Gerd

Anche se sono molto nuovo nello sviluppo di Android, scommetto che fa la maggior parte di questi passaggi per te. Tuttavia, ti chiede di installare molti degli stessi pacchetti . (Aspettarsi che ogni sviluppatore Android
installi

-1

Per creare un dispositivo virtuale in Linux - Devo seguire questi tre comandi e mi aiuta a evitare problemi per la creazione di dispositivi avd - il processo è -

sudo apt install qemu-kvm
sudo adduser $USER kvm
sudo chown $USER /dev/kvm 

quindi, ora sei a posto, riavvia Android Studio e inizia a creare un'applicazione con l'emulatore.



-4

Eseguire il comando seguente in Ubuntu 18.04 ha funzionato per me sudo chown -R / dev / kvm


1
Primo: non cambiare mai la proprietà dei file di sistema --- Secondo: come /dev/kvmè un file -Rnon ha alcun effetto --- Terzo: ha chownbisogno di un new ownerargomento --- Quarto: dopo il riavvio devi farlo ancora e ancora.
Gerd

-9

Se apri il tuo ide con sudo. Non avrai questo problema.


7
perché mai ho bisogno dei permessi sudo per sviluppare un'app Android?
techcraver,

1
Sottolineando di nuovo: non si deve mai fare questo. Guarda anche gksu e gksudo per eseguire le app della GUI come root.
Manish Raj,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.