diff options
author | Aaron Griffin <aaron@archlinux.org> | 2006-05-10 04:56:28 +0200 |
---|---|---|
committer | Aaron Griffin <aaron@archlinux.org> | 2006-05-10 04:56:28 +0200 |
commit | b1d62938f81f41bfe84dca26de9edc0f91c11996 (patch) | |
tree | 3bfca625382a5c23c138cf8f81bfd3dfec22f326 /hooks/filesystems | |
parent | 1851e5bb06747c54e0cb19371c6f1851eefd851e (diff) | |
download | mkinitcpio-b1d62938f81f41bfe84dca26de9edc0f91c11996.tar.gz mkinitcpio-b1d62938f81f41bfe84dca26de9edc0f91c11996.tar.xz |
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
Diffstat (limited to 'hooks/filesystems')
-rw-r--r-- | hooks/filesystems | 30 |
1 files changed, 29 insertions, 1 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." |