From c9a9cf7363a2f2bdf932b5f5fded53bdcf1542b0 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Tue, 24 Mar 2009 11:36:56 +0100 Subject: [PATCH] add module for rootfs mounting via udev rules --- modules.d/95rootfs-block-udev/genrules.sh | 15 +++++++++++ modules.d/95rootfs-block-udev/install | 3 +++ .../95rootfs-block-udev/parse-root-opts.sh | 27 +++++++++++++++++++ 3 files changed, 45 insertions(+) create mode 100755 modules.d/95rootfs-block-udev/genrules.sh create mode 100755 modules.d/95rootfs-block-udev/install create mode 100755 modules.d/95rootfs-block-udev/parse-root-opts.sh diff --git a/modules.d/95rootfs-block-udev/genrules.sh b/modules.d/95rootfs-block-udev/genrules.sh new file mode 100755 index 000000000..d4e226ce3 --- /dev/null +++ b/modules.d/95rootfs-block-udev/genrules.sh @@ -0,0 +1,15 @@ + +resume=$(getarg resume=) && ! getarg noresume && [ -b "$resume" ] && { + # parsing the output of ls is Bad, but until there is a better way... + ( + echo -e 'KERNEL=="'${resume#/dev/}'", RUN+="/bin/sh -c \047 echo %M:%m > /sys/power/resume \047 "' + echo -e 'SYMLINK=="'${resume#/dev/}'", RUN+="/bin/sh -c \047 echo %M:%m > /sys/power/resume \047 "' + ) >> /etc/udev/rules.d/99-resume.rules +} + +( + echo -e 'KERNEL=="'${root#/dev/}'", RUN+="/bin/sh -c \047 mount '$fstype' -o '$rflags' '$root' '$NEWROOT' \047 " ' + echo -e 'SYMLINK=="'${root#/dev/}'", RUN+="/bin/sh -c \047 mount '$fstype' -o '$rflags' '$root' '$NEWROOT' \047 " ' +) >> /etc/udev/rules.d/99-mount.rules + + diff --git a/modules.d/95rootfs-block-udev/install b/modules.d/95rootfs-block-udev/install new file mode 100755 index 000000000..641e7df0d --- /dev/null +++ b/modules.d/95rootfs-block-udev/install @@ -0,0 +1,3 @@ +#!/bin/sh +inst_hook pre-udev 10 "$moddir/parse-root-opts.sh" +inst_hook pre-udev 20 "$moddir/genrules.sh" diff --git a/modules.d/95rootfs-block-udev/parse-root-opts.sh b/modules.d/95rootfs-block-udev/parse-root-opts.sh new file mode 100755 index 000000000..473c34dc1 --- /dev/null +++ b/modules.d/95rootfs-block-udev/parse-root-opts.sh @@ -0,0 +1,27 @@ +#!/bin/sh +if resume=$(getarg resume=) && ! getarg noresume; then + export resume + echo "$resume" >/.resume +else + unset resume +fi + +root=$(getarg root=) +case $root in + LABEL=*) root=${root#LABEL=} + root="$(echo $root |sed 's,/,\\x2f,g')" + root="/dev/disk/by-label/${root}" ;; + UUID=*) root="/dev/disk/by-uuid/${root#UUID=}" ;; + '') echo "Warning: no root specified" + root="/dev/sda1" ;; +esac + +if rflags="$(getarg rootflags=)"; then + getarg rw && rflags="${rflags},rw" || rflags="${rflags},ro" +else + getarg rw && rflags=rw || rflags=ro +fi + +fstype="$(getarg rootfstype=)" && fstype="-t ${fstype}" + +export fstype rflags root -- 2.47.3