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

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 b6e2f16 was e4060f1, checked in by ramon <ramongomez@…>, 8 years ago

#724 #768: Cambios en generación de cliente ogLive:

  • Script boottoolsgenerator.sh soporta parámetro para generar ogLive basado en distribuciones soportadas.
  • Soporta variable del kernel oglivedir con subdirectorio de instalación de ogLive.
  • Dejar de compilar paquetes incluidos en distribuciones Ubuntu.
  • Procesar ficheros JSON en scripts BASH.

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

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