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

M2 Mac使用qemu-system-x86_64启动MIT6.858虚拟机遇无引导设备求助

问题分析

  1. 脚本语法错误:注释行# -enable-kvm \中断了QEMU命令的续行逻辑,导致后续的网络参数和镜像文件名被当作独立命令执行,退出时触发-nic: command not found错误。
  2. ARM架构兼容性:M2 Mac为ARM64架构,直接运行x86_64镜像需要QEMU启用x86_64指令集模拟,且需明确指定磁盘接口才能让虚拟机识别引导磁盘。

修复后的启动脚本

#!/bin/bash

if ! command -v qemu-system-x86_64 > /dev/null; then
    echo "You do not have QEMU installed."
    echo "If you are on a Linux system, install QEMU and try again."
    echo "Otherwise, follow the lab instructions for your OS instead of using this script."
    exit
fi

# 判断是否支持-nic选项
version=$(qemu-system-x86_64 --version \
    | grep 'QEMU emulator version' \
    | sed 's/QEMU emulator version \([0-9]\)\.\([0-9]\).*/\1.\2/')
major=$(echo "$version" | cut -d. -f1)
minor=$(echo "$version" | cut -d. -f2)

net=()
if (( major > 2 || major == 2 && minor >= 12 )); then
    net=("-nic" "user,ipv6=off,model=virtio,hostfwd=tcp:127.0.0.1:2222-:2222,hostfwd=tcp:127.0.0.1:8080-:8080,hostfwd=tcp:127.0.0.1:8888-:8888")
else
    net=("-netdev" "user,id=n1,ipv6=off,hostfwd=tcp:127.0.0.1:2222-:2222,hostfwd=tcp:127.0.0.1:8080-:8080,hostfwd=tcp:127.0.0.1:8888-:8888" "-device" "virtio-net,netdev=n1")
fi

# M2 Mac专属配置:指定x86_64模拟CPU,明确磁盘接口
qemu-system-x86_64 \
    -m 2048 \
    -cpu qemu64 \
    -nographic -serial mon:stdio \
    "$@" \
    "${net[@]}" \
    -drive file=6.858-x86_64-v22.vmdk,format=vmdk,if=virtio

额外注意事项

  • 确保6.858-x86_64-v22.vmdk镜像文件与脚本在同一目录,或使用绝对路径指定文件位置。
  • M2 Mac不支持KVM虚拟化,因此无需启用-enable-kvm选项。
  • 若仍无法引导,可尝试添加-bios /usr/local/share/qemu/bios-256k.bin(Homebrew安装的QEMU默认BIOS路径)强制指定BIOS文件。

内容的提问来源于stack exchange,提问作者Sugar-Coder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 14:00:51