Android 에뮬레이터와 Virtualbox는 동시에 실행할 수 없습니다.


104

Virtualbox를 실행할 때마다 Android 에뮬레이터 이미지를 시작할 수 없으며 그 반대도 마찬가지입니다. AVD 관리자의 오류 메시지는 다음과 같습니다.

ioctl(KVM_CREATE_VM) failed: Device or resource busy
ko:failed to initialize KVM

두 가지를 동시에 실행하려면 어떻게해야합니까?

이는 Ubuntu 64 비트이며 모든 관련 소프트웨어는 최신 릴리스 버전입니다.

답변:


40

kvm 커널 모듈을 제거하면 ( 'sudo rmmod kvm_intel kvm'사용) Virtualbox와 Android 에뮬레이터를 동시에 실행할 수 있지만 이러한 설정에서 Android 에뮬레이터의 성능이 매우 나쁩니다. 가능하면 'sudo /etc/init.d/vboxdrv stop'을 실행하여 Virtualbox 에뮬레이터를 종료하고 드라이버 (vboxdrv)를 언로드하는 것이 좋습니다. Google은 Linux 관련 섹션 의 Android Emulator 페이지 에서이 "솔루션"을 제안합니다 .


9
내 백엔드는 앱이 VirtualBox (Vagrant)에서 데이터를 실행하는 데 필요하므로 좋은 옵션이 아닙니다. P
Richard de Wit

4
이 솔루션 # @ %!는 두 가지를 동시에 실행해야한다는 사실 때문입니다. 내 HTTPD 서비스는 Virtual Box에 있고 내 앱은 Android에 있습니다. / me 한숨 쉬고 있습니다. 이제 Dev Server를 다시 시작할 때입니다.
E Net Arch

1
또 다른 옵션은 Android 에뮬레이터와 함께 VirtualBox 대신 Docker를 사용하는 것입니다.
Matt Welke

1
또는 KVM으로 Vagrant를 실행하십시오.
Michael Hampton

감사합니다 @MichaelHampton. vagrant-libvert를 설치 했고 작동했습니다!
jchook

30

동일한 VirtualBox 충돌이 발생했습니다. "x86"(제 경우에는 armeabi-v7a)과 다른 ABI를 사용하여 해결했습니다.


기존 VM을 종료하는 것보다 훨씬 더 우아합니다. 감사.
MonoThreaded 2015

2
이것을 듣고 슬펐다.
MatBee

아마도 에뮬레이터는 이런 식으로 느리게 실행되지만 옵션입니다.
ToolmakerSteve

제 경우에는 (RDP 용) 실행을 위해 VirtualBox VM도 필요하므로 이것은 정말 좋은 조언이었습니다.
Csaba Toth

2
@rudolfbyker, 대답은 CPU / ABI x86 / x86_64로 실행되는 에뮬레이터가 훨씬 빠르지 만 VitualBox와 동일한 KVM (커널 기반 가상 머신)을 사용한다는 것입니다. , arm64처럼, 버추얼와 충돌을 다른 CPU와 에뮬레이터를하지 않습니다 만들기,하지만 에뮬레이터는 많이 느린.
jayeffkay

16

VirtualBox로 실행하던 가상 머신을 중지했습니다. 이로 인해 오류가 사라졌습니다.


이것은 Fedora 20에서 저에게 효과적이었습니다. 더 큰 디스플레이, 더 많은 RAM 및 Gnome 3 작업 공간으로 인해 백그라운드 어딘가에서 다른 컴퓨터를 실행하고 있다는 사실을 잊기 쉽습니다. killall virtualbox해야합니다.
Ray Foss 2015 년

작동하지만 최상의 솔루션은 아닙니다. 둘 다 가질 수 있습니다 (Stanislav의 답변 참조)
MonoThreaded

도커 머신과 가상 박스 드라이버를 사용하는 동안 Ubuntu 16에서이 문제가 발생했습니다. 와 VM의 중단 docker-machine stop machine-name이 asnwer에 제안하여 문제 해결
벤자민 Slabbert

VirtualBox GUI를 종료하고 VM은 트릭을 수행하지 않습니다. 제 경우에는 VBoxSVC, VBoxNetDHCP, VBoxXPCCOMIPCD와 같은 여러 가상 상자 프로세스가 여전히 실행 중입니다. top / htop에서 그들을 죽이면 문제가 해결되었습니다.
Babken의 Vardanyan

