source: branches/2.2.10/mindi/rootfs/sbin/start-netfs @ 2499

Last change on this file since 2499 was 2499, checked in by Bruno Cornec, 11 years ago

nfsopt restore boot time option added to support custom mount options for network restore
(2.2.9.2 backport)

  • Property svn:executable set to *
File size: 3.7 KB
Line 
1#!/bin/sh
2#
3# $Id$
4#
5# This script sets up the network + Network FS environment if needed.
6#
7
8
9# number of ping
10ipcount=3
11
12# Get info from config file
13ipdev=`grep netfs-dev $MINDI_CACHE/mondorestore.cfg 2> /dev/null | cut -d' ' -f2-`
14ipaddress=`grep netfs-client-ipaddr $MINDI_CACHE/mondorestore.cfg 2> /dev/null | cut -d' ' -f2-`
15ipnetmask=`grep netfs-client-netmask $MINDI_CACHE/mondorestore.cfg 2> /dev/null | cut -d' ' -f2-`
16ipbroadcast=`grep netfs-client-broadcast $MINDI_CACHE/mondorestore.cfg 2> /dev/null | cut -d' ' -f2-`
17ipgateway=`grep netfs-client-defgw $MINDI_CACHE/mondorestore.cfg 2> /dev/null | cut -d' ' -f2-`
18proto=`grep netfs-proto $MINDI_CACHE/mondorestore.cfg 2> /dev/null | cut -d' ' -f2-`
19ipconf=""
20pre=""
21post=""
22export netfsmount=`grep netfs-server-mount $MINDI_CACHE/mondorestore.cfg 2> /dev/null | cut -d' ' -f2-`
23export imgname=`grep iso-prefix $MINDI_CACHE/mondorestore.cfg 2> /dev/null | cut -d' ' -f2-`
24if [ "$imgname" = "" ]; then
25    export imgname="mondorescue"
26fi
27export dirimg=`grep netfs-server-path $MINDI_CACHE/mondorestore.cfg 2> /dev/null | cut -d' ' -f2-`
28if [ "$dirimg" = "" ]; then
29    export dirimg="/"
30fi
31
32# info from cmdline are predominent
33for i in `cat $CMDLINE` ; do
34    echo $i | grep -qi ping= && ipcount=`echo $i | cut -d= -f2`
35    echo $i | grep -qi ipconf= && ipconf=`echo $i | cut -d= -f2`
36    echo $i | grep -qi netfsmount= && export netfsmount=`echo $i | cut -d= -f2`
37    echo $i | grep -qi netfsopt= && export netfsopt=`echo $i | cut -d= -f2`
38    echo $i | grep -qi prefix= && export imgname=`echo $i | cut -d= -f2`
39    echo $i | grep -qi netfspath= && export dirimg=`echo $i | cut -d= -f2`
40    echo $i | grep -qi pre= && pre=`echo $i | cut -d= -f2`
41    echo $i | grep -qi post= && post=`echo $i | cut -d= -f2`
42    echo $i | grep -qi proto= && proto=`echo $i | cut -d= -f2`
43done
44
45if [ "$ipdev" != "" ] || [ "$ipconf" != "" ]; then
46    # Network configuration stored during archive
47    # or on cmdline so network wanted => starting it
48    LogIt "Starting Network..."
49
50    # Activate loobback
51    ifconfig lo 127.0.0.1
52
53    echo "$ipconf" | grep -q "dhcp"
54    if [ $? -eq 0 ]; then
55        ipdev=`echo $ipconf | cut -d: -f1`
56        LogIt "Making DHCP request on $ipdev"
57        udhcpc -i $ipdev
58    else
59        if [ "$ipconf" != "" ]; then
60            ipdev=`echo $ipconf | cut -d: -f1`
61            ipaddress=`echo $ipconf | cut -d: -f2`
62            ipnetmask=`echo $ipconf | cut -d: -f3`
63            ipbroadcast=`echo $ipconf | cut -d: -f4`
64            ipgateway=`echo $ipconf | cut -d: -f5`
65        fi
66        LogIt "Configuring $ipdev statically ($ipaddress/$ipnetmask)"
67        ifconfig $ipdev $ipaddress netmask $ipnetmask broadcast $ipbroadcast
68        route add default gw $ipgateway
69    fi
70
71    # ping server helps waking interface up
72    LogIt "Pinging Remote server..."
73    netfs_server_ipaddr=`echo $netfsmount | cut -d: -f1 | cut -d@ -f2`
74    ping -c $ipcount $netfs_server_ipaddr 
75
76    # Which is our protocol for file sharing
77    if [ "$proto" = "" ]; then
78        LogIt "No protocol specified, defaulting to NFS"
79        $proto = "nfs"
80    fi
81
82    if [ "$proto" = "sshfs" ]; then
83        LogIt "Mounting SSHFS share ($netfsmount) on /tmp/isodir..."
84        # We need a correct console for ssh
85        ln -sf /dev/console /dev/tty
86        sshfs -o ro,StrictHostKeyChecking=no $netfsopt $netfsmount /tmp/isodir
87    elif [ "$proto" != "" ]; then
88        LogIt "Mounting Network share ($netfsmount) on /tmp/isodir..."
89        touch /etc/mtab
90        mount -t $proto -o nolock,ro $netfsopt $netfsmount /tmp/isodir
91    else
92        LogIt "Unknown protocol $proto"
93    fi
94   
95    LogIt "Mounting Remote image ${imgname}-1.iso in $dirimg on /mnt/cdrom in loopback"
96    mount -o ro,loop -t iso9660 /tmp/isodir/$dirimg/${imgname}-1.iso /mnt/cdrom
97
98    # Save the scripts on the Network share locally
99    if [ "`echo $pre | grep -E '^/tmp/isodir'`" ]; then
100        cp $pre /tmp
101        LogIt "Copying $pre under /tmp"
102    fi
103    if [ "`echo $post | grep -E '^/tmp/isodir'`" ]; then
104        cp $post /tmp
105        LogIt "Copying $post under /tmp"
106    fi
107fi
Note: See TracBrowser for help on using the repository browser.