重新安装macOS的几种方式及具体操作

721 阅读14分钟

最近,我在我的设备上重新安装了MacOS。在整个过程中,许多尝试都惨遭失败。但我现在有了一些经验和各种各样的提示,可以尝试一下。

免责声明:这篇文章中的所有信息都是按现状提供的,其中一些信息可能会使你的保修失效。Chris Warrick和苹果公司都不会对因使用本帖信息而对你的设备造成的任何损害负责。

内容

用El Capitan制作安装介质(只能访问恢复)。

最好的、最安全的、最不容易出错的安装方式是用U盘。 不幸的是,制作一个带有macOS安装程序的U盘是个麻烦事。 制作macOS安装介质的预期方式是从App Store/Software Update下载安装程序,然后运行该安装程序中包含的createinstallmedia 命令行程序。只要macOS能运行,一切都很好。 如果它不能,而且Recovery不能为你安装,那就很难解决。

苹果不公开提供macOS图像。这可能是为了使Hackintoshing这一点更难,但这也影响到合法用户。 你唯一能从苹果下载的是El Capitan。苹果在其网站上提供InstallMacOSX.dmg。如果你看一下说明,你会发现这不是一个可启动的OS X镜像。这个镜像有一个.pkg 包。这个软件包预计将安装/Applications/Install OS X El Capitan.app 。好吧,我们在恢复阶段,我们不能安装东西。所以,让我们用手动的方式来做这件事。

手动安装.pkg文件

原来,.pkg 格式只是一路的档案,所有的档案都是不同的格式(至少有三种)。

macOS扁平包格式

你可以找到更多关于扁平包格式的资源,一二,虽然这是从file 命令和The Unarchiver推断出来的。

第一个档案是.pkg 文件本身。这些文件是XAR格式,这是由OpenDarwin社区发明的。你可以用 pkgutil --expand foo.pkg foo_files(最后一个参数是目标目录,可以是任何东西,将由pkgutil ),如果你能使用该命令(在Recovery OS中可用),或者你可以试试xar 工具,如 xar -xf foo.pkg.这两个工具产生的结构有点不同,但我们可以用这两个工具来工作。

第二个归档文件是Payload 。它是一个gzipped cpio归档文件,包含这个软件包所安装的文件。 如果你有BSD tar(macOS上默认的,Linux上很容易安装),你可以直接做 tar -xvf Payload否则,你可以使用 gunzip -c Payload | cpio -i(或gzcat)。这将解压该软件包的所有文件。

另一个嵌套的档案是Scripts ,虽然注意到pkgutil 会自动提取它。如果它没有被提取出来,其实又是.cpio.gz ,提取的方式也是一样的。

(PS.如果你身边有7z (在Windows/Linux上也有),你可以直接把它指向本段中提到的所有压缩文件)。

用部分macOS安装程序制作安装介质("不是有效的操作系统安装程序")。

a.从El Capitan的下载中

让我们扩展一下El Capitan软件包。

我们已经得到了安装程序,这是我们创建安装镜像所需要的东西。 很好,让我们试试吧!

哦,我们有一个问题。原来还有一件事我们需要处理,那就是脚本。MacOS软件包有脚本,通常是shell脚本,在安装过程中的不同阶段运行。我们可以查看PackageInfo 文件,或者直接查看Scripts 文件夹,以看到有一个我们需要运行的link_package 脚本。这个脚本在安装程序中创建了一个Contents/SharedSupport 目录,并将InstallESD.dmg 文件(也就是安装前的DVD镜像)复制/硬链接到该目录。让我们试试自己做这个。

而且成功了!createinstallmedia ,现在将产生有效的安装媒体。

b.从恢复区/应用商店安装程序(任何macOS版本)

如果你在恢复区,你可以在文件系统中找到一个安装程序。如果你试图运行它,你会得到与前一段相同的错误。

这种情况也发生在一些旧的macOS版本中,你会从App Store获得一个小的.app ,而该应用会进行实际的下载。

不管问题是什么,我们需要用安装程序下载安装文件。打开安装程序,让它运行,直到下载完成。如果应用程序要求你重新启动,在这一点上退出它。如果它从未要求,你仍然可以找到一种方法来获取文件(在安装失败后,它们不应该被删除)。

