All Posts by Date or last 15, 30, 90 or 180 days.

As an Amazon Associate I earn from qualifying purchases @AMAZON

Designed for the most demanding needs of photographers and videographers.
Connect and charge all of your devices through a single Thunderbolt or USB-C port.

macOS Catalina: Read-Only Boot Volume Precludes Use of Top-Level File System Namespace / Paths (UPDATE: Solution with /etc/synthetic.conf)

How to Stop macOS from Urging You to “Upgrade” to macOS Catalina
Professionals Should Stay Away from macOS Catalina for Six Months
Caution on Upgrading to macOS Catalina — Could Cost You Money and Functionality

Original post follows, or go to the solution using /etc/synthetic.conf.

...

What follows won’t matter to ordinary users, who run mainstream apps and such. But for developers like myself and those using a Mac for complicated tasks, it’s a sticky “forever downgrade”. As in a headache that has no cure.

I run 5 Macs with development code and web servers with various versions of macOS. Each of these has differing hardware, in particular the drive/volume setup. They run different OS versions, so standardizing on things like paths is important to being able to share setup, launch daemons, scripts, etc.

No more top-level namespace in macOS Catalina

In macOS Catalina, the boot volume is now a read-only volume. That may be a good thing for security on its own, but it means that a convenient top-level namespace is now impossible.

For example, a short and sweet path such as “/web/” prior to Catalina could be made with a symbolic links via “ln -s” at the command line.

Every benefit has a cost, and the cost here is zero for most users, so in numeric terms “no one cares”. But for me and other developers it is a forever downgrade.

Apple does not see fit to offer any tool to map in such paths, not even for symlinks.

Would it really be that hard for Apple to offer a “firmlink” tool? Of course not, but it is a longstanding pattern in which the needs of professionals and advanced users are ignored. Such hassles drive people to things like Linux and Windows.

What namespace to use for paths?

To tie together the location of things and especially for command line convenience and efficiency, I have used symbolic links (“symlinks”) for years, e.g.:

ln -s /Volumes/Master /Master

On some other machine, Master may just be the directory itself (not a symlink). On another system, a volume that is a partition off the internal SSD. On another system, a separate drive/volume.

The root level namespace is valuable in creating the same apparent file structure across all my machines machines regardless of whether it is one drive or several, mapping a fixed path to a variable place on different volumes, e.g.:

/web
/tools
/Master
/Scratch
/Attic
etc

The new read-only file system in Catalina precludes creation of any such paths. In some senses this is the most damaging aspect of Catalina, because it incurs a hit forever whenever working at the command line.

This type of usage becomes impossible:

cd /web/...

... changing to the hassle of a longer path with the constant hassle of typos in typing it:

cd ~/web/...                           <=== home directory not good for a daemon process
cd /Users/lloyd/web/...                <=== home directory not good for a daemon process
cd ${WEB}/...                          <=== uggg...
cd /System/Volumes/Data/web/...        <=== painfully long and tedious
cd /usr/local/bin/web/...              <=== painfully long and tedious

Since I use such paths at the command line extensively, this is not a minor matter, leading to more typing and more errors. Aliases and scripts can reduce the pain, but the bottom line is that it is a unfixable never-ending nuisance.

Best alternative

I cannot think of any alternative that is not a headache or problem is some way. For example, using one’s home directory (the ~/ prefix) is generally unsuitable for a daemon process since a daemon process should not be tied to some particular user account.

I don’t yet know how I’ll handle this. I cannot find any way to have a short namespace root to which I can appen “web”, “tools”, etc. Moreover, the change must happen on all five of my machines, including my web servers.

Solution: mount points vs /etc/synthetic.conf

Thanks to reader Mark A for sending me this information. It is incredible that Apple does not see fit to mention this key workaround in About the read-only system volume in macOS Catalina.

Mark A writes:

A few pages that you should be able to cobble together a solution short of reworking your entire scheme.

https://www.drukspijker.nl/drukspijker/personal/directories-at-root-on-osx-catelina-how-to/
https://arstechnica.com/civis/viewtopic.php?f=19&t=1459515
https://superuser.com/questions/1467982/how-to-create-a-firm-link-in-latest-apfs
https://github.com/NixOS/nix/issues/2925

MPG: awesome! Tested and it works.

A snippet from the /etc/synthetic.conf I created:

Master Volumes/Master
tools Volumes/Master/diglloyd/tools
web Volumes/Master/diglloyd/web

Warning: this solution sucks for server-process users because synthetic volumes do not mount prior to login.

View all handpicked deals...

Seagate 22TB IronWolf Pro 7200 rpm SATA III 3.5" Internal NAS HDD (CMR)
$500 $400
SAVE $100

diglloyd.com | Terms of Use | PRIVACY POLICY
Contact | About Lloyd Chambers | Consulting | Photo Tours
Mailing Lists | RSS Feeds | X.com/diglloyd
Copyright © 2020 diglloyd Inc, all rights reserved.
Display info: __RETINA_INFO_STATUS__