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

flo*_*n.R 412 64-bit kvm ubuntu-14.04 android-studio-2.0 ubuntu-18.04

当我尝试在模拟器上运行我的Android应用程序时,我收到此错误:

/ dev/kvm权限被拒绝.

我检查了权限,并将我当前登录的用户添加到kvm组.怎么了?

ser*_*inc 658

正如评论中所提到的,从Ubuntu 18.04Linux Mint Tara开始,您需要先做sudo apt install qemu-kvm.

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

ls -al /dev/kvm
Run Code Online (Sandbox Code Playgroud)

用户是root该组kvm.要检查组中的用户kvm,请使用

grep kvm /etc/group
Run Code Online (Sandbox Code Playgroud)

这回来了

kvm:x:some_number:
Run Code Online (Sandbox Code Playgroud)

在我的系统上:由于决赛:中没有任何正确的内容,kvm组中没有用户.

要将用户添加grep kvm /etc/group到kvm组,您可以使用

sudo adduser $USER kvm
Run Code Online (Sandbox Code Playgroud)

这会将用户添加到组中,然后再次检查newgrp kvm.

正如@Knossos所提到的,您可能想要注销并重新登录(或重新启动),以使权限生效.


打开终端,请参阅https://askubuntu.com/questions/183775/how-do-i-open-a-terminal#183777.

查找您的用户名,请访问https://askubuntu.com/questions/333718/how-can-i-find-out-my-user-name#333832.

  • 安装`qemu-kvm`并将我的用户添加到组`kvm`后,它不起作用.但它确实在**重启**电脑(Ubuntu 18.04)之后. (80认同)
  • 我也需要向用户授予kvm的所有权:`sudo chown $ USER / dev / kvm` (6认同)
  • 如果用户是“ root”而组是“ root”,该怎么办。我们应该改变它的组吗? (4认同)
  • 如果您不想注销,请使用“newgrp kvm”,因为这将检查您的组成员身份,就像您登录时一样。 (3认同)
  • 每次打开PC时我都必须使用sudo chown -R username:username / dev / kvm这些步骤使每次都免除了我的头痛。Thansk @ serv-inc这是正确的答案。 (2认同)
  • 您可以使用此命令将当前用户自动添加到kvm`sudo adduser $ USER kvm` (2认同)
  • @MichaelFulton:在这种情况下,`sudo apt install qemu-kvm` 应该添加 `kvm` 组(编辑) (2认同)
  • 如果您不想注销或重新启动,只需按照 @IvánRodríguezTorres 的描述执行 sudo chown $USER /dev/kvm (2认同)
  • 不要 chown 它 - 最正统的方法是刷新组 - “su - $USER” 作为用户 - 然后使用命令 `id` 检查所有内容 (2认同)

Jer*_*ews 419

这就是我在Ubuntu 18.04中使用它的方法

sudo apt install qemu-kvm
Run Code Online (Sandbox Code Playgroud)

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

sudo adduser <Replace with username> kvm
Run Code Online (Sandbox Code Playgroud)

如果仍然显示权限被拒绝:

sudo chown <Replace with username> /dev/kvm
Run Code Online (Sandbox Code Playgroud)

试试吧.

  • 第2步可能需要重新启动 (10认同)
  • 用你最后的答案拯救我的一天。 (6认同)
  • 这适用于linux mint 19.很好! (4认同)
  • @JakobEriksson 它需要重新登录。重新启动是为 Windows(和 systemd 更新)保留的;-) (4认同)
  • 是的,正如 @logoff 所建议的那样,您不应该更改 /dev/kvm 的所有权,因为这样做会破坏 Linux 系统的默认 ACL,这不是一个好的安全实践。请按照以下说明操作:/sf/answers/3202430241/ (3认同)
  • 您不应该更改`/ dev / kvm /`文件夹的所有权。相反,您应该按照以下答案将用户添加到`kvm`组:/sf/answers/3202430241/ (2认同)

小智 28

试试这个,它对我有用:

  1. sudo apt install qemu-kvm

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

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

nob*_*_tq 25

你有没有尝试过,它应该工作:

sudo chown <username> /dev/kvm
sudo chmod o+x /dev/kvm
Run Code Online (Sandbox Code Playgroud)

  • 工作但需要在每次重启后重新完成. (6认同)

Jew*_*ana 24

第一步:(安装qemu-kvm)

sudo apt install qemu-kvm
Run Code Online (Sandbox Code Playgroud)

第 2 步:(使用将您的用户添加到 kvm 组)

