Android Studio:/ dev / kvmデバイス権限が拒否されました


557

エミュレーターでAndroidアプリを実行しようとすると、次のエラーが発生します。

/ dev / kvm権限が拒否されました。

権限を確認し、現在ログインしているユーザーをkvmグループに追加しました。なにが問題ですか?

回答:


870

コメントで述べたように、Ubuntu 18.04およびLinux 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と同じようにして、を介して同じシェルに再ログインしますsu - $USER


124
インストールqemu-kvmしてユーザーをグループに追加した後、機能kvmしませんでした。しかし、コンピューターを再起動した後(Ubuntu 18.04)。
sdlins

7
ユーザーがいrootて、グループがだった場合はどうなりますかroot。そのグループを変更する必要がありますか?
マイケルフルトン

4
PCのsudo chown -R username:username / dev / kvmをオンにするたびに、これらの手順を実行する必要がありました。Thansk @ serv-incこれは正解として受け入れられるべきです。
Sajid Zeb 2018

3
このコマンドを使用して、現在のユーザーをkvmに自動的に追加できますsudo adduser $USER kvm
Munish Chandel

17
私も、ユーザーへの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

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

この回答は、最も賛成された回答をたどった後で私の場合にうまくいった!ありがとう!
Crono

1
そんなことしたらダメ。上記の私の答えを参照してください。
andrzejwp

@andrzejwp:どんな答えですか?返事はありません。あなたの答えについてあなたがどれほど厳格であるかを考えると、あなたはそれにリンクできますか?
Dan Dascalescu

-R単一のデバイスファイルの権限を再帰的に()変更するのはなぜですか?また、実行権限は不要です。最後に、udevは各エミュレータの起動後に権限を調整する場合があります。
maxschlepzig

25
sudo chown $USER /dev/kvm

この1つのコマンドを実行するだけで、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

この回答は、彼が1か月前に投稿した@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-kvmAndroid Studio Emulatorのみを実行する場合は、インストール(およびそのすべての依存関係)はまったく必要ありません。

あなたがしなければならない唯一のことは、ユーザー(つまり、あなたがログインしているユーザー)に/dev/kvm-device にアクセスする権利を与えることです。

これは、3つの簡単なステップで行われます。

最初:

- kvmグループを作成する

groupadd -r kvm

