Android Studio: permissão do dispositivo / dev / kvm negada


557

Quando tento executar meu aplicativo Android em um emulador, recebo este erro:

Permissão / dev / kvm negada.

Eu verifiquei as permissões e adicionei o usuário com o qual estou atualmente conectado ao grupo kvm. O que está errado?

Respostas:


870

Como mencionado nos comentários, a partir do Ubuntu 18.04 e Linux Mint Tara, você precisa primeiro sudo apt install qemu-kvm.

Para verificar a propriedade do /dev/kvmuso

ls -al /dev/kvm

O usuário era rooto grupo kvm. Para verificar quais usuários estão no kvmgrupo, use

grep kvm /etc/group

Isso retornou

kvm:x:some_number:

no meu sistema: como não há nada à direita da final :, não há usuários no kvmgrupo.

Para adicionar seu usuário ao grupo kvm , você pode usar

sudo adduser $USER kvm

que adiciona o usuário ao grupo e verifique novamente com grep kvm /etc/group.

Conforme mencionado por @marcolz, o comando newgrp kvmdeve alterar a participação no grupo para você. Se isso não funcionar, o @Knossos mencionou que você pode querer sair e voltar (ou reiniciar), para que as permissões entrem em vigor. Ou faça como @nmirceac mencionado e faça login novamente no mesmo shell via su - $USER.


124
Após instalar qemu-kvme adicionar meu usuário ao grupo, kvmele não funcionou. Mas o fez após reiniciar o computador (Ubuntu 18.04).
Sdlins 13/05/19

7
E se o usuário fosse roote o grupo fosse root. Devemos mudar seu grupo?
Michael Fulton

4
Eu precisava sempre que ligava meu pc sudo chown -R nome de usuário: nome de usuário / dev / kvm Essas etapas salvavam minha dor de cabeça de todas as vezes. Thansk @ serv-inc Isso deve ser aceito como resposta correta.
Sajid Zeb

3
Você pode usar este comando para adicionar automaticamente usuário atual kvmsudo adduser $USER kvm
Munish Chandel

17
Eu precisava de propriedade concessão de KVM para o usuário também: sudo chown $USER /dev/kvm
Iván Rodríguez Torres

534

É assim que eu consegui funcionar no Ubuntu 18.04

sudo apt install qemu-kvm

Adicione seu usuário ao grupo kvm usando:

sudo adduser <Replace with username> kvm

Se ainda estiver mostrando permissão negada :

sudo chown <Replace with username> /dev/kvm

Tente.


2
salve meu dia com sua última resposta.
Sathish Sundharam

14
etapa 2 pode exigir uma reinicialização
Jakob Eriksson

10
você não deve alterar a propriedade da /dev/kvm/pasta. em vez disso, você deve adicionar o usuário ao kvmgrupo como nesta resposta: stackoverflow.com/a/45749003/1213934
logoff

3
@JakobEriksson Requer um login novamente. Reinicializações são reservados para Windows (e atualizações Systemd) ;-)
Bayou

3
Sim, como o @logoff sugeriu, você não deve alterar a propriedade do / dev / kvm, pois isso quebra a ACL padrão do seu sistema Linux, o que não é uma boa prática de segurança. Siga estas instruções: stackoverflow.com/a/45749003/7206497
eVagabond

33

Tente isso, funcionou para mim:

  1. sudo apt install qemu-kvm

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


1
Pode ser necessário fazer login novamente para que ele entre em vigor.
Vadim Peretokin

6
Isso é questionável, pois trata um sistema multiusuário como um sistema de usuário único. Nenhum outro usuário poderá usar o KVM ao seguir esta abordagem. Essa é uma boa ideia? Eu duvido ...
arkascha

1
Esta solução está completamente errada, pois modifica os direitos padrão para / dev / kvm. Não é apenas o fato de não persistir entre reinicializações / atualizações do sistema. Também modifica com força as configurações do sistema. Ficar longe.
andrzejwp 31/03

