summaryrefslogtreecommitdiffstats
path: root/hooks
diff options
context:
space:
mode:
Diffstat (limited to 'hooks')
-rw-r--r--hooks/filesystems30
-rw-r--r--hooks/usb8
2 files changed, 33 insertions, 5 deletions
diff --git a/hooks/filesystems b/hooks/filesystems
index 55d6725..e6d980d 100644
--- a/hooks/filesystems
+++ b/hooks/filesystems
@@ -1,13 +1,36 @@
# vim: set ft=sh:
run_hook ()
{
+ isnumeric ()
+ {
+ i=0;
+ while [ $i -lt ${#1} ]; do
+ case ${1:$i:1} in
+ [0-9A-Fa-f]) i=$(($i+1)); continue;;
+ *) return 1;;
+ esac
+ done
+ return 0
+ }
+
msg -n ":: Loading root filesystem module..."
if [ "x${rootfstype}" != "x" ]; then
FSTYPE="${rootfstype}"
else
if [ ! -e "${root}" ]; then
msg "Attempting to create root device '${root}'"
+
+ if [ "x${rootdelay}" != "x" ]; then
+ msg -n "Waiting for devices to settle..."
+ /bin/sleep "${rootdelay}"
+ msg "done."
+ export rootdelay=0
+ fi
+
dev_t=$( /bin/parseblock "${root}" )
+ if isnumeric "${root}"; then
+ export root="/dev/root"
+ fi
if [ "x${dev_t}" != "x" ]; then
/bin/mknod "${root}" b ${dev_t} >/dev/null 2>&1
else
@@ -15,7 +38,12 @@ run_hook ()
echo "ERROR: Failed to parse block device '${root}'"
fi
fi
- eval $( /bin/fstype < "${root}" )
+
+ if [ -e "${root}" ]; then
+ eval $( /bin/fstype < "${root}" )
+ else
+ FSTYPE="unknown"
+ fi
if [ "${FSTYPE}" = "unknown" ]; then
echo "ERROR: root fs cannot be detected. Try using the rootfstype= kernel parameter."
diff --git a/hooks/usb b/hooks/usb
index 1a91fe2..576980a 100644
--- a/hooks/usb
+++ b/hooks/usb
@@ -1,8 +1,8 @@
# vim: set ft=sh:
run_hook ()
{
- #allow 'usbdelay' on the kernel param line
- msg -n "waiting for usb to settle..."
- /bin/sleep ${usbdelay:-5}
- msg "done."
+ #if we have to root delay, default to 5 seconds
+ # this will be handled by kinit and/or the
+ # filesystems hook
+ export rootdelay=${rootdelay:-5}
}