Android Studio: permiso de dispositivo / dev / kvm denegado

557

Cuando intento ejecutar mi aplicación de Android en un emulador, aparece este error:

/ dev / kvm permiso denegado.

Verifiqué los permisos y agregué el usuario con el que estoy conectado actualmente al grupo kvm. ¿Qué está mal?

florian.R
fuente

Respuestas:

870

Como se menciona en los comentarios, a partir de Ubuntu 18.04 y Linux Mint Tara , primero debe hacerlo sudo apt install qemu-kvm.

Para verificar la propiedad del /dev/kvmuso

ls -al /dev/kvm

El usuario era root, el grupo kvm. Para verificar qué usuarios están en el kvmgrupo, use

grep kvm /etc/group

Esto regresó

kvm:x:some_number:

en mi sistema: como no hay nada justo al final :, no hay usuarios en el kvmgrupo.

Para agregar su usuario al grupo kvm , puede usar

sudo adduser $USER kvm

que agrega al usuario al grupo, y verifica nuevamente con grep kvm /etc/group.

Como mencionó @marcolz, el comando newgrp kvmdebería cambiar la membresía del grupo en vivo para usted. Si eso no funcionó, @Knossos mencionó que es posible que desee cerrar sesión y volver a iniciarla (o reiniciarla) para que los permisos surtan efecto. O haga lo que @nmirceac mencionó y vuelva a iniciar sesión en el mismo shell a través de su - $USER.

serv-inc
fuente
124
Después de instalar qemu-kvmy agregar mi usuario al grupo kvm, no funcionó. Pero lo hizo después de reiniciar la computadora (Ubuntu 18.04).
sdlins
77
¿Qué pasa si el usuario era rooty el grupo era root? ¿Deberíamos cambiar su grupo?
Michael Fulton
44
Tenía que hacerlo cada vez que encendía mi PC sudo chown -R nombre de usuario: nombre de usuario / dev / kvm Estos pasos me ahorraron el dolor de cabeza de cada vez. Thansk @ serv-inc Esto debe aceptarse como respuesta correcta.
Sajid Zeb
3
Puede usar este comando para agregar automáticamente el usuario actual a kvmsudo adduser $USER kvm
Munish Chandel
17
También necesitaba otorgar la propiedad de kvm al usuario: sudo chown $USER /dev/kvm
Iván Rodríguez Torres
534

Así es como lo hice funcionar en Ubuntu 18.04

sudo apt install qemu-kvm

Agregue su usuario al grupo kvm usando:

sudo adduser <Replace with username> kvm

Si aún muestra permiso denegado :

sudo chown <Replace with username> /dev/kvm

Intentalo.

Jerin A Mathews
fuente
2
Salva mi día con tu última respuesta.
Sathish Sundharam
14
el paso 2 podría requerir un reinicio
Jakob Eriksson
10
No debe cambiar la propiedad de la /dev/kvm/carpeta. en su lugar, debe agregar el usuario al kvmgrupo como en esta respuesta: stackoverflow.com/a/45749003/1213934
sesión el
3
@JakobEriksson Requiere uno para volver a iniciar sesión. Los reinicios están reservados para Windows (y actualizaciones del sistema) ;-)
Bayou
3
Sí, tal como lo ha sugerido @logoff, no debe cambiar la propiedad de / dev / kvm, porque al hacerlo se rompe la ACL predeterminada de su sistema Linux, lo que no es una buena práctica de seguridad. En su lugar, siga estas instrucciones: stackoverflow.com/a/45749003/7206497
eVagabond
34

Prueba esto, funcionó para mí:

  1. sudo apt install qemu-kvm

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