Não faça o chown+ adicione seu nome de usuário aos grupos adequados - kvm ou libvirt. Veja a documentação para [ help.ubuntu.com/community/KVM/InstallationBody(Ubuntu) .
Daisuke Aramaki

Por que você exibe um arquivo de dispositivo recursivamente? Além disso, o que há com o sufixo? Isso certamente gera um erro.
maxschlepzig

29

Você também tentou seguir, deve funcionar:

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

1
chmod o+xé completamente inútil. O primeiro comando faz com que funcione - mas veja meus outros comentários bem por que essa é uma péssima idéia.
Gerd

1
Isso funciona, mas não persiste uma reinicialização. Estou no POP OS!
Arka Prava Basu

1
Esta solução está incorreta, pois modifica os direitos padrão para /dev/kvm. Não é apenas o fato de não persistir entre reinicializações / atualizações do sistema. Também modifica com força as configurações do sistema. Ficar longe.
andrzejwp 31/03

Isso não é persistente durante as reinicializações. O daemon udev pode reajustar as permissões durante seu tempo de execução e fornecer a outras pessoas que o bit de permissão executável é simplesmente supérfluo.
maxschlepzig

27

Isso ocorre porque /dev/kvmnão está acessível. Para tornar acessível a partir do android studio, execute o comando abaixo

sudo chmod 777 -R /dev/kvm

Ele solicitará sua senha. Depois disso, reinicie o Android Studio.

KVMé necessário para o emulador de rum. Se você ainda não o instalou, instale-o

sudo apt install qemu-kvm

Esta resposta fez o truque no meu caso depois de seguir a resposta mais votada! Obrigado!
Crono

1
Não faça isso. Veja minha resposta acima.
andrzejwp 31/03

@andrzejwp: Qual resposta? Não vejo nenhuma resposta sua. Dado o quanto você é inflexível com relação à sua resposta, você pode vincular a ela ?
Dan Dascalescu 22/04

Por que você recursivamente ( -R) altera as permissões em um único arquivo de dispositivo? Além disso, as permissões de execução são supérfluas. Finalmente, o udev pode ajustar as permissões após o início de cada emulador.
maxschlepzig

25
sudo chown $USER /dev/kvm

A simples execução desse comando funcionou para mim em setembro de 2019:

Descrição: Ubuntu 18.04.3

Versão LTS: 18.04

Codinome: bionic


1
Não faça isso. Veja minha resposta acima.
andrzejwp 31/03

1
@andrzejwp Onde está sua resposta? Está em um comentário? Se for, provavelmente está em colapso e não consigo vê-lo. Pesquisei na página a sua etiqueta de usuário, mas não consigo encontrar. Fico feliz em experimentar sua resposta - porque minha resposta não está correta (não persiste) - mas não consigo encontrá-la. Deixe um link ou crie uma nova resposta e eu tentarei.
raddevus 31/03

Use a resposta mais votada. Não use chmod / chown.
andrzejwp

@andrzejwp: vincule suas respostas, em vez de dizer "acima". E se a sua resposta acabar abaixo da que você está comentando?
Dan Dascalescu 22/04

Isso não é persistente durante as reinicializações e o daemon udev pode reajustar a propriedade /dev/kvmdurante o tempo de execução.
maxschlepzig

21

Estou usando o ubuntu 18.04. Eu estava enfrentando o mesmo problema. Eu executo esse comando no terminal e o problema está resolvido.

sudo chown $USER /dev/kvm

o comando acima é para todos os usuários presentes no seu sistema.

Se você deseja conceder acesso apenas a um usuário específico, execute este comando

sudo chown UserNameHere /dev/kvm

1
Não. Isso não é algo que você deve fazer. Veja minha resposta acima.
andrzejwp 31/03

Qual é a diferença desta resposta para @raddevus ' resposta que ele postou um mês antes?
maxschlepzig

20

Esta é uma breve versão da resposta de Gerd

abra o terminal e execute os seguintes comandos

sudo groupadd -r kvm

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

Adicione a seguinte linha ao arquivo aberto e salve-o

KERNEL == "kvm", GRUPO = "kvm", MODO = "0660"

Finalmente, execute:

sudo usermod -a -G kvm <your_username>

Reinicie o seu PC e pronto!


Este é um mau conselho. Nunca edite diretamente a configuração do udev em /lib/udev/rules.d. O Udev possui um mecanismo de sobreposição em que a configuração inserida /etc/udev/rules.dtem prioridade sobre uma disponível em /lib/udev/rules.d.
maxschlepzig

Não sou usuário profissional de Linux, é apenas uma solução que funcionou para mim e decido torná-la sucinta e fácil de ler para outras pessoas como eu. obrigado pelo seu esclarecimento, máx.
Nasir Jafarzadeh

15

Eu respondi ao mesmo problema e, para resolver esse problema, basta digitar os seguintes comandos no terminal para clientes Linux

   sudo apt-get install qemu-kvm

    // type your password

   sudo chmod 777 -R /dev/kvm

e depois disso tente rodar o simulador que funcionará


1
Deus não. Veja meus comentários acima.
andrzejwp 31/03

Instalação supérflua do qemu-kvm, uso supérfluo da opção recursiva e define supérflua a permissão executiva. Também não persistente durante reinicializações e até mesmo durante o tempo de execução do udev.
maxschlepzig

13

Não há absolutamente nenhuma necessidade de instalar qemu-kvm (e todas as suas dependências) se você quiser apenas executar o Android Studio Emulator.

A única coisa que você precisa fazer é dar ao seu usuário (ou seja, aquele com quem você está conectado) o direito de acessar o /dev/kvm dispositivo.

Isso é feito em três etapas simples.

Primeiro:

Crie o kvmgrupo

groupadd -r kvm

A opção -rcria um grupo de sistemas, ou seja, com um GID <= 999 (consulte /etc/login.defs=>SYS_GID_MAX )

Segundo:

Alterar permissões em /dev/kvm. Isso pode ser feito como parte da instalação qemu-kvm, porque uma das dependências está sendo instalada qemu-system-common(nos sistemas atuais do Ubuntu, o nome do pacote pode variar), que por sua vez instala o arquivo que /lib/udev/rules.d/60-qemu-system-common.rulescontém o seguinte:

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

Portanto, se você acabou de criar um arquivo /etc/udev/rules.d/60-qemu-permissions.rulescontendo a linha acima, está pronto com o primeiro passo.

Terceiro:

Adicione seu nome de usuário ao grupo executando

usermod -a -G kvm <your_username>- o -aé importante para adicionar seu usuário ao grupo kvm. Sem isso, você substituirá as configurações do grupo para que o usuário pertença apenas ao "kvm" ...

É isso aí.

Para que a nova regra do udev e a configuração do grupo entrem em vigor, é mais fácil reiniciar e fazer login novamente.

Você também pode executar

udevadm control --reload-rules && udevadm trigger

para recarregar as regras, mas você ainda precisa sair e fazer login novamente em relação ao novo grupo.


10

Estou usando o linux debian e estou enfrentando da mesma maneira. No meu AVD me mostrando uma mensagem "/ dev / kvm permissão negada" e tentei encontrar a solução, então o que faço para resolvê-la é, no terminal digite:

sudo chmod -R 777 /dev/kvm

Ele concederá um acesso à pasta / dev / kvm e verifique novamente no seu AVD , a mensagem de erro desaparecerá, espero que ajude.


1
Isso está completamente errado. Não faça isso, nunca. Veja meus comentários acima.
andrzejwp 31/03

1
@andrzejwp: comentários acima, ONDE ?!
Dan Dascalescu 22/04

A opção recursiva é supérflua, as permissões de execução são supérfluas. A alteração não é persistente durante as reinicializações. Alteração não estável durante o tempo de execução do udev.
maxschlepzig

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

Trabalhou para mim.


2
Muito melhor do que todos os chownexemplos aqui, mas eu omitiria xas permissões.
Gerd

A mudança não é persistente durante as reinicializações.
maxschlepzig

5

Apenas uma pequena melhoria na resposta de Jerrin em corrigir esse erro no Ubuntu 18.04, utilizando a $USERvariável disponível no terminal bash. Então você pode usar os seguintes comandos dois comandos:

sudo apt install qemu-kvm

Adicione o usuário atual ao grupo kvm

sudo adduser $USER kvm

Além disso, se você ainda está tendo problemas, outro problema para mim foi a maneira como eu instalei o Ubuntu. Cometi o erro de marcar a caixa durante a instalação para instalar software de terceiros que não funcionava bem com a minha placa de vídeo nvidia para desenvolvimento. Então eu reinstalei o Ubuntu com este software de terceiros desmarcado .

insira a descrição da imagem aqui

Depois da instalação, abra o software e as atualizações e vá para a guia Drivers adicionais. Selecione os drivers proprietários mais atualizados que também foram testados e aplique as alterações. Deve reiniciar a máquina para que as alterações tenham efeito.

insira a descrição da imagem aqui


3

Isso funcionou para mim no Linux (x18) ☑ Espero que funcione para você também

sudo chown hp /dev/kvm

2
Não, não vai, e por favor não faça isso.
andrzejwp 31/03

A alteração não é persistente durante as reinicializações.
maxschlepzig

3

No Ubuntu, as permissões de /dev/kvmgeralmente são assim:

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

O usuário que executa o emulador do Android (ou seja, seu usuário) precisa obter acesso a este dispositivo.

Portanto, existem basicamente duas maneiras de obter acesso:

  • Verifique se o seu usuário faz parte do grupo kvm (requer um novo login do seu usuário após a alteração)
  • Amplie as permissões desse dispositivo para que seu usuário tenha acesso (requer uma alteração na configuração do daemon udev)

Adicionar usuário ao grupo KVM

Verifique se seu usuário já faz parte do grupo kvm, por exemplo:

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

Se não for, adicione-o com, por exemplo:

$ sudo usermod --append --groups kvm juser

Após essa alteração, é necessário sair e fazer login novamente para tornar o grupo eficaz (verifique novamente com id).

Ampliar permissões

Como alternativa, você pode apenas ampliar as permissões do /dev/kvmdispositivo.

Exemplo:

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, esse é o padrão em outras distribuições, como o Fedora e o CentOS.

Verifique a eficácia dos comandos acima com outro ls. Você deve ver uma saída semelhante também:

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

Grande vantagem: você não precisa sair e fazer login novamente para que essa alteração seja efetiva.

Não soluções

  • chamando chmode chowndiretamente /dev/kvm- 1) essas alterações não são persistentes durante as reinicializações e 2) desde/dev/kvm permissões são controladas pelo daemon udev, ele pode 'consertar' suas permissões a qualquer momento, por exemplo, após cada emulador ser executado
  • adicionando permissões executáveis ​​a /dev/kvm - seu emulador requer apenas permissões de leitura e gravação
  • alterar permissões recursivamente /dev/kvm- não sei o que há com isso - parece um culto à carga
  • instalando pacotes extras como o qemu - você já tem seu emulador instalado - você só precisa ter acesso ao /dev/kvmdispositivo

