Last Week on My Mac: Flaws in re-installing Catalina

Recent versions of macOS have been exceptionally tough challenges for the system installer. First we have the continuing need to convert startup volumes from HFS+ to APFS, which has been mandatory since Mojave, even if your Mac normally boots from a hard disk or Fusion Drive. Then Catalina has to split earlier single boot volumes into its new Volume Group format, making a separate read-only System volume and leaving all the users’ files on the connected Data volume.

There are two simple situations for the installer to cope with: upgrading from Mojave or earlier with a single boot volume, and a vanilla re-install.

In the first case, the installer takes the current boot volume, by default named Macintosh HD, renames it Macintosh HD - Data, and removes most of the system folders and files. It then creates a new volume named Macintosh HD, onto which it installs the great majority of the system files, and which it makes read-only and protects with SIP. The two volumes also need various stitching together points in special firmlinks, which must also be created during the installation.

In the second case, the installer should take an existing Volume Group, and simply re-install all the system files without disturbing the volumes and their linkage.

The installer has to be smarter when dealing with clean re-installs, and their variations. Apple has proposed a scheme whereby clean installs should be preceded by the user deleting the existing Data volume and erasing the System volume. But in many (perhaps all) cases, this doesn’t actually work, at least in versions of Catalina up to and including 10.15.2. When the user tries to erase the current System volume in local Recovery mode, that operation fails because:
The volume "Macintosh HD" on disk2s5 couldn't be unmounted because it is in use by the process 734 (kextcache)

If you ignore that error and press on with trying to re-install Catalina, the installer refuses, reporting that “The target volume is part of an incomplete system and cannot be installed to.”

diskutil02

The only way to erase your System volume is to restart into Recovery mode and try to erase it again using Disk Utility, repeating this cycle of restart-erase until you are finally successful. Only then, with the System volume fully erased, will the installer be able to proceed.

Why, though, should the user take a perfectly good Volume Group, have to break it apart, delete their entire Data volume, and then play Russian roulette trying to erase their System volume, all to perform a clean re-install? It should be sufficient simply to erase the Data volume and then proceed with the re-install. The Catalina installer needs to give users the flexibility to decide what of their existing macOS installation they want to delete prior to re-installing. At present, if you depart in any way from this complex procedure, the installer apparently cannot cope.

I suspect one reason for current inflexibility is the mechanism for creating the firmlinks on which this Volume Group scheme depends, which Apple doesn’t document. If you only erase the Data volume, the firmlinks there will be removed, and perhaps the installer is unable to replace them when it tries to rebuild that volume’s structure. If that’s the case, it bodes ill for firmlinks: one reason for wanting to re-install macOS would be damage to one of the firmlinks. If the only way to accomplish that is to delete that whole volume, that’s bad news for the user.

The installer’s current behaviour with existing Volume Groups seems bizarre. When offered an intact Volume Group with an erased Data volume, the installer:

  • breaks the Volume Group by removing the Data volume from it,
  • creates a new Data volume with a name derived from the existing Data volume rather than its matching System volume,
  • makes a new Volume Group containing the original System volume and the newly created Data volume,
  • installs editable system files, firmlinks, etc., on the new Data volume.

This is counter-intuitive, undocumented, and worryingly common: probably the most commonly reported error when installing Catalina is the creation of duplicate Data volumes, and some users have encountered not only Macintosh HD - Data - Data but the absurd Macintosh HD - Data - Data - Data, each of which has to be deleted when trying to rectify these problems in Recovery mode.

diskutil01

Is it really beyond the capability of an installer to recognise an existing Volume Group and to use its constituent volumes as the destination for the installation? If you are performing that re-install because of suspected damage to either volume in the group, can the installer cope with that, or is this elaborate clean re-install the only robust method of fixing problems in your Catalina installation? Is Catalina really that fragile?

I have updated my recent article about clean re-installs in Catalina in the light of this unpleasant experience. If you try to follow Apple’s current instructions, be aware of the following issue:
If an error is returned when trying to erase the System volume, any attempt to re-install macOS will fail. You should restart back into Recovery mode and try to erase the System volume again, repeating that until successful. Only when the System volume has been successfully erased, and the Data volume has been deleted, will you be able to re-install macOS.

The end result is that, in Catalina up to and including 10.15.2, clean re-installing macOS is a fragile process which can fail, and must be carried out to the letter. Any attempt to deviate will prevent the installation from occurring, and the user will be left floundering in Recovery mode with an unbootable system.

I am very grateful to Ethan, my grandson, who tested the clean re-install process remotely on his handed-down MacBook Pro (non-T2), which isn’t a bad Christmas present.