vagrant 上的 amd64 架构的 box 镜像咋新版的 Mac 上就无法使用。因为 Mac 现在使用的自研的 M1/M2/M3 等芯片 arm64 架构。
如果想在 arm64 的 Mac 上使用 vagrant,需要使用同样使用 arm64 架构的 box,以及选择对应的 provider。
Discover Vagrant Boxes 有个 Architecture 筛选项,可以筛选出 arm64 的 box。
可以看到目前(2024-09-05 17:52:42)大部分 arm64 都不是官方维护的,使用量比较到的是最前面的 bento 项目维护的 box:
bento 也不是为每一个版本提供全部 provider 和全部 architecture 的 box,比如 bento/ubuntu-22.04:
vmware 现在针对个人免费了,优先用 vmware。
先安装 vmware:
安装完成之后,需要在本地打开一次 vmware 完成使用设置,否则 vagrant 启动 vmware 时会出错。
brew install vmware-fusion
然后安装 Vagrant VMware Utility,参考 Install Vagrant VMware Utility 中说明,从下载页下载以后打开按提示安装。
再安装 vagrant 的 vmware plugin:
vagrant plugin install vagrant-vmware-desktop
这时候就可以用 vagrant 启动虚拟机,用参数 –provider 指定 vmware_desktop:
vagrant init bento/ubuntu-22.04 # 指定支持 vmware 和 arm64 的 box
vagrant up --provider vmware_desktop
也可以在 Vagrantfile 中指定 provider,避免每次启动用参数指定:
config.vm.provider "vmware_desktop" do |v|
# 这里可以设置 vmware 特有的配置
end
可以在其中添加 provider 相关的配置,这些配置项的名称和 virtualbox 是不同的,比如 vmware 设置内存和 CPU 的方式为:
config.vm.provider "vmware_desktop" do |v|
v.vmx["memsize"] = "1024"
v.vmx["numvcpus"] = "2"
end
和 provider 无关的配置项用法都是相同的。