질문은 '어떻게 두 가지를 동시에 실행할 수 있습니까?'였습니다.
Stephen M -on strike- 2018 년

5

Ubuntu 13.10에서 동일한 문제가 발생했습니다. kvm 및 kvm_intel 커널 모듈을 제거하십시오.

이것을하기 위해:

  1. 모든 에뮬레이터를 중지하십시오.
  2. 실행 명령 : 'sudo rmmod kvm_intel kvm'

이러한 커널 모듈이 없으면 Virtualbox와 Android 에뮬레이터가 동시에 작동 할 수 있습니다.

BTW, 모듈이로드 된 이유를 모르겠습니다.


16
경고 : 이것이 작동하는 동안 KVM 커널 모듈을 제거하면 커널 모듈이 없으면 CPU의 하드웨어 가속 지원이 손실되므로 Intel Android 이미지의 성능이 크게 저하됩니다.
JustJohn

1
@Tajchert : 되돌리기에 'sudo는 modprobe를 kvm_intel KVM'
Splitlocked

x86 ... 에뮬레이터는 KVM 모듈없이 실행을 거부했습니다. 바.
Martlark

드라이버 모두가 필요
user1121055

5

마침내 이것에 대한 수정이 있습니다.

macOS의 경우 다음 단계를 따르십시오 .

  1. Android Studio에서 도구-> Android-> SDK 관리자로 이동합니다.

  2. 최신 버전의 인텔 에뮬레이터 가속기 HAXM (v6.1.1)이 설치되어 있는지 확인합니다 Android Studio의 환경 설정 패널.

  3. extras환경 설정에 표시된 Android SDK 위치 의 디렉토리로 이동하십시오 . MacOS에서는 다음을 수행 할 수 있습니다.

    open ~/Library/Android/sdk/extras

  4. IntelHAXM_6.1.1.dmg를 연 다음 탑재 된 폴더에서 IntelHAXM_6.1.1.mpkg를 열고 설치 지침에 따라 HAXM 패킹을 설치합니다.

Windows의 경우 다음 단계를 따르십시오 .

  1. Android Studio에서 도구-> Android-> SDK 관리자로 이동합니다.

  2. 최신 버전의 인텔 에뮬레이터 가속기 HAXM (v6.1.1)이 설치되어 있는지 확인합니다 Android Studio의 환경 설정 패널.

  3. extras환경 설정에 표시된 Android SDK 위치 의 디렉토리로 이동하십시오 . 다음과 같은 것 :

    C:\Users\<username>\AppData\Local\Android\sdk\extras

  4. 그 디렉토리에는 intelhaxm-android.exe. 그것을 실행하십시오.


2
Ubuntu 16.04.3에 대한 수정 사항도 있습니까?
샌더스

HAXM은 중첩 된 가상 머신을 지원하지 않습니다!
Jorgesys 2017

KVM은 어떻습니까? 어떻게해야하나요?
Vadim Kotov

이것은 중첩 된 가상 머신에 관한 것이 아닙니다. 이 항목의 문제는 병렬 가상 머신에 대한 것입니다. 그리고이 작동하지 않을 것을 전혀 이해되지 않는다
로타

그리고 Linux를위한 솔루션은 없습니다. Linux 사용에 다시 불운. 즉, 이제 빌드 서버로 Windows를 선택해야합니다.
Lothar

4

에뮬레이터 설정에서 CPT / ABI 설정을 x86에서 arm으로 변경할 수도 있습니다.


2
그러나 에뮬레이터는 지옥처럼 느려질 것입니다 ...하지만 적어도 동시에 둘 다 실행할 수 있습니다;)
biophonc

4

마침내 표준 Android 에뮬레이터 대신 Genymotion을 사용하여이 문제를 쓸모 없게 만들었습니다. 이 충돌이없는 것 외에도 일반 에뮬레이터보다 몇 배 더 빠릅니다.


이것은 무료 소프트웨어입니까?
vishnu viswanath

