SlugOS: updated boot scripts to support nfs rootfs with the new network driver.
authorMike Westerhof <mwester@dls.net>
Mon, 4 Feb 2008 17:22:12 +0000 (17:22 +0000)
committerMike Westerhof <mwester@dls.net>
Mon, 4 Feb 2008 17:22:12 +0000 (17:22 +0000)
packages/slugos-init/files/boot/kexec
packages/slugos-init/files/boot/network
packages/slugos-init/files/boot/nfs
packages/slugos-init/files/modulefunctions

index 7c02a14..8973d20 100644 (file)
@@ -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
                ;;
 
index 9aa295e..8c0635d 100644 (file)
@@ -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
index 856f4e5..e0f0575 100644 (file)
@@ -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 "$@"
index a497f71..82fd768 100644 (file)
@@ -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
 }