source: client/boot-tools/boottoolsfunctions.lib @ 588d1eb

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-instalacion
Last change on this file since 588d1eb was 58a6159, checked in by Ramón M. Gómez <ramongomez@…>, 6 years ago

#845: Preparing creation of ogLive based on Kernel 4.18.

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