从官方链路获取macOS镜像:下载、校验、做启动盘全攻略
2026/9/20 18:06:33 网站建设 项目流程

先把话说在前面:你平时在第三方网站下载的那个“某某 macOS.dmg”,九成不是苹果官方发布的原包。做系统维护的人都知道,重装 macOS、给虚拟机装系统、或者把系统装进外置 U 盘,第一步都是搞到一个能用的 macOS 镜像,但绝大多数人第一步就走错了——去搜索引擎找“官方镜像下载”,然后点进一个全是广告的网页,从不知名网盘拖下来一个 dmg,最后不是提示“无法验证开发者”,就是装到一半直接报错。

这篇文章只解决一个问题:怎么完全不依赖第三方工具,直接从 Apple 官方链路拿到 macOS 的 app 安装器或 dmg 镜像,并且能校验、能做启动盘、能应对虚拟机场景。不管你是想重装系统、在虚拟机上跑 macOS,还是想把系统装到外置优盘,下面这套方法都够用。我不会让你去下载任何脚本工具、不会让你关系统保护,所有操作全部使用 macOS 自带功能完成。

1. 为什么绕开第三方站,直接拿官方安装器更稳

1.1 第三方“一键下载工具”的真正风险

很多人习惯用网上流传的 gibMacOS、macOS 下载脚本之类的工具,理由是“方便”。但这类工具最大的问题不在于工具本身,而在于你根本不知道下载回来的包是否被人改过。曾经出现过第三方博客提供的 macOS 镜像被人塞进挖矿脚本的案例,安装完系统后后台跑着别人的程序,轻则发热掉电快,重则个人数据被上传。

还有一个很隐蔽的风险:很多“一键下载”脚本为了兼容性,会自动跳过苹果的签名校验步骤。一旦你习惯了这种“下载即用”的流程,就失去了判断安装包是否完整、是否经过苹果签名的能力。官方渠道下载的安装器,不仅保证来源干净,还能让你用系统自带的校验手段确认文件完好。在重装系统这种高风险操作里,每一层安全保障都值得保留。

1.2 macOS 安装器的几种官方格式:app 和 dmg 的关系

先把格式这件事捋清楚。平时大家说的“macOS 镜像”,严格来说有三种官方载体:

  • .app 安装器:完整名称是“安装 macOS 某某.app”,是一个目录形态的应用程序包,里面包含系统安装所需的全部资源。它通常出现在“应用程序”文件夹中,也是制作启动 U 盘的核心素材。
  • .dmg 磁盘映像:一个被压缩封装的磁盘镜像文件,相当于一个“壳”。苹果在某些分发场景(比如恢复助理下载、旧版系统安装引导)会使用 dmg 格式。系统镜像工具很多时候下载到的就是 .dmg。
  • InstallAssistant.pkg:这是苹果 CDN 上实际传输的完整安装器包,双击后会安装出 .app。你在 App Store 里点“获取”,后端拿到的其实也是这个 pkg。

这个关系的核心在于:.dmg 是运输容器,.app 是可执行本体,InstallAssistant.pkg 是线上传输形态。拿到任意一种,你都能通过官方工具转换成其他形态。理解这一点,后面解析苹果的软件更新目录时就不会晕。

2. 官方渠道全梳理:四条拿镜像的正路

2.1 App Store:只适合拿最新版

最没有门槛的方法其实就在 App Store 里。直接在 App Store 搜索框输入“macOS”,会出现当前最新的系统版本页面,点击“获取”之后,系统会在后台把完整安装器下载到“应用程序”文件夹,下载完成后一般会弹出安装窗口,关掉它即可保留安装器。

这个方法优点是真的零操作,缺点是只能拿到当下最新版本。如果你想装的是旧版系统(比如公司软件要求必须用 Monterey、Big Sur),App Store 里根本找不到入口。另外很多老机器会被系统判定为“不兼容新版本”,此时 App Store 可能连“获取”按钮都不显示,需要配合下面的方法。

2.2 Apple 支持页:老版本系统的官方入口

苹果官网有一个长期维护的页面《如何下载和安装 macOS》,地址是 support.apple.com/zh-cn/HT211683,里面汇总了从 Catalina 到当前新版的官方下载入口。每个版本的“下载”链接都会跳转到对应的 App Store 页面,或者直接触发系统下载。

这个页面最大的价值是:它是苹果官方承认的旧版系统入口,不依赖任何第三方仓库。但页面列表里的版本是固定的,不会把十年前的系统全列出来。如果你要追更老的版本(比如 Mojave 甚至更早),这个方法也覆盖不到,就需要用到 2.4 节的 Catalog 方案。

