【问题标题】:Android emulator and virtualbox cannot run at same timeAndroid模拟器和virtualbox不能同时运行
【发布时间】:2013-04-16 15:14:43
【问题描述】:

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

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

如何让两者同时运行?

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

【问题讨论】:

    标签: android-emulator virtualbox kvm


    【解决方案1】:

    对于那些在 Linux 上开发并被许多在 virtualbox 中运行的后端系统困住的人来说,一个简单的解决方案是创建一个 virtualbox X86 Android VM,并在从 localhost 通过隧道连接的 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 调试器。

    【讨论】:

    • 设备在运行adb devices时显示为“离线” :(
    • 在安卓虚拟机(在VirtualBox里面)连接到“VirtWifi”解决了这个问题!
    • 还可以考虑使用Android X86 VBox中的终端模拟器来编辑/etc/hosts,甚至在VM上安装SSHD服务器(用户空间)应用。
    【解决方案2】:

    以下是解决此问题的方法,使用 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 --输出window7.box

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

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

    4. 将 vagrant box 转换为 libvirt:

      vagrant mutate window7_.box libvirt

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

      vagrant up --provider=libvirt

    这就是我完全摆脱这个错误的方法

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

            【解决方案6】:

            终于有办法解决这个问题了。

            对于 macOS,请按照以下步骤操作:

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

            2. 确认您已安装最新版本的 Intel Emulator Accelerator HAXM (v6.1.1)

            3. 转到首选项中显示的 Android SDK 位置的 extras 目录。在 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)

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

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

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

            【讨论】:

            • 是否还有针对 Ubuntu 16.04.3 的修复?
            • HAXM 不支持嵌套虚拟机!
            • KVM 怎么样?我该怎么做?
            • 这与嵌套虚拟机无关。本主题中的问题是针对并行虚拟机的。这完全没有意义,这不应该工作,
            • 而且Linux没有解决方案。再次为 Linux 使用带来厄运。这意味着我现在必须选择 windows 作为我的构建服务器。
            【解决方案7】:

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

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

            【讨论】:

              【解决方案8】:

              虽然这也是一种解决方法,但绝对比大家建议的禁用 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 中工作。
              【解决方案9】:

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

              【讨论】:

              • 这是免费软件吗?
              • @vishnu viswanath 仅用于非商业目的用例。在“已授予的许可:有限”下方阅读更多信息 genymotion.com/legal/terms-and-conditions。其中说:此许可仅授予最终用户且仅与个人使用有关,最终用户是个人而非专业人士,他们出于个人和私人需求(不包括商业和专业环境)下载该应用程序。跨度>
              • 这可能消失了,因为 genymotion 没有使用 KVM。既不是稳定的(因为他们会在某个时候开始使用它),也不是高性能的解决方案。
              • 感谢您注释掉这个选项。我会在 Ubuntu 18.04 中安装 Genymotion 供个人使用,现在我可以同时使用我的 VirtualBox 机器了 :)
              【解决方案10】:

              我遇到了同样的 VirtualBox 冲突。 通过使用不同于“x86”的ABI(在我的情况下为armeabi-v7a)解决了它

              【讨论】:

              • 比关闭现有虚拟机要优雅得多。谢谢。
              • 听到这个消息很难过。
              • 这种方式想必模拟器会跑得很慢,不过是个选项。
              • 在我的情况下,我还需要运行 VirtualBox VM(用于 RDP),所以这是一个非常好的建议。
              • @rudolfbyker,答案是使用 CPU/ABI x86/x86_64 运行的模拟器要快得多,但使用与 VitualBox 相同的 KVM(基于内核的虚拟机)。用另一个 CPU 创建模拟器,比如 arm64,不会和 VirtualBox 冲突,但是模拟器慢 a 很多
              【解决方案11】:

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

              【讨论】:

              • 这在 Fedora 20 中对我有用。有了更大的显示器、更多的 RAM 和 Gnome 3 工作区,很容易忘记您正在后台某处运行另一台机器。 killall virtualbox 应该这样做。
              • 有效但不是最佳解决方案。你可以同时拥有它们(见斯坦尼斯拉夫的回答)
              • 我在使用 docker 机器和虚拟盒驱动程序时遇到了 Ubuntu 16 的这个问题。使用docker-machine stop machine-name 停止虚拟机解决了此问题中建议的问题
              • 原来只是关闭 VirtualBox GUI,VM 并不能解决问题。就我而言,我有几个 virtualbox 进程仍在运行:VBoxSVC、VBoxNetDHCP、VBoxXPCCOMIPCD。在 top/htop 中杀死它们解决了这个问题。
              • 问题是“我怎样才能让两者同时运行?”。
              【解决方案12】:

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

              【讨论】:

              • 但是模拟器会很慢......但至少你可以同时运行两者;)
              【解决方案13】:

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

              【讨论】:

              • 应用程序需要我的后端才能在 VirtualBox (Vagrant) 上运行数据,所以这不是一个好的选择:P
              • 这个解决方案 #@%! 是因为我需要同时运行这两个 .. 我的 HTTPD 服务在 Virtual Box 中,而我的应用程序在 Android 中 .. /me叹了口气。猜猜,是时候再次启动开发服务器了。
              • 另一种选择可能是使用 Docker 而不是 VirtualBox 与 Android 模拟器结合使用。
              • 或者用 KVM 运行 Vagrant。
              • 谢谢@MichaelHampton。我安装了vagrant-libvert,它成功了!
              【解决方案14】:

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

              为此:

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

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

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

              【讨论】:

              • 一个警告:虽然这确实有效,但删除 KVM 内核模块会导致 Intel Android 映像的性能大幅下降,因为没有内核模块会失去 CPU 的硬件加速支持。
              • @Tajchert:恢复:'sudo modprobe kvm_intel kvm'
              • x86... 模拟器拒绝在没有 KVM 模块的情况下运行。呸。
              • 两个驱动都需要
              猜你喜欢
              • 2020-05-01
              • 2012-09-25
              • 2017-03-27
              • 1970-01-01
              • 2016-08-04
              • 2017-11-17
              • 1970-01-01
              • 1970-01-01
              • 2018-03-16
              相关资源
              最近更新 更多