安装文件可以在目标卷上的/macOS Install Data 。对于旧版本,你将只有InstallESD.dmg ,新版本增加了越来越多的文件,其中一些是硬件专用的(Catalina 有InstallESDDmg.pkg ,因为苹果喜欢无缘无故地嵌套档案!)。不管你发现多少文件,你都可以直接。

  1. Install macOS Catalina.app 复制到一个可读可写的卷。

  2. /Volumes/TARGET/macOS Install Data 的内容复制到Install macOS Catalina.app/Content/SharedSupport 。确保你考虑到了隐藏的文件,如果有的话(复制整个目录)。如果你这样做是正确的,InstallESDDmg.pkg (或旧版本的InstallESD.dmg )是在SharedSupport目录下(而不是在一个子目录下)。

  3. 运行createinstallmedia 。现在它应该认为安装程序有效。根据操作系统的版本,可用的选项略有不同。

El Capitan 安装程序无法被验证

如果你得到这个错误,可能是因为苹果的签名密钥过期了,或者是因为其他日期/时间的奇怪现象。不管怎么说,如果你确定安装程序没有被损坏,你可以用这个命令强制安装(来源)

奖金花絮1:下载如何进行

在处理所有安装程序的东西时,我发现了一些关于下载过程的有趣/令人担忧的事情。