@vishnu viswanath 비상업적 인 용도로만 사용합니다. 자세한 내용은 여기에서 "라이선스 부여 : 제한됨"아래 에서 genymotion.com/legal/terms-and-conditions를 참조 하십시오 . 즉,이 라이선스는 개인 사용과 관련하여 독점적으로 최종 사용자에게만 부여되며, 최종 사용자는 개인이 아닌 개인이며 상업적 및 전문적인 환경을 제외한 개인 및 개인 요구를 위해 응용 프로그램을 다운로드합니다.
mykolaj

1
이것은 아마도 genymotion이 KVM을 사용하지 않았기 때문에 사라 졌을 것입니다. 안정되지도 않고 (언젠가는 사용하기 시작하기 때문에) 성능이 뛰어난 솔루션도 아닙니다.
하이 천사

이 옵션에 대해 의견을 보내 주셔서 감사합니다. 나는 우분투 18.04에서 개인용으로 Genymotion을 설치하고 이제 내 VirtualBox 머신을 동시에 사용할 수 있습니다
.


2

해결 방법이지만 모든 사람이 제안한 것처럼 KVM을 비활성화하는 것보다 확실히 낫습니다.

대신 KVM에서 virtualbox 게스트를 실행하십시오. 예를 들어 ( kvm여기를 실행하는 스크립트가 있습니다 qemu-system-x86_64 -enable-kvm) :

kvm Win7.vdi -boot c -m 2G -vga qxl

이것으로 문제가 해결되었지만 가상 이미지를 인터넷에 연결하는 방법을 알 수 없으며 어떤 이유로
키보드

@MikeSchem 예, 불행히도 KVM / QEMU에서 네트워크를 구성하는 것은 큰 문제입니다. 내가 대답을 썼을 때 나는 일부 조작 후 Windows 게스트가 KVM에서 시작될 때 BSOD로 떨어지기 시작했지만 VB에서 계속 작동하기 때문에 네트워크를 실행할 시간이 없었습니다.
Hi-Angel


1

어떤 경우에는 virtualbox 머신을 계속 실행해야하므로 모든 virtualbox 머신이 계속 실행되도록하고 에뮬레이터 대신 애플리케이션을 테스트하기 위해 물리적 모바일 장치로 전환해야합니다.

react-native 또는 실제 Android / ios 기기로 작업하는 경우 expo를 사용할 수 있습니다.


0

OP가 VirtualBox + KVM을 동시에 요청했기 때문에 이것은 주제에서 벗어 났을 수 있지만 여전히 해결 방법 일 수 있습니다. Ubuntu 18.10 x64에서 Windows 7 및 AVD를 시작하는 방법을 찾고있었습니다. KVM을 끄는 것은 AVD의 성능이 나에게 중요하기 때문에 옵션이 아닙니다. Virtual Machine Manager (virt-manager 패키지)를 통해 Windows 7을 설치했으며 이제 AVD와 Windows 7 모두 하드웨어 가속입니다.


0

다음은 vagrant를 사용하여이 문제를 해결 한 방법 이며 두 개의 플러그인 'libvirt'와 'mutate'입니다.

  1. 터미널을 열고 환경 변수를 설정합니다.

     export VAGRANT_DEFAULT_PROVIDER=libvirt
     export VAGRANT_HOME=/home/directoryToStoreVagrant/
     VBoxManage list vms
    
  2. 이제 "c1530713-aec2-4415-a6b5-b057928c7e5f"와 같은 마지막 명령에서 얻은 코드를 복사하고 다음에서 사용합니다.

    방랑 패키지 --base c1530713-aec2-4415-a6b5-b057928c7e5f --output window7.box

     vagrant init window7
     vagrant up window7 --provider=libvirt 
     vagrant box list
    
  3. libvirtmutate 와 같은 일부 방랑 플러그인을 설치해야합니다 . Mutate는 .box를 libvirt VM으로 변환합니다.

    vagrant 플러그인 설치 vagrant-libvirt vagrant 플러그인 설치 vagrant-mutate

  4. 방랑 상자를 libvirt로 변환 :

    vagrant mutate window7_.box libvirt

  5. 이제 방랑 VM을 초기화 할 수 있습니다. 오류가 계속되면 Vagrant 파일을 편집하십시오. 나처럼 config.vm.network로 시작하는 줄의 주석 처리를 제거한 다음 아래 명령을 실행합니다.

    vagrant up --provider=libvirt

이것이 제가이 오류를 완전히 없앨 수 있었던 방법입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.