SYNTHETIC.CONF(5) | File Formats Manual | SYNTHETIC.CONF(5) |
synthetic.conf
—
synthetic symbolic link and directory manifest
synthetic.conf
describes virtual symbolic
links and empty directories to be created at the root mount point. Because
the root mount point is read-only as of macOS 10.15, physical files may not
be created at this location. All writeable paths must reside on the data
volume, which is mounted at
/System/Volumes/Data.
synthetic.conf
provides a mechanism for
some limited, user-controlled file-creation at /. The
synthetic entities described in this file are synthesized by the kernel
during early system boot. They are not physically present on the disk, but
when the system is booted, they behave as if they were within certain
parameters.
synthetic.conf
is intended to be used for
creating mount points at / (e.g. for use as NFS mount
points in enterprise deployments) and symbolic links (e.g. for creating a
package manager root without modifying the system volume).
synthetic.conf
is read by
apfs.util(8) during early system boot.
/etc/synthetic.conf
Individual subsystems may add their own synthetic manifests to
/etc/synthetic.d
to avoid having to append to the content of
synthetic.conf
. This is similar to the mechanisms
which exist for shell and manual page paths,
paths.d
and
manpaths.d,
respectively. If multiple manifests specify the same synthetic link or
directory name, the one respected by the implementation is undefined. The
structure of these manifests is identical to that of
synthetic.conf
.
synthetic.conf
specifies a single
synthetic entity per line. Each line may have one or two columns, separated
by a tab character. If a line has a single column, it denotes a virtual
empty directory to be created at /. If a line has two
columns, it denotes a symbolic link at / whose link target is given in the
second column.
In either case, the first column denotes the name of the entity to be created at /.
A line beginning with the # character indicates a comment that is not parsed.
Synthetic entities may not be deleted at runtime. In order to
delete a synthetic entity, it must be removed from
synthetic.conf
, and the host must be rebooted.
New files and directories may not be created within a synthetic empty directory.
# create an empty directory named "foo" at / which may be mounted over foo # create a symbolic link named "bar" at / which points to # "System/Volumes/Data/bar", a writeable location at the root of the data volume bar System/Volumes/Data/bar # create a symbolic link named "baz" at / which points to "Users/me/baz" baz Users/me/baz
/etc/synthetic.d
September 3, 2019 | Darwin/macOS |