add module for rootfs mounting via udev rules

master
Harald Hoyer 2009-03-24 11:36:56 +01:00
parent fea5683693
commit c9a9cf7363
3 changed files with 45 additions and 0 deletions

View File

@ -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


View File

@ -0,0 +1,3 @@
#!/bin/sh
inst_hook pre-udev 10 "$moddir/parse-root-opts.sh"
inst_hook pre-udev 20 "$moddir/genrules.sh"

View File

@ -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