source: client/boot-tools/boottoolsfunctions.lib @ 4b730fa

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 4b730fa was 11364a6, checked in by ramon <ramongomez@…>, 9 years ago

#724: Herramientas boot-tools preparadas para generar clinete ogLive basado en Ubuntu 16.04 LTS.

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

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