系统、软件:
- macos12.0.1 ISO文件;
- virtual box(7.0.18)以及扩展包(官网下载即可);
- AMD R9-7940HS;
- Windows 11 professional;
- GenSMBIOS(github);
- powershell或者cmd(管理员运行);
- 开启虚拟化(AMD-V)。
这些都可以自己下载,也可以去我公众号回复:macos,获得打包好的(百度云、阿里云、OneDrive、夸克均有)。
文章目录
- 一、准备
- 1.1 intro
- 1.2 开启CPU虚拟化
- 1.3 安装扩展
- 二、创建虚拟机和设置
- 2.1 创建和基本参数设置
- 2.2 额外参数设置
- 2.21 认识VBoxManage
- 2.22 设置额外参数
- 2.23 设置显存和分辨率
- 2.3 我的配置文件
一、准备
1.1 intro
名称:
macOS 10.12 - Sierra(内华达山脉)
macOS 10.13 - High Sierra(高内华达山脉)
macOS 10.14 - Mojave(莫哈韦沙漠)
macOS 10.15 - Catalina(圣卡塔利娜岛)
macOS 11.x 系列
macOS 11 - Big Sur(大苏尔)
macOS 12.x 系列
macOS 12 - Monterey(蒙特雷)
macOS 13.x 系列
macOS 13 - Ventura(文图拉)
macOS 14.x 系列
macOS 14 - Sonoma(索诺玛)
macOS 15 - Sequoia(红衫公园)(beta,2024)
劝退:
- 效果一般的;
- 在Intel CPU的电脑上效果会好一些;
- 在VMWare上也可能好一丢丢;
- 旧一点的CPU问题少一些;
- macOS13以后虚拟机安装都不友好(virtual box原生仅支持到10.13版本)
- 删了用Apple机器吧。
1.2 开启CPU虚拟化
虚拟化技术(如AMD-V
或Intel VT-x)可以显著提升虚拟机的性能和稳定性。虽然在某些情况下未开启虚拟化技术也能运行虚拟机,但性能会受影响,某些高级功能可能无法使用。以下是开启虚拟化技术的重要原因:
提高性能:虚拟化技术可以更有效地分配和管理CPU资源,从而提升虚拟机的运行速度和响应时间。
支持64位虚拟机:开启虚拟化技术是运行64位虚拟机的必要条件。
增强兼容性:某些操作系统和软件在虚拟化技术开启的情况下才能正确运行。
高级功能:开启虚拟化技术后,可以使用VirtualBox中的高级功能,例如嵌套虚拟化。
可以先在任务管理器-性能-CPU
那里看看有没有开。
开启AMD电脑的虚拟化技术(通常是AMD-V
或SVM
),你需要进入BIOS或UEFI设置。以下是一般的步骤:
重启电脑:在启动过程中按下进入BIOS的快捷键(通常是F2、F10、F12或Del)。
进入BIOS设置:在BIOS菜单中,找到“高级”或“高级模式”选项。
找到CPU配置:在“高级”选项中,找到与CPU设置相关的选项,通常会有“CPU Configuration”或“Advanced CPU Configuration”。
启用SVM:找到“SVM Mode”或“Secure Virtual Machine”选项,并将其设置为“Enabled”。
保存设置并退出:按下F10保存设置并退出BIOS。
重启电脑:电脑将会重启并应用新的设置。
这些步骤可能会因不同的主板和BIOS版本而有所不同,但大致流程是相似的。如果找不到相关选项,可以参考主板的用户手册或访问主板制造商的网站获取详细信息。
1.3 安装扩展
双击那个扩展即可安装:Oracle_VM_VirtualBox_Extension_Pack-7.0.18.vbox-extpack
或者在虚拟机里面点击“工具
”,右边也有安装按钮。
二、创建虚拟机和设置
主要设置一些参数:
- 基本参数:在virtual box GUI界面设置即可,主要是给虚拟机分配操作系统资源;
- 额外参数:让虚拟机里面的系统认为你在Apple设备上运行系统,如设置序列号、UUID等。
2.1 创建和基本参数设置
创建没啥好说的,看我以前的文章大概了解一些流程:【virtual Box】功能速通:安装 Windows 和 Ubuntu
一般键盘上右边的ctrl
键会被默认设置为Home键,Home+F
就是全屏,Home+C
就是隐藏/显示菜单栏,自己在设置里面看就行了。
创建好了再修改参数也是可以的。
参数设置如下:
- 常规
- 基本:名称自定义,类型选Mac OS X,版本选最下面的;
- 系统
- 主板:内存大小自定义,启动顺序光驱—硬盘,其他默认,EFI开启的;
- 处理器:自定义,扩展特性只选第一个;
- 硬件加速:默认,启用嵌套分页;
- 显示
- 屏幕:显存拉满,显卡控制器VBoxVGA,启用3D加速;
- 存储
- 使用vdi类型的虚拟硬盘即可,80G起步吧,60G也行;
- 网络
- 模式都可以,我用的桥接(要使用宿主机代理)
- USB
- 选3.0
显存可能只有128MB,virtual box最大支持256MB,不能拉到256后面会介绍相关命令。
内存和CPU多分一点。
基本参数就是这些,不清楚的直接看我视频就行了:
AMD Ryzen9 7940HS在virtual Box虚拟机中安装Mac OS12.0 Monterey
现在还无法安装和启用macos。
2.2 额外参数设置
虚拟机的配置文件在你保存虚拟机的那个文件夹下,后缀是.vbox
。.vdi
是虚拟硬盘,人类不可读。
下面通过命令修改配置文件,就是修改.vbox
的内容,用命令和直接编辑配置文件都可以的。
确保虚拟机相关进程都关闭后再进行参数更改(去任务管理器中搜名字即可看到)。
2.21 认识VBoxManage
VBoxManage
是Oracle VM VirtualBox的命令行管理工具。通过VBoxManage,用户可以执行几乎所有通过VirtualBox图形用户界面(GUI)能够完成的任务,包括创建和配置虚拟机、启动和停止虚拟机、管理虚拟硬盘、配置网络等。
所以执行命令的时候可以先进入virtual box的安装文件夹下面,VBoxManage.exe
就在那里。
cd D:\virtualbox
VBoxManage的命令就不展开说了,说2个用得到的:
查看虚拟机列表:
VBoxManage list vms
查看某个虚拟机的配置信息:
VBoxManage showvminfo 名称
2.22 设置额外参数
我的完整配置文件见文末,可以参考,复制不一定能用哦。
目的就是模拟一个Apple设备。
用管理员身份打开命令行工具(power shell、cmd)再执行命令(虚拟机完全关闭)。
cd D:\virtualbox
VBoxManage.exe modifyvm "Monterey" --cpuid-set 00000001 000106e5 00100800 0098e3fd bfebfbff
VBoxManage setextradata "Monterey" "VBoxInternal/Devices/smc/0/Config/GetKeyFromRealSMC" 1
VBoxManage setextradata "Monterey" "VBoxInternal/TM/TSCMode" "RealTSCOffset"
VBoxManage modifyvm "Monterey" --cpu-profile "Intel Core i7-6700K"
一行一行执行太慢了,先执行上面这些,然后直接编辑.vbox
文件即可。intel芯片无需设置最后一行。
我们要设置的参数大都在<ExtraData>
标签下面,先别急复制,往下看。
主要内容:
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiBIOSReleaseDate" value="06/14/2018"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiSystemProduct" value="MacBookPro15,1"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiSystemSerial" value="C02WM5YNKGYG"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiBoardSerial" value="C02817104CDJP4F1H"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiSystemUuid" value="2C01A623-FA31-4977-B338-93A11A11C3C4"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiOEMVBoxVer" value="string:1"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiOEMVBoxRev=" value="string:.23456"/>
<ExtraDataItem name="VBoxInternal/Devices/smc/0/Config/DeviceKey" value="ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiBoardProduct" value="Mac-6F01561E16C75D06"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiSystemFamily" value="MacBook Pro"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiBIOSVersion" value="MBP114.88Z.F000.B00.1906140921"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiBIOSReleaseDate=" value="06/14/2018"/>
直接可以复制的是:
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiBIOSReleaseDate" value="06/14/2018"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiSystemProduct" value="MacBookPro15,1"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiOEMVBoxVer" value="string:1"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiOEMVBoxRev=" value="string:.23456"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiBoardProduct" value="Mac-6F01561E16C75D06"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiSystemFamily" value="MacBook Pro"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiBIOSVersion" value="MBP114.88Z.F000.B00.1906140921"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiBIOSReleaseDate=" value="06/14/2018"/>
<ExtraDataItem name="VBoxInternal/Devices/smc/0/Config/DeviceKey" value="ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"/>
使用软件生成的是:
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiSystemSerial" value="C02WM5YNKGYG"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiBoardSerial" value="C02817104CDJP4F1H"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiSystemUuid" value="2C01A623-FA31-4977-B338-93A11A11C3C4"/>
软件生成的SMBIOS信息,把序列号、主板序列号、UUID替换成生成的信息即可。
#######################################################
# MacBookPro15,1 SMBIOS Info #
#######################################################
Type: MacBookPro15,1
Serial: C02WM5YNKGYG
Board Serial: C02817104CDJP4F1H
SmUUID: 2C01A623-FA31-4977-B338-93A11A11C3C4
Apple ROM: 80BE055DB143
SMBIOS
(System Management BIOS)是一种用于在计算机硬件和操作系统之间传递管理信息的规范。它定义了数据结构和访问方法,使操作系统可以从系统固件中获取有关计算机硬件的信息。我们就是要生成这些信息,让虚拟机中macos可以比较正常的安装。
生成SMBIOS的工具:https://github.com/corpnewt/GenSMBIOS,下载后直接运行.bat
脚本即可(Windows下)。
先输入选项1,再输入3,输入 MacBookPro15,1
即可生成。这里 MacBookPro15,1 是标识MacBook Pro笔记本电脑型号的一种内部命名方式,具体就是18年的Pro,使用的是i7芯片。生成上面所示信息,替换即可。
2.23 设置显存和分辨率
显存最大256。
分辨率根据你显示器来就行,macos不能安装那个“增强功能”(看我之前文章),不能直接更改分辨率,所以要用命令。
VBoxManage modifyvm "Monterey" --vram 256
VBoxManage setextradata "Monterey" CustomVideoMode1 1920x1080x32
VBoxManage setextradata "Monterey" VBoxInternal2/EfiGraphicsResolution 1920x1080
现在就可以启动了,选择语言后,磁盘管理,抹掉虚拟硬盘(APFS
),然后叉掉,安装即可,大概要几十分钟。
应该不会报错,如果报错退出,可以看看报错信息,是哪个参数不对,没必要删掉虚拟机重来,删掉ExtraData里面的内容,重新设置即可。
先不要登录Apple ID,这种生成的序列号以及有很多人登录过Apple ID了,且我们模拟的Apple设备信息其实很少,所以直接登录Apple ID是不成功的,显示iCloud unsupposed device
。去Apple Store
登录即可(可以下软件,依然不能用iCloud)。
不好玩,体验一下就可以了。
2.3 我的配置文件
直接复制可能会出错,按照前面步骤操作。
<?xml version="1.0"?>
<!--
** DO NOT EDIT THIS FILE.
** If you make changes to this file while any VirtualBox related application
** is running, your changes will be overwritten later, without taking effect.
** Use VBoxManage or the VirtualBox Manager GUI to make changes.
-->
<VirtualBox xmlns="http://www.virtualbox.org/" version="1.19-windows">
<Machine uuid="{60339dec-cee6-4e15-8b12-f3beee2d4d43}" name="Monterey" OSType="MacOS1013_64" snapshotFolder="Snapshots" lastStateChange="2024-07-06T15:33:42Z">
<MediaRegistry>
<HardDisks>
<HardDisk uuid="{97c72c90-7d06-40b7-8b60-0d4179117f9a}" location="Monterey.vdi" format="VDI" type="Normal"/>
</HardDisks>
<DVDImages>
<Image uuid="{616fca69-61ef-471a-b4a3-d17cdede418b}" location="F:/BaiduNetdiskDownload/macOS Monterey.iso"/>
</DVDImages>
</MediaRegistry>
<ExtraData>
<ExtraDataItem name="CustomVideoMode1" value="1920x1080x32"/>
<ExtraDataItem name="GUI/LastCloseAction" value="PowerOff"/>
<ExtraDataItem name="GUI/LastNormalWindowPosition" value="0,23,1920,1009,max"/>
<ExtraDataItem name="GUI/StatusBar/Enabled" value="false"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiBIOSReleaseDate" value="06/14/2018"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiBIOSVersion" value="MBP114.88Z.F000.B00.1906140921"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiBoardProduct" value="Mac-6F01561E16C75D06"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiBoardSerial" value="C02817104CDJP4F1H"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiOEMVBoxRev" value="string:.23456"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiOEMVBoxVer" value="string:1"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiSystemFamily" value="MacBook Pro"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiSystemProduct" value="MacBookPro15,1"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiSystemSerial" value="C02WM5YNKGYG"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiSystemUuid" value="2C01A623-FA31-4977-B338-93A11A11C3C4"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiSystemVersion" value="1.0"/>
<ExtraDataItem name="VBoxInternal/Devices/smc/0/Config/DeviceKey" value="ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"/>
<ExtraDataItem name="VBoxInternal/Devices/smc/0/Config/GetKeyFromRealSMC" value="1"/>
<ExtraDataItem name="VBoxInternal/TM/TSCMode" value="RealTSCOffset"/>
<ExtraDataItem name="VBoxInternal2/EfiGraphicsResolution" value="1920x1080"/>
</ExtraData>
<Hardware>
<CPU count="8" CpuProfile="Intel Core i7-6700K">
<PAE enabled="true"/>
<LongMode enabled="true"/>
<HardwareVirtExLargePages enabled="true"/>
<CpuIdTree>
<CpuIdLeaf id="1" eax="67301" ebx="1050624" ecx="10019837" edx="3219913727"/>
</CpuIdTree>
</CPU>
<Memory RAMSize="10240"/>
<Firmware type="EFI"/>
<HID Pointing="USBTablet" Keyboard="USBKeyboard"/>
<HPET enabled="true"/>
<Chipset type="ICH9"/>
<Boot>
<Order position="1" device="HardDisk"/>
<Order position="2" device="None"/>
<Order position="3" device="None"/>
<Order position="4" device="None"/>
</Boot>
<Display VRAMSize="256" accelerate3D="true"/>
<BIOS>
<IOAPIC enabled="true"/>
<SmbiosUuidLittleEndian enabled="true"/>
</BIOS>
<USB>
<Controllers>
<Controller name="xHCI" type="XHCI"/>
</Controllers>
</USB>
<Network>
<Adapter slot="0" enabled="true" MACAddress="080027028DE5" type="82545EM">
<DisabledModes>
<NAT localhost-reachable="true"/>
<InternalNetwork name="intnet"/>
<NATNetwork name="NatNetwork"/>
</DisabledModes>
<BridgedInterface name="Realtek Gaming 2.5GbE Family Controller"/>
</Adapter>
</Network>
<AudioAdapter controller="HDA" useDefault="true" driver="WAS" enabled="true" enabledOut="true"/>
<RTC localOrUTC="UTC"/>
<Clipboard mode="Bidirectional"/>
<GuestProperties>
<GuestProperty name="/VirtualBox/GuestAdd/Revision" value="162988" timestamp="1720278885651132105" flags=""/>
<GuestProperty name="/VirtualBox/GuestAdd/Version" value="7.0.18" timestamp="1720278885651132103" flags=""/>
<GuestProperty name="/VirtualBox/GuestAdd/VersionExt" value="7.0.18" timestamp="1720278885651132104" flags=""/>
<GuestProperty name="/VirtualBox/GuestInfo/OS/Product" value="Darwin" timestamp="1720278885650622700" flags=""/>
<GuestProperty name="/VirtualBox/GuestInfo/OS/Release" value="21.1.0" timestamp="1720278885651132100" flags=""/>
<GuestProperty name="/VirtualBox/GuestInfo/OS/ServicePack" value="" timestamp="1720278885651132102" flags=""/>
<GuestProperty name="/VirtualBox/GuestInfo/OS/Version" value="Darwin Kernel Version 21.1.0: Wed Oct 13 17:33:23 PDT 2021; root:xnu-8019.41.5~1/RELEASE_X86_64" timestamp="1720278885651132101" flags=""/>
<GuestProperty name="/VirtualBox/HostInfo/GUI/LanguageID" value="zh_CN" timestamp="1720280020026398700" flags="RDONLYGUEST"/>
</GuestProperties>
<StorageControllers>
<StorageController name="SATA" type="AHCI" PortCount="2" useHostIOCache="false" Bootable="true" IDE0MasterEmulationPort="0" IDE0SlaveEmulationPort="1" IDE1MasterEmulationPort="2" IDE1SlaveEmulationPort="3">
<AttachedDevice type="HardDisk" hotpluggable="false" port="0" device="0">
<Image uuid="{97c72c90-7d06-40b7-8b60-0d4179117f9a}"/>
</AttachedDevice>
<AttachedDevice passthrough="false" type="DVD" hotpluggable="false" port="1" device="0"/>
</StorageController>
</StorageControllers>
</Hardware>
</Machine>
</VirtualBox>