[oe-commits] org.oe.dev SlugOS init files: fixed network boot code for dsmg600 and added delay to ifup

mwester commit openembedded-commits at lists.openembedded.org
Mon Jul 2 23:36:21 UTC 2007


SlugOS init files: fixed network boot code for dsmg600 and added delay to ifup
(fix dhcp timeout before link negotiation complete) for network boot.  Added
kexec boot script (no turnup support yet, manual only).

Author: mwester at openembedded.org
Branch: org.openembedded.dev
Revision: b783e6b6c66f2dedfc04da8ff6b9b748752c7400
ViewMTN: http://monotone.openembedded.org/revision.psp?id=b783e6b6c66f2dedfc04da8ff6b9b748752c7400
Files:
1
packages/slugos-init/files/boot/kexec
packages/slugos-init/files/boot/network
packages/slugos-init/files/functions
packages/slugos-init/files/modulefunctions
packages/slugos-init/slugos-init_0.10.bb
Diffs:

#
# mt diff -r1ca50736610ce0a01fb7d6f4a7df25ebd91a74bc -rb783e6b6c66f2dedfc04da8ff6b9b748752c7400
#
# 
# 
# add_file "packages/slugos-init/files/boot/kexec"
#  content [b1ddcced6d9e71541270a6164d283c40b6bf4c53]
# 
# patch "packages/slugos-init/files/boot/network"
#  from [7863638b33cded9710583ad3868e24dc35c04195]
#    to [1998f275fdd6f6ea83d325e7fe519c4357799e70]
# 
# patch "packages/slugos-init/files/functions"
#  from [de19dc6cafe30138b066dde30da63533e5278a40]
#    to [68db6b5c8036845c4660e107be5b5c6a9a1c0cad]
# 
# patch "packages/slugos-init/files/modulefunctions"
#  from [534b40287bd038eafad6f14953eb107d549b1230]
#    to [2fa625b35ea31712fde433431b13ec9b7c79d43b]
# 
# patch "packages/slugos-init/slugos-init_0.10.bb"
#  from [71bdfe52397be1f4556cf272c28ecf7f960558ae]
#    to [838d2b4d97516e7beb1501277067200126a20075]
# 
============================================================
--- packages/slugos-init/files/boot/kexec	b1ddcced6d9e71541270a6164d283c40b6bf4c53
+++ packages/slugos-init/files/boot/kexec	b1ddcced6d9e71541270a6164d283c40b6bf4c53
@@ -0,0 +1,159 @@
+#!/bin/sh
+#
+# Loads the specified kernel and kexecs it.
+# 
+# The access method and path from which to fetch the kernel
+# is specified in "$1" and "$2":
+#
+# flash      /boot/zImage-ixp4xxbe
+# nfs        spike:/home/slug/vmlinuz
+# wget       http://devserv/kernels/vmlinuzbe
+# wget       ftp://ftpserv/pub/zImage
+# /dev/sda1  /kernels/zImage-test
+# UUID       /kernels/zImage-test
+#
+# Command-line options for the new kernel are in "$3".
+
+# Use the standard init path (see /etc/init.d/rcS)
+export PATH=/sbin:/bin:/usr/sbin:/usr/bin
+
+# Wait at least a short while for the disks...
+if [ ! "$sleep" -gt 0 ] ; then
+    sleep=1
+fi
+
+# Load the helper functions
+. /etc/default/functions
+. /etc/default/modulefunctions
+
+leds boot system
+
+if [ -n "$1" -a -n "$2" ] ; then
+
+	method="$1"
+	shift
+	kpath="$1"
+	shift
+	if [ -n "$1" ] ; then
+	    kcmdline="$1"
+	    shift
+	fi
+	kexec_image=
+	need_umount=0
+	do_kexec=0
+
+	mount -t proc proc /proc
+
+	case "$method" in
+
+	    flash )
+		echo "Loading kexec kernel directly from \"$kpath\"..."
+		kexec_image="$kpath"
+		;;
+
+	    wget )
+		if /boot/network ; then
+		    echo "mounting tmpfs partition..."
+		    if mount -t tmpfs tmpfs /mnt ; then
+			need_umount=1
+			echo "Loading kexec kernel using wget \"$kpath\"..."
+			wget -P /mnt "$kpath"
+			t=`basename "$kpath"`
+			kexec_image="/mnt/$t"
+		    fi
+		fi
+		;;
+
+	    nfs )
+		if /boot/network ; then
+		    echo "Loading kexec kernel using nfs \"$kpath\"..."
+		    echo "mounting nfs partition..."
+		    if mount -o ro,nolock -t nfs `dirname "$kpath"` /mnt ; then
+			need_umount=1
+			t=`basename "$kpath"`
+			kexec_image="/mnt/$t"
+		    fi
+		fi
+		;;
+
+	    /dev/* )
+		echo "Loading kexec kernel using disk \"$kpath\"..."
+		loaddiskmods
+		sleep "$sleep"
+		echo "mounting partition \"$method\"..."
+		if mount -o ro "$method" /mnt ; then
+		    need_umount=1
+		    kexec_image="/mnt/$kpath"
+		fi
+		;;
+
+	    UUID )
+		echo "Loading kexec kernel using disk UUID \"$kpath\"..."
+		loaddiskmods
+		sleep "$sleep"
+		if [ -n "$UUID" ] ; then
+		echo "mounting partition UUID \"$UUID\"..."
+		    if mount -o ro -U "$UUID" /mnt ; then
+			need_umount=1
+			kexec_image="/mnt/$kpath"
+		    fi
+		fi
+		;;
+
+	    * )
+		echo "Unrecognized method: \"$method\""
+		;;
+
+	esac
+
+	if [ -n "$kexec_image" -a -f "$kexec_image" ] ; then
+	    if kexec -l "$kexec_image" ; then
+		do_kexec=1
+	    fi
+	else
+	    echo "Unable to load \"$kexec_image\""
+	fi
+
+	if [ $do_kexec -eq 1 -a -n "$kcmdline" ] ; then
+	    echo "Attempting to mount /sys (sysfs)..."
+	    if mount -t sysfs sysfs /sys ; then
+		echo "Setting command line:"
+		echo " \"$kcmdline\""
+		echo "$kcmdline" > /sys/kernel/kexec_cmdline
+		echo "unmounting /sys..."
+		umount /sys
+	    else
+		do_kexec=0
+	    fi
+	fi
+
+	if [ $need_umount -eq 1 ] ; then
+	    echo "unmounting /mnt..."
+	    umount /mnt
+	fi
+
+	if [ $do_kexec -eq 1 ] ; then
+	    echo "Remounting root as read-only..."
+	    mount -o remount,ro /
+	    echo "Invoking \"kexec -f -e\" ..."
+	    kexec -f -e
+	    echo "ERROR!"
+	    # We should never return here!  At this point, things are not
+	    # too well.  Remount the root as rw, and fallback.
+	    echo "Remounting root as read-write..."
+	    mount -o remount,rw /
+	fi
+else
+	echo "Usage: $0 flash|nfs|wget|UUID|/dev/<partition> <path-or-URL> [cmdline]"
+fi
+
+# fallback - use the flash boot
+echo "Falling back to flash boot..."
+leds beep -f 1000 -r 2
+exec /boot/flash
+
+# fallback to the fallback
+leds boot system panic
+exec <>/dev/console >&0 2>&0
+test -x /bin/sh && exec /bin/sh
+exit 1
============================================================
--- packages/slugos-init/files/boot/network	7863638b33cded9710583ad3868e24dc35c04195
+++ packages/slugos-init/files/boot/network	1998f275fdd6f6ea83d325e7fe519c4357799e70
@@ -8,6 +8,11 @@
 # 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
============================================================
--- packages/slugos-init/files/functions	de19dc6cafe30138b066dde30da63533e5278a40
+++ packages/slugos-init/files/functions	68db6b5c8036845c4660e107be5b5c6a9a1c0cad
@@ -274,6 +274,8 @@ ifup(){
 	if test "$(config boot)" != static
 	then
 		test -n "$hostname" && HOSTNAME="-H $hostname"
+		# Pause a moment in case link negotiation takes a while
+		sleep 3
 		# The script writes the required shell variable assignments
 		# to file descriptor 9
 		eval $(udhcpc -i "$iface" -n -q -r "$ip" $HOSTNAME -s /boot/udhcpc.script 9>&1 >/dev/null)
============================================================
--- packages/slugos-init/files/modulefunctions	534b40287bd038eafad6f14953eb107d549b1230
+++ packages/slugos-init/files/modulefunctions	2fa625b35ea31712fde433431b13ec9b7c79d43b
@@ -21,7 +21,14 @@ loadnetmods(){
 }
 
 loadnetmods(){
-	true
+	case "$(machine)" in
+            dsmg600)
+                modprobe via-velocity
+                ;;
+	    *)
+		true
+		;;
+	esac
 }
 
 loadmiscmods(){
============================================================
--- packages/slugos-init/slugos-init_0.10.bb	71bdfe52397be1f4556cf272c28ecf7f960558ae
+++ packages/slugos-init/slugos-init_0.10.bb	838d2b4d97516e7beb1501277067200126a20075
@@ -1,15 +1,16 @@ RDEPENDS = "busybox devio"
 DESCRIPTION = "SlugOS initial network config via sysconf"
 SECTION = "base"
 PRIORITY = "required"
 LICENSE = "GPL"
 DEPENDS = "base-files devio"
 RDEPENDS = "busybox devio"
-PR = "r86"
+PR = "r87"
 
 SRC_URI = "file://boot/flash \
 	   file://boot/disk \
 	   file://boot/nfs \
 	   file://boot/ram \
+	   file://boot/kexec \
 	   file://boot/network \
 	   file://boot/udhcpc.script \
 	   file://initscripts/fixfstab \
@@ -35,7 +36,7 @@ SCRIPTS = "turnup reflash leds sysconf"
 USRSBINPROGS = ""
 CPROGS = "${USRSBINPROGS} ${SBINPROGS}"
 SCRIPTS = "turnup reflash leds sysconf"
-BOOTSCRIPTS = "flash disk nfs ram network udhcpc.script"
+BOOTSCRIPTS = "flash disk nfs ram kexec network udhcpc.script"
 INITSCRIPTS = "syslog.buffer syslog.file syslog.network zleds\
 	leds_startup rmrecovery sysconfsetup umountinitrd.sh\
 	fixfstab loadmodules.sh"






More information about the Openembedded-commits mailing list