Android Studio:/ dev / kvm设备权限被拒绝


Answers:


868

如评论中所述,从Ubuntu 18.04Linux Mint Tara开始,您需要首先sudo apt install qemu-kvm

检查/dev/kvm使用的所有权

ls -al /dev/kvm

用户是rootkvm。要检查kvm组中有哪些用户,请使用

grep kvm /etc/group

这回来了

kvm:x:some_number:

在我的系统上:由于决赛:没有任何权利,因此该kvm组中没有用户。

要将用户添加到kvm组,可以使用

sudo adduser $USER kvm

会将用户添加到该组,然后使用再次检查grep kvm /etc/group

如@marcolz所述,该命令newgrp kvm应为您实时更改组成员身份。如果这不起作用,@ Knossos提到您可能要注销并重新登录(或重新启动),以使权限生效。或按照@nmirceac所述进行操作,然后通过再次登录同一shell su - $USER


123
安装qemu-kvm并将我的用户添加到该组后,kvm它不起作用。但是在重新启动计算机(Ubuntu 18.04)之后就可以了。
sdlins

7
如果有什么是用户root和组root。我们应该改变它的组吗?
Michael Fulton

4
每次打开PC时我都必须使用sudo chown -R username:username / dev / kvm这些步骤使每次都免除了我的头痛。Thansk @ serv-inc这是正确的答案。
萨吉德·泽布

3
您可以使用此命令自动将当前用户添加到kvmsudo adduser $USER kvm
Munish Chandel

16
我需要KVM用户的交付所有权过于: sudo chown $USER /dev/kvm
伊万·罗德里格斯·托雷斯

534

这就是我如何使其在Ubuntu 18.04中工作

sudo apt install qemu-kvm

使用以下命令将您的用户添加到kvm组:

sudo adduser <Replace with username> kvm

如果仍然显示拒绝权限

sudo chown <Replace with username> /dev/kvm

尝试一下。


2
最后的答案可以挽救我的一天。
Sathish Sundharam

14
第2步可能需要重新启动
Jakob Eriksson

10
您不应更改/dev/kvm/文件夹的所有权。相反,您应该kvm按照以下答案将用户添加到组中:stackoverflow.com/a/45749003/1213934
注销

3
@JakobEriksson需要一个才能重新登录。重新引导保留用于Windows(和systemd更新);-)
Bayou

3
是的,就像@logoff所建议的那样,您不应更改/ dev / kvm的所有权,因为这样做会破坏Linux系统的默认ACL,这不是一个好的安全做法。请遵循以下说明:stackoverflow.com/a/45749003/7206497
eVagabond

33

试试这个,对我有用:

  1. sudo apt install qemu-kvm

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


1
您可能需要重新登录才能生效。
Vadim Peretokin

6
这是有问题的,因为它将多用户系统视为单用户系统。采用这种方法时,其他用户将无法使用KVM。这是一个好主意吗?我对此表示怀疑…
arkascha

1
该解决方案是绝对错误的,因为它修改了/ dev / kvm的默认权限。不仅仅是它在重启/系统更新之间不会持续存在。它还会强行修改系统设置。远离。
andrzejwp

不要chown-将用户名添加到适当的组-kvm或libvirt。请参阅[ help.ubuntu.com/community/KVM/Installation](Ubuntu)的文档。
荒木大辅

为什么要递归锁定设备文件?另外,后缀是什么?这肯定会产生错误。
maxschlepzig

29

您是否还尝试过以下操作,它应该可以工作:

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

1
chmod o+x是完全没用的。第一个命令使其有效-但请参阅我的其他评论,以了解为什么这不是一个好主意。
Gerd

1
这可以工作,但不能持久重启。我在POP OS上!
Arka Prava Basu

1
此解决方案很明显是错误的,因为它修改了的默认权限/dev/kvm。不仅仅是它在重启/系统更新之间不会持续存在。它还会强行修改系统设置。远离。
andrzejwp

这在重新启动后并不持久。udev守护程序可能会在其运行时重新调整权限,而其他命令的可执行权限就完全多余了。
maxschlepzig

27

这是因为/dev/kvm无法访问。要使可从android studio访问,请运行以下命令