Milán
fuente
1
Es posible que deba volver a iniciar sesión para que surta efecto.
Vadim Peretokin
66
Esto es cuestionable, ya que trata un sistema multiusuario como un sistema de usuario único. Ningún otro usuario podrá usar KVM cuando siga este enfoque. ¿Es eso una buena idea? Lo dudo ...
arkascha
1
Esta solución es completamente incorrecta ya que modifica los derechos predeterminados de / dev / kvm. No es solo que no persistirá entre reinicios / actualizaciones del sistema. También modifica con fuerza la configuración del sistema. Mantente alejado.
andrzejwp
No haga lo siguiente chown: agregue su nombre de usuario a los grupos adecuados: kvm o libvirt. Consulte la documentación de [ help.ubuntu.com/community/KVM/Installationfont>(Ubuntu) .
Daisuke Aramaki
¿Por qué se crea un archivo de dispositivo de forma recursiva? Además, ¿qué pasa con el sufijo? Esto seguramente produce un error.
maxschlepzig
29

¿También has intentado lo siguiente, debería funcionar:

sudo chown <username> /dev/kvm
sudo chmod o+x /dev/kvm
nobjta_9x_tq
fuente
1
chmod o+xEs completamente inútil. El primer comando lo hace funcionar, pero vea mis otros comentarios por qué es una mala idea.
Gerd
1
Esto funciona pero no persiste un reinicio. Aunque estoy en POP OS!
Arka Prava Basu
1
Esta solución es incorrecta ya que modifica los derechos predeterminados a /dev/kvm. No es solo que no persistirá entre reinicios / actualizaciones del sistema. También modifica con fuerza la configuración del sistema. Mantente alejado.
andrzejwp
Esto no es persistente durante los reinicios. El demonio udev podría reajustar los permisos durante su tiempo de ejecución y, a otros, el bit de permiso ejecutable es simplemente superfluo.
maxschlepzig
28

Esto se debe a /dev/kvmque no es accesible. Para hacer que sea accesible desde el estudio de Android, ejecute el siguiente comando

sudo chmod 777 -R /dev/kvm

Le pedirá su contraseña. Después de eso, reinicie Android Studio.

KVMse requiere para emulador de ron. Si aún no lo ha instalado, instálelo

sudo apt install qemu-kvm
Shalauddin Ahamad Shuza
fuente
¡Esta respuesta funcionó en mi caso después de seguir la respuesta más votada! ¡Gracias!
Crono
1
No hagas eso. Vea mi respuesta arriba.
andrzejwp
@andrzejwp: ¿Qué respuesta? No veo ninguna respuesta tuya. Dado lo firme que eres sobre tu respuesta, ¿puedes vincularla ?
Dan Dascalescu
¿Por qué recursivamente ( -R) cambia los permisos en un solo archivo de dispositivo? Además, los permisos de ejecución son superfluos. Finalmente, udev puede ajustar los permisos después del inicio de cada emulador.
maxschlepzig
25
sudo chown $USER /dev/kvm

Simplemente ejecutar ese comando funcionó para mí aquí en septiembre de 2019 ejecutando:

Descripción: Ubuntu 18.04.3

Lanzamiento de LTS: 18.04

Nombre en clave: biónico

raddevus
fuente
1
No hagas eso. Vea mi respuesta arriba.
andrzejwp
1
@andrzejwp ¿Dónde está tu respuesta? ¿Está en un comentario? Si es así, probablemente esté colapsado y no puedo verlo. He buscado la etiqueta de usuario en la página, pero no puedo encontrarla. Me complace probar su respuesta, porque mi respuesta no es correcta (no persiste), pero no puedo encontrarla. Deja un enlace o crea una nueva respuesta y lo intentaré.
raddevus
Use la respuesta más votada. No uses chmod / chown.
andrzejwp
@andrzejwp: enlace a sus respuestas, en lugar de decir "arriba". ¿Qué pasa si su respuesta termina debajo de la que está comentando?
Dan Dascalescu
Esto no es persistente durante los reinicios y el demonio udev puede reajustar la propiedad /dev/kvmdurante el tiempo de ejecución.
maxschlepzig
21

Estoy usando ubuntu 18.04. Estaba enfrentando el mismo problema. Ejecuto este comando en la terminal y el problema está resuelto.

sudo chown $USER /dev/kvm

El comando anterior es para todos los usuarios presentes en su sistema.

Si desea otorgar acceso solo a un usuario específico, ejecute este comando

sudo chown UserNameHere /dev/kvm
ujjal das
fuente
1
No. Esto no es algo que debas hacer. Vea mi respuesta arriba.
andrzejwp
¿Cómo se diferencia respuesta de @raddevus' respuesta que ha escrito un mes antes?
maxschlepzig
20

Esta es una breve versión de la respuesta de Gerd.

abre la terminal y ejecuta los siguientes comandos

sudo groupadd -r kvm

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

Agregue la siguiente línea al archivo abierto y guárdelo

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

Finalmente ejecuta:

sudo usermod -a -G kvm <your_username>

Reinicie su PC y listo!

Nasir Jafarzadeh
fuente
Este es un mal consejo. Nunca edite directamente la configuración de udev en /lib/udev/rules.d. Udev tiene un mecanismo de superposición donde la configuración colocada /etc/udev/rules.dtiene prioridad sobre una disponible en /lib/udev/rules.d.
maxschlepzig
No soy un usuario profesional de Linux, es solo una solución que funcionó para mí y decido hacerlo sucinto y fácil de leer para otros como yo. Gracias por tu aclaración, Max.
Nasir Jafarzadeh
15

Contrarresté el mismo problema y para resolver este problema simplemente escriba los siguientes comandos en la terminal para clientes Linux

   sudo apt-get install qemu-kvm

    // type your password

   sudo chmod 777 -R /dev/kvm

y después de eso intente ejecutar el simulador funcionará


fuente
1
Dios no. Ver mis comentarios arriba.
andrzejwp
Instalación superflua de qemu-kvm, uso superfluo de la opción recursiva y establece superfluo el permiso ejecutivo. Tampoco es persistente durante los reinicios e incluso durante el tiempo de ejecución de udev.
maxschlepzig
13

No es absolutamente necesario instalar qemu-kvm(y todas sus dependencias) si solo desea ejecutar el emulador de Android Studio.

Lo único que tiene que hacer es darle a su usuario (es decir, con el que ha iniciado sesión) el derecho de acceder al /dev/kvmdispositivo.

Esto se hace en tres simples pasos.

Primero:

Crear el kvmgrupo

groupadd -r kvm

La opción -rcrea un grupo de sistema, es decir, con un GID <= 999 (ver /etc/login.defs=> SYS_GID_MAX)

Segundo:

Cambiar permisos en /dev/kvm. Esto podría hacerse como parte de la qemu-kvminstalación, porque una de las dependencias es la instalación qemu-system-common(en los sistemas Ubuntu actuales, el nombre del paquete puede variar), que a su vez instala el archivo que /lib/udev/rules.d/60-qemu-system-common.rulescontiene lo siguiente:

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

Entonces, si solo está creando un archivo que /etc/udev/rules.d/60-qemu-permissions.rulescontiene la línea anterior, habrá terminado con el primer paso.

Tercero:

Agregue su nombre de usuario al grupo ejecutando

usermod -a -G kvm <your_username>- Esto -aes importante para agregar su usuario al grupo kvm. Sin eso, sobrescribirá la configuración de grupo para que su usuario solo pertenezca a "kvm" ...

Eso es.

Para que la nueva regla udev y la configuración del grupo surtan efecto, es más fácil reiniciar e iniciar sesión nuevamente.

También puedes ejecutar

udevadm control --reload-rules && udevadm trigger

para volver a cargar las reglas, pero aún debe cerrar sesión y volver a iniciar sesión con respecto al nuevo grupo.

Gerd
fuente
10

Estoy usando Linux Debian, y me enfrento de la misma manera. En mi AVD que me muestra un mensaje "/ dev / kvm permiso denegado" e intenté encontrar la solución, luego lo que hago para resolverlo es, en el terminal, escriba esto:

sudo chmod -R 777 /dev/kvm

le otorgará acceso a la carpeta / dev / kvm, luego verifique nuevamente en su AVD , el mensaje de error desaparecerá, espero que ayude.

Cevin Ways
fuente
1
Esto está completamente mal. No hagas eso, nunca. Ver mis comentarios arriba.
andrzejwp
1
@andrzejwp: comentarios arriba, ¿DÓNDE?
Dan Dascalescu
La opción recursiva es superflua, los permisos de ejecución son superfluos. El cambio no es persistente durante los reinicios. El cambio no es estable durante el tiempo de ejecución de udev.
maxschlepzig
9
sudo setfacl -m u:$USER:rwx /dev/kvm

Trabajó para mi.

Ritwik
fuente
2
Mucho mejor que todos los chownejemplos aquí, pero omitiría xlos permisos.
Gerd
El cambio no es persistente durante los reinicios.
maxschlepzig
5

Solo una ligera mejora en la respuesta de Jerrin al solucionar este error con Ubuntu 18.04 al utilizar la $USERvariable disponible en el terminal bash. Entonces podría usar los siguientes comandos dos comandos:

sudo apt install qemu-kvm

Agregar el usuario actual al grupo kvm

sudo adduser $USER kvm

Además, si todavía tiene problemas, otro problema para mí fue la forma en que instalé Ubuntu. Cometí el error de marcar la casilla durante la instalación para instalar software de terceros que no funcionaba bien con mi tarjeta gráfica nvidia para el desarrollo. Así que reinstalé Ubuntu con este software de terceros sin marcar .

ingrese la descripción de la imagen aquí

Luego, después de la instalación, abra Software y actualizaciones y vaya a la pestaña Controladores adicionales. Seleccione los controladores propietarios más actualizados que también se hayan probado y aplique los cambios. Debe reiniciar la máquina para que los cambios surtan efecto.

ingrese la descripción de la imagen aquí

Andrew Steinmetz
fuente
3

Esto funcionó para mí en Linux (x18) ☑ Espero que también funcione para usted

sudo chown hp /dev/kvm
Varun Pradhan
fuente
2
No, no lo haré, y por favor no hagas eso.
andrzejwp
El cambio no es persistente durante los reinicios.
maxschlepzig
3

En Ubuntu, los permisos /dev/kvmgeneralmente se ven así:

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

El usuario que ejecuta el emulador de Android (es decir, su usuario) necesita obtener acceso a este dispositivo.

Por lo tanto, existen básicamente 2 formas de obtener acceso:

  • Asegúrese de que su usuario forme parte del grupo kvm (requiere un reinicio de sesión de su usuario después del cambio)
  • Amplíe los permisos de ese dispositivo de modo que su usuario tenga acceso (requiere un cambio en la configuración del demonio udev)

Agregar usuario al grupo KVM

Compruebe si su usuario ya forma parte del grupo kvm, por ejemplo:

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

Si no es así, agréguelo con, p.

$ sudo usermod --append --groups kvm juser

Después de ese cambio, debe cerrar sesión e iniciar sesión nuevamente para que el cambio de grupo sea efectivo (verifique nuevamente con id)

Ampliar permisos

Alternativamente, puede ampliar los permisos del /dev/kvmdispositivo.

Ejemplo:

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, este es el valor predeterminado en otras distribuciones como Fedora y CentOS.

Verifique la efectividad de los comandos anteriores con otro ls. Debería ver una salida similar también:

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

Gran ventaja: no necesita cerrar sesión y volver a iniciar sesión para que este cambio sea efectivo.

No soluciones

  • llamando chmody chowndirectamente en /dev/kvm- 1) estos cambios no son persistentes durante los reinicios y 2) dado que los /dev/kvmpermisos están controlados por el demonio udev, puede 'arreglar' sus permisos en cualquier momento, por ejemplo, después de cada ejecución del emulador
  • agregando permisos ejecutables a /dev/kvm: su emulador solo requiere permisos de lectura y escritura
  • cambiar los permisos de forma recursiva /dev/kvm, no sé qué pasa con eso, parece culto a la carga
  • instalando paquetes adicionales como qemu, ya tiene su emulador instalado, solo necesita acceder al /dev/kvmdispositivo
