From cd20f1f6ebed3c50d69db35d22519d57ae846ecc Mon Sep 17 00:00:00 2001 From: Victor Lowther Date: Fri, 13 Feb 2009 04:42:48 -0800 Subject: [PATCH] [PATCH 32/50] Created pre-mount hook directory This is for tasks that should run after device discovery, but before mounting the new rootfs. Things like cryptoroot and resume from hibernate should go here. Hooks are sourced, not executed as separate scripts. --- init | 16 ++++++++++------ pre-mount/50cryptroot | 6 ++++++ pre-mount/99resume | 7 +++++++ 3 files changed, 23 insertions(+), 6 deletions(-) create mode 100644 pre-mount/50cryptroot create mode 100644 pre-mount/99resume diff --git a/init b/init index b12743c8..0b158dc2 100755 --- a/init +++ b/init @@ -14,9 +14,17 @@ emergency_shell() } getarg() { + local o; for o in $(< /proc/cmdline); do [[ $o == $1 ]] && { echo $o; break; } done + return 1 +} + +source_all() { + local f + [[ -d $1 ]] || return + for f in "$d"/*; do; . "$f"; done } echo "Starting initrd..." @@ -67,12 +75,8 @@ esac tries=0 echo "Waiting up to 30 seconds for $root to become available" udevadm settle --timeout=30 -[[ -f /cryptroot ]] && { - echo "Encrypted root detected." - cryptopts=$(< /cryptroot) - /sbin/cryptsetup luksOpen $cryptopts || emergency_shell - udevadm settle --timeout=30 -} +source_all /pre-mount + echo "Trying to mount rootfs $root" [[ -e $root ]] || emergency_shell ln -s "$root" /dev/root diff --git a/pre-mount/50cryptroot b/pre-mount/50cryptroot new file mode 100644 index 00000000..39e6e6ec --- /dev/null +++ b/pre-mount/50cryptroot @@ -0,0 +1,6 @@ +#!/bin/bash +[[ -f /cryptroot ]] || return +echo "Encrypted root detected." +cryptopts=$(< /cryptroot) +/sbin/cryptsetup luksOpen $cryptopts || emergency_shell +udevadm settle --timeout=30 diff --git a/pre-mount/99resume b/pre-mount/99resume new file mode 100644 index 00000000..7eacd387 --- /dev/null +++ b/pre-mount/99resume @@ -0,0 +1,7 @@ +#!/bin/bash +resume=$(getarg 'resume=*') || return +resume=${resume#resume=} +[[ -b $resume ]] || return +# parsing the output of ls is Bad, but until there is a better way... +read x x x x maj min x < <(ls -lH "$resume") +echo "${maj/,/}:$min"> /sys/power/resume