summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authormaximilian attems <maks@debian.org>2006-08-23 09:22:54 +0200
committermaximilian attems <maks@debian.org>2006-08-23 09:22:54 +0200
commitfabe918dee7da26d177d67d4aa8fe3fd6e83e513 (patch)
tree5dee066c10e912f5328dba7de3032cd6058019dc /scripts
parentd1d6763409a1260708423e0092d7bc4182275773 (diff)
downloadinitramfs-tools-fabe918dee7da26d177d67d4aa8fe3fd6e83e513.tar.gz
initramfs-tools-fabe918dee7da26d177d67d4aa8fe3fd6e83e513.zip
- improved nfsroo parsing
- added rootdelay and rootfstype bootargs - document this changes - initrd-tools backward compatible mdadm assembe and then run mdrun - update-initramfs really checkout use_bootloader from /etc/kernel-img.conf - tighter klibc deps
Diffstat (limited to 'scripts')
-rw-r--r--scripts/functions9
-rw-r--r--scripts/local19
-rwxr-xr-xscripts/local-top/mdrun9
-rw-r--r--scripts/nfs48
4 files changed, 71 insertions, 14 deletions
diff --git a/scripts/functions b/scripts/functions
index 178ad5d..7e67771 100644
--- a/scripts/functions
+++ b/scripts/functions
@@ -224,13 +224,10 @@ parse_numeric() {
minor=${1#*:}
major=${1%:*}
;;
- [0-9][0-9][0-9])
- minor=$((0x${1#?}))
- major=$((0x${1%??}))
- ;;
*)
- minor=$((0x${1#??}))
- major=$((0x${1%??}))
+ value=$(( 0x${1} ))
+ minor=$(( ${value} % 256 ))
+ major=$(( ${value} / 256 ))
;;
esac
diff --git a/scripts/local b/scripts/local
index 0b9baab..9d71a5e 100644
--- a/scripts/local
+++ b/scripts/local
@@ -11,11 +11,18 @@ mountroot ()
# to deal with removable devices
if [ ! -e "${ROOT}" ]; then
log_begin_msg "Waiting for root file system..."
+
+ # Default delay is 180s
+ if [ -z "${ROOTDELAY}" ]; then
+ slumber=180
+ else
+ slumber=${ROOTDELAY}
+ fi
if [ -x /sbin/usplash_write ]; then
- /sbin/usplash_write "TIMEOUT 180" || true
+ /sbin/usplash_write "TIMEOUT ${slumber}" || true
fi
- slumber=1800
+ slumber=$(( ${slumber} * 10 ))
while [ ${slumber} -gt 0 -a ! -e "${ROOT}" ]; do
/bin/sleep 0.1
slumber=$(( ${slumber} - 1 ))
@@ -38,8 +45,12 @@ mountroot ()
panic "ALERT! ${ROOT} does not exist. Dropping to a shell!"
done
- # Get the root filesystem type
- eval $(fstype < ${ROOT})
+ # Get the root filesystem type if not set
+ if [ -z "${ROOTFSTYPE}" ]; then
+ eval $(fstype < ${ROOT})
+ else
+ FSTYPE=${ROOTFSTYPE}
+ fi
[ "$quiet" != "y" ] && log_begin_msg "Running /scripts/local-premount"
run_scripts /scripts/local-premount
diff --git a/scripts/local-top/mdrun b/scripts/local-top/mdrun
index 1b6ca3e..3ed995c 100755
--- a/scripts/local-top/mdrun
+++ b/scripts/local-top/mdrun
@@ -36,6 +36,11 @@ done
[ "${gotraid}" = y ] || exit
-# Assemble all raid devices
-# FIXME: assemble root raid first due to initrd-tools compatibility
+# source the presumed root md and it's info
+. ./conf/mdadm.conf
+
+# assemble root raid first due to initrd-tools compatibility
+mdadm -A ${rootraiddev} -R -u $uuid $devices
+
+# assemble all raid devices
/sbin/mdrun /dev
diff --git a/scripts/nfs b/scripts/nfs
index 5bfb03d..844db70 100644
--- a/scripts/nfs
+++ b/scripts/nfs
@@ -13,13 +13,57 @@ mountroot ()
# For DHCP
modprobe -q af_packet
- ipconfig ${DEVICE}
+ # support ip options see linux sources Documentation/nfsroot.txt
+ case ${IPOPTS} in
+ none|off)
+ # Do nothing
+ ;;
+ ""|on|any)
+ # Bring up device
+ ipconfig ${DEVICE}
+ ;;
+ dhcp|bootb|rarp|both)
+ ipconfig -c ${IPOPTS} -d ${DEVICE}
+ ;;
+ *)
+ ipconfig -d $IPOPTS
+
+ # grab device entry from full line
+ NEW_DEVICE=${IPOPTS#*:*:*:*:*:*}
+ NEW_DEVICE=${NEW_DEVICE%:*}
+ if [ -n "${NEW_DEVICE}" ]; then
+ DEVICE="${NEW_DEVICE}"
+ fi
+ # grab server-ip
+ SERVER_IP=${IPOPTS#*:}
+ SERVER_IP=${SERVER_IP%:*:*:*:*:*:*}
+ ;;
+ esac
+
+ # FIXME: who writes that?
. /tmp/net-${DEVICE}.conf
+
+ # get nfs root from dhcp
if [ "x${NFSROOT}" = "xauto" ]; then
NFSROOT=${ROOTSERVER}:${ROOTPATH}
+ # nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]
+ elif [ -n "${NFSROOT}" ]; then
+ # nfs options are an optional arg
+ if [ "${NFSROOT#*,}" != "${NFSROOT}" ]; then
+ NFSOPTS="-o ${NFSROOT#*,}"
+ fi
+ NFSROOT=${NFSROOT%%,*}
+ # server-ip could be passed by ip
+ if [ "${NFSROOT#*:}" = "$NFSROOT" ]; then
+ if [ -n "${SERVER_IP}" ]; then
+ NFSROOT="${SERVER_IP}:${NFSROOT}"
+ else
+ NFSROOT=${ROOTSERVER}:${ROOTPATH}
+ fi
+ fi
fi
- if [ "x${NFSOPTS}" = "x" ]; then
+ if [ -z "${NFSOPTS}" ]; then
NFSOPTS="-o retrans=10"
fi