1

Abra o Terminal e faça logon como administrador

sudo su

Vá para a pasta dev

cd /dev/

Mude o modo kvm

chmod 777 -R kvm

Eu acho que você quer dizer em cd /devvez de sudo.
21419 JJJ

sim, cd / dev.
Damindu Lakmal 10/04/19

1
Isso funciona. Mas precisa fazer isso toda vez que o computador reiniciar.
Lanil Marasinghe 16/04/19

Por que você chama chmodcom -R? Alterar recursivamente as permissões em um único arquivo de dispositivo /dev/kvmnão parece muito útil. Além disso, as permissões de execução são supérfluas nesse dispositivo. Finalmente, o udev pode reajustar as /dev/kvmpermissões após cada execução. Portanto, esse método não é muito eficaz.
maxschlepzig

0

Eu estava em uma situação semelhante com o mesmo erro de permissões no / dev / kvm. Eu havia feito as instalações necessárias, mas não adicionei o usuário ao grupo kvm. Tudo o que eu precisava fazer era

sudo adduser <Replace with username> kvm

e, claro, não se esqueça de reiniciar sua instância do Ubuntu.


6
Logout / login não é suficiente?
precisa saber é o seguinte

0

O que finalmente consertou para mim no Ubuntu 18.04 foi:

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

