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

在Arm64硅MacBook Pro上用Vagrant+Qemu运行amd64 AlmaLinux9 VM遇SSH卡顿

在Arm64 Silicon MacBook Pro上解决Vagrant+Qemu运行amd64 AlmaLinux 9的SSH卡顿问题

问题背景

在Arm64(Silicon)MacBook Pro上,使用Vagrant 2.4.3和Qemu 9.2.0运行amd64架构的AlmaLinux 9虚拟机时,执行vagrant up --provider qemu会卡在SSH连接阶段,日志显示等待虚拟机启动但无后续SSH响应;尝试通过串口连接控制台也出现卡顿,无法查看虚拟机内部状态。但使用centos/7镜像时可正常启动并完成SSH配置。

可能原因

AlmaLinux 9的官方镜像在Qemu跨架构(Arm64模拟x86_64)环境下,存在CPU兼容性、内核启动参数或SSH服务初始化适配问题,导致虚拟机启动后无法正常响应SSH请求。

解决方案

1. 调整Qemu CPU配置

将原配置中的qe.cpu = "qemu64"替换为更兼容的CPU参数,避免内核兼容性检测失败:

qe.cpu = "max,-hypervisor"

该配置启用Qemu支持的最大CPU特性集,同时关闭hypervisor标识,适配AlmaLinux 9的内核检测逻辑。

2. 启用串口控制台输出

添加串口配置,直接查看虚拟机启动日志,便于定位内核或服务启动问题:

qe.serial_port = "stdio"

启动时会在终端输出虚拟机的内核启动和系统初始化日志,可直观判断是否卡在启动环节。

3. 延长超时时间

跨架构模拟启动速度较慢,默认超时时间可能不足以完成系统初始化和SSH服务启动:

config.vm.boot_timeout = 120
config.ssh.timeout = 60

4. 更换为适配多虚拟化平台的镜像

官方almalinux/9镜像更偏向VirtualBox等平台,改用generic/almalinux9镜像,该镜像针对Qemu等多种虚拟化平台做了优化:

config.vm.box = "generic/almalinux9"

修改后的完整配置

Vagrant.configure(2) do |config|
  config.vm.box = "generic/almalinux9"

  config.vm.boot_timeout = 120
  config.ssh.timeout = 60

  config.vm.provider "qemu" do |qe|
    qe.arch = "x86_64"
    qe.machine = "q35"
    qe.cpu = "max,-hypervisor"
    qe.net_device = "virtio-net-pci"
    qe.extra_netdev_args = "net=192.168.51.0/24,dhcpstart=192.168.51.10"
    qe.serial_port = "stdio"
  end
end

额外排查步骤

如果调整后仍有问题,通过串口日志检查:

  • 内核是否正常启动完成,有无panic或错误信息
  • SSH服务(sshd)是否正常初始化
  • 虚拟机是否通过DHCP获取到了配置的网段IP

若内核启动卡住,可尝试增加虚拟机内存:

qe.memory = "2048"

内容的提问来源于stack exchange,提问作者Pieter Vogelaar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 03:26:07