maxschlepzig
fuente
1

Abra la Terminal e inicie sesión como administrador

sudo su

Ir a la carpeta de desarrollo

cd /dev/

Cambiar el modo kvm

chmod 777 -R kvm
Damindu Lakmal
fuente
Creo que te refieres en cd /devlugar de sudo.
JJJ
sí, cd / dev.
Damindu Lakmal
1
Esto funciona. Pero tengo que hacer esto cada vez que la computadora se reinicia.
Lanil Marasinghe
¿Por qué llamas chmodcon -R? Cambiar de forma recursiva los permisos en un solo archivo de dispositivo /dev/kvmno parece demasiado útil. Además, los permisos de ejecución son superfluos en ese dispositivo. Finalmente, udev puede reajustar los /dev/kvmpermisos después de cada ejecución. Por lo tanto, este método no es muy efectivo.
maxschlepzig
0

Estaba en una situación similar con el mismo error de permisos en / dev / kvm. Hice las instalaciones necesarias pero no agregué el usuario al grupo kvm. Todo lo que tenía que hacer era

sudo adduser <Replace with username> kvm

y por supuesto NO olvides reiniciar tu instancia de Ubuntu.

Vineet Jain
fuente
66
¿No es suficiente cerrar sesión / iniciar sesión?
user1053510
0