オプション-rはシステムグループを作成します。つまり、GID <= 999(/etc/login.defs=>を参照SYS_GID_MAX

第二:

の権限を変更し/dev/kvmます。これはqemu-kvm-installationの一部として実行できます。これは、依存関係の1つがインストールされているため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 permission denied」というメッセージが表示され、解決策を見つけようとしましたが、解決策はターミナルタイプで次のとおりです。

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

Ubuntu 18.04でこのエラーを修正する際のJerrinの回答を少し改善しただけ$USERで、bashターミナルで利用可能な変数を利用できます。したがって、次のコマンドを2つのコマンドで使用できます。

sudo apt install qemu-kvm

現在のユーザーをkvmグループに追加します

sudo adduser $USER kvm

それでも問題が解決しない場合、私にとってもう1つの問題は、Ubuntuのインストール方法でした。インストール中に、開発用のnvidiaグラフィックスカードでうまく機能しないサードパーティ製ソフトウェアをインストールするためのボックスをチェックするのを間違えました。そのため、このサードパーティ製ソフトウェアをオフにして Ubuntuを再インストールしました。

ここに画像の説明を入力してください

次に、インストール後、[ソフトウェアとアップデート]を開き、[追加ドライバー]タブに移動します。テスト済みで変更を適用した最新の専用ドライバーを選択します。変更を有効にするには、マシンを再起動する必要があります。

ここに画像の説明を入力してください



3

Ubuntuでは、/dev/kvm通常の権限は次のようになります。

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

Androidエミュレーターを実行するユーザー(つまり、ユーザー)は、このデバイスにアクセスする必要があります。

したがって、アクセスするには基本的に2つの方法があります。

  • ユーザーが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

devフォルダーに移動します

cd /dev/

kvmモードを変更する

chmod 777 -R kvm

cd /devsudoではなく、という意味だと思います。
JJJ

そう、cd / devです。
Damindu Lakmal

1
これは機能します。しかし、コンピュータを再起動するたびにこれを行う必要があります。
Lanil Marasinghe

なぜあなたは電話をchmod-Rますか?単一のデバイスファイルのアクセス許可を再帰的に変更して/dev/kvmも、あまり役に立ちません。また、そのデバイスでは実行権限が不要です。最後に、udevは/dev/kvm各実行後に権限を再調整する場合があります。したがって、この方法はあまり効果的ではありません。
maxschlepzig

0

/ dev / kvmで同じ権限エラーが発生する同様の状況でしたが、必要なインストールを実行しましたが、ユーザーをkvmグループに追加していませんでした。

sudo adduser <Replace with username> kvm

もちろん、Ubuntuインスタンスを再起動することを忘れないでください。


6
ログアウト/ログインが不十分ですか?
user1053510 2018年


-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 /etc/network/interfaces     

このファイルを最初に開いたときは、空であるか、数行しか含まれていない可能性があります。ブリッジインターフェースはと呼ばれるbr0ため、インターフェースがデフォルトで起動するように次の行を追加します。

auto br0    

この行の下に、現在のネットワークインターフェイス(以前に指定した名前のインターフェイス)に次の行を追加します。

iface enp2s0 inet manual

次に、ブリッジ情報を追加できます。これらの行は、ブリッジがIPアドレスの自動割り当てにDHCPを使用し、ブリッジが現在のインターフェースを管理することをUbuntuに伝えます。

iface br0 inet dhcp
      bridge_ports enp2s0

これは、すべての変更が適用された後のファイルの外観です(すでにいくつかの行がある場合は、それらも含めても問題ありません)。

ネットワークインターフェース設定ファイル

変更を保存してファイルを閉じます。

ユーザーをグループに追加します

root権限なしで仮想マシンを管理するには、ユーザーは2つのユーザーグループに属している必要があります。次のコマンドを実行して、ユーザーを適切なグループに追加します(user1をユーザーの名前に置き換えます)。

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

完了したら、システムを再起動して、ユーザーとネットワークの構成に対して行われたすべての変更が確実に有効になるようにします。


反対票:このスレッドはKVMを機能させるためのものではありません。Andoid Studioに同梱されているエミュレータを起動するときに、「許可が拒否されました」というメッセージが省略されるだけです。libvirtインターフェイスを構成する必要はありません...
Gerd

私はAndroid開発に非常に慣れていませんが、これらのステップのほとんどはあなたに任せると思います。ただし、同じパッケージの多くインストールするように求められます。(すべてのAndroid開発者が適切にブリッジを設定することを期待することは、Linuxの Android開発者にさえ限定されて、左のフィールドで少しです。)
jpaugh

-1

Linuxで仮想デバイスを作成するには、この3つのコマンドを実行する必要があります。これにより、AVDデバイスの構築に関する問題を回避できます。プロセスは次のとおりです。

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

さあ、これで準備完了です。Androidスタジオを再起動して、エミュレーターでアプリケーションの構築を開始してください。



-4

Ubuntu 18.04で以下のコマンドを実行すると、sudo chown -R / dev / kvm


1
1つ目:システムファイルの所有権を変更しない--- 2つ目:/dev/kvmファイル-Rは効果がない--- 3つ目:引数chownが必要new owner--- 4つ目:再起動後、これを何度も繰り返す必要があります。
Gerd、

-9

sudoでIDEを開く場合。この問題は発生しません。


7
Androidアプリを開発するのに、なぜsudo権限が必要なのですか?
techcraver 2018年

1
もう一度強調します。これをしてはいけません。rootとしてGUIアプリを実行するためのgksuとgksudoも調べてください。
Manish Raj
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.