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

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 da6a7cf was 16fc7ab, checked in by ramon <ramongomez@…>, 9 years ago

#724: Generación de ogLive: limpiar código antiguo, eliminar ficheros no usados, usar nuevo nombre del proyecto e incluir número de revisión.

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

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