sudo chmod 777 -R /dev/kvm

它将要求您输入密码。之后,重新启动Android Studio。

KVM朗姆酒模拟器是必需的。如果尚未安装,请先安装

sudo apt install qemu-kvm

在遵循最受好评的答案之后,此答案就我而言成功了!谢谢!
克罗诺

1
不要那样做。请参阅上面的答案。
andrzejwp

@andrzejwp:什么答案?我没有收到您的任何答复。考虑到您对答案的坚定态度,可以链接到它吗?
Dan Dascalescu

为什么要递归(-R)更改单个设备文件的权限?而且,执行权限是多余的。最后,udev可以在每个仿真器启动后调整权限。
maxschlepzig

25
sudo chown $USER /dev/kvm

只需运行一个命令即可在2019年9月在我这里运行:

说明:Ubuntu 18.04.3

LTS版本:18.04

代号:仿生


1
不要那样做。请参阅上面的答案。
andrzejwp

1
@andrzejwp您的答案在哪里?在评论中吗?如果是的话,它可能已折叠,我看不到它。我已经在页面上搜索了您的用户标签,但是找不到。我很乐意尝试您的答案-因为我的答案不太正确(无法持续)-但我找不到。留下链接或创建新答案,我会尝试的。
raddevus

使用投票最高的答案。不要使用chmod / chown。
andrzejwp

@andrzejwp:请链接到您的答案,而不要说“上面”。如果您的答案最终低于您要评论的答案怎么办?
Dan Dascalescu

这在重新启动后并不持久,udev守护程序可能会/dev/kvm在其运行时重新调整其所有权。
maxschlepzig

21

我正在使用Ubuntu 18.04。我面临着同样的问题。我在终端中运行此命令,问题已解决。

sudo chown $USER /dev/kvm

上面的命令适用于系统中存在的所有用户。

如果只想授予特定用户访问权限,请运行此命令

sudo chown UserNameHere /dev/kvm

1
不,这不是您应该做的事情。请参阅上面的答案。
andrzejwp

如何从@raddevus'这样的回答不同的答案,他贴出提前一个月?
maxschlepzig

20

这是格德答案的简短版本

打开终端并运行以下命令

sudo groupadd -r kvm

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

将以下行添加到打开的文件并保存

KERNEL ==“ kvm”,GROUP =“ kvm”,MODE =“ 0660”

最后运行:

sudo usermod -a -G kvm <your_username>

重新启动PC并完成!


这是个坏建议。切勿直接在下编辑udev配置/lib/udev/rules.d。Udev具有覆盖机制,其中放置的配置/etc/udev/rules.d优先于之下的可用配置/lib/udev/rules.d
maxschlepzig

我不是Linux的专业用户,这只是对我有用的解决方案,因此我决定让它像我这样的其他人简洁明了且易于阅读。谢谢您的澄清,麦克斯。
Nasir Jafarzadeh

15

我解决了相同的问题,并且要解决此问题,只需在Linux客户端的终端中键入以下命令

   sudo apt-get install qemu-kvm

    // type your password

   sudo chmod 777 -R /dev/kvm

然后尝试运行模拟器就可以了


1
天哪 请参阅上面的评论。
andrzejwp

不必要地安装qemu-kvm,不必要地使用递归选项,并不必要地设置执行权限。在重启时甚至在udev运行期间也不持久。
maxschlepzig

13

qemu-kvm如果您只想运行Android Studio模拟器,则绝对不需要安装(及其所有依赖项)。

您唯一要做的就是赋予您的用户(即您登录时使用的用户)访问/dev/kvm-device的权限。

这可以通过三个简单的步骤完成。

第一:

创建kvm-group

groupadd -r kvm