Lo que finalmente me arregló en Ubuntu 18.04 fue:

sudo apt install qemu-kvm
sudo adduser $USER kvm
sudo chown $USER /dev/kvm
James Hooper
fuente
¿Cómo es su diferente respuesta de Mehedi de Abdullah respuesta ?
maxschlepzig
-1

Recibí este error después de actualizar mi ubuntu a 18.04.1. Acabo de descargar una nueva imagen del sistema para el emulador o puede decir que descargue un nuevo emulador y me funcionó.

Prashant Sharma
fuente
1
Esto no cambiará nada con respecto al problema original con los /dev/kvmpermisos.
Gerd
-1

Escriba en la terminal:

sudo apt install qemu-kvm -y
sudo chown $USER /dev/kvm
John Deer
fuente
-1

Aunque KVM es un módulo integrado en el kernel de Linux, no significa que todos los paquetes necesarios estén incluidos en su instalación de Ubuntu / Linux de manera predeterminada. Necesitará algunos para comenzar, y se pueden instalar con este comando en la terminal:

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

Configurar el puente de red

Para que sus máquinas virtuales accedan a su interfaz de red y se les asignen sus propias direcciones IP, necesitamos configurar redes en puente en nuestro sistema.

Primero, ejecute el siguiente comando de Linux para averiguar qué nombre se le ha asignado a su interfaz de red. Saber esto nos permitirá hacer una configuración adicional más adelante.