sudo adduser username kvm
Run Code Online (Sandbox Code Playgroud)

第 3 步:(如果仍然显示权限被拒绝)

sudo chown username /dev/kvm
Run Code Online (Sandbox Code Playgroud)

最后一步:

ls -al /dev/kvm
Run Code Online (Sandbox Code Playgroud)


Sha*_*uza 23

这是因为/dev/kvm无法访问.要从android studio可以访问以下命令

sudo chmod 777 -R /dev/kvm
Run Code Online (Sandbox Code Playgroud)

它会询问您的密码.之后重启Android Studio.

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

sudo apt install qemu-kvm
Run Code Online (Sandbox Code Playgroud)


Nas*_*deh 19

这是一个简单的解决方案

打开终端并运行以下命令

sudo groupadd -r kvm
Run Code Online (Sandbox Code Playgroud)

sudo gedit /lib/udev/rules.d/60-qemu-system-common.rules
Run Code Online (Sandbox Code Playgroud)

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

内核=="kvm", GROUP="kvm", MODE="0660"

最后运行:

sudo usermod -a -G kvm <your_username>
Run Code Online (Sandbox Code Playgroud)

重新启动您的 PC 并完成!


Ger*_*erd 17

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

您唯一需要做的就是授予您的用户(即您登录的用户)访问/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"
Run Code Online (Sandbox Code Playgroud)

所以如果你只是创建一个文件 /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

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


max*_*zig 17

在 Ubuntu 下, 的权限/dev/kvm通常是这样的:

$ ls -l /dev/kvm
crw-rw---- 1 root kvm 10, 232 May 24 09:54 /dev/kvm
Run Code Online (Sandbox Code Playgroud)

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

因此,基本上有两种方法可以访问:

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

将用户添加到 KVM 组

检查您的用户是否已经是 kvm 组的一部分,例如:

$ id 
uid=1000(juser) gid=1000(juser) groups=1000(juser),10(wheel)
Run Code Online (Sandbox Code Playgroud)

如果不是,则添加它,例如:

$ sudo usermod --append --groups kvm juser
Run Code Online (Sandbox Code Playgroud)

更改后,您必须注销并再次登录以使组更改生效(再次检查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
Run Code Online (Sandbox Code Playgroud)

FWIW,这是其他发行版(如 Fedora 和 CentOS)的默认设置。

用另一个ls. 您应该会看到类似于以下内容的输出:

$ ls -l /dev/kvm
crw-rw-rw-. 1 root kvm 10, 232 2020-05-16 09:19 /dev/kvm
Run Code Online (Sandbox Code Playgroud)

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

非解决方案

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

  • 这是一个令人惊叹的解决方案,不仅*不需要*需要重新登录,而且还解释了为什么大多数其他解决方案都有不需要的步骤或存在明显的缺陷。+1! (2认同)

小智 15

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

   sudo apt-get install qemu-kvm

    // type your password

   sudo chmod 777 -R /dev/kvm
Run Code Online (Sandbox Code Playgroud)

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


小智 12

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

sudo chmod -R 777 /dev/kvm
Run Code Online (Sandbox Code Playgroud)

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


rad*_*vus 9

sudo chown $USER /dev/kvm
Run Code Online (Sandbox Code Playgroud)

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

说明:Ubuntu 18.04.3

LTS版本:18.04

代号:仿生

  • @andrzejwp 你的答案在哪里?评论里有吗?如果是的话,很可能已经塌陷了,我看不到了。我已在页面中搜索您的用户标签,但找不到。我很高兴尝试你的答案 - 因为我的答案不太正确(不持久) - 但我找不到它。留下链接或创建新答案,我会尝试。 (3认同)
  • @andrzejwp:请链接到您的答案,而不是说“以上”。如果您的答案最终低于您正在评论的答案怎么办? (3认同)

Rit*_*wik 5

sudo setfacl -m u:$USER:rwx /dev/kvm
Run Code Online (Sandbox Code Playgroud)

为我工作。

  • 比这里所有的“chown”示例要好得多,但我会从权限中省略“x”。 (2认同)

Var*_*han 5

这在Linux(x18)上为我工作☑希望它也对您有用

sudo chown hp /dev/kvm
Run Code Online (Sandbox Code Playgroud)

  • 不,不会的,请不要这样做。 (2认同)

ujj*_*das 5

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

sudo chown $USER /dev/kvm
Run Code Online (Sandbox Code Playgroud)

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

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

sudo chown UserNameHere /dev/kvm
Run Code Online (Sandbox Code Playgroud)