该选项-r创建一个系统组,即GID <= 999(请参阅/etc/login.defs=> SYS_GID_MAX

第二:

更改对的权限/dev/kvm。这可以作为qemu-kvm-installation的一部分来完成,因为其中一个依赖项正在安装qemu-system-common(在当前的Ubuntu系统上,程序包名称可能会有所不同),这反过来又会安装/lib/udev/rules.d/60-qemu-system-common.rules包含以下内容的文件:

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

因此,如果仅创建/etc/udev/rules.d/60-qemu-permissions.rules包含上述行的文件,则第一步已完成。

第三:

通过执行将您的用户名添加到组中

usermod -a -G kvm <your_username>- -a对于用户添加到kvm-group 很重要。否则,您将覆盖用户的组设置,使其仅属于“ kvm” ...

而已。

为了使新的udev规则和组设置生效,最简单的方法是重新启动并再次登录。

您也可以执行

udevadm control --reload-rules && udevadm trigger

重新加载规则,但您仍然必须注销并再次登录新组。


10

我正在使用linux debian,而且我也面临同样的问题。在我的AVD中显示一条消息“ / dev / kvm权限被拒绝”,我试图找到解决方案,那么我要解决的是,在终端中键入以下命令:

sudo chmod -R 777 /dev/kvm

它将授予对/ dev / kvm文件夹的访问权限,然后再次检查您的AVD,错误消息将消失,希望对您有所帮助。


1
这是完全错误的。永远不要那样做。请参阅上面的评论。
andrzejwp

1
@andrzejwp:上面的评论在哪里?
Dan Dascalescu

递归选项是多余的,执行权限是多余的。更改在重启后无法持久保存。udev运行时更改不稳定。
maxschlepzig

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

为我工作。


2
chown这里的所有示例都要好,但是我会忽略x权限。
Gerd

更改在重启后并非持久。
maxschlepzig

5

通过利用bash终端中可用的变量,Jerrin对使用Ubuntu 18.04修复此错误答案仅作了一点改进$USER。因此,您可以使用以下命令两个命令:

sudo apt install qemu-kvm

将当前用户添加到kvm组

sudo adduser $USER kvm

另外,如果您仍然遇到问题,那么对我来说另一个问题是我安装Ubuntu的方式。我在安装过程中勾选了复选框,以安装第3方软件,但该错误与我的nvidia图形卡不能很好地兼容。因此,我未选中此第三方软件就重新安装了Ubuntu 。

在此处输入图片说明

然后在安装后,打开“软件和更新”,然后转到“其他驱动程序”选项卡。选择也经过测试的最新专有驱动程序并应用更改。应该重新启动机器以使更改生效。

在此处输入图片说明



3

在Ubuntu下,/dev/kvm通常的权限如下所示:

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

运行Android模拟器的用户(即您的用户)需要访问此设备。

因此,基本上有两种获取访问权限的方法:

  • 确保您的用户属于kvm组(更改后需要重新登录)
  • 扩展该设备的权限,以便您的用户可以访问(需要更改udev守护程序配置)

将用户添加到KVM组

检查您的用户是否已经属于kvm组,例如:

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

如果不是,则添加例如:

$ sudo usermod --append --groups kvm juser

更改之后,您必须注销并再次登录以使组更改生效(使用再次检查id)。

扩大权限

另外,您也可以扩大/dev/kvm设备的权限。

例:

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,这是其他发行版(例如Fedora和CentOS)的默认设置。

与另一个命令一起检查上述命令的有效性ls。您也应该看到类似的输出:

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

最大优势:您无需注销并再次登录即可使此更改生效。

非解决方案

  • chmodchown直接调用/dev/kvm-1)这些更改在重启后不会持久存在; 2)由于/dev/kvm权限是由udev守护程序控制的,因此它可以随时“修复”其权限,例如,在运行每个仿真器之后
  • 向其中添加可执行权限/dev/kvm-您的仿真器只需要读写权限
  • 递归地更改权限/dev/kvm-我不知道这是怎么回事-看起来像是货邪教
  • 安装诸如qemu之类的额外软件包-您已经安装了模拟器-您只需要访问/dev/kvm设备即可

1

打开终端并以管理员身份登录

sudo su

转到开发文件夹

cd /dev/

更改kvm模式

chmod 777 -R kvm

我认为您的意思cd /dev不是sudo。
JJJ

是的,cd / dev。
Damindu Lakmal

1
这可行。但是每次计算机重新启动时都必须这样做。
Lanil Marasinghe '19

