A new dracut module to implement fstab.sys handling
This module implements fstab.sys handling. This has to happen after the root
mount and before the nfsroot-cleanup pre-pivot at least. I've made to happen at
the beginning of the pre-pivot scripts, although it should maybe be at the end
of the mount scripts. This latter would be harder to do because the actual
mount is currently done by 99mount-root.sh and there is no 2 digit integer
higher than 99 :-(
There are perhaps other ways of achieving this end, such as having the
nfsroot-cleanup trawl through the newroot's /etc/fstab and auto-magically
figure out if there are any mounts which are pre-requisites for the
/var/lib/nfs/rpc_pipefs mount and do them first. Likewise post pivot,
/etc/rc.sysinit could figure out of there are any pre-requisite mounts for
/var/lib/stateless/{writeable,state} before doing those mounts. In short, make
it the responsibility of anything doing a mount to check if there are any
pre-requisites in /etc/fstab and mount them first. However, this spreads the
changes needed over more places, so I favour the fstab.sys approach. Also, who
knows what other uses administartors may have put fstab.sys to? and this undoes
a regression caused by the move from mkinitrd to dracut.
--- /dev/null
+#!/bin/sh
+test -f /etc/fstab.sys
--- /dev/null
+#!/bin/sh
+dracut_install /etc/fstab.sys
+inst_hook pre-pivot 00 "$moddir/mount-sys.sh"
--- /dev/null
+#!/bin/sh
+fstab_mount(){
+ local dev mp type opts rest
+ test -e "$1" || return 1
+ info "Mounting from $1"
+ while read dev mp type opts rest; do
+ [ -z "${dev%%#*}" ]&& continue # Skip comment lines
+ mount -v -t $type -o $opts $dev $NEWROOT/$mp
+ done < $1 | vinfo
+ return 0
+}
+
+for r in $NEWROOT /; do
+ fstab_mount "$r/etc/fstab.sys" && break
+done