Fedora20を使用してqemu-2.1.1ソースからビルドすると、root以外の権限でqemuを実行できません。
% qemu-system-x86_64 -hda vdisk.img -m 512M -netdev tap,helper=/usr/libexec/qemu-bridge-helper,id=net0 -device e1000,netdev=net0
failed to create tun device: Operation not permitted
failed to launch bridge helper
qemu-system-x86_64: -netdev tap,helper=/usr/libexec/qemu-bridge-helper,id=net0: Device 'tap' could not be initialized
Tun デバイスには適切な権限があります。
% ls -la /dev/net/tun
crw-rw-rw- 1 root root 10, 200 Sep 30 09:22 /dev/net/tun
qemu-bridge-helper には suid ビットが有効になっており、SELinux は無効になっています(「getenforce」は無効になっていることを返します)。何か抜けましたか?
答え1
これがQEMUがクッキーを破棄する方法です。読んだら文書あなたは得るでしょう:
蛇口
Tapネットワークバックエンドは、ホストシステムのTapネットワークデバイスを利用します。非常に優れたパフォーマンスを提供し、ほぼすべての種類のネットワークトポロジを生成するように設定できます。残念ながら、ホストシステムでネットワークトポロジを設定する必要があります。これは、使用しているオペレーティングシステムによって異なります。通常、root権限も必要です。
ユーザーとしてQEMUを実行すると、ネットワーク接続が簡素化されます。によるとウィキブックの記事
ネットワークオプションが指定されていない場合、QEMUはデフォルトで単一のIntel e1000 PCIカードをエミュレートし、ホストネットワークにブリッジされたユーザーモードネットワークスタックを使用します。次の3つのコマンドラインは同じです。
qemu -m 256 -hda disk.img &
qemu -m 256 -hda disk.img -net nic -net user &
qemu-system-i386 -m 256 -hda disk.img -netdev user,id=network0 -device e1000,netdev=network0 &
最新のQEMUバージョンでは、-netオプションは-netdevに置き換えられました。
ゲストオペレーティングシステムは、10.0.2.2の仮想DHCPサーバーを持つE1000 NICを確認し、10.0.2.15で始まるアドレスが割り当てられます。仮想DNSサーバーは10.0.2.3でアクセスでき、仮想SAMBAファイルサーバー(存在する場合)は10.0.2.4でアクセスできるため、SAMBAファイル共有を介してホスト上のファイルにアクセスできます。
ユーザーモードネットワーキングは、インターネットを含むネットワークリソースへのアクセスを許可するのに適しています。ただし、デフォルトではファイアウォールとして機能し、着信トラフィックを許可しません。また、TCPおよびUDP以外のプロトコルもサポートしていません。たとえば、pingやその他のICMPユーティリティは機能しません。
答え2
私はFedora 21を使用していますが、Fedora 20ではすでに利用可能です。
ブリッジ接続を確立するオプションを提供する新しい方法は次のとおりです。
qemu-system-x86_64 -hda vdisk.img -m 512M -netdev bridge,id=net0,br=qemubr0 -device e1000,netdev=net0
helper=/usr/libexec/qemu-bridge-helper を設定する必要はありません。これがデフォルトのようです。
そして、デフォルトのヘルパーを使用するときに使用したいブリッジと一緒に/etc/qemu/bridge.confファイルがあることを確認する必要があります。
allow qemubr0
答え3
次の出力を確認してください。
ls -l /dev/kvm
ユーザー権限セクションを見ると、次のようになります。ユーザーグループ
ユーザーが/ dev / kvmにアクセスできることを確認してください。
chown your_user:your_group /dev/kvm
その後、ユーザーから仮想マシンを実行できます。
答え4
マイコンピュータでは、「qemu-bridge-helper」を実行するときにユーザーIDビットを設定することで問題を解決できました。
sudo chmod u+s /usr/lib/qemu-bridge-helper
ls -la /usr/lib/qemu-bridge-helper
-rwsr-xr-x 1 root root 14336 Dez 16 15:36 /usr/lib/qemu-bridge-helper