2.3 softwareupdate 命令:系统自带的下载工具

如果你的 Mac 系统不是太老(macOS 12 及以上一般都支持),其实系统里藏了一个官方命令行下载器,就是 softwareupdate。日常大家用它是检查系统更新,但它还有一组隐藏参数专门用来下载完整安装器。

打开“终端”输入:

softwareupdate --list-full-installers

系统会从 Apple 软件更新服务拉取当前可用的所有完整安装器列表,包括 macOS Sonoma、Ventura、Monterey 等版本,每一行会显示版本号和名称。确认版本后执行:

sudo softwareupdate --fetch-full-installer --full-installer-version 15.6

这里 15.6 对应 macOS Sequoia 15.6。命令会在命令行显示下载进度条,完成后自动把“安装 macOS Sequoia.app”放入“应用程序”文件夹。整个过程不需要打开 App Store、不需要登录任何非官方账号、不需要第三方脚本。

2.4 Catalog 清单:所有历史版本的总钥匙

softwareupdate 命令虽然方便,但它能列出的版本有限,而且苹果偶尔会调整服务端参数。真正能“一网打尽”所有历史版本的钥匙,是苹果软件更新服务使用的 sucatalog 清单文件。

这个清单本质上是一个巨大的 XML/plist 文件,里面记录了所有系统组件、安装器、固件的下载地址。苹果的软件更新机制、App Store 下载流程,底层其实都是这个清单在驱动。手动抓取并解析这份清单,就能拿到任意历史版本的安装器下载直链。

当然,Catalog 文件里条目非常多,手动翻不现实,但我们可以用系统自带的 plutil 工具把 plist 转换成 JSON,然后写几行 Python 脚本按关键字筛出安装器地址。具体操作放在第 4 节,那里是我实际操作验证过的完整流程。

3. 实操:用系统自带命令下载指定版本完整安装器

3.1 先看当前能获取哪些版本

在终端执行:

softwareupdate --list-full-installers

第一次执行时系统会去跟 Apple 服务器同步,稍微等一下。输出大致是这个格式:

Finding available installer software Software Update found the following full installers: Install macOS Sequoia (15.6.1) - 15.6.1 Install macOS Sonoma (14.7.5) - 14.7.5 Install macOS Ventura (13.7.4) - 13.7.4

注意,这个列表展示的版本是由苹果服务端动态决定的,不是所有历史版本都在这。列表里没有的版本(比如 Catalina),说明这条路走不通,得用后面的 Catalog 方法。

3.2 下载并确认安装器落在“应用程序”目录

选定一个版本,比如我想下载 Sonoma 14.7.5,执行:

sudo softwareupdate --fetch-full-installer --full-installer-version 14.7.5

系统会要求输入管理员密码,然后开始下载。下载时间取决于你的带宽,安装器大约在 12~14GB 左右。下载完成后,打开“应用程序”文件夹,能看到“安装 macOS Sonoma.app”。

一个容易忽略的点:命令参数里的版本号必须和--list-full-installers列出的完全一致,哪怕多写一个 patch 号也会报“未找到指定安装器”。如果主版本号相同但小版本不同,建议先重新执行列表命令确认最新可用版本号。

3.3 这个命令的局限和细节

  • 下载过程中如果网络断开,重新执行同一条命令,系统会尝试从断点继续,但实际表现因版本而异。保险起见,下载期间尽量不要切换网络、不要休眠 Mac。
  • “应用程序”文件夹里已经有一个同名 .app 时,命令会直接报错“安装器已存在”,需要把旧的删掉再执行。
  • 这个命令需要系统能正常通过苹果签名验证,所以如果你目前系统时间被篡改、或机器曾经改过系统保护设置,有可能下载后无法通过校验,这种情况先修好系统环境再来。
  • 下载的安装器是通用的,不管你现在机器是 Intel 还是 Apple Silicon 都能用,只是后续制作启动盘时步骤略有差异。

4. 实操:解析 Apple 的 sucatalog 拿 dmg 直链

4.1 拉取 catalog 并转换成可检索格式

当 softwareupdate 命令列不出你要的旧版本时,Catalog 方案就是终极手段。先用终端拉取最新的索引清单:

curl -O https://swscan.apple.com/content/catalogs/others/index-15-14-13-12-10.16-10.15-10.14-10.13-10.12-10.9-mountainlion-lion-snowleopard-leopard.merged-1.sucatalog.gz

