source: ogLive-Builder-Git/boottoolsfunctions.lib @ cda688b

mainqndtest
Last change on this file since cda688b was cda688b, checked in by Ramón M. Gómez <ramongomez@…>, 4 years ago

#914: Adapting all scripts to use the master branch.

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