$ ip a     

Determinar el nombre de la interfaz de red

En mi caso, se llama a la interfaz de red enp2s0. El tuyo probablemente tendrá un nombre muy similar.

Para decirle a Ubuntu que queremos que se conecte nuestra conexión, necesitaremos editar el archivo de configuración de las interfaces de red. Hacer esto no afectará negativamente su conexión en absoluto. Simplemente permitirá que esa conexión se comparta con las máquinas virtuales.

Use code(Visual Studio Code) o su editor de texto favorito para abrir el siguiente archivo:

$ code /etc/network/interfaces     

Cuando abre este archivo por primera vez, puede estar vacío o contener solo un par de líneas. Se llama a su interfaz de puente br0, así que agregue la siguiente línea para que aparezca la interfaz de manera predeterminada:

auto br0    

Debajo de esta línea, agregue la siguiente línea para su interfaz de red actual (la que lo nombró determinó anteriormente).

iface enp2s0 inet manual

A continuación, puede agregar la información del puente. Estas líneas le dicen a Ubuntu que su puente usará DHCP para la asignación automática de direcciones IP, y su puente administrará su interfaz actual.

iface br0 inet dhcp
      bridge_ports enp2s0

Así es como debería verse su archivo una vez que se hayan aplicado todos los cambios (si también tiene un par de líneas que ya estaban allí, está bien tenerlas también):

Archivo de configuración de interfaces de red

Guarde sus cambios y salga del archivo.

Agrega tu usuario a los grupos

Para administrar sus máquinas virtuales sin privilegios de root, su usuario deberá pertenecer a dos grupos de usuarios. Ejecute los siguientes comandos para agregar su usuario a los grupos apropiados (reemplazando user1 con el nombre de su usuario):

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

Cuando haya terminado, debe reiniciar su sistema para asegurarse de que todos los cambios realizados en su configuración de usuario y red tengan la oportunidad de tener efecto.

snishalaka
fuente
Voto negativo: este hilo no se trata de hacer que KVM funcione. Se trata de omitir un mensaje de "permiso denegado" al iniciar el emulador empaquetado con Andoid Studio. No es necesario libvirtni es necesario configurar interfaces ...
Gerd
Si bien soy muy nuevo en el desarrollo de Android, apuesto a que hace la mayoría de estos pasos por ti. Sin embargo, le pide que instale muchos de los mismos paquetes . (Esperar que cada desarrollador de Android configure correctamente un puente está un poco en el campo izquierdo, incluso limitado a los desarrolladores de Android de Linux .)
jpaugh
-1

Para hacer un dispositivo virtual en Linux, tengo que seguir estos tres comandos y me ayuda a evitar problemas para construir dispositivos AVD. El proceso es:

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

entonces, ya está listo, reinicie Android Studio y comience a crear aplicaciones con el emulador.

Mehedi Abdullah
fuente
-4

Ejecutar el siguiente comando en Ubuntu 18.04 funcionó para mí sudo chown -R / dev / kvm

mtoto_dev
fuente
1
Primero: nunca cambie la propiedad de los archivos del sistema --- Segundo: ya /dev/kvmque un archivo -Rno tiene efecto --- Tercero: chownnecesita un new ownerargumento --- Cuarto: después de reiniciar, debe hacerlo una y otra vez.
Gerd
-9

Si abres tu ide con sudo. No vas a tener este problema.

Merve Sims
fuente
77
¿Por qué demonios necesito permisos de sudo para desarrollar una aplicación de Android?
techcraver
1
Enfatizando nuevamente: uno nunca debe hacer esto. También busque en gksu y gksudo para ejecutar aplicaciones GUI como root.
Manish Raj el