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

时间:2016-05-18 13:16:50

标签: 64-bit ubuntu-14.04 kvm android-studio-2.0 ubuntu-18.04

当我尝试在模拟器上运行我的Android应用时出现此错误:

  

/ dev / kvm权限被拒绝。

我检查了权限,并将我当前登录的用户添加到kvm组。有什么问题?

26 个答案:

答案 0 :(得分:479)

如评论中所述,从 Ubuntu 18.04 Linux Mint Tara 开始,您需要先/dev/kvm

检查ls -al /dev/kvm 使用

的所有权
root

用户为kvm,群组为kvm。要检查grep kvm /etc/group 组中的用户,请使用

kvm:x:some_number:

此返回

:

在我的系统上:由于最终kvm没有任何正确的内容,sudo adduser $USER kvm 组中没有用户。

将您的用户添加到kvm群组,您可以使用

grep kvm /etc/group

将用户添加到组中,然后使用using (SPWeb web = SPContext.Current.Web) { SPList list = web.Lists["list"]; string title = "line for search"; SPListItemCollection items = list.GetItems(new SPQuery() { Query = @"<Where><Eq><FieldRef Name='Title' /><Value Type='Text'>" + title + "</Value></Eq></Where>" }); if (items.Count > 0) { mygrid.DataSource = items.GetDataTable(); mygrid.DataBind(); } } 再次检查。

如@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

答案 1 :(得分:309)

这就是我如何在 Ubuntu 18.04

中使用它的方法
sudo apt install qemu-kvm

使用以下方式将您的用户添加到kvm组:

sudo adduser <Replace with username> kvm

如果仍然显示权限被拒绝

sudo chown <Replace with username> /dev/kvm

尝试一下。

答案 2 :(得分:24)

试试这个,它对我有用:

  1. sudo apt install qemu-kvm

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

答案 3 :(得分:21)

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

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

答案 4 :(得分:13)

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

sudo chmod 777 -R /dev/kvm

它将询问您的密码。之后,重新启动Android Studio。

朗姆模拟器需要

KVM。如果尚未安装,请先安装

sudo apt install qemu-kvm

答案 5 :(得分:13)

sudo chown $USER /dev/kvm

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

  

说明:Ubuntu 18.04.3

     

LTS发行版:18.04

     

代号:仿生

答案 6 :(得分:12)

在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(juser),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

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

非解决方案

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

答案 7 :(得分:7)

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

sudo chown $USER /dev/kvm

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

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

sudo chown UserNameHere /dev/kvm

答案 8 :(得分:7)

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

   sudo apt-get install qemu-kvm

    // type your password

   sudo chmod 777 -R /dev/kvm

然后尝试运行模拟器即可

答案 9 :(得分:5)

步骤1:(安装qemu-kvm)

sudo apt install qemu-kvm

步骤2:((使用将该用户添加到kvm组)

sudo adduser username kvm

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

sudo chown username /dev/kvm

最后一步:

ls -al /dev/kvm

答案 10 :(得分:5)

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

sudo chmod -R 777 /dev/kvm

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

答案 11 :(得分:5)

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

为我工作。

答案 12 :(得分:4)

最终在Ubuntu 18.04上为我修复的问题是:

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

答案 13 :(得分:3)

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

sudo su

转到dev文件夹

cd /dev/

更改kvm模式

chmod 777 -R kvm

答案 14 :(得分:3)

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

您唯一要做的就是授予您的用户(即您登录的用户)访问/dev/kvm设备的权限。

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

第一:

创建kvm

groupadd -r kvm

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

第二:

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

/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>对于将用户添加到kvm-group很重要。否则,您将覆盖用户的组设置,使其仅属于“ kvm” ...

就是这样。

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

您也可以执行

-a

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

答案 15 :(得分:2)

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

sudo chown hp /dev/kvm

答案 16 :(得分:2)

通过利用bash终端中可用的CREATE TABLE ...变量来解决Ubuntu 18.04上的错误,对Jerrin's的回答仅作了一点改进。因此,您可以使用以下命令两个命令:

$USER

将当前用户添加到kvm组

sudo apt install qemu-kvm

如果您仍然遇到问题,那么对我来说另一个问题是我安装Ubuntu的方式。我在安装过程中在选中复选框时安装了第3方软件,但该错误与我的nvidia图形卡配合使用时效果不佳。因此,我使用此第三方软件未选中重新安装了Ubuntu。

enter image description here

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

enter image description here

答案 17 :(得分:1)

将ubuntu更新为18.04.1。后,出现此错误。我只是下载了用于模拟器的新系统映像,或者您可以说下载新的模拟器并为我工作。

答案 18 :(得分:1)

这是 Gerd's 答案的简短版本

打开终端并运行以下命令

sudo groupadd -r kvm

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

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

  

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

最后运行:

usermod -a -G kvm <your_username>

重新启动PC并完成!

答案 19 :(得分:0)

输入终端

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

答案 20 :(得分:0)

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

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

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

答案 21 :(得分:0)

我处于类似的情况,对/ dev / kvm的权限存在相同的错误 我已完成必要的安装,但未将用户添加到kvm组 我要做的就是

sudo adduser <Replace with username> kvm

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

答案 22 :(得分:0)

  1. 我尝试了sudo setfacl -m u:UserName:rwx /dev/kvm。而且有效。

  2. 在android studio中,您需要更改:工具> avd管理器>(选择笔以编辑设备,并将“图形”从自动更改为软件),以避免模拟器可绘制错误

答案 23 :(得分:-1)

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

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

配置网桥

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

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

$ ip a     

Determine name of network interface

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

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

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

$ code /etc/network/interfaces     

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

auto br0    

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

iface enp2s0 inet manual

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

iface br0 inet dhcp
      bridge_ports enp2s0

应用所有更改后,文件的外观应如下所示(如果您已经有几行内容了,那么也行):

Network interfaces configuation file

保存更改并退出文件。

将您的用户添加到组中

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

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

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

答案 24 :(得分:-1)

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

答案 25 :(得分:-3)

使用此命令提供适当的权限

sudo chmod 777 -R /dev/kvm