source: client/boot-tools/boottoolsfunctions.lib @ 9e64d82

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 9e64d82 was 65dd71b, checked in by Ramón M. Gómez <ramongomez@…>, 7 years ago

#847: Correcting errata when obtaining revision date (commit SHA1 is not verified); updating change log.

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