107 lines
3.6 KiB
Diff
107 lines
3.6 KiB
Diff
|
From 70cb8a686f710b237c6f7c7524b47d2649f6751a Mon Sep 17 00:00:00 2001
|
||
|
From: Harald Hoyer <harald@redhat.com>
|
||
|
Date: Thu, 15 Dec 2011 14:36:37 +0100
|
||
|
Subject: [PATCH] dracut: add --add-fstab and --mount option
|
||
|
|
||
|
--add-fstab [FILE] Add file to the initramfs fstab
|
||
|
--mount "[DEV] [MP] [FSTYPE] [FSOPTS]"
|
||
|
Mount device [DEV] on mountpoint [MP] with filesystem
|
||
|
[FSTYPE] and options [FSOPTS] in the initramfs
|
||
|
---
|
||
|
dracut | 40 ++++++++++++++++++++++++++++++++++++
|
||
|
modules.d/95fstab-sys/mount-sys.sh | 4 +-
|
||
|
2 files changed, 42 insertions(+), 2 deletions(-)
|
||
|
|
||
|
diff --git a/dracut b/dracut
|
||
|
index 46694f8..8449fc1 100755
|
||
|
--- a/dracut
|
||
|
+++ b/dracut
|
||
|
@@ -85,6 +85,10 @@ Creates initial ramdisk images for preloading modules
|
||
|
-H, --hostonly Host-Only mode: Install only what is needed for
|
||
|
booting the local host instead of a generic host.
|
||
|
--fstab Use /etc/fstab to determine the root device.
|
||
|
+ --add-fstab [FILE] Add file to the initramfs fstab
|
||
|
+ --mount "[DEV] [MP] [FSTYPE] [FSOPTS]"
|
||
|
+ Mount device [DEV] on mountpoint [MP] with filesystem
|
||
|
+ [FSTYPE] and options [FSOPTS] in the initramfs
|
||
|
-i, --include [SOURCE] [TARGET]
|
||
|
Include the files in the SOURCE directory into the
|
||
|
Target directory in the final initramfs.
|
||
|
@@ -207,6 +211,8 @@ while (($# > 0)); do
|
||
|
-I|--install) push_arg install_items_l "$@" || shift;;
|
||
|
--fwdir) push_arg fw_dir_l "$@" || shift;;
|
||
|
--fscks) push_arg fscks_l "$@" || shift;;
|
||
|
+ --add-fstab) push_arg add_fstab_l "$@" || shift;;
|
||
|
+ --mount) push_arg fstab_lines "$@" || shift;;
|
||
|
--nofscks) nofscks_l="yes";;
|
||
|
-k|--kmoddir) read_arg drivers_dir_l "$@" || shift;;
|
||
|
-c|--conf) read_arg conffile "$@" || shift;;
|
||
|
@@ -332,6 +338,18 @@ if (( ${#fscks_l[@]} )); then
|
||
|
done
|
||
|
fi
|
||
|
|
||
|
+if (( ${#add_fstab_l[@]} )); then
|
||
|
+ while pop add_fstab_l val; do
|
||
|
+ add_fstab+=" $val "
|
||
|
+ done
|
||
|
+fi
|
||
|
+
|
||
|
+if (( ${#fstab_lines_l[@]} )); then
|
||
|
+ while pop fstab_lines_l val; do
|
||
|
+ push fstab_lines $val
|
||
|
+ done
|
||
|
+fi
|
||
|
+
|
||
|
if (( ${#install_items_l[@]} )); then
|
||
|
while pop install_items_l val; do
|
||
|
push install_items $val
|
||
|
@@ -526,6 +544,21 @@ if [[ $hostonly ]]; then
|
||
|
return 1
|
||
|
)
|
||
|
|
||
|
+ for line in "${fstab_lines[@]}"; do
|
||
|
+ set -- $line
|
||
|
+ #dev mp fs fsopts
|
||
|
+ dev="$(get_maj_min $1)"
|
||
|
+ push host_devs "${dev:-$1}"
|
||
|
+ push host_fs_types "$dev|$3"
|
||
|
+ done
|
||
|
+
|
||
|
+ for f in $add_fstab; do
|
||
|
+ [ -e $f ] || continue
|
||
|
+ while read dev rest; do
|
||
|
+ push host_devs $dev
|
||
|
+ done < $f
|
||
|
+ done
|
||
|
+
|
||
|
push host_mp \
|
||
|
"/" \
|
||
|
"/etc" \
|
||
|
@@ -668,6 +701,13 @@ while pop install_items items; do
|
||
|
done
|
||
|
unset item
|
||
|
|
||
|
+while pop fstab_lines line; do
|
||
|
+ echo "$line 0 0" >> "${initdir}/etc/fstab"
|
||
|
+done
|
||
|
+
|
||
|
+for f in $add_fstab; do
|
||
|
+ cat $f >> "${initdir}/etc/fstab"
|
||
|
+done
|
||
|
|
||
|
if [[ $kernel_only != yes ]]; then
|
||
|
# make sure that library links are correct and up to date
|
||
|
diff --git a/modules.d/95fstab-sys/mount-sys.sh b/modules.d/95fstab-sys/mount-sys.sh
|
||
|
index f44351d..a8fbd50 100755
|
||
|
--- a/modules.d/95fstab-sys/mount-sys.sh
|
||
|
+++ b/modules.d/95fstab-sys/mount-sys.sh
|
||
|
@@ -25,6 +25,6 @@ fstab_mount() {
|
||
|
return 0
|
||
|
}
|
||
|
|
||
|
-for r in $NEWROOT /; do
|
||
|
- fstab_mount "$r/etc/fstab.sys" && break
|
||
|
+for r in $NEWROOT/etc/fstab.sys /etc/fstab; do
|
||
|
+ fstab_mount $r && break
|
||
|
done
|