每当我运行 Virtualbox 时,我都无法启动 Android 模拟器映像(反之亦然)。AVD 管理器中的错误消息是
ioctl(KVM_CREATE_VM) failed: Device or resource busy
ko:failed to initialize KVM
我怎样才能让两者同时运行?
那是一个 64 位的 Ubuntu,所有涉及的软件都是最新发布的版本。
每当我运行 Virtualbox 时,我都无法启动 Android 模拟器映像(反之亦然)。AVD 管理器中的错误消息是
ioctl(KVM_CREATE_VM) failed: Device or resource busy
ko:failed to initialize KVM
我怎样才能让两者同时运行?
那是一个 64 位的 Ubuntu,所有涉及的软件都是最新发布的版本。
删除 kvm 内核模块(使用 'sudo rmmod kvm_intel kvm')可以同时运行 Virtualbox 和 Android 模拟器,但 Android 模拟器在这种设置中的性能非常糟糕。如果可能,最好关闭 Virtualbox 模拟器并通过运行“sudo /etc/init.d/vboxdrv stop”卸载其驱动程序(vboxdrv)。谷歌在其Android Emulator 页面上关于 Linux 的部分建议了这个“解决方案” 。
我遇到了同样的 VirtualBox 冲突。通过使用不同于“x86”的 ABI 解决了这个问题(在我的例子中是 armeabi-v7a)
我停止了使用 VirtualBox 运行的虚拟机。这使错误消失了。
我在 Ubuntu 13.10 上遇到了同样的问题。尝试删除 kvm 和 kvm_intel 内核模块。
去做这个:
如果没有这些内核模块,Virtualbox 和 Android 模拟器可以同时工作。
顺便说一句,我不知道为什么要加载模块。
终于有一个解决方法。
对macOS执行以下步骤:
在 Android Studio 中转到工具 -> Android -> SDK 管理器
转到extras
首选项中显示的 Android SDK 位置的目录。在 MacOS 上,您可以这样做:
open ~/Library/Android/sdk/extras
通过打开 IntelHAXM_6.1.1.dmg,然后在已安装的文件夹中打开 IntelHAXM_6.1.1.mpkg 并按照安装程序说明安装 HAXM 打包。
对于Windows,请按照以下步骤操作:
您还可以在模拟器设置中将 CPT/ABI 设置从 x86 更改为 arm。
我终于通过使用 Genymotion 而不是标准的 Android 模拟器解决了这个问题。除了没有这个冲突,它比普通模拟器快几倍。
另一种解决方案是使用vagrant-libvirt插件使用 libvirt 支持的 vagrant。
对于那些在 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 调试器。
虽然这也是一种解决方法,但绝对比每个人都建议的禁用 KVM 更好。
只需在 KVM 中运行 virtualbox 来宾。例如(kvm
这里只是一个运行 a 的脚本qemu-system-x86_64 -enable-kvm
):
kvm Win7.vdi -boot c -m 2G -vga qxl
在某些情况下,我们需要保持 virtualbox 机器正常运行,因此让所有 virtualbox 机器继续运行,切换到物理移动设备来测试您的应用程序而不是模拟器。
如果您正在使用 react-native 或您真正的 android/ios 设备,则可以使用 expo。
这可能超出了主题,因为 OP 同时请求了 VirtualBox + KVM,但仍然可能是解决方法:我正在寻找一种在 Ubuntu 18.10 x64 上启动 Windows 7 和 AVD 的方法。关闭 KVM 不是一个选项,因为 AVD 的性能对我来说至关重要。我已经通过虚拟机管理器(virt-manager 包)安装了 Windows 7,现在 AVD 和 Windows 7 都是硬件加速的。
我通过安装 HAXM 6.1.2 解决了这个问题。
详情请参阅以下链接:- https://forums.docker.com/t/cant-using-docker-for-mac-with-android-emulator-haxm/8939/11
以下是使用vagrant解决这个问题的方法,它是两个插件“libvirt”和“mutate”:
打开终端并设置环境变量:
export VAGRANT_DEFAULT_PROVIDER=libvirt
export VAGRANT_HOME=/home/directoryToStoreVagrant/
VBoxManage list vms
现在复制从上一个命令获得的代码,如“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
您需要安装一些 vagrant 插件,例如libvirt和 mutate。Mutate 会将 .box 转换为 libvirt VM:
vagrant 插件安装 vagrant-libvirt vagrant 插件安装 vagrant-mutate
将 vagrant box 转换为 libvirt:
vagrant mutate window7_.box libvirt
现在您可以初始化 vagrant VM。如果任何错误仍然存在,请编辑您的 Vagrant 文件。像我一样,我取消注释以config.vm.network开头的行 ,然后运行以下命令:
vagrant up --provider=libvirt
这就是我能够完全摆脱这个错误的方式