Changing systems from Mojave to Sonoma

A great deal has changed in macOS over the last five years, when going from macOS 10.14 Mojave to 14 Sonoma. This article looks at some facts and figures about what used to be the System folder, and has now become the Signed System Volume (SSV).

Since macOS 10.14.5, I have obtained full listings of all the apps and other bundles (including kernel extensions and frameworks) that are installed in the System Library and, since Catalina, in /System/Applications. With the wisdom of hindsight, these can be revelatory. Although Apple didn’t officially support virtualisation using Virtio devices until macOS 11, look through the list of kernel extensions in macOS Mojave 10.14.5 and you’ll find version 2.1.3 of AppleVirtIO.kext. By Catalina 10.15.6 that had reach 16.140.6, and now in Sonoma it’s version 221 and accompanied by a whole family of Virtio devices.

Looking first at bundled apps, with the notable exception of Safari, these didn’t get their own place on the System volume until Catalina, which took a few versions to settle and integrate them properly, which was largely complete by 10.15.6. Since then, Apple has added some substantial apps, including:

  • Clock
  • Freeform
  • Print Center
  • Screen Sharing
  • Shortcuts
  • Weather

bringing the total from 54 at the end of Catalina to 59 today.

The number of bundles found on the System volume has risen greatly, from 4,774 in late Mojave to 8,204 in Sonoma today. Major rises correlate with the introduction of the Boot Volume Group in Catalina, and with each new wave of Apple silicon. This is shown clearly in the chart below.

macosbuildlib

Breaking changes down by major folders within the System volume shows a more concerning trend.

macossystemfolders

By far the largest single folder in terms of its number of bundles is PrivateFrameworks, where Apple locks away code support from third-party developers. That has grown in number from 2,055 in 10.15.6 to 3,712 in 14.2.1, nearly half of all bundles in Sonoma’s /System/Library. Compare those with Frameworks, intended for use by all developers, which has risen from a mere 600 to just 760. macOS has grown considerably, but gets more like an iceberg with each new version, as more and more is added to PrivateFrameworks but not exposed to developers outside Apple.

Some folders, including Automator, Templates and CoreServices, have defied the trend and become smaller, although that’s surprising for CoreServices. AssetsV2 is another folder that has grown strongly; that contains on-demand support data for services such as Siri and linguistic analysis.

Given its longstanding deprecation of kernel extensions for third-party developers, it might seem surprising that Apple’s own use of kexts has grown substantially, as shown in more detail in the chart below.

macosbuildkext

The proliferation of kexts is closely related to the introduction of new hardware, particularly the M1 family of chips, for which they soared from 535 in 10.15.7 of September 2020 to 788 less than two months later in 11.0.1. There has since been a smaller surge with the introduction of M3 models late last year, taking the total of kext bundles from 837 in the non-M3 release of 14.0 to 875 in the unified version 14.2.1.

I expect the number of kext bundles will only decline as support for Intel Macs wanes, although by then we’ll no doubt have further families of Apple silicon to support.