source: MondoRescue/branches/2.2.9/mindi/rootfs/sbin/start-netfs@ 2498

Last change on this file since 2498 was 2498, checked in by Bruno Cornec, 14 years ago

nfsopt restore boot time option added to support custom mount options for network restore

  • 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 /tmp/mondo-restore.cfg 2> /dev/null | cut -d' ' -f2-`
14ipaddress=`grep netfs-client-ipaddr /tmp/mondo-restore.cfg 2> /dev/null | cut -d' ' -f2-`
15ipnetmask=`grep netfs-client-netmask /tmp/mondo-restore.cfg 2> /dev/null | cut -d' ' -f2-`
16ipbroadcast=`grep netfs-client-broadcast /tmp/mondo-restore.cfg 2> /dev/null | cut -d' ' -f2-`
17ipgateway=`grep netfs-client-defgw /tmp/mondo-restore.cfg 2> /dev/null | cut -d' ' -f2-`
18proto=`grep netfs-proto /tmp/mondo-restore.cfg 2> /dev/null | cut -d' ' -f2-`
19ipconf=""
20pre=""
21post=""
22export netfsmount=`grep netfs-server-mount /tmp/mondo-restore.cfg 2> /dev/null | cut -d' ' -f2-`
23export imgname=`grep iso-prefix /tmp/mondo-restore.cfg 2> /dev/null | cut -d' ' -f2-`
24if [ "$imgname" = "" ]; then
25 export imgname="mondorescue"
26fi
27export dirimg=`grep netfs-server-path /tmp/mondo-restore.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 /proc/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.