oimi分享美好数字生活 oimi分享美好数字生活
  • 首页
  • AI
  • Lab
  • Apple
  • 生活方式
  • 硬件
  • 15
  • 0

当 Mac 升级到 Catalina 时,苹果在硬盘里多了Macintosh HD Data

OIMI
28 10 月, 2019

当我升级 macOS Catalina 后,却发现一件我烦心的事:

用 Alfred 搜索应用时,不少应用都会重复出现。当我按照两个应用显示的路径去查看,却发现了让我不解的现象:Macintosh HD/Applications路径一直都是应用安装的默认路径,没有问题。但这个 System/volumes/Macintosh/Applications文件夹从何而来?

当 Mac 升级到 Catalina 时,苹果在硬盘里多了Macintosh HD Data-oimi分享美好数字生活

Alfred 中重复出现的应用(图片来源:alfredforum.com)

更加奇怪的是,仔细看显示的路径,从 Macintosh HD 盘符开始的路径,居然又回到 Macintosh HD,仿佛是陷入了自我循环。

当 Mac 升级到 Catalina 时,苹果在硬盘里多了Macintosh HD Data-oimi分享美好数字生活

循环出现的 Macintosh HD

想弄清这两个问题,就要回到在 Catalina 升级时,去看看硬盘里发生的事情。

1

一切要从 macOS 的系统文件的安全性开始讲起。

从 El Capitan 开始,Apple 工程师给 macOS 加上了「系统完整性保护」技术。这就像给书柜的某些抽屉加上了锁,没有钥匙就拿不到里面的文件,这样系统文件就不会被轻易篡改。

不过有锁就有钥匙,只要获得了 root 权限,恶意程序还是能读写系统文件。

到了 Catalina,Apple 工程师想了一个更彻底的办法:那就是将所有系统文件从原本的文件系统中分离出来,组成独立的文件系统,并且把这个文件系统从设计上设定为只能读取,不能写入。

就好像买了一个新书柜专门用来放重要文件,而且这个书柜压根就没有可以打开的地方,这样系统文件就很难被恶意修改。

当 Mac 升级到 Catalina 时,苹果在硬盘里多了Macintosh HD Data-oimi分享美好数字生活

一块硬盘中可以窗建多个宗卷(图片来源:apple.com)

具体要如何实现呢?首先要感谢 macOS High Sierra 中开始使用的新文件系统 —— APFS,它可以轻松地在一块磁盘中创建多个卷。

在安装 Catalina 时,会在磁盘中新建一个 Macintosh HD 卷,并且将原来的卷改名为 Macintosh HD Data。新建的 Macintosh HD 卷就是专用用来存放系统文件的「书柜」,整个卷都是只读的。 Macintosh HD Data 就像之前一样,让用户自由地读写数据、安装应用。

当 Mac 升级到 Catalina 时,苹果在硬盘里多了Macintosh HD Data-oimi分享美好数字生活

原宗卷被已经被改名为 Data(图片来源:apple.com)

创建好 Macintosh HD 之后,Macintosh HD Data 中的系统文件就会被剪切到系统卷 Macintosh HD ,组成独立的文件系统。

当 Mac 升级到 Catalina 时,苹果在硬盘里多了Macintosh HD Data-oimi分享美好数字生活

bin 文件夹被移动到系统卷(图片来源:apple.com)

至此,通过分离系统文件到独立卷的操作就完成了。无论程序在 Macintosh HD Data 卷对文件系统做什么,都不会影响 Macintosh HD 中的系统文件。

在一块硬盘上设置两个文件系统,实现了 Apple 工程师们想要系统安全性。不过如果就此结束,可就苦了用户和开发者们了。

2

一块磁盘同时存在两个宗卷、两套文件系统会造成什么问题呢?

对于用户来说,会明显感受到文件系统的不统一。最明显的是在 Finder 中,如果不加以处理,你应该会同时看到 Macintosh HD Data 与 Macintosh HD。而且就像 Windows 上的不同分区,找起文件来会比单一宗卷麻烦得多。

