source: ogLive-Builder-Git/boottoolsfunctions.lib @ 8d20e01

browserbuild-browserdeps-vadimfilebeat-installerimprove-versionlgromero-testsmainno-apt-moduleoglive-ipv6pull-from-cloning-enginepybuilderqndtest
Last change on this file since 8d20e01 was 8d20e01, checked in by ramon <ramongomez@…>, 8 years ago

#774: Cambios para generar ogLive de 64 bits y ampliar instrucciones de su MV Vagrant.

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

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