summaryrefslogtreecommitdiff
path: root/packages/slugos-init
diff options
context:
space:
mode:
authorMike Westerhof <mwester@dls.net>2008-02-04 17:22:12 +0000
committerMike Westerhof <mwester@dls.net>2008-02-04 17:22:12 +0000
commit8e0c09c7d6ef8dc1e5d191d8f0c9ee55a659901f (patch)
treecbad0ca12ac45ef99297c48503f54d47b1d07026 /packages/slugos-init
parent9073ab1abc3a193ba968f8bdebdd32c2c063a904 (diff)
SlugOS: updated boot scripts to support nfs rootfs with the new network driver.
Diffstat (limited to 'packages/slugos-init')
-rw-r--r--packages/slugos-init/files/boot/kexec4
-rw-r--r--packages/slugos-init/files/boot/network24
-rw-r--r--packages/slugos-init/files/boot/nfs5
-rw-r--r--packages/slugos-init/files/modulefunctions5
4 files changed, 37 insertions, 1 deletions
diff --git a/packages/slugos-init/files/boot/kexec b/packages/slugos-init/files/boot/kexec
index 7c02a14f04..8973d20bfe 100644
--- a/packages/slugos-init/files/boot/kexec
+++ b/packages/slugos-init/files/boot/kexec
@@ -91,6 +91,7 @@ if [ -n "$1" -a -n "$2" ] ; then
t=`basename "$kpath"`
kexec_image="/mnt/$t"
fi
+ umount /sys
fi
;;
@@ -98,11 +99,13 @@ if [ -n "$1" -a -n "$2" ] ; then
if /boot/network ; then
echo "Loading kexec kernel using nfs \"$kpath\"..."
echo "mounting nfs partition..."
+ loadnfsmods
if mount -o ro,nolock -t nfs `dirname "$kpath"` /mnt ; then
need_umount=1
t=`basename "$kpath"`
kexec_image="/mnt/$t"
fi
+ umount /sys
fi
;;
@@ -140,6 +143,7 @@ if [ -n "$1" -a -n "$2" ] ; then
echo "Loading kexec kernel using tftp \"$kpath\"..."
tftp -g -l "$kexec_image" -r "${kpath#*:}" "${kpath%%:*}"
fi
+ umount /sys
fi
;;
diff --git a/packages/slugos-init/files/boot/network b/packages/slugos-init/files/boot/network
index 9aa295e43d..8c0635d3ac 100644
--- a/packages/slugos-init/files/boot/network
+++ b/packages/slugos-init/files/boot/network
@@ -8,6 +8,11 @@
# function!
. /etc/default/functions
#
+# /proc is needed for the module loading, and /sys is
+# necessary to load firmware (if required).
+mount -t proc proc /proc
+mount -t sysfs sysfs /sys
+#
# We may need to load the network driver modules here
. /etc/default/modulefunctions
loadnetmods
@@ -17,5 +22,22 @@ loadnetmods
# file. Config the loopback and network interfaces.
ifconfig lo 127.0.0.1 up
iface="$(config iface)"
-test -n "$iface" && ifup "$iface"
+test -z "$iface" && exit 1
+#
+# Fire up a process in the background to load the firmware if necessary
+sysf="/sys/class/firmware/$iface"
+(
+ # Wait for the firware to be requested, if required
+ [ -f $sysf/loading ] || sleep 1
+ [ -f $sysf/loading ] || sleep 1
+ if [ -f $sysf/loading ] ; then
+ echo "1" >$sysf/loading
+ cat /lib/firmware/NPE-B >$sysf/data
+ echo "0" >$sysf/loading
+ fi
+) &
+# Trigger the firmware load proactively
+ifconfig "$iface" up
+#
+ifup "$iface"
# exit code is true only if the interface config has succeeded
diff --git a/packages/slugos-init/files/boot/nfs b/packages/slugos-init/files/boot/nfs
index 856f4e56b9..e0f05754c5 100644
--- a/packages/slugos-init/files/boot/nfs
+++ b/packages/slugos-init/files/boot/nfs
@@ -7,10 +7,15 @@
export PATH=/sbin:/bin:/usr/sbin:/usr/bin
#
. /etc/default/functions
+. /etc/default/modulefunctions
+#
leds boot system
#
if /boot/network
then
+ # load the nfs kernel module
+ loadnfsmods
+
# network is up and running, the NFS mount will
# now succeed (possibly), use /boot/disk
exec /boot/disk "$@"
diff --git a/packages/slugos-init/files/modulefunctions b/packages/slugos-init/files/modulefunctions
index a497f71f6c..82fd7681af 100644
--- a/packages/slugos-init/files/modulefunctions
+++ b/packages/slugos-init/files/modulefunctions
@@ -1,5 +1,6 @@
#!/bin/sh
# . this file to load the functions for automatically loading modules
+# NB: /proc must be mounted for correct evaluation of "$(machine)".
. /etc/default/functions
@@ -34,6 +35,10 @@ loadnetmods(){
esac
}
+loadnfsmods(){
+ modprobe nfs
+}
+
loadmiscmods(){
true
}