Android emulator and virtualbox cannot run at same time
Asked Answered
V

14

120

Whenever I have Virtualbox running, I cannot start an Android emulator image (and vice versa). The error message in the AVD manager is

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

How can I make both run at the same time?

That is a Ubuntu 64 bit, all involved software is of the latest released version.

Vergara answered 23/4, 2013 at 11:59 Comment(0)
S
42

Removing the kvm kernel modules (using 'sudo rmmod kvm_intel kvm') makes it possible to run the Virtualbox and the Android emulator at the same time but the performance of the Android emulator in such a setup is extremely bad. If possible it is better to shutdown the Virtualbox emulator and unload its driver (vboxdrv) by running 'sudo /etc/init.d/vboxdrv stop'. Google suggests this "solution" on its Android Emulator page in the section about Linux.

Scrutable answered 31/1, 2014 at 7:32 Comment(5)
My backend required for the app to have data runs on VirtualBox (Vagrant), so that's not a great option :PLeishmaniasis
This solution #@%!'s due to the fact that i need to run both at the same time .. my HTTPD service is in Virtual Box, while my App is in Android .. /me sighs. Guess, it's time to fire up the Dev Server again.Favored
Another option may be to use Docker instead of VirtualBox in conjunction with the Android emulator.Soothsay
Or run Vagrant with KVM.Galoshes
Thanks @MichaelHampton. I installed vagrant-libvert and it worked!Nicholle
P
33

I got the same VirtualBox conflict. Solved it by using ABI different from "x86" (armeabi-v7a in my case)

Ptomaine answered 24/9, 2014 at 19:4 Comment(7)
Much more elegant than shtting the existing VM down. Thanks.Moneyer
Saddened to hear this.Beriosova
Presumably the emulator will run slowly this way, but it is an option.Polygynous
In my case I also need the VirtualBox VM to run (for RDP), so this was a really good advice.Vizard
This answer is a bit cryptic. Could you elaborate?Nicobarese
@rudolfbyker, what the answer says is that emulators that run with CPU/ABI x86/x86_64 is a lot faster, but uses the same KVM (Kernel-based Virtual Machine) as VitualBox. Creating an emulator with another CPU, like arm64, will not conflict with VirtualBox, but emulator is a lot slower.Herbert
Could you explain, how can we implement it? Thanks.Moll
A
19

I stopped the virtual machines I had running with VirtualBox. This made the error disappear.

Arson answered 3/7, 2014 at 14:40 Comment(6)
This worked for me in Fedora 20. With bigger displays, more RAM and Gnome 3 workspaces, it's easy to forget you're running another machine somewhere in the background. killall virtualbox should do it.Subcommittee
Works but not the best solution. You can have them both (see Stanislav's answer)Moneyer
I had this issue with Ubuntu 16 while using docker machine and virtual box drivers. stopping the vms with docker-machine stop machine-name resolved the issue as suggested in this asnwerUrogenital
Turns out just shutting down VirtualBox GUI and VMs won't do the trick. In my case I had several virtualbox processes still running: VBoxSVC, VBoxNetDHCP, VBoxXPCCOMIPCD. Killing them in top/htop solved the issue.Joshia
The question was 'How can I make both run at the same time?'.Slaty
Worked for me as wellCollis
U
6

I had the same problem on Ubuntu 13.10. Try to remove kvm and kvm_intel kernel modules.

To do this:

  1. Stop all emulators.
  2. Run command: 'sudo rmmod kvm_intel kvm'

Without these kernel modules Virtualbox and Android emulators can work at the same time.

BTW, I do not know why the modules are loaded.

Undry answered 30/4, 2013 at 18:54 Comment(4)
A word of warning: while this does work, removing the KVM kernel modules will cause a substantial decrease in performance with the Intel Android image, since you lose the CPU's hardware acceleration support without the kernel modules.Diane
@Tajchert: to revert: 'sudo modprobe kvm_intel kvm'Fieldwork
x86... emulators refused to run without KVM modules. Bah.Autonomy
both drivers are neededPrickly
L
5

There is finally a fix for this.

Follow these steps for macOS:

  1. In Android Studio Go to Tools -> Android -> SDK Manager

  2. Confirm you have the latest version of Intel Emulator Accelerator HAXM installed (v6.1.1) Preferences panel in Android Studio.

  3. Go to the extras directory of the Android SDK location displayed in the preferences. On MacOS you can do this:

    open ~/Library/Android/sdk/extras

  4. Install the HAXM packing by opening IntelHAXM_6.1.1.dmg, then opening IntelHAXM_6.1.1.mpkg in the mounted folder, and following the installer instructions.

Follow these steps for Windows:

  1. In Android Studio Go to Tools -> Android -> SDK Manager

  2. Confirm you have the latest version of Intel Emulator Accelerator HAXM installed (v6.1.1) Preferences panel in Android Studio.

  3. Go to the extras directory of the Android SDK location displayed in the preferences. Something like:

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

  4. In that directory is some kind of file like intelhaxm-android.exe. Run it.

Landowska answered 14/7, 2017 at 21:30 Comment(5)
Is there also a fix for Ubuntu 16.04.3 ?Unfamiliar
HAXM doesn´t support nested virtual Machines!Myxomycete
What about KVM? How can I do the same?Illusage
This is not about nested virtual Machines. The problem in this topic is for side by side virtual machines. And it makes absolutely no sense that this shouldn't work,Workmanship
And there is no solution for Linux. Bad luck again for Linux usage. This means that i have to choose windows now as my build server.Workmanship
F
4

You also can change CPT/ABI setting from x86 to arm in emulator settings.

Farver answered 18/4, 2014 at 9:29 Comment(1)
But then the emulator is going to be slow as hell ... but at least you can run both at the same time ;)Rieth
V
4

