diff options
author | Rolf Leggewie <oe-devel@rolf.leggewie.biz> | 2007-03-16 16:54:31 +0000 |
---|---|---|
committer | Rolf Leggewie <oe-devel@rolf.leggewie.biz> | 2007-03-16 16:54:31 +0000 |
commit | d533fcda97f0fd7f8ed44619da3a7b87537b9ae8 (patch) | |
tree | 62351538698fc3464b05763637d37ed5da16d9e8 /packages/altboot/files/fic-gta01/altboot-menu/Advanced/40-bootNFS | |
parent | 86c228e54834a26fa885386484a476079039e3e5 (diff) | |
parent | fd25fcd294309185346b0f4c7a18b94b0b408d35 (diff) |
merge of 'be6200db697731daae7d15a8ac5ca6b54f62a6d0'
and 'e68c7275015e0b7f4e92aa7483c3d7038567a3dc'
Diffstat (limited to 'packages/altboot/files/fic-gta01/altboot-menu/Advanced/40-bootNFS')
-rw-r--r-- | packages/altboot/files/fic-gta01/altboot-menu/Advanced/40-bootNFS | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/packages/altboot/files/fic-gta01/altboot-menu/Advanced/40-bootNFS b/packages/altboot/files/fic-gta01/altboot-menu/Advanced/40-bootNFS new file mode 100644 index 0000000000..4f5c195be2 --- /dev/null +++ b/packages/altboot/files/fic-gta01/altboot-menu/Advanced/40-bootNFS @@ -0,0 +1,110 @@ +#! /bin/sh +# +# Copyright Matthias Hentges <devel@hentges.net> (c) 2006 +# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the license) +# +# Filename: 40-bootNFS +# Date: 14-Apr-06 + + +M_TITLE="Boot from NFS" + +test "$DISABLE_NFS_BOOT" = yes && exit 0 + +# 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!" + + # Mount /proc, etc + init_rootfs + + nfs_host="`cat /etc/fstab | grep -v ^# | grep nfs | awk '{print $1}'|sed -n "s/\(.*\)\:\(.*\)/\1/p" `" + nfs_mounts="`cat /etc/fstab | grep -v ^# | grep nfs | awk '{print $1}'`" + nfs_mountpoints="`cat /etc/fstab | grep -v ^# | grep nfs | awk '{print $2}'`" + + start_networking "$nfs_host" + + if test -z "$nfs_host" + then + mdie "${C_RED}No configured NFS drives found in /etc/fstab$C_RESET" + + fi + + + 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 + stty echo + echo -n "Boot NFS root: " + + if test "$AUTOBOOT" != "yes" + then + read junk < /dev/tty1 + else + if test -e /etc/.altboot-bootNFS-source.last + then + junk="`cat /etc/.altboot-bootNFS-source.last`" + test -z "$junk" && read junk < /dev/tty1 || echo "$junk (autoboot)" + else + read junk < /dev/tty1 + fi + fi + + + cnt=1 + for nfs_mount in $nfs_mounts + do + if test "$junk" = "$cnt" + then + selection="$nfs_mount" + echo "$junk" > /etc/.altboot-bootNFS-source.last + 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 || mdie "mkdir -p /media/nfsroot failed!" + + echo -n "Mounting NFS root..." + + if ( mount | grep -q "/media/nfsroot" ) + then + echo "/media/nfsroot already used, tying to umount..." + umount /media/image + losetup -d /dev/loop0 + umount /media/nfsroot || die "umount failed!" + fi + + mount -t nfs "$selection" /media/nfsroot && echo ok || mdie "mount -t nfs "$selection" /media/nfsroot failed!" + + # Use configured resolv.conf in the pivoted rootfs + #echo -n "Copying resolv.conf..." + #cp /etc/resolv.conf /media/nfsroot/etc && echo ok || echo "FAILED" + + check_target "/media/nfsroot" bootNFS + +} + +case "$1" in +title) echo "$M_TITLE";; +run) run_module "$2";; +esac + |