source: client/boot-tools/boottoolsfunctions.lib @ 8053aff

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 8053aff was 9e0ee12, checked in by ramon <ramongomez@…>, 10 years ago

#724: Cambios necesarios para crear ogLive basado en Ubuntu 15.04

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

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