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

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

#774: Crear fichero con tamaño suficiente para ogLive de 64 bits e instalar en último lugar librerías para compatibilidad con 32 bits.

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

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