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

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 a012113 was 98cd714c, checked in by ramon <ramongomez@…>, 10 years ago

#615: Corregir erratas al crear cliente ogLive basado en Ubuntu 12.04.5 y posteriores:

  • Evitar error al crear imagen ISO extrayendo el fichero gpxe.iso, en caso de ser necesario.
  • Instalar separadamente el paquete linux-image-extra, para evitar errores de creación en caso de no existir dicho paquete.
  • Sustituir paquete zfs-fuse por ubuntu-zfs (más actualizado).

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

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