diff options
author | Harald Hoyer <harald@redhat.com> | 2009-11-26 11:15:59 +0100 |
---|---|---|
committer | Harald Hoyer <harald@redhat.com> | 2009-11-26 19:12:10 +0100 |
commit | 57c6b805ce0a2a5bffa6ad862565b47414b41635 (patch) | |
tree | 3a9a4d282ccaf99b43f0a8b08495183ae5acc866 | |
parent | 17ed15182ab1841a6249c1dfab7a27f63ff89ea3 (diff) |
rootfs-block/mount-root: remount root with /etc/fstab filesystem options
-rw-r--r-- | dracut.8 | 9 | ||||
-rwxr-xr-x | modules.d/95rootfs-block/mount-root.sh | 30 | ||||
-rwxr-xr-x | modules.d/99base/init | 2 |
3 files changed, 39 insertions, 2 deletions
@@ -111,7 +111,14 @@ specify e.g. \fI/dev/sda1\fR or "auto" if not specified, e.g. \fIrootfstype=ext3\fR .TP .B rootflags=<mount options> -specify additional mount options for the root filesystem +specify additional mount options for the root filesystem. If not set, /etc/fstab +of the real root will be parsed for special mount options and mounted +accordingly. +.TP +.B rd_NO_FSTAB +do not honor special mount options for the root filesystem found in +/etc/fstab of the real root. + .SH I18N e.g. LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYTABLE=de-latin1-nodeadkeys .TP diff --git a/modules.d/95rootfs-block/mount-root.sh b/modules.d/95rootfs-block/mount-root.sh index 10b9311..8c3b586 100755 --- a/modules.d/95rootfs-block/mount-root.sh +++ b/modules.d/95rootfs-block/mount-root.sh @@ -1,5 +1,33 @@ #!/bin/sh +. /lib/dracut-lib.sh + if [ -n "$root" -a -z "${root%%block:*}" ]; then - mount -t ${fstype:-auto} -o "$rflags" "${root#block:}" "$NEWROOT" && ROOTFS_MOUNTED=yes + mount -t ${fstype:-auto} -o "$rflags" "${root#block:}" "$NEWROOT" \ + && ROOTFS_MOUNTED=yes + + if ! getarg rd_NO_FSTAB \ + && ! getarg rootflags \ + && [ -f "$NEWROOT/etc/fstab" ] \ + && ! [ -L "$NEWROOT/etc/fstab" ]; then + # if $NEWROOT/etc/fstab contains special mount options for + # the root filesystem, + # remount it with the proper options + rootfs="auto" + rootopts="defaults" + while read dev mp fs opts rest; do + if [ "$mp" = "/" ]; then + rootfs=$fs + rootopts=$opts + break + fi + done < "$NEWROOT/etc/fstab" + + if [ "$rootopts" != "defaults" ]; then + umount $NEWROOT + info "Remounting ${root#block:} with -o $rflags,$rootopts" + mount -t "$rootfs" -o "$rflags","$rootopts" \ + "${root#block:}" "$NEWROOT" 2>&1 | vinfo + fi + fi fi diff --git a/modules.d/99base/init b/modules.d/99base/init index d5f7832..9d85f69 100755 --- a/modules.d/99base/init +++ b/modules.d/99base/init @@ -282,3 +282,5 @@ exec switch_root "$NEWROOT" "$INIT" $initargs || { echo "file a bug against dracut." emergency_shell } +# vim:ts=8:sw=4:sts=4:et + |