我获得了一个 Vagrantfile,Ubuntu 用户通常使用它来创建和配置 Debian 10 VirtualBox 客户机以进行开发工作。他们通常会使用 VirtualBox 提供程序插件来运行 Vagrant。
我想在我的 M1 MacBook 上托管一个类似的盒子,这在技术上应该是可行的,但事实证明很复杂。许多 vagrant 提供程序要么无法在 Mac(或至少 M1/arm Mac)上运行,要么它们的 vagrant 盒子是内部为 arm 的“arm”盒子,因此配置中断。我需要一个模拟 x86/amd64 的客户 Debian 10 盒子。
QEMU 和 QEMU Vagrant 提供程序(https://github.com/ppggff/vagrant-qemu) 似乎最有可能解决这个问题,但它们需要大量的配置,而且似乎没有任何 QEMU Debian 10 vagrant boxes。
有谁能够成功使这样的设置正常工作?
答案1
更新日志似乎表明 VirtualBox 7.x 正在使用 Apple Hypervisor 框架,这确实支持这一点。该功能被视为开发人员预览版,目前不受支持,因此我不建议使用它。早期版本存在网络问题,但这似乎已得到修复(同样根据更新日志)。我也看到有关较新的 macOS 版本无法在 VirtualBox VM 中运行的报告。
移动管理正如 @tetsujin 在上面的评论中提到的,它是一个用户友好的 QEMU GUI 包装器。UTM 网站上的评论似乎表明它同时使用了 Apple 框架和 QEMU。但是缺少详细信息。根据我看到的各种帖子,它似乎没有任何 API,如果您选择学习该课程,这会使 vagrant 驱动程序开发变得更加困难。但是有一个命令行界面。vagrant 虚拟盒驱动程序确实使用了一些 CLI 调用,因此如果您需要它们,驱动程序代码中有一些示例。
正如您所指出的,您可以直接使用 QEMU。Vagrant 恰好有一个官方驱动程序虚拟器,它与 QEMU 交互(这也是一个开发者预览版,但鉴于它来自 Hashicorp,您可能会从中获得更多好处)。您可能知道,通过 HomeBrew 可以为 macOS 提供 libvirt 和 QEMU 软件包。不过,这可能比QEMU 的社区驱动程序你提到过。
还有 xhyve,它是使用 Apple 框架的 BSD bhyve 虚拟机管理程序的 macOS 端口。有一个旧的xhyve 的 vagrant 插件,它也利用了 Apple 框架。它比 QEMU 更轻量级,性能应该更高。但自 2016 年以来还没有发布过Rubygems网站。您可能需要对此进行一些工作,以使其达到最新 vagrant 版本的要求。有一个vagrant 插件这样就可以利用 bhyve 来实现这个目的,如果默认的 xyhve 驱动程序运行不够好,您可能可以从中抄袭。
简而言之,有些项目可能做你想做的事,但它们大多处于开发者预览模式。与上述每个选项一样,YMMV 也是如此。如果您有勇气使用 vagrant 驱动程序,您可能能够获得所需的稳定版本。
希望这可以帮助。
披露:以上内容并不反映我雇主的立场或支持。
答案2
我很好奇是否有人尝试过将 Moby HyperKit(由 xhyve 制作)与 vagrant-xhyve 插件一起使用。
与此同时,我已成功让 vagrant-qemu 在 Macbook M1 上运行。端口转发目前不起作用。
本质上,这是可行的(来源https://joachim8675309.medium.com/vagrant-with-macbook-mx-arm64-0f590fd7e48a):
# create configuration file for arm64 vm image
cat <<EOF > Vagrantfile
Vagrant.configure("2") do |config|
config.vm.box = "perk/ubuntu-2204-arm64"
config.vm.provider "qemu" do |qe|
qe.ssh_port = "50022" # change ssh port as needed
end
end
EOF
# download and startup VM using hvf
vagrant up --provider=qemu
# log into the VM
vagrant ssh