Wrangling file paths in Catalina and Big Sur

For most users with a single system installed on their internal storage, the additional complications brought by Catalina and Big Sur’s dual startup volume should be minimal, but installing multiple boot volumes can become quite confusing. If you’re not careful what you do, you could end up trashing a non-boot system volume. It’s also very easy to become lost in the file system, whether you’re accessing it from the Finder or command line. This article explains what you should expect to find, and what should be safe to do.

As you might expect, Big Sur groks all previous volume layouts, including Catalina’s ‘old’ Volume Group and Mojave’s single integrated startup volume. Catalina doesn’t understand Big Sur’s ‘new’ Volume Group, but does understand Mojave. Mojave doesn’t have a clue how to handle a Volume Group as a single integrated volume, and can’t cope with firmlinks.

File system layout

When accessing the file system from Big Sur, the /Volumes directory contains one entry under the System volume name for the integrated boot Volume Group, laid out as standard, but non-boot Volume Groups have separate entries for their System and Data volumes. Using [System] to represent the name of the System volume (commonly Macintosh HD), and [Data] the name of the Data volume (Macintosh HD – Data), you should see

  • /Volumes/[System] for the boot Volume Group, integrated by its firmlinks
  • /Volumes/[System] for the non-boot System volume
  • /Volumes/[Data] for the non-boot Data volume.

Catalina behaves the same, unless the non-boot Volume Group has Big Sur installed, in which case it can’t mount that System volume properly.

If you want to iterate through all mounted volumes, the simplest method is to work through those in the /Volumes directory, treating the boot volume there as being an integration of both System and Data volumes, and all other volumes as individuals. However, you’ll then have to beware of other points of integration between current boot volumes, as noted below and in this article.

Path discrepancy

When browsing 10.15 and 11 Volume Groups from Big Sur, or 10.15 from Catalina, there’s one discrepancy in paths which alters depending on whether that Volume Group is that used for the current boot, or is non-boot.

On a boot Volume Group, the Finder path [System] > System > Volumes > [System] is the current Data volume, equivalent to Terminal’s /System/Volumes/Data. However, trying to follow a similar path on a non-boot Volume Group causes a problem: [System] > System > Volumes > Data is an empty folder, and Terminal gives the equivalent path as /Volumes/[System]/System/Volumes/Data.

Other confusions

Although entirely consistent, you need to bear in mind that on both boot and non-boot Volume Groups selecting the System volume at top level shows an integration of both System and Data volumes. If you then select the System folder within that, its Terminal path will be /System on the boot Volume Group, but /Volumes/[System]/System on a non-boot Volume Group.

Remember that the System volume only contains immutable system components. Mutable components are to be found in the Finder path [System] > Library > Apple > System, which equates in Terminal to /Library/Apple/System/. For example, the important CoreServices additions are at [System] > Library > Apple > System > Library > CoreServices and /Library/Apple/System/Library/CoreServices/.

Sadly, using inodes and their derivatives isn’t helpful either. Volume IDs in the volfs path and FileReference URL are the same for items on both members of a boot Volume Group. The only way to detect whether an item on the boot Volume Group is on the System or Data volume is to look at the value of its inode: those on the System volume are very large numbers, and those on the Data volume are far smaller. This changes when the Volume Group isn’t used for booting: while the inodes themselves inevitably remain the same, the volume IDs in the volfs path and FileReference URL are then different for the System and Data volumes, even though the Volume Group remains linked.

Startup Disk

On a dual-boot system, when you want to start up from the Big Sur Volume Group, you’ll have to select its Data volume, as the Big Sur System volume isn’t properly recognised. Switching between Big Sur and Catalina normally requires two boots, with two startup chimes, when they’re enabled.

Disk Utility

pathscatbigsur

When dual-booting, you must be assiduously careful as to which copy of Disk Utility (and disk-related command tools, such as diskutil) you use. Avoid doing anything significant, like First Aid, using a copy of Disk Utility from 10.15 or earlier on a Big Sur Volume Group: it won’t understand what you’re asking it to look at, and the best you can hope for is that it’ll just give spurious errors and not try to mess with anything. If you need to modify, check or repair a Big Sur Volume Group, always use tools intended for Big Sur.

I am very grateful to Thomas Tempelmann for his knowledgeable discussions which helped me out of complete confusion.