【问题标题】:Android Studio: /dev/kvm device permission deniedAndroid Studio:/dev/kvm 设备权限被拒绝
【发布时间】:2016-09-15 00:15:44
【问题描述】:

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

/dev/kvm 权限被拒绝。

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

【问题讨论】:

  • 遵循这种方法并且它有效,sudo chown /dev/kvm(这是在 Ubuntu 18.04.4 LTS 上)

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


【解决方案1】:

第 1 步:(安装 qemu-kvm)

sudo apt install qemu-kvm

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

sudo adduser username kvm

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

sudo chown username /dev/kvm

最后一步:

ls -al /dev/kvm

【讨论】:

    【解决方案2】:
    1. 我试过 sudo setfacl -m u:UserName:rwx /dev/kvm 。并且有效。

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

    【讨论】:

      【解决方案3】:

      这是一个简单的解决方案

      打开终端并运行以下命令

      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>
      

      重启你的电脑就完成了!

      【讨论】:

      • 这是个坏建议。切勿直接编辑 /lib/udev/rules.d 下的 udev 配置。 Udev 有一种覆盖机制,其中/etc/udev/rules.d 中的配置优先于/lib/udev/rules.d 下的可用配置。
      • 我不是专业的 Linux 用户,这只是一个对我有用的解决方案,我决定让它简洁易读,以便像我这样的其他人阅读。谢谢你的澄清,马克斯。
      • @NasirJafarzadeh:那么为什么不编辑您的答案以在/etc/udev/rules.d 创建覆盖而不是编辑/lib/udev/rules.d?顺便说一句,这就是 Gerd 的建议。
      【解决方案4】:

      在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
      

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

      非解决方案

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

      【讨论】:

      • 一个了不起的解决方案,它不仅不需要需要重新登录,而且还解释了为什么大多数其他解决方案都有不需要的步骤或存在明显缺陷。 +1!
      【解决方案5】:

      试试这个,它对我有用:

      1. sudo apt install qemu-kvm

      2. sudo chown -R &lt;username&gt;:&lt;username&gt; /dev/kvm

      【讨论】:

      • 您可能需要重新登录才能生效。
      • 这是有问题的,因为它将多用户系统视为单用户系统。遵循此方法时,其他用户将无法使用 KVM。这是一个好主意吗?我怀疑...
      • 这个解决方案是完全错误的,因为它修改了 /dev/kvm 的默认权限。它不仅不会在重新启动/系统更新之间持续存在。它还强制修改系统设置。远离。
      • 不要使用chown - 将您的用户名添加到适当的组 - kvm 或 libvirt。请参阅 [help.ubuntu.com/community/KVM/Installation](Ubuntu). 的文档
      • 为什么要递归地chown一个设备文件?另外, 后缀是什么?这肯定会产生错误。
      【解决方案6】:

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

      sudo chmod 777 -R /dev/kvm
      

      【讨论】:

      【解决方案7】:

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

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

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

      【讨论】:

        【解决方案8】:

        虽然 KVM 是一个内置于 Linux 内核本身的模块,但这并不意味着所有必要的软件包都默认包含在您的 Ubuntu/Linux 安装中。您需要一些才能开始,并且可以在终端中使用以下命令安装它们:

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

        配置网桥

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

        首先,运行以下 Linux 命令以找出您的网络接口已分配的名称。知道这将允许我们稍后进行额外的配置。

        $ ip a     
        

        在我的例子中,网络接口被称为enp2s0。您的名称可能非常相似。

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

        使用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 打包的模拟器时省略“权限被拒绝”消息。不需要libvirt 也不需要配置接口...
        • 虽然我对 Android 开发非常陌生,但我敢打赌它会为您完成大部分这些步骤。不过,它确实要求您 install many of the same packages。 (期望每个 Android 开发者都能正确架起一座桥有点偏左,甚至仅限于 Linux Android 开发者。)
        【解决方案9】:

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

        要检查/dev/kvm 的所有权,请使用

        ls -al /dev/kvm
        

        用户是root,组kvm。要检查哪些用户在 kvm 组中,请使用

        grep kvm /etc/group
        

        返回

        kvm:x:some_number:
        

        在我的系统上:由于最后的: 右侧没有任何内容,因此kvm 组中没有用户。

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

        sudo adduser $USER kvm
        

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

        正如@marcolz 所提到的,命令newgrp kvm 应该会为您实时更改组成员身份。如果这不起作用,@Knossos 提到您可能需要注销并重新登录(或重新启动),以使权限生效。或者像@nmirceac mentioned 那样做,然后通过su - $USER 在同一个shell 中重新登录。

        【讨论】:

        • 安装 qemu-kvm 并将我的用户添加到组 kvm 后,它不起作用。但它在重新启动计算机(Ubuntu 18.04)之后发生了。
        • 如果用户是root,组是root。我们应该改变它的组吗?
        • 我每次打开电脑时都必须这样做 sudo chown -R username:username /dev/kvm 这些步骤让我每次都头疼。谢谢@serv-inc 这应该被接受为正确答案。
        • 您可以使用该命令自动将当前用户添加到kvm sudo adduser $USER kvm
        • 我也需要将 kvm 的所有权授予用户:sudo chown $USER /dev/kvm
        【解决方案10】:

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

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

        【讨论】:

        • 您的回答与 Mehedi Abdullah 的 answer 有何不同?
        【解决方案11】:

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

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

        只需三个简单的步骤即可完成。

        第一:

        创建kvm-组

        groupadd -r kvm

        -r 选项创建一个系统组,即 GID /etc/login.defs => SYS_GID_MAX

        第二:

        更改/dev/kvm 的权限。这可以作为 qemu-kvm 安装的一部分来完成,因为其中一个依赖项是安装 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 &lt;your_username&gt; - -a 对于添加您的用户到 kvm 组很重要。否则,您会将用户的组设置覆盖为仅属于“kvm”...

        就是这样。

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

        你也可以执行

        udevadm control --reload-rules &amp;&amp; udevadm trigger

        用于重新加载规则,但对于新组,您仍然需要注销并再次登录。

        【讨论】:

        • 顺便说一句,+1 指出安装 qemu-kvm 对于 Android Studio 完全没有必要这是最好的答案
        【解决方案12】:

        我使用的是 ubuntu 18.04。我面临着同样的问题。我在终端运行这条命令,问题就解决了。

        sudo chown $USER /dev/kvm
        

        上述命令适用于您系统中的所有用户。

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

        sudo chown UserNameHere /dev/kvm
        

        【讨论】:

        • 没有。这不是你应该做的事情。见我上面的回答。
        • 这个答案与他一个月前发布的@raddevus 的answer 有何不同?
        【解决方案13】:
        sudo chown $USER /dev/kvm
        

        在 2019 年 9 月在这里运行的一个命令对我有用:

        描述:Ubuntu 18.04.3

        LTS 版本:18.04

        代号:仿生

        【讨论】:

        • 不要那样做。见我上面的回答。
        • @andrzejwp 你的答案在哪里?是在评论里吗?如果是的话,它可能已经崩溃了,我看不到它。我已经在页面上搜索了您的用户标签,但找不到。我很高兴尝试您的答案——因为我的答案不太正确(不会持续存在)——但我找不到它。留下一个链接或创建一个新的答案,我会试试看。
        • @andrzejwp:请链接到您的答案,而不是说“以上”。如果您的答案最终低于您评论的答案怎么办?
        • 这不会在重新启动后持续存在,并且 udev 守护程序可能会在其运行时重新调整 /dev/kvm 的所有权。
        【解决方案14】:

        通过利用 bash 终端中可用的 $USER 变量在 Ubuntu 18.04 上修复此错误的答案仅对 Jerrin's 答案略有改进。所以你可以使用以下命令两个命令:

        sudo apt install qemu-kvm
        

        将当前用户加入kvm组

        sudo adduser $USER kvm
        

        另外,如果您仍然遇到问题,对我来说另一个问题是我安装 Ubuntu 的方式。我在安装过程中错误地选中了该框以安装第 3 方软件,该软件在我的 nvidia 显卡上无法很好地进行开发。所以我用这个第三方软件重新安装了 Ubuntuunchecked

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

        【讨论】:

          【解决方案15】:

          在终端输入:

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

          【讨论】:

            【解决方案16】:

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

            sudo chown hp /dev/kvm
            

            【讨论】:

            • 不,不会,请不要那样做。
            • 重启后更改不会持久。
            【解决方案17】:

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

            sudo chmod -R 777 /dev/kvm
            

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

            【讨论】:

            • 这是完全错误的。永远不要那样做。请参阅上面的我的 cmets。
            • @andrzejwp:上面的cmets,在哪里?!
            • 递归选项是多余的,执行权限是多余的。重新启动后更改不会持久。在 udev 运行时更改不稳定。
            【解决方案18】:

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

            sudo su
            

            转到开发文件夹

            cd /dev/
            

            改变kvm模式

            chmod 777 -R kvm
            

            【讨论】:

            • 我认为您的意思是 cd /dev 而不是 sudo。
            • 是的,cd /dev。
            • 这行得通。但每次计算机重启时都必须这样做。
            • 你为什么用-R打电话给chmod?递归更改单个设备文件/dev/kvm 的权限看起来不太有用。此外,在该设备上执行权限是多余的。最后,udev 可能会在每次运行后重新调整/dev/kvm 权限。因此,这种方法不是很有效。
            【解决方案19】:

            我遇到了同样的问题,要解决这个问题,只需在 Linux 客户端的终端中键入以下命令

               sudo apt-get install qemu-kvm
            
                // type your password
            
               sudo chmod 777 -R /dev/kvm
            

            然后尝试运行模拟器,它会工作

            【讨论】:

            • 上帝,不。请参阅上面的我的 cmets。
            • qemu-kvm 的多余安装,递归选项的多余使用,以及多余的设置执行权限。在重新启动时甚至在 udev 运行期间也是非持久性的。
            【解决方案20】:
            sudo setfacl -m u:$USER:rwx /dev/kvm
            

            为我工作。

            【讨论】:

            • 比这里的所有chown 示例都要好,但我会从权限中省略x
            • 更改不会在重新启动后持续存在。
            【解决方案21】:

            这是因为/dev/kvm 不可访问。可以从 android studio 访问 make 运行以下命令

            sudo chmod 777 -R /dev/kvm
            

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

            朗姆酒模拟器需要KVM。如果你还没有安装,那就安装吧

            sudo apt install qemu-kvm
            

            【讨论】:

            • 这个答案在我的情况下起到了作用,因为我遵循了最受好评的答案!谢谢!
            • 不要那样做。见我上面的回答。
            • @andrzejwp:什么答案?我没有看到你的任何回答。鉴于您对自己的回答非常坚定,您能否链接到它
            • 为什么要递归(-R)更改单个设备文件的权限?此外,执行权限是多余的。最后,udev 可能会在每次模拟器启动后调整权限。
            【解决方案22】:

            这就是我让它在 Ubuntu 18.04

            中工作的方式
            sudo apt install qemu-kvm
            

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

            sudo adduser <Replace with username> kvm
            

            如果仍然显示permission denied

            sudo chown <Replace with username> /dev/kvm
            

            试试看。

            【讨论】:

            • 用你最后的回答来拯救我的一天。
            • 第 2 步可能需要重新启动
            • 您不应更改/dev/kvm/ 文件夹的所有权。相反,您应该将用户添加到 kvm 组,如以下答案所示:stackoverflow.com/a/45749003/1213934
            • @JakobEriksson 需要重新登录。重新启动是为 Windows(和 systemd 更新)保留的;-)
            • 是的,正如@logoff 所建议的那样,您不应该更改/dev/kvm 的所有权,因为这样做会破坏Linux 系统的默认ACL,这不是一个好的安全做法。请按照以下说明操作:stackoverflow.com/a/45749003/7206497
            【解决方案23】:

            如果你用 sudo 打开你的 ide。你不会有这个问题。

            【讨论】:

            • 为什么我需要 sudo 权限来开发安卓应用程序?
            • 再次强调:绝不能这样做。还要查看 gksu 和 gksudo 以作为 root 运行 GUI 应用程序。
            【解决方案24】:

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

            【讨论】:

            • 这不会改变/dev/kvm-permissions 的原始问题。
            【解决方案25】:

            我遇到了类似的情况,在 /dev/kvm 上存在相同的权限错误 我已经完成了必要的安装,但没有将用户添加到 kvm 组 我所要做的就是

            sudo adduser <Replace with username> kvm
            

            当然不要忘记重新启动您的 Ubuntu 实例。

            【讨论】:

            • 登出/登录还不够吗?
            【解决方案26】:

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

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

            【讨论】:

            • chmod o+x 完全没用。第一个命令使它工作 - 但看看我的其他 cmets 为什么这是一个坏主意。
            • 这可行,但不会持续重启。不过我在 POP OS 上!
            • 这个解决方案是错误的,因为它将默认权限修改为/dev/kvm。它不仅不会在重新启动/系统更新之间持续存在。它还强制修改系统设置。远离。
            • 这不会在重新启动后持续存在。 udev 守护进程可能会在其运行时重新调整权限,而给予其他人可执行权限位只是多余的。
            【解决方案27】:

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

            【讨论】:

            • 第一:永远不要改变系统文件的所有权——第二:因为/dev/kvm是一个文件-R没有效果——第三:chown需要一个new owner参数—— - 第四:重启后你必须一次又一次地这样做。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-08-06
            • 1970-01-01
            • 1970-01-01
            • 2022-06-22
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多