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的环境

相关推荐
#山间清泉#1 小时前
VMWare虚拟机mac地址自定义配置
运维·macos·架构·vmware
UnicornDev1 天前
从零开始学iOS开发(第四十四篇):App Store 提交与审核 —— 让应用走向世界
macos·objective-c·cocoa
晴天无痕1 天前
intel过来的xcode项目在M芯片电脑无法显示模拟器的问题日
ide·macos·xcode
Digitally1 天前
如何连接安卓手机到 Mac?2026 年 7 种可靠方法
android·macos·智能手机
Digitally1 天前
如何将短信从 iPhone 传输到 Mac?
macos·ios·iphone
timebeign1 天前
Claude安装流程,系统macOS m1
macos
一块小土坷垃1 天前
App Cleaner & Uninstaller 9.1.1 – macOS 专业级应用程序清理与卸载工具
macos·开源软件
七七powerful1 天前
mac电脑安装cmca根证书
java·前端·macos
Front思1 天前
安卓证书申请 + iOS 证书申请(含 Windows 无 Mac 方案)+ HBuilderX 云打包配置
android·macos·ios