I finally made this problem obsolete by using Genymotion instead of the standard Android emulator. Besides not having this conflict, it is several times faster than the normal emulator.

Vergara answered 15/7, 2015 at 12:24 Comment(4)
is this a free software?Sagitta
@vishnu viswanath Only for non-commercial purpose use cases. Read more here genymotion.com/legal/terms-and-conditions below "License granted: Limited". Which says: This license is granted to the end user only and exclusively in connection with personal use, the end user is an individual, and not a professional, who downloads the application for personal and private needs, excluding commercial and professional environment.Kilburn
This probably disappeared because genymotion didn't use KVM. Neither stable (because at some point they gonna start using it), nor performant solution.Underwent
Thank you for commenting out this option. I'd install Genymotion for Personal Use in Ubuntu 18.04 and I can now use my VirtualBox machines at the same time :)Forefather
L
3

Another solution is to use libvirt backed vagrant using vagrant-libvirt plugin.

Lanna answered 7/11, 2018 at 7:36 Comment(0)
D
3

For those who are developing on Linux and are stuck with a host of back-end systems running inside virtualbox, a simple solution is simply to create a virtualbox X86 Android VM and expose the 5555 port on the NAT interface tunnelled from localhost through PAT. No need for slow arm AVD, no need for libvirt/vagrant let alone killing kvm!

enter image description here

Then let adb know about it

$ adb tcpip 5555
restarting in TCP mode port: 5555
$ adb connect 127.0.0.1
connected to 127.0.0.1:5555
$ adb devices
List of devices attached adb server
* daemon started successfully
emulator-5554   device

Then, pressing run or debug, in Android Studio will deploy and execute on that VM. You have complete control under Android Studio debugger.

Deodorize answered 23/2, 2021 at 15:17 Comment(4)
The device shows up as "offline" when running adb devices :(Apiary
Connecting to "VirtWifi" in the android virtual machine (inside VirtualBox) solved the problem!Apiary
Also consider using the terminal emulator in the Android X86 VBox to edit /etc/hosts, or even install an SSHD server (user space) app on the VM.Deodorize
By far the best optionCacuminal
U
2

Though it's a workaround either, but definitely better than disabling KVM as everyone suggesting.

Just run the virtualbox guest in KVM instead. For example (kvm here is just a script running a qemu-system-x86_64 -enable-kvm):

kvm Win7.vdi -boot c -m 2G -vga qxl
Underwent answered 17/10, 2016 at 11:12 Comment(2)
This solved the problem for me, however I can't figure out how to get my virtual image to connect to the internet and for some reason the keybord mapping is all messed up..Abamp
@Abamp yeah, unfortunately configuring a network in KVM/QEMU is a big deal. Back when I wrote the answer I haven't time to get network up'n'running because after some manipulations Windows guest started falling with BSOD on start up in KVM, whilst still working in VB.Underwent
P
1

In some cases, we need to keep virtualbox machines up and running therefore let all the virtualbox machines keep running, switch to physical mobile device to test your application instead of emulator.

you can use expo if you are doing with react-native or your real android/ios device.

Perilous answered 18/9, 2018 at 11:35 Comment(0)
S
0

I resolved it by installing HAXM 6.1.2.

Please refer to the following link for details :- https://forums.docker.com/t/cant-using-docker-for-mac-with-android-emulator-haxm/8939/11

Surprisal answered 6/6, 2017 at 3:25 Comment(0)
N
0

This might be out of topic, due to the fact that OP requested VirtualBox + KVM in the same time, but still, it might be the workaround: I was looking for a way to launch Windows 7 and AVD on Ubuntu 18.10 x64. Turning off KVM is not an option due to the fact that performance of AVD is critical to me. I have installed Windows 7 via Virtual Machine Manager (virt-manager package) and now both the AVD and Windows 7 are hardware accelerated.

Noncontributory answered 19/12, 2018 at 10:17 Comment(0)
C
0

Here is how solved this issue, using vagrant and it's two plugins 'libvirt' and 'mutate':

  1. Open terminal and set environment variables:

     export VAGRANT_DEFAULT_PROVIDER=libvirt
     export VAGRANT_HOME=/home/directoryToStoreVagrant/
     VBoxManage list vms
    
  2. Now copy the a the code obtained from last command like "c1530713-aec2-4415-a6b5-b057928c7e5f" and use in the following:

    vagrant package --base c1530713-aec2-4415-a6b5-b057928c7e5f --output window7.box

     vagrant init window7
     vagrant up window7 --provider=libvirt 
     vagrant box list
    
  3. You need to install some vagrant plugins like libvirt and mutate. Mutate will convert .box to libvirt VM:

    vagrant plugin install vagrant-libvirt vagrant plugin install vagrant-mutate

  4. Converting vagrant box to libvirt:

    vagrant mutate window7_.box libvirt

  5. Now you can initialise the vagrant VM. If any error persist move to edit your Vagrant file. Like for me I uncomment the line starts with config.vm.network and then run command below:

    vagrant up --provider=libvirt

This is how I was able get rid of this error completely

Collis answered 3/4, 2019 at 23:48 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.