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 ++++---- init | 5 ++++- install/udev | 2 +- mkinitcpio | 3 ++- 5 files changed, 40 insertions(+), 8 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} } diff --git a/init b/init index 774c106..7bdac5b 100644 --- a/init +++ b/init @@ -12,6 +12,8 @@ read CMDLINE /proc/sys/kernel/modprobe @@ -65,6 +67,7 @@ fi if [ "${break}" = "y" ]; then echo ":: Break requested, type 'exit' to resume operation" + echo " NOTE: klibc contains no 'ls' binary, used 'echo *' instead" PS1="ramfs$ " /bin/sh -i fi @@ -79,4 +82,4 @@ fi msg ":: Initramfs Completed - control passing to kinit" echo "/sbin/modprobe" > /proc/sys/kernel/modprobe -exec /bin/kinit "root=${root}" ${kinit_params} < /dev/console > /dev/console +exec /bin/kinit "root=${root}" "rootdelay=${rootdelay}" ${kinit_params} < /dev/console > /dev/null 2>&1 diff --git a/install/udev b/install/udev index a6a75ea..d2c877b 100644 --- a/install/udev +++ b/install/udev @@ -4,7 +4,7 @@ install () { MODULES="" BINARIES="" - FILES=" /etc/udev/udev.conf /lib/udev/modalias_ieee1394" + FILES=" /etc/udev/udev.conf" SCRIPT="udev" add_file /lib/initcpio/udev/udevd /sbin/udevd add_file /lib/initcpio/udev/udevtrigger /sbin/udevtrigger diff --git a/mkinitcpio b/mkinitcpio index 6a677e3..af72ca7 100644 --- a/mkinitcpio +++ b/mkinitcpio @@ -138,12 +138,13 @@ done if [ "${HAS_MODULES}" == "y" ]; then echo ":: Generating module dependancies" - [ -e /tmp${MODULEDIR}/ ] && rm -r /tmp${MODULEDIR}/ + [ -e /tmp${MODULEDIR}/ ] && rm -rf /tmp${MODULEDIR}/ cp --parents $(grep "file /lib/modules" ${FILELIST} | awk '{print $2}') /tmp/ depmod -b /tmp ${KERNELVERSION} add_file /tmp${MODULEDIR}/modules.dep ${MODULEDIR}/modules.dep add_file /tmp${MODULEDIR}/modules.alias ${MODULEDIR}/modules.alias add_file /tmp${MODULEDIR}/modules.symbols ${MODULEDIR}/modules.symbols + rm -rf /tmp${MODULEDIR}/ fi if [ "x$GENIMG" != "x" ]; then -- cgit v1.2.3-24-g4f1b