而对开发者来说,问题就严重的多。现在所有系统文件都会被移到了 Macintosh HD 中,而第三方应用只能待在 Macintosh HD Data。不少应用会依赖系统程序和文件,如果开发者不加以适配,按照原来设定好的路径就会找不到系统文件,应用就无法使用了。这种纯粹因为 Apple 引起的「技术债」,开发这可不会乐意花自己的时间去还。

为了让用户和程序将这两个原本独立的文件系统,当作一个统一的文件系统来使用,Apple 用「卷组」和 「firmlink」 这两项技术,来了一场障眼法表演。

当 Mac 升级到 Catalina 时,苹果在硬盘里多了Macintosh HD Data-oimi分享美好数字生活

宗卷在硬盘中的位置(图片来源:bombich.com)

为了解决两个宗卷的显示问题,Apple 工程师引入了「卷组」这一概念,一个卷组由一个系统卷( Macintosh HD)和一个数据卷( Macintosh HD Data)组成。数据卷会像一块外置硬盘一样,被挂载在 /System/Volumes 目录下,这样两个文件系统就合成了一个文件系统。而在 Finder 边栏中,只有 Macintosh HD 会显示出来。这样普通用户就不会察觉到硬盘中存在着两个宗卷,只有当你打开 Disk Utility 时,就会看到两个宗卷。

当 Mac 升级到 Catalina 时,苹果在硬盘里多了Macintosh HD Data-oimi分享美好数字生活

Disk Utility 会显示出两个宗卷

这种程度的障眼法瞒得过普通用户,却瞒不过应用程序。一方面前文所说的文件路径的问题没有被解决,另一方面应用程度文件数量巨大,而且需要频繁读取,简单的直接挂载在 /System/Volumes 目录下,不加以处理的话,会极大地消耗电脑的硬件资源。

为了填这个坑,Apple 工程师引入了 firmlink 技术。

firmlink 是什么呢?用 Apple 工程师自己的原话说,它就是数据卷与系统卷之间的「双向虫洞」。听上去很复杂,其实从实际效果去看的话,是很容易理解的。

既然我们是想让两个系统看上去像一个完整的文件系统,那我们给数据卷中的文件在系统卷中创建一个替身,结合系统文件和替身,不就得到了一个完整且单一的文件系统了吗?

当 Mac 升级到 Catalina 时,苹果在硬盘里多了Macintosh HD Data-oimi分享美好数字生活

系统卷中的 firm links (图片来源:apple.com) 

这个数据卷中的文件在系统卷中的替身,就是 firmlink。例如 /Users 是 Macintosh HD Data 中的文件夹,但它在系统卷的根目录下有一个 firmlink 。 所以你在硬盘的根目录中看到的 /Users ,真实的目录地址其实是 /System/Volumes/Data/Users/。如果你想知道自己 Mac 为哪些文件创建了 firmlink,可以打开 /usr/share/firmlinks 查看。

当 Mac 升级到 Catalina 时,苹果在硬盘里多了Macintosh HD Data-oimi分享美好数字生活

Mac 自带的 firmlinks

当然 firmlink 的厉害之处,在于应用程序可以通过它,遍历整个系统卷的文件系统。例如程序可以从数据卷中的 /System/Volumes/Data/Users/用户名/Desktop ,直接通过 /System/Users/用户名/Desktop 的路径回到系统卷中,这样就大大减少了不必要的资源消耗。而且从应用程序的视角去看,系统文件一直存在于它原来的位置。这样一来,开发者完全不需要因为新的文件系统做任何适配。

利用 firmlink,无论是在 Finder,还是实际的文件目录中,不管是用户还是应用程序,都被 Apple 的障眼法瞒了过去,将系统卷和数据卷的文件系统当成统一的文件系统。

知道了 firmlink 和卷组的存在,我们终于能解释文章开头的问题。

3