第一件事是,macOS安装程序使用没有加密的普通HTTP来下载文件。这使你面临所有的标准问题:攻击者可以替换你下载的文件,而且该协议没有做任何事情来检测错误(安装程序将验证文件,但校验和从何而来?

第二个问题是下载是如何发生的。你可能已经注意到它比平常的流量要慢一些。下载以10MB为单位,使用Range HTTP头。安装程序要求10MB,得到它,保存,要求另一个块。这样重复800次以上,整个HTTP舞蹈的开销就会变得很明显。(我没有检查过,但我希望安装程序至少要使用Keep-Alive。不过,如果没有的话,我也不会感到特别惊讶)。

但这又提出了另一个问题。服务器显然支持部分下载。 然而,如果你的网络在下载过程中断开,你对该文件的下载进度就会被重置,在Catalina,如果你特别不走运,你可以从8GB返回到500MB。问题是,为什么?这种基础设施应该使继续下载变得微不足道,如果你担心该文件的下载不成功,或许可以丢弃最近的一大块。

奖金花絮2:从设置助手中使用终端

当你在清洁安装后第一次启动Mac时,它会启动设置助手。这个应用程序要求进行基本的操作系统设置(地域、日期/时间、用户账户),还可以让你从备份中恢复用户数据。

有时,你可能想从该屏幕访问终端或控制台。 你可以分别用Ctrl + Opt + Cmd + T和Ctrl + Opt + Cmd + C(来源)做到这一点。

这怎么能派上用场呢?例如,如果你想检查备份驱动器是否仍在工作,以及进程是否没有卡住(我写了一个测试文件,还检查了top )。

奖金花絮3:创建安装介质的图像可能不起作用

几个月后,在12月,我升级到大苏尔,然后在Boot Camp中与Windows 10一起安装。然后我又做了一些黑客,导致了两个无法启动的操作系统。

作为升级的一部分,我准备了安装介质,用它来安装(这样就不会像上次那样失败了),并用磁盘工具对它做了一个.dmg 。(另外,苹果不会告诉你这个,但是你需要给磁盘工具以全盘访问权,以便磁盘成像工作。否则,你会得到一个神秘的错误)。我在安装后删除了USB驱动器,但嘿,我可以把它找回来。 我启动到Internet Recovery,恢复了我的镜像。大苏尔未能启动,显示了一个🚫符号。我试着从之前的重装中恢复我的Catalina镜像,由于大小不匹配,这也没有用。我使用了一个与这几个月前不同的U盘(我当时没有带那个U盘),显然我使用的那个U盘的大小不同(这两个U盘的市场容量都是16GB)。镜像可以正常挂载,createinstallmedia ,可能会产生一个可启动的驱动器。

锦囊妙计4:不要费力恢复时间机器的备份

Time Machine是苹果公司神奇的备份解决方案。时间机器保存了你整个磁盘的快照。它应该帮助恢复被删除或以不需要的方式改变的文件,或帮助你恢复完整的macOS安装。

时间机器在文件恢复方面很出色,但我的3次系统恢复尝试都没有成功。第一次尝试是在6月份从恢复中进行的完整的时间机器系统还原。它在中途失败了,它不能从磁盘上读取所有的东西。这次失败可能有潜在的硬件问题,所以我又进行了一次尝试。

第二次尝试是迁移助手恢复,作为初始设置的一部分。 这次成功了,一切都正常,除了一个相当重要的应用程序。 这个应用程序需要在供应商那里在线激活,而在安装后它不会重新激活。不管第三方供应商在做什么,都不喜欢重新安装。我试着把~/Library中所有与他们的软件有关的东西都删除,并运行他们的nuke-everything卸载程序,但这并不奏效。 我从头开始重新安装,并从Time Machine驱动器中复制了我的文件、设置和应用程序。

第三次尝试是再次使用系统还原,这次是为了12月的重装。在此期间,硬件问题都被解决了,所以我去做了时间机器系统还原。

问题一:互联网恢复启动到Catalina。苹果方面有一个问题,大苏尔在12月的互联网恢复中是不可用的。TM Recovery不会恢复用比你启动的macOS的新版本创建的备份,所以我被迫恢复一个稍旧的Catalina备份。(在那个周末,我大部分时间都是在Windows中度过的,所以除了需要再次将macOS升级到Big Sur之外,我并没有因为这个而真正失去任何数据)。

问题二:它浪费了计算不准确的大小估计的时间。在恢复一个备份之前,macOS首先检查它是否适合你的驱动器。macOS不会告诉你计算的结果,但你可以从完整的安装程序日志(Cmd + L)中读取最终值。在我的Mac上,这个值是96.2GB。当它接近这个数值时,我就在Mac上。94,95,96,96.1,96.2,96.3等一下,96.3GB?希望这只是一堆直接从系统镜像中安装的额外东西,或者类似的东西,对吗?当然,由于进度条是基于预先计算的大小,它变得不确定,我无法判断它何时会结束。98、100、110、120、121.2GB是它最终结束的地方。因此,它不仅浪费了20多分钟计算大小,而且还偏离了25GB。

问题三:还原没有成功。系统还原完成后,声称已经成功了,但是macOS却无法启动。它显示了一个无法恢复的错误SecurityAgent无法创建要求的机制。大多数出现类似错误的人都是由于TeamViewer卸载失败造成的;我没有安装TeamViewer,而且它指的是另一个组件。所以,擦除并重新安装。

我把我的东西从TM驱动器上复制下来,它表现得很奇怪。一些应用程序无法加载复制到库中的设置,其他应用程序开始出现 "移动到/应用程序?"的提示(即使它们在那个目录中)。出于某种原因,这些文件上设置了一些隐藏的属性。我通过把文件放在Kekka的.zip 档案中,然后解压来解决这个问题;xattr 可能也有帮助。(该属性可能是com.apple.quarantine )。

在我让Mac工作后,我重新安装了Windows,并设置了rEFInd,现在它工作得很好。(我使用rEFInd只是因为我想在Windows中实现虚拟化,除非你从macOS中温控重启,否则那是行不通的。我不需要比Option键启动菜单更高级的东西,但苹果让我使用第三方的启动程序)。

给进度条设计者的公开信

亲爱的进度条设计者:你能不能让你的进度条具有功能性?macOS的进度条可能看起来很时尚,只有7 px(非Retina)/6 pt=12 px(Retina)高,但同时,如果你需要知道它是否工作或是否卡住,你就会看到单个像素。我曾不得不将鼠标光标指向填入部分的末端,只是为了知道它是否工作。或者有时,在我的屏幕前放一张纸,因为当macOS在黑屏上安装时,没有鼠标光标。如何使那个进度条更容易使用,信息量更大?只要在它上面加上数字就可以了。对于长期运行的进程,我不会介意进度条上写着 "12.34%"。那个特定的设置/迁移助手窗口应该被改变(它只有剩余时间估计和传输速度,它还应该显示已移动的数据/总大小),但是更多的事情难道不会从明确的进度指示中受益吗?是的,也许它看起来不那么圆滑,也许它需要更多的空间来显示栏。

只是比较一下:哪个更容易解析?哪一个更有信息量?

42%

42.4%

64.64%(6.7GB/10GB复制的)。

说实话,我对选项2已经很满意了,至少它可以很容易被阅读,而且你可以记住这个数字而不是一个模糊的位置。

最后

经过这一切,我成功地安装了macOS Catalina。在内置El Capitan恢复和Catalina互联网恢复的各种失败之后,我首先用这个黑客安装了El Capitan,然后跳到Mojave,因为我认为新的软件更新会有帮助(没有,同样的安装程序,同样的解压包失败问题),然后做了一个Catalina U盘,它终于干净地安装了,但我担心备份盘的操作,我在本地网络上使用代理,试图加速Catalina下载,没有多少改进。但是,嘿,至少它在工作。苹果公司真的应该让安装他们的操作系统和制作启动媒体变得更容易,即使是在东西不工作的情况下,即使是从Windows。黑客们可以直接找到有工作的Mac的人,让他们从App Store下载并制作安装介质,或者找到不那么合法的来源,他们可能并不那么在意。但是,如果我自己的系统崩溃了,我可能想立即得到工作的安装媒体,我自己,而且是来自苹果。没有这些乱七八糟的东西。