你为什么叫chmod-R?递归更改单个设备文件上的权限/dev/kvm似乎不太有用。另外,在该设备上执行权限是多余的。最后,udev可以/dev/kvm在每次运行后重新调整权限。因此,这种方法不是很有效。
maxschlepzig

0

我处于类似的情况,对/ dev / kvm的权限存在相同的错误,我已经进行了必要的安装,但没有将用户添加到kvm组中,我要做的就是

sudo adduser <Replace with username> kvm

当然不要忘记重启Ubuntu实例。


6
注销/登录不够吗?
user1053510

0

最终在Ubuntu 18.04上为我解决的问题是:

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

您的答案与Mehedi Abdullah的答案有何不同?
maxschlepzig

-1

将我的ubuntu更新到18.04.1。之后,出现此错误。我只是下载模拟器的新系统映像,或者您可以说下载新模拟器,它对我有用。


1
这不会改变与/dev/kvm-permissions 原始问题有关的任何内容。
Gerd


-1

尽管KVM是Linux内核本身内置的模块,但这并不意味着默认情况下Ubuntu / Linux安装中已包含所有必需的软件包。您将需要一些入门,并且可以使用以下命令在终端中安装它们:

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

配置网桥

为了使您的虚拟机能够访问网络接口并为其分配IP地址,我们需要在系统上配置桥接网络。

首先,运行以下Linux命令,以查找网络接口已分配的名称。知道这一点将使我们以后可以进行其他配置。

$ ip a     

确定网络接口的名称

在我的情况下,网络接口称为enp2s0。您的名字可能会非常相似。

为了告诉Ubuntu我们希望桥接连接,我们需要编辑网络接口配置文件。这样做完全不会对您的连接产生负面影响。它仅允许该连接与VM共享。

使用code(Visual Studio Code)或您喜欢的文本编辑器打开以下文件:

$ code /etc/network/interfaces     

首次打开此文件时,该文件可能为空或仅包含几行。您的网桥接口称为br0,因此默认情况下添加以下行以显示该接口:

auto br0    

在此行下面,为您当前的网络接口(以下是您先前确定的名字)添加以下行。

iface enp2s0 inet manual

接下来,您可以添加网桥信息。这些行告诉Ubuntu,您的网桥将使用DHCP进行自动IP地址分配,并且您的网桥将管理您的当前接口。

iface br0 inet dhcp
      bridge_ports enp2s0

一旦应用了所有更改,这就是文件的外观(如果您已经有几行内容了,也可以进行修改):

网络接口配置文件

保存您的更改并退出文件。

将您的用户添加到组中

为了在没有root特权的情况下管理您的虚拟机,您的用户将需要属于两个用户组。运行以下命令以将您的用户添加到适当的组(将user1替换为用户名):

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

完成后,应重新启动系统,以确保对用户和网络配置所做的所有更改都可以生效。


Downvote:该线程与使KVM正常工作无关。这只是在启动与Andoid Studio一起打包的仿真器时,忽略“ permission否认”消息。不需要libvirt,也不需要配置接口...
Gerd

虽然我是Android开发的新手,但我敢打赌,它可以为您完成大多数这些步骤。它确实要求您安装许多相同的软件包。(期望每个Android开发人员正确地建立一座桥梁在左边的领域,甚至仅限于Linux Android开发人员。)
jpaugh,

-1

为了在Linux中制作虚拟设备-我必须遵循以下三个命令,它可以帮助我避免构建AVD设备的麻烦-该过程是-

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

因此,现在您可以开始运行,重新启动android studio并开始使用模拟器构建应用程序。



-4

在Ubuntu 18.04中运行以下命令对我有用sudo chown -R / dev / kvm


1
第一:永远不要更改系统文件的所有权---第二:/dev/kvm文件-R没有作用---第三:chown需要一个new owner参数---第四:重新启动后,您必须一次又一次地执行此操作。
Gerd

-9

如果您使用sudo打开您的ide。您不会遇到这个问题。


7
为什么在地球上我需要sudo权限才能开发android应用?
techcraver

1
再次强调:一个人绝对不能这样做。此外,请查看gksu和gksudo以root用户身份运行GUI应用程序。
Manish Raj
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.