diff options
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 + |