vware的mac虚拟机转换为.qcow格式

比起君子讷于言而敏于行,我更喜欢君子善于言且敏于行。
目录

前言

一、打包

二、把制作好的.qcow跑起来

[1. 先检查你的 Linux 环境(必做)](#1. 先检查你的 Linux 环境(必做))

[2. 下载 OSX-KVM 现成的引导和固件(不用自己做)](#2. 下载 OSX-KVM 现成的引导和固件(不用自己做))

[3. 把你的 qcow2 放对位置](#3. 把你的 qcow2 放对位置)

[4. 按需调整脚本](#4. 按需调整脚本)

三、优化一下

总结


前言

vmwre跑在windows上,总是不太稳定,想给它们都迁移到物理服务器上,但是环境搭建很麻烦,所以希望可以顺利转换格式,进行部署


提示:以下是本篇文章正文内容,下面案例可供参考

一、打包

删除所有镜像------关闭虚拟机------右键选择"打开虚拟机目录"------使用打包工具进行打包------传到linux服务器上------解压------保留所有后缀为.vmdk的文件,其他的全部删除------执行转换命令

复制代码
# 先进入你传好的文件夹(比如你改名叫macos-10.13-vmdk)
cd ~/macos-10.13-vmdk

# 执行转换,源文件就是你箭头指的那个主索引,全程不用改文件名
qemu-img convert -c -p -f vmdk -O qcow2 "macOS 10.13-cl8.vmdk" "macos-10.13-final.qcow2"

#主索引是不带那些s0001、0002之类编号的
参数 意思 作用
qemu-img 工具名字 专门处理虚拟机磁盘的工具
convert 核心命令 告诉工具:"我要做格式转换这件事"
-c 压缩(Compress) 最有用的参数 !自动把虚拟磁盘里的空白空间、没用的零字节全部压缩掉,你原来 500G 的预分配空间,会直接缩成几十 G,而且是无损压缩,系统和文件完全不受影响
-p 显示进度(Progress) 让工具在转换时实时显示百分比进度条,不然你看着黑框没反应,会以为卡死了
-f vmdk 指定源格式(Format) 告诉工具:"我要转的源文件是 vmdk 格式的",注意是小写的 f
-O qcow2 指定目标格式(Output Format) 告诉工具:"我要生成的目标文件是 qcow2 格式的",注意是大写的 O,不是数字 0
"源文件.vmdk" 输入文件 就是你箭头指的那个 macOS 10.13-cl8.vmdk,因为文件名有空格,所以必须加双引号
"目标文件.qcow2" 输出文件 你想生成的 qcow2 文件名,随便你起,比如 macos-10.13-final.qcow2,同样有空格要加双引号

二、把制作好的.qcow跑起来

1. 先检查你的 Linux 环境(必做)

  1. 确认 CPU 硬件虚拟化已开启:

    复制代码
    lsmod | grep kvm

    输出有 kvm_intelkvm_amd 就没问题。

  2. 装必要的工具:

    复制代码
    # Ubuntu/Debian
    sudo apt install -y git virt-manager ovmf qemu-kvm libvirt-daemon-system

2. 下载 OSX-KVM 现成的引导和固件(不用自己做)

直接用行业标准的 OSX-KVM 项目,里面有现成的 OpenCore 引导和适配 macOS 的 OVMF 固件:

复制代码
# 找个地方存文件,比如 /mnt/package
cd /mnt/package
git clone https://github.com/kholia/OSX-KVM.git

下载完,你会得到一个 OSX-KVM 文件夹,里面的 OpenCore/OVMF/ 就是我们要用的。

3. 把你的 qcow2 放对位置

把你刚才生成的 macos-10.13-final.qcow2 复制到 OSX-KVM 文件夹里:

复制代码
mv macos-10.13-final.qcow2 /mnt/package/OSX-KVM/

4. 按需调整脚本

复制代码
cp OpenCore-Boot.sh  OpenCore-Boot.sh.bak

cat /mnt/package/OSX-KVM/OpenCore-Boot.sh
#!/usr/bin/env bash

# 100%还原你能进系统的配置,仅修复USB鼠标键盘
MY_OPTIONS="+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check"

ALLOCATED_RAM="8192" # MiB
CPU_SOCKETS="1"
CPU_CORES="4"
CPU_THREADS="8"

REPO_PATH="."
OVMF_DIR="."

args=(
  # 能启动的CPU配置,不动!
  -enable-kvm -m "$ALLOCATED_RAM" -cpu Skylake-Client,-hle,-rtm,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,"$MY_OPTIONS"
  -machine q35

  # 【USB配置,用最简单兼容的方式】
  -usb
  -device usb-kbd
  -device usb-tablet

  -smp "$CPU_THREADS",cores="$CPU_CORES",sockets="$CPU_SOCKETS"

  # 苹果SMC授权
  -device isa-applesmc,osk="ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"
  
  # OVMF固件
  -drive if=pflash,format=raw,readonly=on,file="$REPO_PATH/$OVMF_DIR/OVMF_CODE_4M.fd"
  -drive if=pflash,format=raw,file="$REPO_PATH/$OVMF_DIR/OVMF_VARS-1920x1080.fd"

  -smbios type=2
  -device ich9-intel-hda -device hda-duplex
  -device ich9-ahci,id=sata

  # OpenCore引导
  -drive id=OpenCoreBoot,if=none,snapshot=on,format=qcow2,file="$REPO_PATH/OpenCore/OpenCore.qcow2"
  -device ide-hd,bus=sata.2,drive=OpenCoreBoot
  # -device ide-hd,bus=sata.3,drive=InstallMedia
  #-drive id=InstallMedia,if=none,file="$REPO_PATH/BaseSystem.img",format=raw

  # 系统盘(qcow2的名字要写对,我这个是给它改了新的名字)
  -drive id=MacHDD,if=none,file="$REPO_PATH/macOS_10.qcow2",format=qcow2
  -device ide-hd,bus=sata.4,drive=MacHDD

  # 网络配置(2223端口也可以自己选择,默认是2222)
  -netdev user,id=net0,hostfwd=tcp::2223-:22
  -device e1000-82545em,netdev=net0,id=net0,mac=52:54:00:c9:18:27

  # VNC配置(5902端口,可以自己选择端口)
  -vnc 0.0.0.0:2,password=off

  # 显卡配置
  -device vmware-svga

  -monitor stdio
)

qemu-system-x86_64 "${args[@]}"

遇到报错:failed to parse default acl file `/etc/qemu/bridge.conf'

qemu-system-x86_64: -netdev bridge,br=br0,id=net0: bridge helper failed

解决方式:这是 QEMU/KVM 在使用 bridge 网络时,qemu-bridge-helper 失败导致的。

  • /etc/qemu/bridge.conf 文件不存在

  • 或者格式错误

  • 或者权限不对

    sudo mkdir -p /etc/qemu
    sudo echo "allow br0" | sudo tee /etc/qemu/bridge.conf
    sudo chmod u+s /usr/lib/qemu/qemu-bridge-helper

执行: ./OpenCore-Boot.sh

就可以启动起来mac虚拟机了,使用VNC访问 宿主机ip:5902 就可以看到图形化页面了~~~

三、优化一下

上面去执行那个脚本会发现,当前的终端就会被占用,所以我给它做成了systemctl的service方便管理。

复制代码
$ sudo vim  /etc/systemd/system/macos10-vm.service 

$ cat  /etc/systemd/system/macos10-vm.service 
[Unit]
Description=macOS 10 Virtual Machine
After=network.target

[Service]
Type=simple
WorkingDirectory=/mnt/package/OSX-KVM
ExecStart=/usr/bin/qemu-system-x86_64 \
  -enable-kvm \
  -m 64G \ #注意单位
  -cpu Skylake-Client,-hle,-rtm,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check \
  -machine q35 \
  -usb \
  -device usb-kbd \
  -device usb-tablet \
  -smp 32,cores=32,sockets=1 \
  -device isa-applesmc,osk="ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc" \
  -drive if=pflash,format=raw,readonly=on,file=/mnt/package/OSX-KVM/OVMF_CODE_4M.fd \
  -drive if=pflash,format=raw,file=/mnt/package/OSX-KVM/OVMF_VARS-1920x1080.fd \
  -smbios type=2 \
  -device ich9-intel-hda \
  -device hda-duplex \
  -device ich9-ahci,id=sata \
  -drive id=OpenCoreBoot,if=none,snapshot=on,format=qcow2,file=/mnt/package/OSX-KVM/OpenCore/OpenCore.qcow2 \
  -device ide-hd,bus=sata.2,drive=OpenCoreBoot \
  -drive id=MacHDD,if=none,file=/mnt/package/OSX-KVM/macOS_10.qcow2,format=qcow2 \
  -device ide-hd,bus=sata.4,drive=MacHDD \
  -netdev user,id=net0,hostfwd=tcp::2223-:22 \
  -device e1000-82545em,netdev=net0,id=net0,mac=52:54:00:c9:18:27 \
  -vnc 0.0.0.0:2,password=off \
  -device vmware-svga \
  -monitor stdio

Restart=on-failure
User=root

[Install]
WantedBy=multi-user.target


# 重载 systemd 配置(每次修改配置文件都必须做)
sudo systemctl daemon-reload

# 启动虚拟机
sudo systemctl start macos10-vm

# 查看运行状态
sudo systemctl status macos10-vm

# 开机自启(可选)
sudo systemctl enable macos10-vm

# 停止虚拟机
sudo systemctl stop macos10-vm

总结

不用重新搭环境真的太棒了,尤其是mac/windows的环境

相关推荐
m0_535817559 小时前
macOS上Claude Code安装配置保姆级教程:国内直连API,从0到1跑通(附避坑指南)
gpt·macos·ai·node.js·claude·claudecode·88api
我有满天星辰15 小时前
Mac 安装 Redis + Spring Boot 整合 Redis(完整实战指南)
spring boot·redis·macos
游戏开发爱好者815 小时前
iOS开发工具推荐:Xcode、AppCode、SwiftLint使用心得与效率提升
ide·vscode·macos·ios·个人开发·xcode·敏捷流程
whyfail16 小时前
Codex 下载安装指南:Windows 和 macOS 官方版下载
windows·macos·codex
感谢地心引力16 小时前
在Claude Code里面使用Deepseek-v4,支持mac和Windows双系统
人工智能·windows·macos·ai·deepseek·claude code
感谢地心引力17 小时前
在codex里面使用Deepseek-v4,支持mac和windows双系统
windows·gpt·macos·ai·codex·deepseek
搬砖的小码农_Sky17 小时前
AI Agent:macOS Sequoia 部署 OpenClaw 完整教程
人工智能·macos·ai·人机交互
天上路人1 天前
AI 降噪不是“凭空复原语音”,而是在“已有语音信息”的基础上进行增强。
ide·人工智能·macos·语音识别·xcode
один but you1 天前
【无标题】
macos·objective-c·cocoa
AI行业学习1 天前
CC-Switch 下载、安装与使用全指南Windows+macOS+Linux【2026.5.28】
linux·windows·macos