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

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 f028c36 was 2dd6a85, checked in by Ramón M. Gómez <ramongomez@…>, 6 years ago

#886: Backward-compatible with JQ version 1.4

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