文件名很长,不用背,规律就是“index-”加版本号列表加“.merged-1.sucatalog.gz”。如果哪天打不开,多半是苹果调整了文件名,打开任意一个苹果软件更新日志可以找到替代地址。

解压并转换成 JSON:

gunzip -k index-*.sucatalog.gz plutil -convert json -o sucatalog.json index-*.sucatalog

plutil 是 macOS 自带的属性列表转换工具,不需要安装 Python 之外的任何库。转换完的 sucatalog.json 可能有好几万行,直接打开会卡,但交给脚本筛选正好。

4.2 定位“InstallAssistant.pkg”或 dmg 的下载地址

Catalogo 里面有大量条目,但完整安装器的特征非常明显:它的包地址 URL 里一定包含InstallAssistant.pkgInstallMacOSX.dmg。写一个最简单的 Python 脚本筛出来:

cat > find_installer.py <<'EOF' import json with open("sucatalog.json", "r", encoding="utf-8") as f: data = json.load(f) seen = set() for prod in data.get("Products", {}).values(): for pkg in prod.get("Packages", []): url = pkg.get("URL", "") if "InstallAssistant.pkg" in url or "InstallMacOSX.dmg" in url: if url not in seen: seen.add(url) print(url) EOF python3 find_installer.py

脚本会把所有符合特征的下拉直链打印出来。你会看到类似这样的链接:

https://swcdn.apple.com/content/downloads/.../InstallAssistant.pkg

开头是swcdn.apple.com,这是苹果官方内容分发网络;地址中包含一串 GUID,这就是安装器包的唯一标识。通过链接里的路径段,你能大致判断系统版本,但更靠谱的方式是把打印结果整理到一个文本文件后,逐一用 curl 查看响应头里的文件名和大小。

有一点要注意:Catalog 里同时存在旧版系统的 InstallAssistant.pkg 和当前版本的 InstallAssistant.pkg。如果你目标明确要某个版本,可以在脚本里加一个过滤条件,用已知的构建号或者发版日期。实际上更简单的做法是多打印几个字段,比如prod.get("PostDate"),然后按日期排序,直接找出你要的那段时间的发布包。

4.3 用 curl 下载并断点续传

拿到直链后用 curl 下载,不仅能用-C -断点续传,还比浏览器下载更稳定:

curl -L -C - -o InstallAssistant.pkg "https://swcdn.apple.com/content/downloads/..."

下载完 InstallAssistant.pkg 后,双击即可完成安装器 .app 的部署。或者用命令行安装:

open InstallAssistant.pkg

安装器会把“安装 macOS 某某.app”装到“应用程序”文件夹。到这里,你就用最原始的方式完成了 macOS 官方镜像的获取。

这个方法的原理其实不神秘:App Store 和 softwareupdate 工具背后调用的都是同一套 CDN 分发机制,Catalog 就是它们公共的“菜单”。手动读取菜单,等于绕过了界面,直接点菜。

5. 下载后的闭环:完整性校验、启动盘和场景边界

5.1 怎么确认你拿到的是真官方包

下载完 .app 或 pkg 之后,我强烈建议先做一次完整性校验。官方安装器带有苹果签名,Gatekeeper 会拦截未签名或被改动的文件。校验命令如下:

sudo spctl -a -t open --context context:primary-signature -v "/Applications/Install macOS Sonoma.app"

如果输出包含accepted source=Unnotarized Developer ID或类似字样,说明签名存在。更严格的做法是验证 .app 内的代码签名:

codesign -dv --verbose=4 "/Applications/Install macOS Sonoma.app/Contents/SharedSupport/SharedSupport.dmg"

这两个命令输出的签名信息都指向Software UpdateApple,基本可确认来源正规。如果你是从第三方渠道下载的包,跑同一个命令大概率会看到code object is not signed at all,这就能一眼识破。

5.2 用 createinstallmedium 制作官方启动 U 盘

拿到官方安装器后,最经典的用法就是制作启动 U 盘。macOS 的安装器本身带一个制作工具叫 createinstallmedia,路径隐藏在 .app 包内。

先准备一个至少 16GB 的 U 盘(实测建议 32GB,因为安装器加启动引导会吃掉不少空间),用“磁盘工具”格式化为Mac OS 扩展(日志式),名称改成MyUSB,然后执行:

sudo "/Applications/Install macOS Sonoma.app/Contents/Resources/createinstallmedia" --volume /Volumes/MyUSB --nointeraction

