diff options
Diffstat (limited to 'packages/slugos-init')
-rw-r--r-- | packages/slugos-init/files/boot/kexec | 4 | ||||
-rw-r--r-- | packages/slugos-init/files/boot/network | 24 | ||||
-rw-r--r-- | packages/slugos-init/files/boot/nfs | 5 | ||||
-rw-r--r-- | packages/slugos-init/files/modulefunctions | 5 |
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 } |