Dual-booting macOS: Disk structure and Recovery

Boot disks are now complicated. What were once single HFS+ volumes have become a whole set of APFS volumes, and in the case of the M1’s internal SSD, no less than three containers. They’re complicated enough when they just offer one bootable version of macOS. This article looks at what happens to them when you install a second version of macOS on the same disk, and its implications for firmware and recoveryOS.

There are three basic schemes for making your Mac boot between two or more versions of macOS:

  • Install each version of macOS on a separate physical disk.
  • Install each version on the same disk, but in separate containers.
  • Install them altogether in the same container.

Each has its advantages and disadvantages. The first two are similar in that, within one APFS container, there is a complete set of the volumes necessary for a whole bootable system: the System Volume Group consisting of System and Data volumes joined by their firmlinks, and Preboot, Recovery and VM volumes used by macOS. Because the systems are in separate containers, they can’t share any resources, and boot independently in their allocated space within their container.

Apple has recommended instead the third scheme, which has the great advantage that the two systems share the same free space within a single container, providing maximum flexibility. It’s worth noting, though, that Apple’s support note was last revised in January 2019, and refers to the beta-test version of Mojave, long before the current complexity of Big Sur and Monterey.

Another advantage of installing multiple systems in a single container is that they may be able to share Preboot, Recovery and VM volumes if their versions are sufficiently close. However, they can’t share Data volumes, which are normally far greater in size, so this potential economy is relatively small.

BootDualDiskStructureIntelBigSur

Taking the simple example of two nearly adjacent versions of Big Sur, 11.4 and 11.5.2, the diagram above shows what you will end up with on an Intel Mac (internal or external disk), or on the external disk of an M1 Mac. There are two System Volume Groups, here named Macintosh HD and External, each with its own System and Data volumes, and the Sealed System Volumes are a snapshot of and on the respective System volumes. Because the versions of macOS are sufficiently close together, those two systems share Preboot, Recovery and VM volumes.

When that Intel Mac boots, it does so using the latest firmware installed. In the example of 11.4 and 11.5.2, that will be the firmware installed with 11.5.2, and that remains even if the 11.5.2 system is removed from that Intel Mac. Similarly, I believe that the version of recoveryOS in the Recovery volume will be the latest, that accompanying 11.5.2, which remains if 11.5.2 is removed.

This becomes more complicated still when the versions of macOS are sufficiently far apart that the macOS installer decides that separate Recovery systems are required. This results in two Recovery volumes, presumably named distinctly. To enter the older Recovery mode, you must first boot in the older version of macOS, then restart with Command-R held, and similarly for the newer Recovery mode you must have been running the newer macOS before entering that mode. This can cause confusion, and given the changing state of APFS and the tools provided to check and repair file systems and other systems in macOS, it can lead to problems unless you’re extremely careful. For example, few tools provided in Mojave Recovery know anything about System Volume Groups, so must not be used on Big Sur’s volumes.

M1 Macs are different again, as their recoveryOS is provided from a single container on the internal SSD, regardless of the version of macOS running.

BootDualDiskStructureM1

The diagram above shows the volume structure of the internal SSD of an M1 Mac on which two different versions of macOS have been installed, again 11.4 and 11.5.2. This is essentially the same within the macOS container, disk3, but the Recovery volume there isn’t responsible for recoveryOS or 1 True Recovery, which are installed in the Recovery container, disk2. Whenever that M1 Mac installs a more recent version of macOS, any firmware update included is applied to its firmware, notably iBoot, and to the Recovery container. Even if that version of macOS is removed in favour of an older version, iBoot and Recovery remain at that more recent version.

Unlike Intel Macs, M1 Macs can have older firmware and Recovery installed, but only as part of a Restore in DFU mode, when the whole of the internal SSD is erased and the firmware and recoveryOS are replaced by those in the IPFS image used for the restore. Apart from a limited window during which it’s possible to downgrade an iBridge update on an Intel Mac with a T2 chip, which also requires a second Mac and Configurator, there’s no known way to downgrade the firmware of an Intel Mac, and attempts to downgrade Recovery also appear fraught if not doomed to fail.

Before deciding to install a second version of macOS on any Mac, you should consider which of the schemes you will use, and weigh their pros and cons. If you’re still not clear as to how you’ll manage them both, then you should think twice about trying to make your Mac dual-boot. Although it can be extremely useful and convenient, it can also cause serious problems which are tough to resolve. I wish you success, whatever you choose.