命令执行大概需要十几分钟,完成之后 U 盘就变成可引导的官方安装盘。整个过程没有用到任何第三方工具,完全依赖系统自带组件。

5.3 虚拟机、外置盘和克隆场景的边界

很多读者问过:“我想在虚拟机上装 macOS,这个 .app 怎么用?”这里需要明确一个边界:虚拟机软件一般需要 ISO 镜像或恢复固件,而不是直接加载 .app。你可以用 hdiutil 手工把安装器转成可引导 ISO:

hdiutil attach "/Applications/Install macOS Sonoma.app/Contents/SharedSupport/SharedSupport.dmg" -noverify -mountpoint /Volumes/SharedSupport hdiutil makehybrid -o macOS.iso "/Volumes/SharedSupport" -iso -joliet

挂载 SharedSupport 和生成 ISO 都是系统自带命令。不过这个方法只适用于 Intel 版虚拟机;Apple Silicon 的虚拟机(比如用虚拟化框架实现的)走的是恢复固件 ipsw,需要另外下载,不在本文讨论范围。

至于“把整个硬盘的 macOS 系统克隆到外置优盘”,这属于系统克隆,而不是安装镜像问题。官方对克隆的支持一直比较克制,最稳妥的是先用本文的方法装好系统,再用“迁移助理”迁移数据,而不是直接拿来一个 dmg 去整盘复制。安装器的作用是搭建系统,克隆更像“复制运行中的系统”,两者目的不同。

6. 实测踩坑记录:这些问题我替你先试过了

6.1 软件更新服务抽风:下载反复失败

使用 softwareupdate 下载的时候,最容易遇到的是下载到一半报“下载失败,请稍后重试”。这个问题的根源多数不在你本地网络,而在于 Apple CDN 的响应波动,尤其是下载高峰时段。我的经验是:换一个网络环境跑一遍--fetch-full-installer,成功率会高不少。用手机热点反而比公司内网稳定,因为内网可能走代理导致连接被重置。

如果反复失败,干脆放弃这个命令,改用第 4 节的 Catalog 直链方案,用 curl 下载。curl 支持断点续传,而且你可以反复执行同一个命令直到 100%,试错成本低很多。

6.2 下载中断后的续传处理

softwareupdate 下载的临时文件路径在不同系统版本里不一样,苹果没有承诺续传能力,所以我不建议手动去找缓存文件。相比之下,curl 的-C -参数更靠谱:

curl -L -C - -O "https://swcdn.apple.com/content/downloads/..."

当下载中断时,重新执行同一条命令,curl 会从之前文件的末尾开始续传,而不是从头下。这个参数配合-o指定文件名时尤其好用,因为续传的前提是本地已经有同名文件。

6.3 Apple Silicon 机器的格式差异:ipsw 和 dmg 不是一回事

M 系列芯片的 Mac 重装系统时,如果你进入的是恢复模式,根本不会用到 dmg 或 .app,而是直接通过系统恢复下载安装。真正的“固件级刷机”用的是 ipsw 文件,苹果也提供官方 ipsw 下载接口,但它和本文说的 dmg 是两套分发体系。

也就是说,如果你的目标是 Apple Silicon 机型,通过 Catalog 拿到的 InstallAssistant.pkg 可以用,但如果你想在 M 系列机器上做 DFU 恢复或进虚拟机,那么你需要的是对应的 ipsw。网上很多“为什么下载了 dmg 装不上”的案例,就是没分清这两类文件的使用场景。

6.4 “无法验证开发者”和“已损坏”到底怎么回事

从官方渠道下载的安装器不会出现“已损坏,请移到废纸篓”的提示,这个提示几乎可以断定你拿到的是非官方来源。它的根源通常是文件在传输过程中被截断,或者被系统隔离属性标记为不安全。

如果迫不得已要处理从其他渠道下载的安装器,可以查看隔离属性:

xattr -l "/Applications/Install macOS XXX.app"

如果看到com.apple.quarantine属性,可以用xattr -dr com.apple.quarantine清除后再试。但我要明确说:这不是官方推荐流程,只是排查手段。正规做法永远是回到官方渠道重新下载,而不是和文件属性较劲。

我在实际维护 Mac 的工作里,80% 的装机问题是源安装包不干净导致的,真正系统损坏的情况反而少。所以在这件事上,我的习惯是:能走官方命令走官方命令,能解析 Catalog 就解析 Catalog,尽量不碰第三方工具。这套方法你跑通一次之后,就会觉得之前到处找网盘链接的时间完全是浪费。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询