diff options
author | Matthias Hentges <oe@hentges.net> | 2005-08-04 18:07:53 +0000 |
---|---|---|
committer | OpenEmbedded Project <openembedded-devel@lists.openembedded.org> | 2005-08-04 18:07:53 +0000 |
commit | 1ccca3990804fa39ec648c415c1a24756fab83c8 (patch) | |
tree | 08c0acce82c0adae3ccea22ae5573f129f2cb0dc /packages/altboot/files/altboot-menu/Advanced/40-bootNFS | |
parent | 019903803d5b8d1fead525d1f0d197b1786c1b8c (diff) |
altboot: Sources are now managed by OE's mt database.
Diffstat (limited to 'packages/altboot/files/altboot-menu/Advanced/40-bootNFS')
-rw-r--r-- | packages/altboot/files/altboot-menu/Advanced/40-bootNFS | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/packages/altboot/files/altboot-menu/Advanced/40-bootNFS b/packages/altboot/files/altboot-menu/Advanced/40-bootNFS new file mode 100644 index 0000000000..feedfc769b --- /dev/null +++ b/packages/altboot/files/altboot-menu/Advanced/40-bootNFS @@ -0,0 +1,95 @@ +# !/bin/sh +# +# Copyright Matthias Hentges (c) 2005 +# +# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the GPL) + +M_TITLE="Boot from NFS" + +die() { + echo "ERROR: $1" >/dev/tty0 + exec $SH_SHELL </dev/tty0 >/dev/tty0 2>&1 +} + +# This function is activated by init.altboot by calling this script with the "run" option +run_module() { + + test -e /etc/altboot.func && . /etc/altboot.func || die "ERROR: /etc/altboot.func not found. Check your installation!" + + echo -n "Mounting rootfs rw..." >/dev/tty0 + mount -o remount,rw / >/dev/tty0 2>&1 && echo ok >/dev/tty0|| die "mount -o remount,rw / failed" + + echo -n "Generating device files..." >/dev/tty0 + /etc/init.d/devices start && echo ok >/dev/tty0|| die "FAILED" + + echo -n "Mounting /proc..." >/dev/tty0 + mount /proc >/dev/tty0 2>&1 && echo ok >/dev/tty0 || echo failed + + # Needed for NFS + /etc/init.d/portmap start >/dev/tty1 2>&1 || die "/etc/init.d/portmap start failed!" + + # For some reason NFS mounts hang if /e/i/networking is not run. + # For the time beeing I'm to lazy to investigate ;) + /etc/init.d/networking start || die "/etc/init.d/networking start failed!" + + sleep 2 + + # After the PCMCIA service is started, an inserted WLAN card should automatically + # activate itself. + /etc/init.d/pcmcia start || die "/etc/init.d/pcmcia/start failed!" + + # Give WLAN time to login into the network + echo "Waiting for WLAN..." + sleep 8 + + nfs_mounts="`cat /etc/fstab | grep -v ^# | grep nfs | awk '{print $1}'`" + nfs_mountpoints="`cat /etc/fstab | grep -v ^# | grep nfs | awk '{print $2}'`" + + if test "` echo "$nfs_mountpoints" |wc -l | tr -d " "`" -gt 1 + then + echo -e "Please select your NFS root:\n" + + cnt=1 + for nfs_mount in $nfs_mountpoints + do + echo -e "\t[$cnt] $nfs_mount" + let cnt=$cnt+1 + done + + echo "" + + while test -z "$selection" + do + echo -n "Boot NFS root: " + read junk < /dev/tty1 + + cnt=1 + for nfs_mount in $nfs_mounts + do + if test "$junk" = "$cnt" + then + selection="$nfs_mount" + fi + let cnt=$cnt+1 + done + + done + else + test -z "$nfs_mounts" && die "No NFS mounts configured in /etc/fstab!" + selection="$nfs_mounts" + fi + + mkdir -p /media/nfsroot || die "mkdir -p /media/nfsroot failed!" + + echo -n "Mounting NFS root..." + mount -t nfs "$selection" /media/nfsroot && echo ok || die "mount -t nfs "$selection" /media/nfsroot failed!" + + check_target "/media/nfsroot" + +} + +case "$1" in +title) echo "$M_TITLE";; +run) run_module "$2";; +esac + |