M2 Mac使用qemu-system-x86_64启动MIT6.858虚拟机遇无引导设备求助
问题分析
- 脚本语法错误:注释行
# -enable-kvm \中断了QEMU命令的续行逻辑,导致后续的网络参数和镜像文件名被当作独立命令执行,退出时触发-nic: command not found错误。 - 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
相关产品推荐
相关产品推荐

