From b1d62938f81f41bfe84dca26de9edc0f91c11996 Mon Sep 17 00:00:00 2001 From: Aaron Griffin Date: Wed, 10 May 2006 02:56:28 +0000 Subject: udev: remove extra copy of ieee1394 init/usb/fs: modify rootdelay handling filesystems: additional error checking, handing for numeric root devices mkinitcpio: remove /tmp modules directory if used git-svn-id: http://projects.archlinux.org/svn/initramfs/mkinitcpio@90 880c04e9-e011-0410-abf7-b926e227c9cd --- hooks/filesystems | 30 +++++++++++++++++++++++++++++- hooks/usb | 8 ++++---- 2 files changed, 33 insertions(+), 5 deletions(-) (limited to 'hooks') 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} } -- cgit v1.2.3-24-g4f1b