首先,系统中并不存在两个重复的应用。数据卷 Macintosh HD Data 负责第三方应用的安装,所以 System/volumes/Macintosh/Applications 才是应用的真实目录,而 Macintosh HD/Applications 只是它的 firmlink。解决办法也很简单,在 Alfred 中输入 reload 命令,Alfred 就会恢复正常。

而 Macintosh HD宗卷在 Finder 中出现自我循环的现象,其实只是 Finder 施加的一点小魔法。

前文解释过,Macintosh HD Data 被挂载在了系统卷的 /System/Volumes 目录中,所以这个目录中的 Macintosh HD,其实是 Macintosh HD Data ,只不过为了避免使用者因为不熟悉这个名字,对其误操作(对数据卷内的文件用户是可以写入和删除的!),同时也让文件系统看上去完整,Finder 将它显示成了Macintosh HD。不信?用 Terminal 或者其他终端查看下,就能看到/System/Volumes 目录下文件夹的真实名字。

15
本文系作者 @OIMI 原创发布在 oimi分享美好数字生活。未经许可,禁止转载。
苹果 macOS Catalina 最新官方正式版下载 / Mac 10.15 操作系统 dmg 镜像
上一篇
iOS/macOS 上的新密码管理工具,让你填充密码少点一下:Elpass
下一篇

评论 (0)

再想想
暂无评论

聚合文章

理想星环OS开源项目
亚马逊云科技部署DeepSeek模型
重磅发布:Windows/Office被国外大神破解,全部离线永久激活!
OOMOL Studio 免费、底层开源
DeepSeek开源周首日推出FlashMLA项目 可以显著降低内存占用和计算开销
DeepSeek-R1 发布,性能对标 OpenAI o1 正式版
HEU KMS Activator v42.3.2
Windows/Office通用激活神器MAS v2.9版发布
2024年12月,Windows11 24H2官方原版ISO的系统版本号为26100.2605
小米官方发布「米家集成」,可在 Home Assistant 中使用小米 IoT 智能设备

Android 11 Apache Apple M1 Aria2 AWS Route53 Calm CDN ChatGPT Cloudflare CloudXNS CNNIC Debian Debian 9 Debian 9 Stretch DNS DNSpod Domain Name System gdnsd Google Play HEU KMS Activator iOS 11 iOS11 Beta2 iOS11 Beta2 update1 LEMP Let’s Encrypt LNMP macOS MySQL Nginx OEM PanDownload PHP Postgres PowerDNS PowerDNS-Admin Pure DNS Spectre SQLite3 Stretch Windows 11 24H2 Youtube 公共DNS 数字许可证激活 自控力 降级iOS10

猜你喜欢

小米官方发布「米家集成」,可在 Home Assistant 中使用小米 IoT 智能设备

小米官方发布「米家集成」,可在 Home Assistant 中使用小米 IoT 智能设备

17 12 月, 2024
2,154 0 0
iOS 18.2 Beta 1 发布,新增 AI 改进/控制中心/音量限制等 15 项改进

iOS 18.2 Beta 1 发布,新增 AI 改进/控制中心/音量限制等 15 项改进

24 10 月, 2024
475 0 0
office 2024已经正式发布,今天来介绍一下如何在MacOS上安装和激活

office 2024已经正式发布,今天来介绍一下如何在MacOS上安装和激活

26 9 月, 2024
1,419 0 0
解锁Apple Intelligence-misakaX

解锁Apple Intelligence-misakaX

11 9 月, 2024
882 0 0
15

关于

OIMI(oimi.me)是分享美好数字生活的内容平台,同时还涉及 macOS、iOS 等知名系统的使用技巧。 科技 / 旅行 / 摄影 / 生活方式

社交媒体

Nicky

导航

Nicky
Copyright © 2016-2025 oimi分享美好数字生活. Designed by OIMI.
  • ChatTTS,HyperOS,HEU KMS Activator,Win10/11数字权利激活

OIMI

258
文章
2
评论
135
喜欢