s6-linux-utils
Software
skarnet.org
The fstab2s6rc program
fstab2s6rc reads the /etc/fstab file, listing the filesystems and swap partitions
to mount at boot time, and builds a set of service definition directories from it, meant to
be fed to s6-rc-compile, having the
effect of mounting these partitions when run by s6-rc.
This method has several advantages over the classic mount -a:
- Parallelization. Dependencies between the mount points are respected: if /var
and /var/log are mount points in /etc/fstab, s6-rc will not attempt to
mount /var/log before /var is successfully mounted. But apart from this
necessary serialization, s6-rc will perform in parallel as much as it can.
- Granularity. mount -a in the boot sequence treats all the mounts as one
unit; and although the output of fstab2s6rc can provide a bundle listing all the mounts,
each mount is available as a separate service.
fstab2s6rc is an offline tool. It does not perform mounts or unmounts itself;
it just converts the data in /etc/fstab, which is in a format usable by mount,
into a format usable — after compilation — by s6-rc.
Interface
fstab2s6rc [ -A | -a ] [ -U | -u ] [ -E | -e ] [ -F fstab ] [ -m mode ] [ -B bundle ] [ -d basedep ] dir
- fstab2s6rc creates a directory dir in the filesystem to host all the service definition it will create.
dir must not previously exist.
- fstab2s6rc reads the /etc/fstab file. For every mount defined
in the file, it creates a subdirectory of dir that is a suitable definition
directory for an s6-rc service performing that mount.
- The service is named after the mount point: the service mounting /var/log
will be called mount-var:log (slashes being replaced with colons, first slash
omitted).
- For swap partitions, the partition named is used: the service activating swap on
/dev/sda2 will be called swap-dev:sda2.
Options
- -F fstab, --fstab=fstab
- Read mount point information from file fstab instead of /etc/fstab.
- -m mode, --mode=mode
- Create dir with permissions mode. mode is interpreted in octal.
- -B bundle, --bundle=bundle
- Create a bundle named bundle containing all the created services.
The mount point services will also be grouped under a bundle named bundle-mounts
and the swap services will be grouped under a bundle named bundle-swaps.
fstab lines that have the noauto option will not be included in these bundles.
- -d dep, --base-dependency=dep
- Add a dependency to a service named dep to all the created services.
This is useful e.g. in a boot sequence to ensure that the mounts will not start before
a certain point.
- -A, --include-noauto
- Include mount points and swaps marked noauto in the output. These
services will not be marked as essential or recommended, and they will not be included
in any bundle, but they will be there. This is the default.
- -a, --exclude-noauto
- Exclude mount points and swaps marked noauto. No service will be created
for these fstab entries.
- -U, --without-uuid
- The created services will use s6-linux-utils commands such as
s6-mount and s6-swapon.
This makes the created services only depend on s6-linux-utils, but the fstab
entries must not contain util-linux-specific syntax such as UUID= or
LABEL= in place of device names (if they do, the fstab2s6rc invocation
will work, but will generate nonsensical commands, interpreting the device
names literally). This is the default.
- -u, --with-uuid
- The created services will use util-linux commands such as
mount and
swapon. Running
the services will depend on having such commands installed, but syntax
for labels and uuids will be understood.
- -E, --essential
- Mark the services as essential, and do not create down scripts
for them. This makes services suitable to be part of a base init sequence where
all the listed filesystems are mounted early, and never unmounted until right
before the machine reboots. (noauto entries will not be marked as
essential.) This is the default.
- -e, --not-essential
- Mark the services as recommended rather than essential; create down
scripts to unmount the filesystem. This makes services suitable for being called
later than the base init sequence, as an optional part of a system's
functionality. Stopping the services will unmount the
corresponding filesystems and turn off the corresponding swap devices.
noauto entries will not be marked as recommended.
Exit codes
- 0
- Success.
- 1
- Invalid fstab file.
- 100
- Incorrect usage.
- 111
- System call failed.