source: client/boot-tools/old/clientstructure/etc/initramfs-tools/scripts/ogfunctions @ b34e6e0

918-git-images-111dconfigfileconfigure-oglivegit-imageslgromero-new-oglivemainmaint-cronmount-efivarfsmultivmmultivm-ogboot-installerogClonningEngineogboot-installer-jenkinsoglive-ipv6test-python-scriptsticket-301ticket-50ticket-50-oldticket-577ticket-585ticket-611ticket-612ticket-693ticket-700ubu24tplunification2use-local-agent-oglivevarios-instalacionwebconsole3
Last change on this file since b34e6e0 was 39bca9b, checked in by adv <adv@…>, 14 years ago

branch version 1.0 #420 separando proceso de creacion anterior

git-svn-id: https://opengnsys.es/svn/branches/version1.0@2321 a21b9725-9963-47de-94b9-378ad31fedc9

  • Property mode set to 100644
File size: 18.4 KB
Line 
1#@file    ogfunctions.lib
2#@brief   Librería o clase para la generación del 1erFS
3#@class   client
4#@brief   Funciones para la generación del primers sistema (initrd)
5#@version 0.91
6#@warning License: GNU GPLv3+
7
8
9ogExportKernelParameters ()
10{
11        GLOBAL="cat /proc/cmdline"
12        for i in `${GLOBAL}`
13        do
14                echo $i | grep "=" > /dev/null && export $i
15        done
16return 0
17}
18
19ogExportVarEnvironment ()
20{
21        export CFGINITRD="/tmp/initrd.cfg"     
22        OGPROTOCOL="${ogprotocol:-smb}"
23        case "$OGPROTOCOL" in
24                nfs|NFS)                       
25                                #export NFSROOTBOOT="/var/lib/tftpboot"         
26                        export SRCOGLIVE="/var/lib/tftpboot" && echo "SRCOGLIVE=$SRCOGLIVE" >> $CFGINITRD       
27                                #export NFSCLIENTDIR="/opt/opengnsys/client"   
28                        export SRCOGSHARE="/opt/opengnsys/client" && echo "SRCOGSHARE=$SRCOGSHARE" >> $CFGINITRD
29                                #export NFSLOGDIR="/opt/opengnsys/log/clients"
30                        export SRCOGLOG="/opt/opengnsys/log/clients" && echo "SRCOGLOG=$SRCOGLOG" >> $CFGINITRD
31                                #export NFSIMGDIR="/opt/opengnsys/images"
32                        export SRCOGIMAGES="/opt/opengnsys/images" && echo "SRCOGIMAGES=$SRCOGIMAGES" >> $CFGINITRD     
33                ;;
34                smb|SMB|cifs|CIFS|samba|SAMBA)
35                        export OPTIONS=" -o user=opengnsys,pass=og"
36                                #export SMBROOTBOOT="tftpboot"  && echo "SMBROOTBOOT=$SMBROOTBOOT" >> $CFGINITRD       
37                        export SRCOGLIVE="tftpboot"  && echo "SRCOGLIVE=$SRCOGLIVE" >> $CFGINITRD
38                                #export SMBCLIENTDIR="ogclient" && echo "SMBCLIENTDIR=$SMBCLIENTDIR" >> $CFGINITRD
39                        export SRCOGSHARE="ogclient" && echo "SRCOGSHARE=$SRCOGSHARE" >> $CFGINITRD
40                                #export SMBLOGDIR="oglog" && echo "SMBLOGDIR=$SMBLOGDIR" >> $CFGINITRD
41                        export SRCOGLOG="oglog" && echo "SRCOGLOG=$SRCOGLOG" >> $CFGINITRD     
42                                #export SMBIMGDIR="ogimages" && echo "SMBIMGDIR=$SMBIMGDIR" >> $CFGINITRD
43                        export SRCOGIMAGES="ogimages" && echo "SRCOGIMAGES=$SRCOGIMAGES" >> $CFGINITRD
44                ;;
45                local|LOCAL)
46                        export SRCOGLIVE="local"
47                ;;
48        esac
49        #punto de acceso al boot-tools live
50                #export LOCALROOTBOOT="/opt/og2fs/tftpboot"     && echo "LOCALROOTBOOT=$LOCALROOTBOOT" >> $CFGINITRD
51        export DSTOGLIVE="/opt/oglive/tftpboot"
52        #punto de montaje para unionfs
53                #export LOCALROOTRAM="/opt/og2fs/1stfs" && echo "LOCALROOTRAM=$LOCALROOTRAM" >> $CFGINITRD                             
54        export OGLIVERAMFS="/opt/oglive/ramfs" && echo "OGLIVERAMFS=$OGLIVERAMFS" >> $CFGINITRD
55        #punto de montaje donde se accede al 2nd FS mediante loop
56                #export LOCALROOTIMG="/opt/og2fs/2ndfs" && echo "LOCALROOTIMG=$LOCALROOTIMG" >> $CFGINITRD             
57        export OGLIVEROOTFS="/opt/oglive/rootfs" && echo "OGLIVEROOTFS=$OGLIVEROOTFS" >> $CFGINITRD
58        #punto de union entre LOCALROOTIMG y LOCALROOTRAM
59                #export LOCALROOTUNION="/opt/og2fs/unionfs" && echo "LOCALROOTUNION=$LOCALROOTUNION" >> $CFGINITRD                     
60        export OGLIVEUNIONFS="/opt/oglive/unionfs" && echo "OGLIVEUNIONFS=$OGLIVEUNIONFS" >> $CFGINITRD
61        #etiquta para los dispositivos offline
62        export OGLIVELABEL="ogClient"
63       
64        #echo "puntos de montajes para los demas accesos"
65        #echo "acceso al client, engine, scritps, interfaz"
66                #export LOCALCLIENTDIR="/opt/opengnsys" && echo "LOCALCLIENTDIR=$LOCALCLIENTDIR" >> $CFGINITRD         
67        export DSTOGSHARE="/opt/opengnsys" && echo "DSTOGSHARE=$DSTOGSHARE" >> $CFGINITRD               
68                #export LOCALLOGDIR="/opt/opengnsys/log" && echo "LOCALLOGDIR=$LOCALLOGDIR" >> $CFGINITRD
69        export DSTOGLOG="/opt/opengnsys/log" && echo "DSTOGLOG=$DSTOGLOG" >> $CFGINITRD
70                #export LOCALIMGDIR="/opt/opengnsys/images" && echo "LOCALIMGDIR=$LOCALIMGDIR" >> $CFGINITRD
71        export DSTOGIMAGES="/opt/opengnsys/images" && echo "DSTOGIMAGES=$DSTOGIMAGES" >> $CFGINITRD
72               
73        ##INFORMACION DE OTRAS VARIABLES OBTENDIAS EN OTRAS FUNCIONES ogConfigureNetwork.
74                #DEVICE
75                #IPV4DDR
76                #IPV4BROADCAST
77                #IPV4NETMASK
78                #IPV4GATEWAY
79                #HOSTNAME
80    #INFORMACION de otras variasbles obteneidas desde ogGetROOTSERVER
81                #ROOTSERVER  si ip=dhcp -> ROOTSERVER=NEXT-SERVER; si ip=host:rootserver:gw:mask:hostname:interfaz -> ROOTSERVER=rootserver
82                #BOOTIF -> si el gestor remoto es pxelinux.0 y se añade una linea más tipo "IPAPPEND 2" esta variable tendrá la mac de la interfaz.
83                #$OGSERVERLIVE
84                #$OGSERVERSHARE
85                #$OGSERVERLOG
86                #$OGSERVERIMAGES
87        return 0
88}
89
90ogConfigureRamfs ()
91{
92                #mkdir -p $LOCALROOTBOOT
93        mkdir -p $DSTOGLIVE     
94                #mkdir -p $LOCALROOTRAM         
95        mkdir -p $OGLIVERAMFS   
96                #mkdir -p $LOCALROOTIMG
97        mkdir -p $OGLIVEROOTFS                           
98                #mkdir -p $LOCALROOTUNION
99        mkdir -p $OGLIVEUNIONFS
100}
101
102ogLoadNetModule ()
103{
104        if [ -n "$ognetmodule" ]
105        then
106                echo "Cargando modulo de red $netmodule"
107                insmod `find /lib/modules/ -name ${netmodule}*`
108        fi
109}
110
111
112ogPostConfigureFS()
113{
114        # configuramos el /etc/hostname.
115        echo $HOSTNAME > /etc/hostname
116       
117        #configuramos el /etc/hosts
118        echo "127.0.0.1 localhost" > /etc/hosts
119        echo "$IPV4ADDR $HOSTNAME" >> /etc/hosts
120       
121        #configuramos el host.conf
122        echo "order hosts,bind" > /etc/host.conf
123        echo "multi on" >> /etc/host.conf
124       
125        #configuramos el dns
126        echo "nameserver $ogdns" > /etc/resolv.conf
127       
128       
129        # configuramos el /etc/networks
130        #read -e NETIP NETDEFAULT <<<$(route -n | grep eth0 | awk -F" " '{print $1}')
131        NETIP=$(route -n | grep eth0 | awk -F" " '{print $1}') && NETIP=$(echo $NETIP | cut -f1 -d" ")
132        echo "default 0.0.0.0" > /etc/networks
133        echo "loopback 127.0.0.0" >> /etc/networks
134        echo "link-local 169.254.0.0" >> /etc/networks
135        echo "localnet $NETIP" >> /etc/networks
136        #route
137
138        echo "ogLive1.0.2" > /etc/debian_chroot
139
140        #enlace si iniciamos desde ogprotocolo=local { cdrom, usb, cache } .
141    # monta el raiz del dispositivo local en /opt/og2fs/tftpboot  - acceso al fichero .sqfs
142    # y monta el sistema root sqfs en /opt/og2fs/2ndfs
143                #[ "$LOCALMEDIA" == "CACHE" ] && ln -s /opt/oglive/tftpboot /opt/opengnsys/cache
144                #[ "$ogprotocol" == "local" ] &&  ln -s /opt/oglive/2ndfs/opt/opengnsys/* /opt/opengnsys/
145        [ "$LOCALMEDIA" == "CACHE" ] && ln -s $DSTOGLIVE /opt/opengnsys/cache
146        [ "$ogprotocol" == "local" ] &&  ln -s ${OGLIVEROOTFS}/opt/opengnsys/* /opt/opengnsys/
147
148
149}
150
151
152
153#Requiere ogConfigureNetworking.
154#Exporta ROOTSERVER
155# si la red ha sido configurada con dhcp el valor de ROOTSERVER será el valor de next-server del dhcp
156# si la red ha sido configurada con el parametro de kernel ip, será el segundo valor.
157   ## ip=iphost:ipnext-server:ipgateway:netmask:hostname:iface:none
158   ## ip=172.17.36.21:62.36.225.150:172.17.36.254:255.255.255.0:prueba1:eth0:none
159ogGetROOTSERVER ()
160{
161        # get nfs root from dhcp
162        if [ "x${NFSROOT}" = "xauto" ]; then
163                # check if server ip is part of dhcp root-path
164                if [ "${ROOTPATH#*:}" = "${ROOTPATH}" ]; then
165                        NFSROOT=${ROOTSERVER}:${ROOTPATH}
166                else
167                        NFSROOT=${ROOTPATH}
168                fi
169
170        # nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]
171        elif [ -n "${NFSROOT}" ]; then
172                # nfs options are an optional arg
173                if [ "${NFSROOT#*,}" != "${NFSROOT}" ]; then
174                        NFSOPTS="-o ${NFSROOT#*,}"
175                fi
176                NFSROOT=${NFSROOT%%,*}
177                if [ "${NFSROOT#*:}" = "$NFSROOT" ]; then
178                        NFSROOT=${ROOTSERVER}:${NFSROOT}
179                fi
180        fi
181        export ROOTSERVER
182        echo "ROOTSERVER=$ROOTSERVER" >> $CFGINITRD
183       
184        #si oglive no oglive=R
185        export OGSERVERIMAGES="${ogrepo:-$ROOTSERVER}"
186        export OGSERVERSHARE="${ogshare:-$ROOTSERVER}"
187        export OGSERVERLOG="${oglog:-$ROOTSERVER}"
188        export OGSERVERLIVE="${oglive:-$OGSERVERIMAGES}"
189       
190        return 0
191}
192
193#ogConnect
194# parm 1    ip servidor  TODO:dns
195# parm 2    protocolo
196# parm 3    punto de acceso remoto
197# parm 4    punto de montaje local
198# parm 5    acceso de lectura tipo ",ro"
199ogConnect ()
200{
201        SERVER=$1
202        PROTOCOL=$2
203        SRC=$3
204        DST=$4
205        READONLY=$5
206       
207        case "$PROTOCOL" in
208                nfs)
209                        nfsmount -o nolock${READONLY} ${SERVER}:${SRC} ${DST}
210                ;;
211                smb)
212                        mount.cifs //${SERVER}/${SRC} ${DST} ${OPTIONS}${READONLY}             
213                ;;
214        esac
215}
216       
217ogConnectOgLive ()
218{
219# Si ogprotocol=local, la funcion ogExportVar => SRCOGLIVE=local
220        if [ "$SRCOGLIVE" == "local" ]
221        then           
222                echo  "Montar imagen del sistema root desde dispositivo local"
223                for i in $(blkid /dev/s* | grep $OGLIVELABEL  | awk -F: '{print $2}' | tr -d \"); do export $i; done
224                mount -t $TYPE LABEL=$LABEL $DSTOGLIVE 
225                if [ $? != 0 ]
226                then
227                        mount -t reiserfs LABEL=CACHE $DSTOGLIVE
228                        export LOCALMEDIA=CACHE
229                fi
230        else
231# Si ogprotocol es remoto.    TODO en smb rw y en nfs ro??
232        ogConnect $OGSERVERLIVE $OGPROTOCOL $SRCOGLIVE $DSTOGLIVE               
233        fi             
234# Si el montaje ha sido correcto, tanto en local como en remoto. Procedemos con la union
235        ogMergeLive
236}
237
238
239
240ogMergeLive()
241{
242#Si existe en el punto de acceso del del oglive el fichero ogclient.sqfs       
243if [ -f $DSTOGLIVE/ogclient/ogclient.sqfs ]
244then   
245        cat /proc/mounts > /tmp/mtab.preunion
246        if [ "$og2nd" == "img" ]
247        then
248                #Montamos el ROOTFS tipo  img, para desarrolladores
249                losetup /dev/loop0 $DSTOGLIVE/ogclient/ogclient.img -o 32256
250                mount /dev/loop0 $OGLIVEROOTFS
251        else
252                ## Montamos el ROOTFS tipo squashfs
253                mount $DSTOGLIVE/ogclient/ogclient.sqfs $OGLIVEROOTFS -t squashfs -o loop
254        fi
255# Realizamos la union entre el ogliveram(initrd) y el ogliverootfs(ogclient.sqfs)       
256        for i in etc var lib bin sbin usr root boot; do
257                ogUnionLiveDir $i
258        done
259        cat /tmp/mtab.preunion > /etc/mtab
260else
261        echo "Fichero imagen del cliente no encontrado"
262        return 1
263fi
264}
265
266
267
268
269#ogUnionLiveDir
270#par 1 el directorio a unir.
271# para el parmetro 1 (directorio),
272ogUnionLiveDir()
273{
274        TMPDIR=/$1              #dir
275        FUSE_OPT="-o default_permissions -o allow_other -o use_ino -o nonempty -o suid"
276        UNION_OPT="-o cow -o noinitgroups"
277        UBIN="unionfs-fuse"
278
279        mkdir -p $OGLIVERAMFS$TMPDIR
280        U1STDIR="${OGLIVERAMFS}${TMPDIR}=RW"
281        U2NDDIR="${OGLIVEROOTFS}${TMPDIR}=RO"
282        UNIONDIR=${OGLIVEUNIONFS}${TMPDIR}
283        mkdir -p $UNIONDIR
284        $UBIN $FUSE_OPT $UNION_OPT ${U1STDIR}:${U2NDDIR} $UNIONDIR
285        mount --bind  $UNIONDIR $TMPDIR
286}
287
288
289
290
291ogConfigureLoopback()
292{
293# for the portmapper we need localhost
294ifconfig lo 127.0.0.1
295#/etc/init.d/portmap start
296}
297
298ogConfigureNetworking()
299{
300#echo "ogConfigureNetworking: Buscando interfaz a configurar DEVICE"
301if [ -n "${BOOTIF}" ]
302then
303        #echo " variable BOOTIF exportada con pxelinux.0 con valor $BOOTIF"
304        IP=$IPOPTS
305        temp_mac=${BOOTIF#*-}
306        # convert to typical mac address format by replacing "-" with ":"
307        bootif_mac=""
308        IFS='-'
309        for x in $temp_mac ; do
310                if [ -z "$bootif_mac" ]; then
311        bootif_mac="$x"
312        else
313                bootif_mac="$x:$bootif_mac"
314        fi
315        done
316        unset IFS
317        # look for devices with matching mac address, and set DEVICE to
318        # appropriate value if match is found.
319        for device in /sys/class/net/* ; do
320                if [ -f "$device/address" ]; then
321                        current_mac=$(cat "$device/address")
322                        if [ "$bootif_mac" = "$current_mac" ]; then
323                                DEVICE=${device##*/}
324                                break
325                        fi
326                fi
327        done
328else
329        #echo "variable BOOTIF no exportada, intentamos detectar que interfaz se ha iniciado"
330        IP=$ip
331        #TODO Detectar que interfaz se ha iniciado
332        case ${IP} in
333                none|off)
334           return 0
335        ;;
336        ""|on|any)
337          # Bring up device
338          DEVICE=eth0
339        ;;
340        dhcp|bootp|rarp|both)
341          DEVICE=eth0
342        ;;
343        *)
344          DEVICE=`echo $IP | cut -f6 -d:`
345        ;;
346        esac
347fi
348if [ -z "${DEVICE}" ]; then
349        echo "variable DEVICE con valor $DEVICE no encontrada, llamamos de nuevo a ogconfigure_networking"
350        ogConfigureNetworking
351fi
352
353[ -n "${DEVICE}" ] && [ -e /tmp/net-"${DEVICE}".conf ] && return 0
354#if [ -n "${DEVICE}" ] && [ -e /tmp/net-"${DEVICE}".conf ]; then
355#       echo "variable DEVICE con valor $DEVICE  y fichero /tmp/net-$DEVICE encontrados"
356#       return 0
357#else
358#       echo "variable DEVICE con valor $DEVICE encontrada, procedemos a configurala y a crear el fichero /tmp/net-$DEVICE"
359#fi
360
361# Activamos la interfaz antes de configurar.
362ip address flush $DEVICE
363ip link set dev $DEVICE up
364# Si no se detecta señal portadora volver a configurar.
365sleep 1
366CARRIER=$(cat /sys/class/net/${DEVICE}/carrier)
367if [ "$CARRIER" != "1" ]
368then
369        ogConfigureNetworking
370fi
371
372# support ip options see linux sources
373# Documentation/filesystems/nfsroot.txt
374# Documentation/frv/booting.txt
375for ROUNDTTT in 2 3 4 6 9 16 25 36 64 100; do
376        # The NIC is to be configured if this file does not exist.
377        # Ip-Config tries to create this file and when it succeds
378        # creating the file, ipconfig is not run again.
379        if [ -e /tmp/net-"${DEVICE}".conf ]; then
380                break;
381        fi
382        case ${IP} in
383                none|off)
384                        return 0
385                ;;
386                ""|on|any)
387                        # Bring up device
388                        echo "Setting $DEVICE  with option:on|any and Variable IP= $IP: ipconfig -t ${ROUNDTTT} ${DEVICE} "
389                        ipconfig -t ${ROUNDTTT} ${DEVICE}
390                ;;
391                dhcp|bootp|rarp|both)
392                        echo "Setting $DEVICE with option:dhcp|bootp|rarp|both and Variable IP=  $IP: ipconfig -t ${ROUNDTTT} -c ${IP} -d ${DEVICE} "
393                        ipconfig -t ${ROUNDTTT} -c ${IP} -d ${DEVICE}
394                ;;
395                *)
396                        echo "Setting $DEVICE with option *  and Variable IP= $IP: ipconfig -t ${ROUNDTTT} -d $IP  "
397                        ipconfig -t ${ROUNDTTT} -d $IP
398                        # grab device entry from ip option
399                        NEW_DEVICE=${IP#*:*:*:*:*:*}
400                        if [ "${NEW_DEVICE}" != "${IP}" ]; then
401                                NEW_DEVICE=${NEW_DEVICE%:*}
402                        else
403                                # wrong parse, possibly only a partial string
404                                NEW_DEVICE=
405                        fi
406                        if [ -n "${NEW_DEVICE}" ]; then
407                                DEVICE="${NEW_DEVICE}"
408                        fi
409                ;;
410        esac
411done
412
413# source ipconfig output
414if [ -n "${DEVICE}" ]; then     
415    . /tmp/net-${DEVICE}.conf
416    DEVICECFG="/tmp/net-${DEVICE}.conf"
417        export DEVICECFG
418        export DEVICE
419        echo "DEVICE=$DEVICE" >> $CFGINITRD
420        echo "DEVICECFG=$DEVICECFG" >> $CFGINITRD
421        echo "exportando variable DEVICE con valor = $DEVICE y el DEVICECFG con valor $DEVICECFG"   
422else
423    # source any interface as not exaclty specified
424    . /tmp/net-*.conf
425fi
426}
427
428   #####################################################################
429# Ask yesno question.
430#
431# Usage: yesno OPTIONS QUESTION
432#
433#   Options:
434#     --timeout N    Timeout if no input seen in N seconds.
435#     --default ANS  Use ANS as the default answer on timeout or
436#                    if an empty answer is provided.
437#
438# Exit status is the answer.  0=yes 1=no
439
440ogYesNo()
441{
442    local ans
443    local ok=0
444    local timeout=0
445    local default
446    local t
447
448    while [[ "$1" ]]
449    do
450        case "$1" in
451        --default)
452            shift
453            default=$1
454            if [[ ! "$default" ]]; then error "Missing default value"; fi
455            t=$(echo $default | tr '[:upper:]' '[:lower:]')
456
457            if [[ "$t" != 'y'  &&  "$t" != 'yes'  &&  "$t" != 'n'  &&  "$t" != 'no' ]]; then
458                error "Illegal default answer: $default"
459            fi
460            default=$t
461            shift
462            ;;
463
464        --timeout)
465            shift
466            timeout=$1
467            if [[ ! "$timeout" ]]; then error "Missing timeout value"; fi
468            #if [[ ! "$timeout" =~ ^[0-9][0-9]*$ ]]; then error "Illegal timeout value: $timeout"; fi
469            shift
470            ;;
471
472        -*)
473            error "Unrecognized option: $1"
474            ;;
475
476        *)
477            break
478            ;;
479        esac
480    done
481
482    if [[ $timeout -ne 0  &&  ! "$default" ]]; then
483        error "Non-zero timeout requires a default answer"
484    fi
485
486    if [[ ! "$*" ]]; then error "Missing question"; fi
487
488    while [[ $ok -eq 0 ]]
489    do
490        if [[ $timeout -ne 0 ]]; then
491            if ! read -t $timeout -p "$*" ans; then
492                ans=$default
493            else
494                # Turn off timeout if answer entered.
495                timeout=0
496                if [[ ! "$ans" ]]; then ans=$default; fi
497            fi
498        else
499            read -p "$*" ans
500            if [[ ! "$ans" ]]; then
501                ans=$default
502            else
503                ans=$(echo $ans | tr '[:upper:]' '[:lower:]')
504            fi
505        fi
506
507        if [[ "$ans" == 'y'  ||  "$ans" == 'yes'  ||  "$ans" == 'n'  ||  "$ans" == 'no' ]]; then
508            ok=1
509        fi
510
511        if [[ $ok -eq 0 ]]; then warning "Valid answers are: yes y no n"; fi
512    done
513    [[ "$ans" = "y" || "$ans" == "yes" ]]
514}
515     
516     
517### # borrar     
518     
519ogConectROOTSERVER ()
520{
521local OPTIONS
522#params a detectar
523if [ $ogrepo ]
524then
525        # Validar si la ip es correcta
526        ROOTREPO=$ogrepo
527else
528        ROOTREPO=$ROOTSERVER
529fi
530
531case "$ogprotocol" in
532        local)
533                echo  "Montar imagen del sistema root desde dispositivo local"
534                for i in $(blkid /dev/s* | grep ogClient | awk -F: '{print $2}' | tr -d \"); do export $i; done
535                mount -t $TYPE LABEL=$LABEL $LOCALROOTBOOT
536                if [ $? != 0 ]
537                then
538                        mount -t reiserfs LABEL=CACHE $LOCALROOTBOOT
539                        export LOCALMEDIA=CACHE
540                fi
541                ;;   
542        httfs)
543                echo "protocolo httfs aun no soportado"
544                ;;
545        sshfs)
546                echo "protocolo sshfs aun no soportado"
547                ;;
548        smb)   
549                echo "Preparando conexión con el Repositorio $ROOTSERVER por $ogprotocol"
550                OPTIONS=" -o user=opengnsys,pass=og"
551                mount.cifs //${ROOTSERVER}/${SMBROOTBOOT} $LOCALROOTBOOT $OPTIONS               
552                mount.cifs //${ROOTSERVER}/${SMBCLIENTDIR} $LOCALCLIENTDIR $OPTIONS             
553                mount.cifs //${ROOTSERVER}/${SMBLOGDIR} $LOCALLOGDIR $OPTIONS
554               
555                mount.cifs //${ROOTREPO}/${SMBIMGDIR} $LOCALIMGDIR ${OPTIONS},ro
556                ;;
557        nfs)
558                echo "Preparando conexión con el Repositorio $ROOTSERVER por $ogprotocol"
559                nfsmount -o nolock $ROOTSERVER:$NFSROOTBOOT $LOCALROOTBOOT             
560                nfsmount -o nolock,ro $ROOTSERVER:$NFSCLIENTDIR $LOCALCLIENTDIR         
561                nfsmount -o nolock $ROOTSERVER:$NFSLOGDIR $LOCALLOGDIR
562               
563                nfsmount -o nolock,ro $ROOTREPO:$NFSIMGDIR $LOCALIMGDIR
564                ;;
565esac
566}
567
568        ogMerge2ndFile()
569{
570if [ -f $LOCALROOTBOOT/ogclient/ogclient.sqfs ]
571then   
572        cat /proc/mounts > /tmp/mtab.preunion
573        if [ "$og2nd" == "img" ]
574        then
575                #para acceder al img
576                losetup /dev/loop0 $LOCALROOTBOOT/ogclient/ogclient.img -o 32256
577                mount /dev/loop0 $LOCALROOTIMG
578        else
579                ## para acceder al squashfs
580                mount $LOCALROOTBOOT/ogclient/ogclient.sqfs $LOCALROOTIMG -t squashfs -o loop
581        fi
582        for i in etc var lib bin sbin usr root boot; do
583                unionmount $i
584        done
585        cat /tmp/mtab.preunion > /etc/mtab
586else
587        echo "Fichero imagen del cliente no encontrado"
588        return 1
589fi
590}
591
592unionmount()
593{
594        tmpdir=/$1              #dir
595        FUSE_OPT="-o default_permissions -o allow_other -o use_ino -o nonempty -o suid"
596        UNION_OPT="-o cow -o noinitgroups"
597        UBIN="unionfs-fuse"
598                                        #UPATH="/unionfs"
599                                        #LOCALROOTIMG="/opt/og2fs/2ndfs"       
600                                        #LOCALROOTRAM="/opt/og2fs/1stfs"                #/unionfs/host  #punto de montaje para unionfs
601                                        #LOCALROOTUNION=/opt/og2fs/unionfs/"    #/unionfs/union #punto de union entreo LOCALROOTIMG y LOCALROOTRAM
602                                        #mkdir -p $LOCALROOTRAM                          #/unionfs/host
603                                        #mkdir -p $LOCALROOTUNION                         #/unionfs/union
604        mkdir -p $LOCALROOTRAM$tmpdir
605        #mount --bind /$tmpdir $LOCALROOTRAM$tmpdir
606        U1STDIR="${LOCALROOTRAM}${tmpdir}=RW"
607        U2NDDIR="${LOCALROOTIMG}${tmpdir}=RO"
608        UNIONDIR=$LOCALROOTUNION$tmpdir
609        mkdir -p $UNIONDIR
610        $UBIN $FUSE_OPT $UNION_OPT ${U1STDIR}:${U2NDDIR} $UNIONDIR
611        mount --bind  $UNIONDIR $tmpdir
612}
613
614
615unionmountOLD()
616{
617        FUSE_OPT="-o default_permissions -o allow_other -o use_ino -o nonempty -o suid"
618        UNION_OPT="-o cow -o noinitgroups"
619        UPATH="/unionfs"
620        UBIN="unionfs-fuse"
621        mkdir -p /unionfs/host
622        mkdir -p /unionfs/union
623        dir=$1
624        mkdir -p /unionfs/host/$dir
625        #mount --bind /$dir /unionfs/host/$dir
626        mkdir -p /unionfs/union/$dir
627        host="/unionfs/host/${dir}=RW"
628        common="/opt/og2fs/${dir}=RO"
629        $UBIN $FUSE_OPT $UNION_OPT ${host}:${common} /unionfs/union/$dir
630        mount --bind  /unionfs/union/$dir /$dir
631}
Note: See TracBrowser for help on using the repository browser.