116

每当我运行 Virtualbox 时,我都无法启动 Android 模拟器映像(反之亦然)。AVD 管理器中的错误消息是

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

我怎样才能让两者同时运行?

那是一个 64 位的 Ubuntu,所有涉及的软件都是最新发布的版本。

4

14 回答 14

42

删除 kvm 内核模块(使用 'sudo rmmod kvm_intel kvm')可以同时运行 Virtualbox 和 Android 模拟器,但 Android 模拟器在这种设置中的性能非常糟糕。如果可能,最好关闭 Virtualbox 模拟器并通过运行“sudo /etc/init.d/vboxdrv stop”卸载其驱动程序(vboxdrv)。谷歌在其Android Emulator 页面上关于 Linux 的部分建议了这个“解决方案” 。

于 2014-01-31T07:32:53.110 回答
33

我遇到了同样的 VirtualBox 冲突。通过使用不同于“x86”的 ABI 解决了这个问题(在我的例子中是 armeabi-v7a)

于 2014-09-24T19:04:05.013 回答
19

我停止了使用 VirtualBox 运行的虚拟机。这使错误消失了。

于 2014-07-03T14:40:51.170 回答
5

我在 Ubuntu 13.10 上遇到了同样的问题。尝试删除 kvm 和 kvm_intel 内核模块。

去做这个:

  1. 停止所有模拟器。
  2. 运行命令:'sudo rmmod kvm_intel kvm'

如果没有这些内核模块,Virtualbox 和 Android 模拟器可以同时工作。

顺便说一句,我不知道为什么要加载模块。

于 2013-04-30T18:54:48.197 回答
5

终于有一个解决方法。

对macOS执行以下步骤:

  1. 在 Android Studio 中转到工具 -> Android -> SDK 管理器

  2. 确认您已安装最新版本的 Intel Emulator Accelerator 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. 确认您已安装最新版本的 Intel Emulator Accelerator HAXM (v6.1.1) Android Studio 中的首选项面板

  3. 转到extras首选项中显示的 Android SDK 位置的目录。就像是:

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

  4. 在该目录中有某种文件,例如intelhaxm-android.exe. 运行。

于 2017-07-14T21:30:53.057 回答
4

您还可以在模拟器设置中将 CPT/ABI 设置从 x86 更改为 arm。

于 2014-04-18T09:29:07.180 回答
4

我终于通过使用 Genymotion 而不是标准的 Android 模拟器解决了这个问题。除了没有这个冲突,它比普通模拟器快几倍。

于 2015-07-15T12:24:32.513 回答
3

另一种解决方案是使用vagrant-libvirt插件使用 libvirt 支持的 vagrant。

于 2018-11-07T07:36:54.263 回答
2

对于那些在 Linux 上开发并且被大量运行在 virtualbox 中的后端系统困住的人来说,一个简单的解决方案是简单地创建一个 virtualbox X86 Android VM,并在从 localhost 通过 PAT 隧道传输的 NAT 接口上公开 5555 端口。不需要慢臂 AVD,不需要 libvirt/vagrant,更不用说杀死 kvm!

在此处输入图像描述

然后让adb知道

$ 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

然后,在 Android Studio 中按运行或调试,将在该 VM 上部署和执行。您可以完全控制 Android Studio 调试器。

于 2021-02-23T15:17:08.357 回答
2

虽然这也是一种解决方法,但绝对比每个人都建议的禁用 KVM 更好。

只需在 KVM 中运行 virtualbox 来宾。例如kvm这里只是一个运行 a 的脚本qemu-system-x86_64 -enable-kvm

kvm Win7.vdi -boot c -m 2G -vga qxl
于 2016-10-17T11:12:59.760 回答
1

在某些情况下,我们需要保持 virtualbox 机器正常运行,因此让所有 virtualbox 机器继续运行,切换到物理移动设备来测试您的应用程序而不是模拟器。

如果您正在使用 react-native 或您真正的 android/ios 设备,则可以使用 expo。

于 2018-09-18T11:35:06.363 回答
0

这可能超出了主题,因为 OP 同时请求了 VirtualBox + KVM,但仍然可能是解决方法:我正在寻找一种在 Ubuntu 18.10 x64 上启动 Windows 7 和 AVD 的方法。关闭 KVM 不是一个选项,因为 AVD 的性能对我来说至关重要。我已经通过虚拟机管理器(virt-manager 包)安装了 Windows 7,现在 AVD 和 Windows 7 都是硬件加速的。

于 2018-12-19T10:17:30.723 回答
0

我通过安装 HAXM 6.1.2 解决了这个问题。

详情请参阅以下链接:- https://forums.docker.com/t/cant-using-docker-for-mac-with-android-emulator-haxm/8939/11

于 2017-06-06T03:25:15.163 回答
0

以下是使用vagrant解决这个问题的方法,它是两个插件“libvirt”和“mutate”:

  1. 打开终端并设置环境变量:

     export VAGRANT_DEFAULT_PROVIDER=libvirt
     export VAGRANT_HOME=/home/directoryToStoreVagrant/
     VBoxManage list vms
    
  2. 现在复制从上一个命令获得的代码,如“c1530713-aec2-4415-a6b5-b057928c7e5f”,并在以下内容中使用:

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

     vagrant init window7
     vagrant up window7 --provider=libvirt 
     vagrant box list
    
  3. 您需要安装一些 vagrant 插件,例如libvirtmutate。Mutate 会将 .box 转换为 libvirt VM:

    vagrant 插件安装 vagrant-libvirt vagrant 插件安装 vagrant-mutate

  4. 将 vagrant box 转换为 libvirt:

    vagrant mutate window7_.box libvirt

  5. 现在您可以初始化 vagrant VM。如果任何错误仍然存​​在,请编辑您的 Vagrant 文件。像我一样,我取消注释以config.vm.network开头的行 ,然后运行以下命令:

    vagrant up --provider=libvirt

这就是我能够完全摆脱这个错误的方式

于 2019-04-03T23:48:00.503 回答