* Utilises fstab.{early,late} files in /etc
* Provides fs_add_mount function to mount in pre-mount (early) and pre-pivot
(late) phases
* Code to mount a fstab file is moved over from 95fstab-sys
---
modules.d/95fstab-sys/mount-sys.sh | 22 ---------------------
modules.d/99fs-lib/fs-lib.sh | 39 ++++++++++++++++++++++++++++++++++++++
modules.d/99fs-lib/module-setup.sh | 3 +++
modules.d/99fs-lib/mount-early.sh | 8 ++++++++
modules.d/99fs-lib/mount-late.sh | 8 ++++++++
5 files changed, 58 insertions(+), 22 deletions(-)
create mode 100755 modules.d/99fs-lib/mount-early.sh
create mode 100755 modules.d/99fs-lib/mount-late.sh
diff --git a/modules.d/95fstab-sys/mount-sys.sh
b/modules.d/95fstab-sys/mount-sys.sh
index 12711a0..d2ed7cc 100755
--- a/modules.d/95fstab-sys/mount-sys.sh
+++ b/modules.d/95fstab-sys/mount-sys.sh
@@ -5,28 +5,6 @@
type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
type det_fs >/dev/null 2>&1 || . /lib/fs-lib.sh
-fstab_mount() {
- local _dev _mp _fs _opts _dump _pass _rest
- test -e "$1" || return 1
- info "Mounting from $1"
- while read _dev _mp _fs _opts _dump _pass _rest; do
- [ -z "${_dev%%#*}" ] && continue # Skip comment lines
- ismounted $_mp && continue # Skip mounted filesystem
- if [ "$_pass" -gt 0 ] && ! strstr "$_opts" _netdev; then
- fsck_single "$_dev" "$_fs" "$_opts"
- fi
- _fs=$(det_fs "$_dev" "$_fs")
- info "Mounting $_dev"
- if [ -d "$NEWROOT/$_mp" ]; then
- mount -v -t $_fs -o $_opts $_dev "$NEWROOT/$_mp" 2>&1 | vinfo
- else
- [ -d "$_mp" ] || mkdir -p "$_mp"
- mount -v -t $_fs -o $_opts $_dev $_mp 2>&1 | vinfo
- fi
- done < $1
- return 0
-}
-
[ -f /etc/fstab ] && fstab_mount /etc/fstab
# prefer $NEWROOT/etc/fstab.sys over local /etc/fstab.sys
diff --git a/modules.d/99fs-lib/fs-lib.sh b/modules.d/99fs-lib/fs-lib.sh
index e1f3074..9e6abf6 100755
--- a/modules.d/99fs-lib/fs-lib.sh
+++ b/modules.d/99fs-lib/fs-lib.sh
@@ -248,3 +248,42 @@ write_fs_tab() {
systemctl --no-block start initrd-root-fs.target
fi
}
+
+# fstab_mount FSTAB
+# go through FSTAB and mount each line
+# cannot be used to mount rootfs for 40network, because it will not create
/dev/root
+fstab_mount() {
+ local _dev _mp _fs _opts _dump _pass _rest
+ test -e "$1" || return 1
+ info "Mounting from $1"
+ while read _dev _mp _fs _opts _dump _pass _rest; do
+ [ -z "${_dev%%#*}" ] && continue # Skip comment lines
+ ismounted $_mp && continue # Skip mounted filesystem
+ if [ "$_pass" -gt 0 ] && ! strstr "$_opts" _netdev; then
+ fsck_single "$_dev" "$_fs" "$_opts"
+ fi
+ _fs=$(det_fs "$_dev" "$_fs")
+ info "Mounting $_dev"
+ if [ -d "$NEWROOT/$_mp" ]; then
+ mount -v -t $_fs -o $_opts $_dev "$NEWROOT/$_mp" 2>&1 | vinfo
+ else
+ [ -d "$_mp" ] || mkdir -p "$_mp"
+ mount -v -t $_fs -o $_opts $_dev $_mp 2>&1 | vinfo
+ fi
+ done < $1
+ return 0
+}
+
+# fs_add_mount PHASE FS MOUNTPOINT FSTYPE OPTIONS DUMP PASS
+# add line to fstab used by pre-mount (PHASE=early) or pre-pivot (PHASE=late)
hook
+# FS is anything that could be found in the first column of fstab
+fs_add_mount() {
+ local phase="$1" fs="$2" mountpoint="$3" fstype="$4" options="$5"
dump="$6" pass="$7"
+ [ "${fs}" ] || die "FS passed to $0 is empty"
+ [ "${mountpoint}" ] || die "Mountpoint passed to $0 is empty"
+ [ "${fstype}" ] || fstype=auto
+ [ "${options}" ] || options=defaults
+ [ "${dump}" ] || dump=0
+ [ "${pass}" ] || pass=0
+ echo "${fs} ${mountpoint} ${fstype} ${options} ${dump} ${pass}" >>
/etc/fstab."${phase}"
+}
diff --git a/modules.d/99fs-lib/module-setup.sh
b/modules.d/99fs-lib/module-setup.sh
index 637737e..1f8d528 100755
--- a/modules.d/99fs-lib/module-setup.sh
+++ b/modules.d/99fs-lib/module-setup.sh
@@ -60,6 +60,9 @@ install() {
inst "$moddir/fs-lib.sh" "/lib/fs-lib.sh"
> ${initdir}/etc/fstab.empty
+ inst_hook pre-mount 99 "$moddir/mount-early.sh"
+ inst_hook pre-pivot 99 "$moddir/mount-late.sh"
+
[[ "$nofscks" = "yes" ]] && return
if [[ "$fscks" = "${fscks#*[^ ]*}" ]]; then
diff --git a/modules.d/99fs-lib/mount-early.sh
b/modules.d/99fs-lib/mount-early.sh
new file mode 100755
index 0000000..e11774a
--- /dev/null
+++ b/modules.d/99fs-lib/mount-early.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+# ex: ts=8 sw=4 sts=4 et filetype=sh
+
+type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
+type det_fs >/dev/null 2>&1 || . /lib/fs-lib.sh
+
+[ -f /etc/fstab.early ] && fstab_mount /etc/fstab.early
diff --git a/modules.d/99fs-lib/mount-late.sh b/modules.d/99fs-lib/mount-late.sh
new file mode 100755
index 0000000..669fcd2
--- /dev/null
+++ b/modules.d/99fs-lib/mount-late.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+# ex: ts=8 sw=4 sts=4 et filetype=sh
+
+type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
+type det_fs >/dev/null 2>&1 || . /lib/fs-lib.sh
+
+[ -f /etc/fstab.late ] && fstab_mount /etc/fstab.late
--
1.8.1.5
--
To unsubscribe from this list: send the line "unsubscribe initramfs" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html