aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/slugos-init/files/boot/network
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/slugos-init/files/boot/network')
-rw-r--r--recipes/slugos-init/files/boot/network41
1 files changed, 41 insertions, 0 deletions
diff --git a/recipes/slugos-init/files/boot/network b/recipes/slugos-init/files/boot/network
new file mode 100644
index 0000000000..b8054a0056
--- /dev/null
+++ b/recipes/slugos-init/files/boot/network
@@ -0,0 +1,41 @@
+#!/bin/sh
+# bring up the network before boot, used to allow
+# netconsole logging and NFS boot. This runs out
+# of flash, but that's ok because the script doesn't
+# leave any process running.
+
+# NOTE: /etc/default/functions defines ifup as a shell
+# function!
+. /etc/default/functions
+
+# We may need to load the network driver modules here
+. /etc/default/modulefunctions
+loadnetmods
+
+# Now all the information for booting should be in the configuration
+# file. Config the loopback and network interfaces.
+ifconfig lo 127.0.0.1 up
+iface="$(config iface)"
+test -z "$iface" && exit 1
+
+# Fire up a process in the background to load the firmware if necessary.
+# If this system doesn't require the NPE-B firmware, no problem, the
+# background process will simply go away in two seconds. If it requires
+# some other firmware, then modification will be required. We probably
+# should replace this with mdev or some other hotplug-based technique...
+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