source: client/boot-tools/boottoolsfunctions.lib @ f608f48

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 f608f48 was 82ae131, checked in by adv <adv@…>, 14 years ago

version 1.0.2 boot-tools #404 #420 #393 #429 #430 #431 #423

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

  • Property mode set to 100644
File size: 17.2 KB
Line 
1#!/bin/bash
2#/**
3#@file    boottoolsfunctions.lib
4#@brief   Librería o clase Boot-Tools
5#@class   Boot-Tools
6#@brief   Funciones para generar un sistema operativo cliente para opengnsys
7#@version 0.9
8#@warning License: GNU GPLv3+
9#*/
10
11
12# btGetVariables: define las constantes a utilizar
13# Autor: Antonio J. Doblas Viso. Universidad de Málaga.
14function btogGetVar()
15{
16
17export BTSVNBOOTTOOLS=/tmp/opengnsys_installer/opengnsys/client/boot-tools
18export BTSVNSHARE=/tmp/opengnsys_installer/opengnsys/client/shared
19export BTSVNENGINE=/tmp/opengnsys_installer/opengnsys/client/engine
20
21export BTSVNOG2=/tmp/opengnsys_installer/opengnsys2
22
23export BTTARGETDIR=/var/lib/tftpboot/ogclient/
24export BTROOTFSIMG=${BTTARGETDIR}ogclient.img
25export BTROOTFSMNT=${BTTARGETDIR}ogclientmount
26# tamaño maximo limitado por schroot 2GB
27export BTVIRTUALDISKSIZE=2000
28export BTROOTFSIMGLABEL=ogClient
29
30export LOG_FILE=/tmp/boot-tools_installation.log
31
32NAMEISOCLIENT=`cat /tmp/opengnsys_info_rootfs`
33NAMEHOSTCLIENT=`cat /tmp/opengnsys_chroot`
34
35export NAMEISOCLIENT
36export NAMEHOSTCLIENT
37}
38
39
40# btGetOsInfo: detecta la version del host, para tenerla de referencia en el boot-tools a generar.
41#@version 0.9 - Prototipo de sistema operativo multiarranque de opengnsys.
42#@author  Antonio J. Doblas Viso. Universidad de Malaga.
43#@date    2010/05/24
44#@version 1.0 - Compatibilidad OpengGnsys X.
45#@author  Antonio J. Doblas Viso. Universidad de Malaga.
46#@date    2011/08/03
47function btogGetOsInfo ()
48{
49                case $1 in
50                lenny|LENNY)
51                        export OSDISTRIB=debian
52                        export OSCODENAME=lenny
53                        export OSRELEASE="2.6.28-11-generic"
54                        export OSARCH=i386
55                        export OSHTTP="http://es.archive.ubuntu.com/ubuntu/ "
56                ;;
57                lucid|LUCID)
58                        export OSDISTRIB=ubuntu
59                        export OSCODENAME=lucid
60                        export OSRELEASE="2.6.32-21-generic-pae"
61                        export OSARCH=i386
62                        export OSHTTP="http://es.archive.ubuntu.com/ubuntu/ "
63                ;;
64                host | HOST | *)
65                        export OSDISTRIB=$(lsb_release -i | awk -F: '{sub(/\t/,""); print $2}') 2>/dev/null
66                        export OSCODENAME=$(cat /etc/lsb-release | grep CODENAME | awk -F= '{print $NF}')
67                        export OSRELEASE=$(uname -a | awk '{print $3}')
68                        uname -a | grep x86_64 > /dev/null  &&  export OSARCH=amd64 || export OSARCH=i386
69                        export OSHTTP="http://es.archive.ubuntu.com/ubuntu/"
70                ;;
71        esac
72                echo $OSDISTRIB:$OSCODENAME:$OSRELEASE:$OSARCH:$OSHTTP
73}
74
75# btogSetFsVirtual: Crea y formatea el fichero - disco duro virtual
76#@version 0.9 - Prototipo de sistema operativo multiarranque de opengnsys.
77#@author  Antonio J. Doblas Viso. Universidad de Malaga.
78#@date    2010/05/24
79#@version 1.0 - Compatibilidad OpengGnsys X.
80#@author  Antonio J. Doblas Viso. Universidad de Malaga.
81#@date    2011/08/03
82# error code return 2
83function btogSetFsVirtual ()
84{
85
86local RERROR  DISKLOOP PARTLOOP #return code error
87
88#Dependencias.
89[ -z "$BTROOTFSIMG" ] && btogGetVar
90
91echoAndLog "$FUNCNAME(): Creación y formateo del disco virtual $BTVIRTUALDISKSIZE MB "
92
93#Desmontamos el dispositivo virtual
94mount | grep $BTROOTFSMNT && umount $BTROOTFSMNT
95mount | grep $BTROOTFSMNTT && umount $BTROOTFSMNT
96
97#echo "$FUNCNAME(): Creando el directorio donde se montará el disco virtual $BTROOTFSMNT"
98mkdir -p $BTROOTFSMNT
99
100if [ $? -ne 0 ]
101then
102        errorAndLog "$FUNCNAME(): Creando directorio $BTROOTFSMNT : ERROR"
103        return 1
104fi
105
106# Permisos para el usuario opengnsys.
107chown -R root:opengnsys $BTTARGETDIR
108
109#echo "$FUNCNAME(): Creando el disco virtual con tamaño máximo de  $BTVIRTUALDISKSIZE MB"
110dd if=/dev/zero of=$BTROOTFSIMG bs=1048576 count=$BTVIRTUALDISKSIZE
111        #qemu-img create $BTROOTFSIMG 3G       
112        #dd if=/dev/zero of=$BTROOTFSIMG bs=1k count=$OGCLIENTSIZEKB   # necesita 500MB
113
114if [ $? -ne 0 ]
115then
116        errorAndLog "$FUNCNAME(): Creando el disco virtual con tamaño maxima $BTVIRTUALDISKSIZE MB : ERROR"
117        return 2
118fi
119
120# Particionamos el disco virtual con una sola particion primaria.
121DISKLOOP=$(losetup -f)
122#TODO: si no DISKLOOP error
123losetup $DISKLOOP $BTROOTFSIMG
124#echo "$FUNCNAME(): particiondo el disco virtual - $DISKLOOP - con una particion primaria"
125echo -e "n\np\n1\n\n\nt\n83\nw" | fdisk $DISKLOOP
126
127
128#echoAndLog "$FUNCNAME(): Liberamos Desmontando $DISKLOOP despues del particionado "
129losetup -d $DISKLOOP
130if [ $? -ne 0 ]
131then
132        errorAndLog "$FUNCNAME(): Liberando disco virtual despues del particionado: ERROR"
133        return 2
134fi
135
136
137PARTLOOP=$(losetup -f)
138#echo "$FUNCNAME(): Formateando la particion principal $PARTLOOP"
139losetup -o 32256 $PARTLOOP $BTROOTFSIMG && mkfs.ext3 -b 4096 -L $BTROOTFSIMGLABEL $PARTLOOP
140if [ $? -ne 0 ]
141then
142        errorAndLog "$FUNCNAME(): Formateando la particion principal del disco virtual: ERROR"
143        return 2
144fi
145#echoAndLog "$FUNCNAME(): Desmontando $PARTLOOP despues del formateo "
146losetup -d $PARTLOOP
147if [ $? -ne 0 ]
148then
149        errorAndLog "$FUNCNAME(): Liberando la particion virtual despues del formateo: ERROR"
150        return 2
151else
152        echoAndLog "$FUNCNAME(): $BTROOTFSIMG $BTVIRTUALDISKSIZE MB : OK"
153fi
154}
155
156
157# btogSetfsBase: Genera el sistema root base con debootstrap
158#@version 0.9 - Prototipo de sistema operativo multiarranque de opengnsys.
159#@author  Antonio J. Doblas Viso. Universidad de Malaga.
160#@date    2010/05/24
161#@version 1.0 - Compatibilidad OpengGnsys X.
162#@author  Antonio J. Doblas Viso. Universidad de Malaga.
163#@date    2011/08/03
164# error code return 3
165function btogSetFsBase ()
166{
167
168# Dependencias
169[ -z "$OSCODENAME" ] && btogGetOsInfo
170
171echoAndLog "$FUNCNAME:  Iniciando la generación del sistema de archivos "
172       
173#Montamos el dispositivo virtual en su punto de montaje.
174mount | grep $BTROOTFSMNT || mount $BTROOTFSIMG $BTROOTFSMNT -o loop,offset=32256
175mount | grep $BTROOTFSMNT && echoAndLog "$FUNCNAME:  mount $BTROOTFSIMG $BTROOTFSMNT -o loop,offset=32256 OK   " || errorAndLog  "$FUNCNAME:  mount $BTROOTFSIMG $BTROOTFSMNT -o loop,offset=32256 : FAILURE  "
176
177debootstrap --arch=$OSARCH --components=main,universe ${OSCODENAME} ${BTROOTFSMNT} ${OSHTTP}
178
179
180if [ $? -ne 0 ]; then
181        errorAndLog "$FUNCNAME:  debootstrap --include=linux-image-${OSRELEASE},linux-headers-${OSRELEASE} --arch=$OSARCH --components=main,universe $OSCODENAME $BTROOTFSMNT $OSHTTP : ha fallado!"
182        mount | grep $BTROOTFSMNT && umount $BTROOTFSMNT
183        return 3
184else
185        echoAndLog "$FUNCNAME:  debootstrap --include=linux-image-${OSRELEASE},linux-headers-${OSRELEASE} --arch=$OSARCH --components=main,universe $OSCODENAME $BTROOTFSMNT $OSHTTP :  ok"
186        mount | grep $BTROOTFSMNT && umount $BTROOTFSMNT
187        return 0
188fi     
189  sleep 5
190
191##preubas  revisar OSRELEASE
192#debootstrap --include=linux-image-${OSRELEASE},linux-headers-${OSRELEASE} --arch=$OSARCH --components=main,universe ${OSCODENAME} ${OGCLIENTMOUNT} ${OSHTTP}
193#debootstrap --include=linux-image-${OSRELEASE} --arch=i386 --variant=minbase $OSVERSION $OGCLIENTMOUNT http://es.archive.ubuntu.com/ubuntu/
194#debootstrap --variant=minbase --include=linux-image-${OGRELEASE} --arch=i386 $OGVERSION $OGCLIENTMOUNT http://es.archive.ubuntu.com/ubuntu/
195#echo debootstrap --include=linux-image-${OGRELEASE},dbus --arch=i386 --components=main,universe $OGVERSION $OGCLIENTMOUNT http://es.archive.ubuntu.com/ubuntu/
196}
197
198#btogSetFsAcces: habilita el acceso al sistema root del cliente con  schroot
199#@version 0.9 - Prototipo de sistema operativo multiarranque de opengnsys.
200#@author  Antonio J. Doblas Viso. Universidad de Malaga.
201#@date    2010/05/24
202#@version 1.0 - Compatibilidad OpengGnsys X.
203#@author  Antonio J. Doblas Viso. Universidad de Malaga.
204#@date    2011/08/03
205function btogSetFsAccess()
206{
207echoAndLog "$FUNCNAME: Iniciando la configuración del schroot "
208cp /etc/schroot/schroot.conf /etc/schroot/schroot.conf.`getDateTime`
209cat << EOF > /etc/schroot/schroot.conf
210[IMGogclient]
211type=loopback
212file=/var/lib/tftpboot/ogclient/ogclient.img
213description=ogclient ubuntu luc IMGi
214#priority=1
215users=root
216groups=root
217root-groups=root
218mount-options=-o offset=32256
219root-users=root
220EOF
221
222cp /etc/schroot/mount-defaults /etc/schroot/mount-defaults.`getDateTime`
223cat << EOF > /etc/schroot/mount-defaults
224# mount.defaults: static file system information for chroots.
225# Note that the mount point will be prefixed by the chroot path
226# (CHROOT_PATH)
227#
228# <file system> <mount point>   <type>  <options>       <dump>  <pass>
229proc            /proc           proc    defaults        0       0
230#procbususb      /proc/bus/usb   usbfs   defaults        0       0
231#/dev            /dev            none    rw,bind         0       0
232/dev/pts        /dev/pts        none    rw,bind         0       0
233/dev/shm        /dev/shm        none    rw,bind         0       0
234#/home          /home           none    rw,bind         0       0
235/tmp            /tmp            none    rw,bind         0       0                                                               
236EOF
237
238rm /etc/schroot/setup.d/*chrootname
239
240echoAndLog "$FUNCNAME: Finalizado: OK  "
241return 0
242}
243
244
245
246#btogFsInitr  genera un initrd.
247#@version 0.9 - Prototipo de sistema operativo multiarranque de opengnsys.
248#@author  Antonio J. Doblas Viso. Universidad de Malaga.
249#@date    2010/05/24
250#@version 1.0 - Compatibilidad OpengGnsys X.
251#@author  Antonio J. Doblas Viso. Universidad de Malaga.
252#@date    2011/08/03
253function btogFsInitrd ()
254{
255#DEPENDENCIAS
256[ -z "$BTROOTFSIMG" ] && btogGetVar
257[ -z "$OSCODENAME" ] && btogGetOsInfo
258
259cd /
260schroot -c IMGogclient -- /usr/bin/boot-tools/boottoolsInitrdGenerate.sh
261echo "cp /tmp/*-${OSRELEASE} ${BTTARGETDIR}"
262cp /tmp/*-${OSRELEASE} ${BTTARGETDIR}
263#Creando copias de las version oginitr y ogvmlinux previas
264TIMEMOD=`date +%Y%m%d-%H%M%S`
265[ -f $BTTARGETDIR/oginitrd.img ] && mv $BTTARGETDIR/oginitrd.img $BTTARGETDIR/oginitrd.img.$TIMEMOD;  mv $BTTARGETDIR/oginitrd.img.sum $BTTARGETDIR/oginitrd.img.sum.$TIMEMOD
266[ -f $BTTARGETDIR/ogvmlinuz ] && mv $BTTARGETDIR/ogvmlinuz $BTTARGETDIR/ogvmlinuz.$TIMEMOD; mv $BTTARGETDIR/ogvmlinuz.sum $BTTARGETDIR/ogvmlinuz.sum.$TIMEMOD
267
268#copiando
269cp /tmp/initrd.img-${OSRELEASE} ${BTTARGETDIR}/oginitrd.img
270cp /tmp/vmlinuz-${OSRELEASE} ${BTTARGETDIR}/ogvmlinuz
271#generamos md5 del kernel y del initrd.
272DATASUM=`md5sum "${BTTARGETDIR}/oginitrd.img" | cut -f1 -d" "`
273echo $DATASUM > ${BTTARGETDIR}/oginitrd.img.sum
274DATASUM=`md5sum "${BTTARGETDIR}/ogvmlinuz" | cut -f1 -d" "`
275echo $DATASUM > ${BTTARGETDIR}/ogvmlinuz.sum
276#Damos permisos
277cd -
278chmod -R 755 $BTTARGETDIR
279}
280
281#btogFsSqfs   convierte el sistema root en sqfs
282#@version 0.9 - Prototipo de sistema operativo multiarranque de opengnsys.
283#@author  Antonio J. Doblas Viso. Universidad de Malaga.
284#@date    2010/05/24
285#@version 1.0 - Compatibilidad OpengGnsys X.
286#@author  Antonio J. Doblas Viso. Universidad de Malaga.
287#@date    2011/08/03
288function btogFsSqfs ()
289{
290#Dependencias.
291[ -z "$BTROOTFSIMG" ] && btogGetVar
292[ -z "$OSCODENAME" ] && btogGetOsInfo
293
294echoAndLog "$FUNCNAME: Iniciando la creación del sistema de archivos en sqfs "
295# si ya existe un sqfs lo renombramos
296[ -f $BTTARGETDIR/ogclient.sqfs ] && mv $BTTARGETDIR/ogclient.sqfs $BTTARGETDIR/ogclient.sqfs.`date +%Y%m%d-%H%M%S`
297mount | grep $BTROOTFSMNT || mount $BTROOTFSIMG $BTROOTFSMNT -o loop,offset=32256
298mksquashfs $BTROOTFSMNT $BTTARGETDIR/ogclient.sqfs
299mount | grep $BTROOTFSMNT && umount $BTROOTFSMNT
300chmod 744 $BTTARGETDIR/ogclient.sqfs
301DATASUM=`md5sum "${BTTARGETDIR}/ogclient.sqfs" | cut -f1 -d" "`
302echo $DATASUM > ${BTTARGETDIR}/ogclient.sqfs.sum
303}
304
305
306
307
308
309# btogIsoGenerator genera la iso del cliente
310#@version 0.9 - Prototipo de sistema operativo multiarranque de opengnsys.
311#@author  Antonio J. Doblas Viso. Universidad de Malaga.
312#@date    2010/05/24
313#@version 1.0 - Compatibilidad OpengGnsys X.
314#@author  Antonio J. Doblas Viso. Universidad de Malaga.
315#@date    2011/08/03
316function btogIsoGenerator {
317#Dependencias.
318#[ -z "$BTROOTFSIMG" ] && btogGetVar
319btogGetVar
320#Preparamos los gestores de arranque
321mkdir -p /tmp/iso/isolinux
322cp -prv /usr/lib/syslinux/* /tmp/iso/isolinux/
323cp -prv /usr/share/gpxe/* /tmp/iso/isolinux/
324
325cat << FIN > /tmp/iso/isolinux/isolinux.cfg
326DEFAULT menu.c32
327PROMPT 0
328ALLOWOPTIONS 1
329
330MENU TITLE  OpenGnsys ${NAMEISOCLIENT}
331
332LABEL gpxe
333MENU LABEL gpxe
334KERNEL /clonezilla/live/vmlinuz1
335APPEND initrd=/clonezilla/live/initrd1.img boot=live union=aufs noswap vga=788 ip=frommedia
336
337LABEL 0
338MENU LABEL ogClient vga irqpool acpi ogdebug ip:none
339KERNEL /ogclient/linuxISO
340APPEND initrd=/ogclient/oginitrd.img ro vga=788 irqpoll acpi=on boot=oginit  og2nd=sqfs ogprotocol=local ogactiveadmin=true ogdebug=true ip=none
341
342LABEL 1
343MENU LABEL ogClient irqpoll acpi ip:none
344KERNEL /ogclient/linuxISO
345APPEND initrd=/ogclient/oginitrd.img ro  irqpoll acpi=on boot=oginit  og2nd=sqfs ogprotocol=local ogactiveadmin=true ogdebug=false ip=none
346
347LABEL 2
348MENU LABEL ogClient acpi debug ip=dhcp
349KERNEL /ogclient/linuxISO
350APPEND initrd=/ogclient/oginitrd.img ro acpi=on boot=oginit  og2nd=sqfs ogprotocol=local ogactiveadmin=true ogdebug=true ip=dhcp
351
352LABEL 3
353MENU LABEL ogClient ip=dhcp
354KERNEL /ogclient/linuxISO
355APPEND initrd=/ogclient/oginitrd.img ro acpi=off boot=oginit  og2nd=sqfs ogprotocol=local ogactiveadmin=true ogdebug=false ip=dhcp
356
357LABEL 4
358MENU LABEL local
359localboot 0x80
360append -
361
362label 5
363MENU LABEL Network boot via gPXE lkrn
364KERNEL gpxe.lkrn
365
366label 6
367MENU LABEL Network boot via gPXE usb
368KERNEL gpxe.usb
369
370label 7
371MENU LABEL Network boot via gPXE  pxe
372KERNEL gpxe.pxe
373
374label 8
375MENU LABEL Network boot via gPXE  iso
376KERNEL gpxe.iso
377FIN
378
379
380
381
382# preparamos el directorio boot-tools.
383mkdir -p /tmp/iso/ogclient
384cp ${BTTARGETDIR}/ogclient.sqfs /tmp/iso/ogclient/
385cp ${BTTARGETDIR}/ogclient.sqfs.sum /tmp/iso/ogclient/
386cp ${BTTARGETDIR}/ogvmlinuz /tmp/iso/ogclient/
387cp ${BTTARGETDIR}/ogvmlinuz.sum /tmp/iso/ogclient/
388cp ${BTTARGETDIR}/ogvmlinuz /tmp/iso/ogclient/linuxISO
389cp ${BTTARGETDIR}/ogvmlinuz.sum /tmp/iso/ogclient/linuxISO.sum
390cp ${BTTARGETDIR}/oginitrd.img /tmp/iso/ogclient/
391cp ${BTTARGETDIR}/oginitrd.img.sum /tmp/iso/ogclient/
392#el ogclienteToISO  debe tener una copia del ogvmlinuz como linuxISO
393#cp -prv /var/lib/tftpboot/ogclientToIso/* /tmp/iso/ogclient
394
395cd /tmp
396#TIMEMOD=`date +%Y%m%d-%H%M%S`
397####Generamos la iso
398echo "mkisofs -V ogClient -o ${NAMEISOCLIENT}.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -J -no-emul-boot -boot-load-size 4 -boot-info-table /tmp/iso"
399mkisofs -V ogClient -o ${NAMEISOCLIENT}.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -J -no-emul-boot -boot-load-size 4 -boot-info-table /tmp/iso
400##Generamos el md5
401DATASUM=`md5sum ${NAMEISOCLIENT}.iso | cut -f1 -d" "`
402echo $DATASUM > ${NAMEISOCLIENT}.iso.sum
403
404mv /tmp/${NAMEISOCLIENT}.iso /var/lib/tftpboot/ogclient/
405mv /tmp/${NAMEISOCLIENT}.iso.sum /var/lib/tftpboot/ogclient/
406
407
408### vi /etc/grub.d/40_custom
409##
410#menuentry "og cache " {
411#set root=(hd0,4)
412#linux /ogvmlinuz ro vga=788 irqpoll acpi=on boot=oginit  og2nd=sqfs ogprotocol=local ogactiveadmin=true ogdebug=true ip=none
413#initrd /oginitrd.img
414#}
415
416}
417
418
419#@version 0.9 - Prototipo de sistema operativo multiarranque de opengnsys.
420#@author  Antonio J. Doblas Viso. Universidad de Malaga.
421#@date    2010/05/24
422#@version 1.0 - Compatibilidad OpengGnsys X.
423#@author  Antonio J. Doblas Viso. Universidad de Malaga.
424#@date    2011/08/03
425function btogIsoTest {
426#/tmp/iso
427qemu -m 256 -boot d -cdrom ogClient.iso
428}
429
430
431
432
433function getDateTime()
434{
435        echo `date +%Y%m%d-%H%M%S`
436}
437
438# Escribe a fichero y muestra por pantalla
439function echoAndLog()
440{
441        echo $1
442        FECHAHORA=`getDateTime`
443        echo "$FECHAHORA;$SSH_CLIENT;$1" >> $LOG_FILE
444}
445
446function errorAndLog()
447{
448        echo "ERROR: $1"
449        FECHAHORA=`getDateTime`
450        echo "$FECHAHORA;$SSH_CLIENT;ERROR: $1" >> $LOG_FILE
451}
452
453
454
455
456
457
458
459
460
461
462############### No usados en el instalador, solo en actualizaciones.
463#/**
464#         ogClientMount [str_program]
465#@brief   Acceso al 2nd FS del cliente desde el Servidor Opengnsys
466#@param 1 Opciona: scripts o programa a ejecutar para automatizaciones
467#@return  Si no hay parametros: login de acceso.
468#@return  con un parametro: La salida del programa ejecutado
469#@exception
470#@note   
471#@todo   
472#@version 0.9 - Primera versión para OpenGnSys
473#@author  Antonio J. Doblas Viso, Universidad de Málaga
474#@date    2010/02/15
475#*/ ##
476function ogClientMount ()
477{
478        #TODO comprobar que OGFILE y OGFILEMOUNT existe.
479        mount | grep $OGCLIENTFILE > /dev/null || mount $OGCLIENTFILE $OGCLIENTMOUNT -o loop,offset=32256
480        mount | grep $OGCLIENTMOUNT/proc > /dev/null || mount --bind /proc $OGCLIENTMOUNT/proc
481        mount | grep $OGCLIENTMOUNT/sys > /dev/null || mount --bind /sys $OGCLIENTMOUNT/sys
482        mount | grep $OGCLIENTMOUNT/tmp > /dev/null || mount --bind /tmp $OGCLIENTMOUNT/tmp
483        mount | grep $OGCLIENTMOUNT/dev > /dev/null || mount --bind /dev $OGCLIENTMOUNT/dev
484        mount | grep $OGCLIENTMOUNT/dev/pts > /dev/null || mount --bind /dev/pts $OGCLIENTMOUNT/dev/pts
485       
486       
487        [ $# = 0 ] && $(chroot $OGCLIENTMOUNT /sbin/getty 38400 `tty`)
488        [ $# = 1 ] && chroot $OGCLIENTMOUNT $1
489       
490}
491
492#/**
493#         ogClientUnmount
494#@brief   Desmonta el 2nd FS del cliente desde el Servidor Opengnsys
495#@param   
496#@return 
497#@exception
498#@note   
499#@todo   
500#@version 0.9 - Primera versión para OpenGnSys
501#@author  Antonio J. Doblas Viso, Universidad de Málaga
502#@date    2010/02/15
503#*/ ##
504
505function ogClientUnmount ()
506{
507        cd /tmp
508        echo "desmontando cliente espere"
509        sleep 5
510        mount | grep $OGCLIENTMOUNT/dev > /dev/null && umount $OGCLIENTMOUNT/dev || ogClientUnmount
511        mount | grep $OGCLIENTMOUNT/dev/pts > /dev/null && umount $OGCLIENTMOUNT/dev/pts || ogClientUnmount
512        mount | grep $OGCLIENTMOUNT/proc > /dev/null && umount $OGCLIENTMOUNT/proc || ogClientUnmount
513        mount | grep $OGCLIENTMOUNT/sys > /dev/null && umount $OGCLIENTMOUNT/sys || ogClientUnmount
514        mount | grep $OGCLIENTMOUNT/tmp > /dev/null && umount $OGCLIENTMOUNT/tmp || ogClientUnmount
515        mount | grep $OGCLIENTMOUNT > /dev/null && umount $OGCLIENTMOUNT || ogClientUnmount
516        #-d -f -l
517
518}
Note: See TracBrowser for help on using the repository browser.