From: Ian Dall Date: Wed, 22 Sep 2010 14:49:19 +0000 (+0200) Subject: 95fstab-sys: mount all /etc/fstab.sys volumes before switch_root X-Git-Tag: 008~121 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ecefdfc28038dad507e98774fa4ae031d647fa87;p=thirdparty%2Fdracut.git 95fstab-sys: mount all /etc/fstab.sys volumes before switch_root 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. --- diff --git a/modules.d/95fstab-sys/check b/modules.d/95fstab-sys/check new file mode 100755 index 000000000..f5e2f556b --- /dev/null +++ b/modules.d/95fstab-sys/check @@ -0,0 +1,2 @@ +#!/bin/sh +test -f /etc/fstab.sys diff --git a/modules.d/95fstab-sys/install b/modules.d/95fstab-sys/install new file mode 100755 index 000000000..a42ee255f --- /dev/null +++ b/modules.d/95fstab-sys/install @@ -0,0 +1,3 @@ +#!/bin/sh +dracut_install /etc/fstab.sys +inst_hook pre-pivot 00 "$moddir/mount-sys.sh" diff --git a/modules.d/95fstab-sys/mount-sys.sh b/modules.d/95fstab-sys/mount-sys.sh new file mode 100755 index 000000000..e8260daf6 --- /dev/null +++ b/modules.d/95fstab-sys/mount-sys.sh @@ -0,0 +1,15 @@ +#!/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