You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac mini M2 上 Multipass 启动失败:无 IPv4 地址分配

Mac mini M2 上 Multipass 启动失败:无 IPv4 地址分配

我明白你现在肯定挺头疼的——之前在M1 MacBook Air和M2 Mac mini上都好好的Multipass,自从换成有线网络(en0连宽带路由、en10连5G)后,创建的horus实例直接卡在了Unknown状态,连IPv4地址都拿不到,挂载也没生效,折腾这么久估计试了不少办法吧?

我仔细看了你给出的启动命令和cloud-config配置,发现了几个很关键的错误,应该就是导致实例初始化失败的元凶,咱们一步步来修正:

一、先揪出cloud-config里的明显错误

你的cloud-config有三处硬伤,直接会导致Multipass解析配置失败:

  1. 重复定义users字段:你分别写了两次users:,先定义了peterbrooks又定义了ubuntu,cloud-config要求users是一个统一的列表,分开写会让配置失效;
  2. 拼写错误:把启动后要执行的命令字段runcmd写成了rumcmd,这个错误会让你指定的初始化命令根本跑不起来;
  3. 用户配置不规范:虽然你用了SSH密钥,但lock_passwd: false却没设置密码(当然如果只靠SSH密钥登录也能凑合用,但规范起见要么加密码要么把lock_passwd设为true)。

修正后的cloud-config应该是这样的:

#cloud-config
groups:
- staff

users:
- name: peterbrooks
  gecos: Peter Brooks
  primary_group: staff
  groups: staff
  home: /home/peterbrooks
  shell: /bin/bash
  lock_passwd: false
  # 可选:如果需要密码登录,这里可以添加加密后的密码,比如 password: $6$rounds=4096$your_encrypted_pass$
  sudo: ALL=(ALL) NOPASSWD:ALL
  ssh_authorized_keys:
  - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC87KASr+bkZjHljr7r3lwPQUVyZVrsVC3XRVouhpyTRma+bGrr3IHI2nn3W98kw6BOMdjIPozFbImEQTmSU3RVIvq3Lj7NIPNZ13baDYbQ5ju5MVYT3dtDaFkY+ZLZh6K5pazi41uYGGveWg8TbwBkWLjAuOqKWpI6mxz11tiFR3HJlys2/mld43QVYbPFHpD5Q3+J3keNx8ul/Xkc6xTIpmiYgSrmC1crl8nwTxIp7PP5AIVADYdb1i8VThqh4lETlJoxwFjbiAOvFjutSy6+iUZ1GeSc9vofOe6E4iN1iySV9h6/eakrcjFN2J0iavxqk9RgkdinLncqKfyGv4HCgGK7MT6/Dd1zqZB41mP6//9LxJPrwFHfw6JJ9q1xBfmi2xW1oT2LoRKPbi1C5bKu07r7IJcKo+338jejUqoXYXrpTyeyA5/6sO7o+7h5u7p/BYRkFmXPgDF7o+Mzwzqpvd4iHNjlWbKWr4EI0l0B1oWGAh6BRFmz8L8C0+Robqk= peterbrooks@horus
- name: ubuntu
  gecos: Ubuntu Default
  primary_group: staff
  groups: staff
  home: /home/ubuntu
  shell: /bin/bash
  lock_passwd: false
  sudo: ALL=(ALL) NOPASSWD:ALL
  ssh_authorized_keys:
  - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC630cVqpd+wvmw5kZiPlTsrPGH0B3/HVttYCEQ34y0rEQ5C4qllTV4sIkZAtqsAoP2JNFVFkhSUHKm5pBrWjmesNZny0VwKzd4KYjAi6ogK7lydkCIhTHi5XkU185B/i8Q7xVUPFngGGMJSIkjP4M0eq+udELpUfQBWO9OmI+KsfyB4qmEWk+fbGkVyIqtRVUW2rlFLZ3gGfL0ZEhnt66wmLqEKJPFnYj7PtdunesWajDeuBlzwUzYWdLAPwl68m7xzS3++yNsS+lpCy/yH9atNe61X8KapZBbNohuxWehvGR6Wre+t/jqhy0Y7tPJeNoYt7GEG5m3kJTOuGKjlEVELNdkvGJpPaMFyvB2OCEMaX4CmIcfCnsEeSVXykNh4tYQmMq7hKTZF5ncfYXaOkhCN70Z08IuVLlo5dgAEOzlnf5pprx2tmLyNKbZJPzeuM+14kWv4xR2jGPcrkku3FXK/i4Y+xf1Df685/w9mqAtiLHLWWGANFL1T3nAcmKV4bk= ubuntu@horus

package_upgrade: true
runcmd:
- [uptime]

final_message: >
  The system is finally up, after $UPTIME seconds.

二、修复启动命令里的参数错误

你的启动命令犯了一个致命错误:重复使用--cloud-init参数,还把ISO镜像路径传给了--cloud-init!
--cloud-init是用来指定cloud-config配置文件的,而ISO镜像应该用--image参数指定(甚至你如果用官方的Ubuntu 22.04 ARM64镜像,直接写--image 22.04就行,根本不用自己下载ISO)。重复的--cloud-init会让Multipass不知道该用哪个配置,直接搞崩初始化流程。

修正后的启动命令应该是这样的(先把旧的horus实例删掉再跑这个命令):

# 先清理旧实例,避免残留配置干扰
multipass delete horus && multipass purge

# 用修正后的配置创建实例
multipass launch -c 2 -d 30G -m 12G -n horus \
  --mount /users/peterbrooks:/mnt/peterbrooks \
  --image 22.04 \
  --cloud-config '/var/root/Library/Application Support/multipassd/qemu/vault/instances/cloud_config' \
  --network en0 \
  -vvvv

三、排查有线网络的桥接问题

如果修正后还是拿不到IPv4,那可能是有线网络en0的桥接权限问题:

  1. 先检查en0的状态:ip addr show en0,确保它处于UP状态,并且已经获取到了本地网络的IP;
  2. 重启Multipass服务,重置网络相关的权限:
sudo launchctl stop com.canonical.multipassd
sudo launchctl start com.canonical.multipassd
  1. 可以先去掉--network en0参数,用Multipass默认的网络创建实例,如果能正常获取IPv4,说明问题出在有线网络的桥接上,这时候可以检查Multipass的网络权限:系统设置→隐私与安全性→完全磁盘访问权限,确保Multipass在列表里;或者用sudo multipass launch ...运行命令,提升权限尝试桥接。

四、验证修复效果

实例创建后,运行以下命令验证:

# 查看实例状态
multipass list
# 查看实例详细信息
multipass info horus
# 登录实例验证用户配置
multipass shell horus
# 检查挂载点
ls /mnt/peterbrooks

如果一切正常,multipass list应该会显示实例状态为Running,并且有正常的IPv4地址,挂载点也能正常访问。

备注:内容来源于stack exchange,提问作者Peter Brooks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 12:48:00