Como é a sua resposta diferente de Mehedi Abdullah resposta ?
maxschlepzig

-1

Eu recebi esse erro depois de atualizar meu ubuntu para 18.04.1. Acabei de baixar a nova imagem do sistema para o emulador ou você pode dizer que baixe o novo emulador e ele funcionou para mim.


1
Isso não muda nada em relação ao problema original com /dev/kvm-permissions.
Gerd

-1

Digite o terminal:

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

-1

Embora o KVM seja um módulo incorporado ao próprio kernel do Linux, isso não significa que todos os pacotes necessários estejam incluídos na sua instalação do Ubuntu / Linux por padrão. Você precisará de alguns para começar, e eles podem ser instalados com este comando no terminal:

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

Configure a ponte de rede

Para que suas máquinas virtuais acessem sua interface de rede e recebam seus próprios endereços IP, precisamos configurar a rede em ponte no nosso sistema.

Primeiro, execute o seguinte comando Linux para descobrir qual nome sua interface de rede foi atribuída. Saber disso nos permitirá fazer configurações adicionais posteriormente.

$ ip a     

Determine o nome da interface de rede

No meu caso, a interface de rede é chamada enp2s0 . O seu provavelmente terá um nome muito semelhante.

Para dizer ao Ubuntu que queremos que nossa conexão seja conectada, precisamos editar o arquivo de configuração das interfaces de rede. Fazer isso não afetará negativamente sua conexão. Isso permitirá que essa conexão seja compartilhada com as VMs.

