很麻烦,建议还是使用U盘方便

近几年已经比较少不使用 U 盘直接使用硬盘安装黑苹果的教程了。这可能和 U 盘越便宜、速度越快有关,也有可能跟此方法操作过于麻烦有关。
本文介绍写入原版 dmg 镜像到硬盘分区的方法 (不需要抹掉整个硬盘),主要用于不方便使用 U 盘安装的情况。

方法原理

教程开始前先介绍清楚此方法的基本原理:
为什么 dmg 镜像只能直接写入到 U 盘?因为 dmg 是硬盘镜像 (Disk Image),其原始数据是包含分区表的完整硬盘镜像,写入 U 盘就相当于硬盘对拷。前面加粗了原始数据,是要强调 dmg 是压缩格式,不能直接写入 U 盘。使用 TransMac 等工具写入其实是边解压成原始数据边写入。
既然 dmg 是带分区表的硬盘镜像,我们按照分区表提取出对应分区的数据,再写入硬盘分区就可以了,这个过程相当于分区对拷。

工具准备

首先我们需要把 dmg 转换成 raw img 以便提取内容。
Linux 可以使用 dmg2img 和 qemu-img,可从软件源安装,或者自行编译。Windows 似乎没有 dmg2img,不过也有 qemu-img,我使用的是 Cloudbase Solutions 提供的预编译的 qemu-img。

qemu-img 下载: https://www.mfpud.com/topics/56/

接下来是从 img 中提取分区数据,Linux 可以直接使用 loop mount 挂载,Windows 我使用的是 7-Zip。

7-zip 下载: https://www.7-zip.org/download.html

最后是写入分区,Linux 可以直接使用 dd,Windows 也有 dd for windows。

dd for windows 下载: https://www.mfpud.com/topics/121/

 

操作步骤

以下教程针对 Windows 平台,相信各位 Linux 用户有能力理解并在 Linux 下操作。

1.dmg 转换成 raw img

打开命令行,切换到 qemu-img 的目录。
先执行 qemu-img --help 查看帮助。帮助很长,我们只需要关注 convert 命令的参数:

convert [-c] [-p] [-q] [-n] [-f fmt] [-t cache] [-T src_cache] [-O output_fmt] [-o options] [-s snapshot_id_or_name] [-l snapshot_param] [-S sparse_size] filename [filename2 [...]] output_filename

以及最下面支持的格式:

Supported formats: dmg vpc host_device bochs blkverify blkdebug parallels file nbd vmdk vdi qcow2 qed cloop qcow vhdx sheepdog null-aio vvfat raw null-co

可以看到是支持 dmg 和 raw 的。

接下来开始转换,我们只需要指定输入格式和输出格式即可:

qemu-img convert -f dmg -O raw <dmg文件名> <输出文件名>

2.提取分区数据

用 7-Zip 打开刚刚转换的 img,可以看到有两个“文件”,点 Info 可以看到 Type 是 GPT。

这两个文件对应的是两个分区,我们需要的是 disk image.hfsx 这个文件,提取出来。

需要注意的是,不要直接拖放文件来提取,因为 7-Zip 会先提取到临时目录,再复制到你拖放的地方。
EFI System Partition.img 是 EFI 系统分区,大多数黑苹果镜像会在里面附带引导程序,可以用 7-Zip 直接打开提取文件。

 

3.写入硬盘分区

先准备一个至少 16GiB 的硬盘分区 (我自己准备了 16GiB,上图可以看到 disk image.hfsx 已经有 7.13GiB 了),分配盘符为 Z:。如果分区已经格式化了,建议在磁盘管理中删除该分区重新新建,新建时选择不格式化。
请自行搜索使用磁盘管理压缩、新建分区的方法,在此不再赘述。

接下来以管理员身份运行命令行,切换到 dd 的目录。
执行 dd --list 可以查看所有硬盘分区,找到要写入的分区。如果已经分配了盘符,可以跳过这一步。
执行

dd if=<disk image.hfsx路径> of=<要写入的分区> bs=4M

其中 <要写入的分区> 是上一步 list 找到的,如果分配了盘符 Z:,可以直接写 \\.\z:。
这一步开始写入数据到硬盘分区,请耐心等待。

4.设置分区 ID

最后需要把分区的 ID 设为 HFS。运行 diskpart。
执行 list disk 查看所有硬盘,确认分区所在的硬盘编号。
执行 select disk <#>,其中的 <#> 是上一步记下的硬盘编号。
执行 list part 查看所有分区,确认分区编号。
执行 select part <#>,其中的 <#> 是上一步记下的分区编号。
如果是 GPT 分区表,执行 set id=48465300-0000-11AA-AA11-00306543ECAC。
如果是 MBR 分区表,执行 set id=AF。

教程到此结束,可以尝试启动 macOS 了。

 

转载自:http://bbs.pcbeta.com/viewthread-1829595-1-1.html