summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--hooks/filesystems30
-rw-r--r--hooks/usb8
-rw-r--r--init5
-rw-r--r--install/udev2
-rw-r--r--mkinitcpio3
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/cmdline
export CMDLINE
# Used so hooks can override params to kinit
+export root=""
+export rootdelay="0"
export kinit_params=""
echo "/bin/modprobe" > /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