Use code(Visual Studio Code) ou seu editor de texto favorito para abrir o seguinte arquivo:

$ code /etc/network/interfaces     

Quando você abre esse arquivo pela primeira vez, ele pode estar vazio ou conter apenas algumas linhas. Sua interface de ponte é chamada br0, portanto, adicione a seguinte linha para a interface aparecer por padrão:

auto br0    

Abaixo desta linha, adicione a seguinte linha à sua interface de rede atual (a pessoa que o nomeou anteriormente).

iface enp2s0 inet manual

Em seguida, você pode adicionar as informações da ponte. Essas linhas informam ao Ubuntu que sua ponte usará o DHCP para atribuição automática de endereço IP, e sua ponte gerenciará sua interface atual.

iface br0 inet dhcp
      bridge_ports enp2s0

É assim que seu arquivo deve parecer depois que todas as alterações forem aplicadas (se você também tiver algumas linhas que já estavam lá, é bom tê-las também):

Arquivo de configuração de interfaces de rede

Salve suas alterações e saia do arquivo.

Adicione seu usuário aos grupos

Para gerenciar sua (s) máquina (s) virtual (is) sem privilégios de root, seu usuário precisará pertencer a dois grupos de usuários. Execute os seguintes comandos para adicionar seu usuário aos grupos apropriados (substituindo user1 pelo nome do seu usuário):

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

Quando terminar, reinicie o sistema para garantir que todas as alterações feitas na configuração do usuário e da rede tenham a chance de entrar em vigor.


Downvote: Este tópico não é sobre como fazer o KVM funcionar. Trata-se de omitir uma mensagem de "permissão negada" ao iniciar o emulador empacotado com o Andoid Studio. Não libvirthá necessidade de configurar interfaces ...
Gerd

Embora eu seja muito novo no desenvolvimento do Android, aposto que ele executa a maioria dessas etapas para você. Porém, ele pede para você instalar muitos dos mesmos pacotes . (Esperando todos os desenvolvedores Android para configurar adequadamente uma ponte é um pouco no campo da esquerda, mesmo limitado a Linux desenvolvedores Android.)
jpaugh

-1

Para criar um dispositivo virtual no Linux - tenho que seguir este comando três e isso me ajuda a evitar problemas na criação de dispositivos avd - o processo é -

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

Então, agora você está pronto, reinicie o Android Studio e comece a criar aplicativos com o emulador.



-4

A execução do comando abaixo no Ubuntu 18.04 funcionou para mim sudo chown -R / dev / kvm


1
Primeiro: nunca mude a propriedade dos arquivos do sistema --- Segundo: Como /dev/kvmé um arquivo -Rnão tem efeito --- Terceiro: chownprecisa de um new ownerargumento --- Quarto: Após a reinicialização, você deve fazer isso várias vezes.
Gerd

-9

Se você abrir seu ide com sudo. Você não vai ter esse problema.


7
por que diabos eu preciso de permissões sudo para desenvolver um aplicativo Android?
Techcraver 27/10/19

1
Enfatizando novamente: nunca se deve fazer isso. Verifique também o gksu e o gksudo para executar aplicativos da GUI como raiz.
Manish Raj
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.