Fedora20에서 qemu 실행

Fedora20에서 qemu 실행

Fedora20을 사용하고 qemu-2.1.1 소스에서 빌드할 때 루트가 아닌 권한으로 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 네트워크 장치를 활용합니다. 매우 우수한 성능을 제공하며 거의 모든 유형의 네트워크 토폴로지를 생성하도록 구성할 수 있습니다. 안타깝게도 호스트 시스템에서 네트워크 토폴로지를 구성해야 하며, 이는 사용 중인 운영 체제에 따라 달라지는 경향이 있습니다.일반적으로 루트 권한도 필요합니다.

사용자로 QEMU를 실행하면 네트워크 연결이 단순화됩니다. 에 따르면위키 도서 기사

네트워크 옵션이 지정되지 않은 경우 QEMU는 기본적으로 단일 Intel e1000 PCI 카드를 에뮬레이션하고 호스트 네트워크에 브리지된 사용자 모드 네트워크 스택을 사용합니다. 다음 세 가지 명령줄은 동일합니다.

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

관련 정보