source: client/boot-tools/ogClientManager.lib @ 7caf5a7c

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-instalacionwebconsole3
Last change on this file since 7caf5a7c was 88b75ac, checked in by adv <adv@…>, 14 years ago

version1.0 #368 - Adaptando el antiguo ogclient a boot-tools

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

  • Property mode set to 100644
File size: 20.1 KB
Line 
1
2ogClientVar()
3{
4export SVNCLIENTDIR=/tmp/opengnsys_installer/opengnsys/client/boot-tools
5export SVNCLIENTSTRUCTURE=/tmp/opengnsys_installer/opengnsys/client/shared
6export SVNCLIENTENGINE=/tmp/opengnsys_installer/opengnsys/client/engine
7
8export OGCLIENTBASEDIR=/var/lib/tftpboot/ogclient/
9export OGCLIENTFILE=${OGCLIENTBASEDIR}ogclient.img
10export OGCLIENTMOUNT=${OGCLIENTBASEDIR}ogclientmount
11# tamaño maximo limitado por schroot 2GB
12export OGCLIENTSIZEMB=1900
13#export OGCLIENTSIZEMB=1000
14# export OGCLIENTSIZEKB=500
15export OGCLIENTLABEL=ogClient
16#export OGLIB=/opt/opengnsys/client/lib
17}
18
19
20
21function ogClientOsInfo ()
22{
23#TODO según host, un OSHHTP u otro  OSARCH
24        #1 OSCODENAME jaunty|karmic|lucid
25        #devuelve OSDISTRIB(ubuntu,debian),OSCODENAME(lucid,karmic,squeeze):OGRELEASE:httpAPT
26        case $1 in
27                host | HOST)
28                        export OSDISTRIB=$(lsb_release -i | awk -F: '{sub(/\t/,""); print $2}') 2>/dev/null
29                        #OSCODENAME=$(lsb_release -c | awk -F: '{sub(/\t/,""); print $2}') 2>/dev/null
30                        export OSCODENAME=$(cat /etc/lsb-release | grep CODENAME | awk -F= '{print $NF}')
31                        export OSRELEASE=$(uname -a | awk '{print $3}')
32                        uname -a | grep x86_64 > /dev/null  &&  export OSARCH=amd64 || export OSARCH=i386
33                        export OSHTTP="http://es.archive.ubuntu.com/ubuntu/"
34                ;;
35                jaunty|JAUNTY)
36                    export OSDISTRIB=ubuntu
37                        export OSCODENAME=jaunty
38                        export OSRELEASE="2.6.28-11-generic"
39                        export OSARCH=i386
40                        export OSHTTP="http://es.archive.ubuntu.com/ubuntu/"
41                ;;
42                lenny|LENNY)
43                        export OSDISTRIB=debian
44                        export OSCODENAME=lenny
45                        export OSRELEASE="2.6.28-11-generic"
46                        export OSARCH=i386
47                        export OSHTTP="http://es.archive.ubuntu.com/ubuntu/ "
48                ;;
49                squeeze|SQUEEZE)
50                        export OSDISTRIB=debian
51                        export OSCODENAME=squeeze
52                        export OSRELEASE="2.6.28-11-generic"
53                        export OSARCH=i386
54                        export OSHTTP="http://es.archive.ubuntu.com/ubuntu/ "
55                ;;
56                karmic|KARMIC)
57                        export OSDISTRIB=ubuntu
58                        export OSCODENAME=karmic
59                        export OSRELEASE="2.6.31-14-generic"
60                        export OSARCH=i386
61                        export OSHTTP="http://es.archive.ubuntu.com/ubuntu/ "
62                ;;
63                lucid|LUCID)
64                        export OSDISTRIB=ubuntu
65                        export OSCODENAME=lucid
66                        export OSRELEASE="2.6.32-21-generic-pae"
67                        export OSARCH=i386
68                        export OSHTTP="http://es.archive.ubuntu.com/ubuntu/ "
69                ;;
70                *)
71                        return 1
72                ;;
73        esac
74                echo $OSDISTRIB:$OSCODENAME:$OSRELEASE:$OSARCH:$OSHTTP
75}
76
77#creación y formateo del disco virtual.
78ogClient2ndFile ()
79{
80local RERROR  DISKLOOP PARTLOOP #return code error
81echoAndLog "$FUNCNAME(): Creación y formateo del disco virtual $OGCLIENTSIZEMB MB "
82#Desmontamos por si acaso el dispositivo virtual
83mount | grep $OGCLIENTMOUNT && umount $OGCLIENTMOUNT
84mount | grep $OGCLIENTMOUNT && umount $OGCLIENTMOUNT
85echo "$FUNCNAME(): Creando el directorio donde se montará el disco virtual $OGCLIENTMOUNT"
86mkdir -p $OGCLIENTMOUNT
87if [ $? -ne 0 ]
88then
89        errorAndLog "$FUNCNAME(): Creando directorio $OGCLIENTMOUNT : ERROR"
90        return 1
91fi
92echo "$FUNCNAME(): Creando el disco virtual que almacenará el FS del cliente $OGCLIENTSIZEMB MB de datos físicos"
93dd if=/dev/zero of=$OGCLIENTFILE bs=1048576 count=$OGCLIENTSIZEMB
94#qemu-img create $OGCLIENTFILE 3G       
95#dd if=/dev/zero of=$OGCLIENTFILE bs=1k count=$OGCLIENTSIZEKB   # necesita 500MB
96if [ $? -ne 0 ]
97then
98        errorAndLog "$FUNCNAME(): Creando el disco virtual: ERROR"
99        return 1
100fi
101
102DISKLOOP=$(losetup -f)
103losetup $DISKLOOP $OGCLIENTFILE
104echo "$FUNCNAME(): particiondo el disco virtual - $DISKLOOP - con una particion primaria"
105echo -e "n\np\n1\n\n\nt\n83\nw" | fdisk $DISKLOOP
106#echo $?
107# da error, porque no puede actualizar el kernel.
108#if [ $? -ne 0 ]
109#then
110#       errorAndLog "$FUNCNAME(): Particionando el disco virutal: ERROR"
111#       return 1
112#fi
113
114echoAndLog "$FUNCNAME(): Desmontando $DISKLOOP despues del particionado "
115losetup -d $DISKLOOP
116
117if [ $? -ne 0 ]
118then
119        errorAndLog "$FUNCNAME(): Liberando disco virtual despues del particionado: ERROR"
120        return 1
121fi
122
123
124#mkfs.ext3 -L $OGCLIENTLABEL /dev/loop1
125#mkfs.ext3 -L $OGCLIENTLABEL /dev/loop1
126PARTLOOP=$(losetup -f)
127echo "$FUNCNAME(): Formateando la particion principal $PARTLOOP"
128losetup -o 32256 $PARTLOOP $OGCLIENTFILE && mkfs.ext3 -b 4096 -L $OGCLIENTLABEL $PARTLOOP
129if [ $? -ne 0 ]
130then
131        errorAndLog "$FUNCNAME(): Formateando la particion principal del disco virtual: ERROR"
132        return 1
133fi
134echoAndLog "$FUNCNAME(): Desmontando $PARTLOOP despues del formateo "
135losetup -d $PARTLOOP
136if [ $? -ne 0 ]
137then
138        errorAndLog "$FUNCNAME(): Liberando la particion virtual despues del formateo: ERROR"
139        return 1
140else
141        echoAndLog "$FUNCNAME(): $OGCLIENTFILE $OGCLIENTSIZEMB MB : OK"
142fi
143}
144
145
146
147
148
149ogClient2ndFs ()
150{       
151ogClientOsInfo $1
152echoAndLog "$FUNCNAME:  Iniciando la generación del sistema de archivos "
153#Montamos el dispositivo virtual en su punto de montaje.
154mount | grep $OGCLIENTMOUNT || mount $OGCLIENTFILE $OGCLIENTMOUNT -o loop,offset=32256
155
156mount | grep $OGCLIENTMOUNT && echoAndLog "$FUNCNAME:  mount $OGCLIENTFILE $OGCLIENTMOUNT -o loop,offset=32256 OK   " || errorAndLog  "$FUNCNAME:  mount $OGCLIENTFILE $OGCLIENTMOUNT -o loop,offset=32256 : FAILURE  "
157
158#debootstrap --include=linux-image-${OSRELEASE},linux-headers-${OSRELEASE} --arch=$OSARCH --components=main,universe ${OSCODENAME} ${OGCLIENTMOUNT} ${OSHTTP}
159debootstrap --arch=$OSARCH --components=main,universe ${OSCODENAME} ${OGCLIENTMOUNT} ${OSHTTP}
160
161
162if [ $? -ne 0 ]; then
163        errorAndLog "$FUNCNAME:  debootstrap --include=linux-image-${OSRELEASE},linux-headers-${OSRELEASE} --arch=$OSARCH --components=main,universe $OSCODENAME $OGCLIENTMOUNT $OSHTTP
164        : ha fallado!"
165        mount | grep $OGCLIENTMOUNT && umount $OGCLIENTMOUNT
166        return 1
167else
168        echoAndLog "$FUNCNAME:  debootstrap --include=linux-image-${OSRELEASE},linux-headers-${OSRELEASE} --arch=$OSARCH --components=main,universe $OSCODENAME $OGCLIENTMOUNT $OSHTTP
169         :  ok"
170         mount | grep $OGCLIENTMOUNT && umount $OGCLIENTMOUNT
171                return 0
172fi     
173  sleep 5
174
175##preubas  revisar OSRELEASE
176#debootstrap --include=linux-image-${OSRELEASE} --arch=i386 --variant=minbase $OSVERSION $OGCLIENTMOUNT http://es.archive.ubuntu.com/ubuntu/
177#debootstrap --variant=minbase --include=linux-image-${OGRELEASE} --arch=i386 $OGVERSION $OGCLIENTMOUNT http://es.archive.ubuntu.com/ubuntu/
178#echo debootstrap --include=linux-image-${OGRELEASE},dbus --arch=i386 --components=main,universe $OGVERSION $OGCLIENTMOUNT http://es.archive.ubuntu.com/ubuntu/
179}
180
181
182
183
184########## configura el segundo sistema de archivos
185########### parametro:    "host"
186function ogClient2ndSVN()
187{
188ogClientOsInfo $1
189#1 la salida de ogClientOsInfo
190local LERROR
191LERROR=TRUE
192echoAndLog "$FUNCNAME: Iniciando la personalización con datos del SVN "
193# comprobar que está montado  $OGCLIENTMOUNT
194mount | grep $OGCLIENTMOUNT || mount $OGCLIENTFILE $OGCLIENTMOUNT -o loop,offset=32256
195
196# parseamos del apt.source
197sed -e "s/OSCODENAME/$OSCODENAME/g" ${SVNCLIENTDIR}/clientstructure/etc/apt/sources.list.ubuntu > ${SVNCLIENTDIR}/clientstructure/etc/apt/sources.list
198if [ $? -ne 0 ]
199then
200        errorAndLog "$FUNCNAME(): Parsing apt.sources : ERROR"
201        return 1
202fi
203
204#parseamos el script de generación del initrd.
205sed -e "s/OSRELEASE/$OSRELEASE/g" ${SVNCLIENTDIR}/clientstructure/root/GenerateInitrd.generic.sh > ${SVNCLIENTDIR}/clientstructure/root/GenerateInitrd.sh
206if [ $? -ne 0 ]
207then
208        errorAndLog "$FUNCNAME(): Parsing GenerateInitrd.sh : ERROR"
209        return 1
210fi
211
212#damos permiso al directorio de scripts
213chmod 775 ${SVNCLIENTDIR}/clientstructure/root/*
214
215# los copiamos
216cp -prv ${SVNCLIENTDIR}/clientstructure/* $OGCLIENTMOUNT
217mkdir -p ${OGCLIENTMOUNT}/opt/opengnsys/
218cp -prv ${SVNCLIENTSTRUCTURE}/* ${OGCLIENTMOUNT}/opt/opengnsys/
219cp -prv ${SVNCLIENTENGINE}/* ${OGCLIENTMOUNT}/opt/opengnsys/lib/engine/bin/
220
221if [ $? -ne 0 ]
222then
223        errorAndLog "$FUNCNAME(): Copying client data : ERROR"
224        return 1
225fi
226
227# copiamos algunas cosas del nfsexport
228
229#### Tipos de letra para el Browser.
230cp -pr ${SVNCLIENTSTRUCTURE}/lib/fonts $OGCLIENTMOUNT/usr/local/lib/fonts
231#### Crear enlaces para compatibilidad con las distintas versiones del Browser.
232mkdir -p $OGCLIENTMOUNT/usr/local/Trolltech/QtEmbedded-4.5.1/lib/
233mkdir -p $OGCLIENTMOUNT/usr/local/QtEmbedded-4.6.2/lib/
234mkdir -p $OGCLIENTMOUNT/usr/local/QtEmbedded-4.6.3/lib/
235#ln -fs $OGCLIENTMOUNT/usr/local/lib/fonts /usr/local/Trolltech/QtEmbedded-4.5.1/lib/fonts
236#ln -fs $OGCLIENTMOUNT/usr/local/lib/fonts /usr/local/QtEmbedded-4.6.2/lib/fonts
237#ln -fs $OGCLIENTMOUNT/usr/local/lib/fonts /usr/local/QtEmbedded-4.6.3/lib/fonts
238cp -pr ${SVNCLIENTSTRUCTURE}/lib/fonts $OGCLIENTMOUNT/usr/local/Trolltech/QtEmbedded-4.5.1/lib/fonts
239cp -pr ${SVNCLIENTSTRUCTURE}/lib/fonts $OGCLIENTMOUNT/usr/local/QtEmbedded-4.6.2/lib/fonts
240cp -pr ${SVNCLIENTSTRUCTURE}/lib/fonts $OGCLIENTMOUNT/usr/local/QtEmbedded-4.6.3/lib/fonts
241
242
243
244
245if [ $? -ne 0 ]
246then
247        errorAndLog "$FUNCNAME(): Linking Browser fonts : ERROR"
248        return 1
249fi
250
251# B ########################################################
252cp -pr ${SVNCLIENTSTRUCTURE}/lib/pci.ids $OGCLIENTMOUNT/etc
253if [ $? -ne 0 ]
254then
255        errorAndLog "$FUNCNAME(): Copying pci.ids : ERROR"
256        return 1
257fi
258
259cp ${SVNCLIENTSTRUCTURE}/bin/browser $OGCLIENTMOUNT/bin
260if [ $? -ne 0 ]
261then
262        errorAndLog "$FUNCNAME(): Copying Browser : ERROR"
263        return 1
264fi
265
266cp ${SVNCLIENTSTRUCTURE}/bin/ogAdmClient  $OGCLIENTMOUNT/bin
267if [ $? -ne 0 ]
268then
269        errorAndLog "$FUNCNAME(): Copying ogAdmClient : ERROR"
270        return 1
271else
272        mount | grep $OGCLIENTMOUNT && umount $OGCLIENTMOUNT
273        mount | grep $OGCLIENTMOUNT && umount $OGCLIENTMOUNT
274        mount | grep $OGCLIENTMOUNT && umount $OGCLIENTMOUNT
275        mount | grep $OGCLIENTMOUNT && umount $OGCLIENTMOUNT
276        echoAndLog "$FUNCNAME: Finalizado: OK  "
277        return 0
278fi
279}
280
281
282ogClientSchrootConf()
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 luc IMGi
291priority=1
292users=root
293groups=root
294root-groups=root
295mount-options=-o offset=32256
296root-users=root
297[DIRogclient]
298type=directory
299directory=/var/lib/tftpboot/ogclient/ogclientmount
300description=ogclient ubuntu lucid DIR
301priority=2
302users=root
303groups=root
304root-groups=root
305root-users=root
306EOF
307cp /etc/schroot/mount-defaults /etc/schroot/mount-defaults.`getDateTime`
308cat << EOF > /etc/schroot/mount-defaults
309# mount.defaults: static file system information for chroots.
310# Note that the mount point will be prefixed by the chroot path
311# (CHROOT_PATH)
312#
313# <file system> <mount point>   <type>  <options>       <dump>  <pass>
314proc            /proc           proc    defaults        0       0
315#procbususb      /proc/bus/usb   usbfs   defaults        0       0
316#/dev            /dev            none    rw,bind         0       0
317/dev/pts        /dev/pts        none    rw,bind         0       0
318/dev/shm        /dev/shm        none    rw,bind         0       0
319#/home          /home           none    rw,bind         0       0
320/tmp            /tmp            none    rw,bind         0       0                                                               
321EOF
322
323echoAndLog "$FUNCNAME: Finalizado: OK  "
324return 0
325}
326
327
328
329########### param1   "host"
330ogClientInitrd()
331{
332ogClientVar     
333cd /
334ogClientOsInfo $1
335schroot -c IMGogclient -- /root/GenerateInitrd.generic.sh
336echo "cp /tmp/*-${OSRELEASE} $OGCLIENTBASEDIR"
337cp /tmp/*-${OSRELEASE} $OGCLIENTBASEDIR
338cp /tmp/initrd.img-${OSRELEASE} ${OGCLIENTBASEDIR}/oginitrd.img
339cp /tmp/vmlinuz-${OSRELEASE} ${OGCLIENTBASEDIR}/ogvmlinuz
340cd -
341}
342
343
344ogClient2ndSqfs()
345{
346ogClientVar     
347echoAndLog "$FUNCNAME: Iniciando la creación del sistema de archivos en sqfs "
348# si ya existe un sqfs lo renombramos
349[ -f $OGCLIENTBASEDIR/ogclient.sqfs ] && mv $OGCLIENTBASEDIR/ogclient.sqfs $OGCLIENTBASEDIR/ogclient.sqfs.`date +%Y%m%d-%H%M%S`
350mount | grep $OGCLIENTMOUNT || mount $OGCLIENTFILE $OGCLIENTMOUNT -o loop,offset=32256
351mksquashfs $OGCLIENTMOUNT $OGCLIENTBASEDIR/ogclient.sqfs
352chmod 744 $OGCLIENTBASEDIR/ogclient.sqfs
353mount | grep $OGCLIENTMOUNT && umount $OGCLIENTMOUNT
354}
355
356
357
358
359ogClientSshkeys()
360{
361echo comprobamos clave rsa en el host REPO OG.
362if [ ! -f /root/.ssh/id_rsa.pub ]
363then
364   echo "creando claves rsa"
365        ssh-keygen -q -f /root/.ssh/id_dsa -t dsa -N "opengnsys"       
366else
367   echo "la claves ya estan creadas"
368fi
369echo "copiamos la clave publica a /tmp"
370cp /root/.ssh/id_dsa.pub /tmp
371
372cat /tmp/id_dsa.pub
373
374echo "schroot con instrucciones."
375schroot -c IMGogclient -- /root/importSshKeys.sh
376
377echo "limpiando"
378rm /tmp/id_dsa.pub   
379
380## copiamos ssh rsa del host al guest como authorized-key2
381##rm ${OGCLIENTMOUNT}/root/.ssh/authorized-key2
382##cat /root/.ssh/id_rsa.pub >> ${OGCLIENTMOUNT}/root/.ssh/authorized-key2
383#cat ${OGCLIENTMOUNT}/root/.ssh/id_rsa.pub >> ${OGCLIENTMOUNT}/root/.ssh/authorized-key2
384##mount | grep $OGCLIENTMOUNT || umount $OGCLIENTMOUNT
385}
386
387
388ogClientConfpxe()
389{
390################## DEJAMOS FICHERO DE EJEMPLOS PARA:
391#default
392cat << FIN >> /var/lib/tftpboot/pxelinux.cfg/defaultNEWClient
393LABEL pxe-${OGRELEASE}
394KERNEL ogclient/vmlinuz-$OGRELEASE
395APPEND initrd=ogclient/initrd.img-$OGRELEASE ip=dhcp ro boot=og vga=788 irqpoll acpi=on reposerver=
396LABEL pxe-2.6.32-21-generic-pae
397KERNEL ogclient/vmlinuz-2.6.32-21-generic-pae
398APPEND initrd=ogclient/initrd.img-2.6.32-21-generic-pae ip=dhcp ro boot=oginit vga=788 irqpoll acpi=on ogrepo=172.17.36.11 ogprotocol=nfs og2nd=sqfs
399LABEL cache
400KERNEL grub.exe
401APPEND --config-file="find --set-root /vmlinuz; kernel /vmlinuz ip=dhcp ro boot=og vga=788 irqpoll acpi=on engine=testing reposerver=172.17.32.242; initrd /initrd.img"
402LABEL net
403KERNEL grub.exe
404APPEND keeppxe --config-file="pxe detect; kernel (pd)/ogclient/vmlinuz-2.6.32-21-generic-pae ip=dhcp ro boot=og vga=788 irqpoll acpi=on engine=testing reposerver=172.17.32.242; initrd (pd)/ogclient/initrd.img-2.6.32-21-generic-pae"
405LABEL IfNOTcacheGOnet
406KERNEL grub.exe
407APPEND keeppxe --config-file="pxe detect; default 0; timeout 0; hiddenmenu; title cache; fallback 1; find --set-root /vmlinuz; kernel /vmlinuz ip=dhcp ro boot=og vga=788 irqpoll acpi=on engine=testing reposerver=172.17.32.242; initrd /initrd.img; boot; title net; kernel (pd)/ogclient/vmlinuz-2.6.32-21-generic-pae ip=dhcp ro boot=og vga=788 irqpoll acpi=on engine=testing reposerver=172.17.32.242; initrd (pd)/ogclient/initrd.img-2.6.32-21-generic-pae; boot"
408#LABEL pxe-2.6.32-21-generic-pae
409#KERNEL ogclient/vmlinuz-2.6.32-21-generic-pae
410#APPEND initrd=ogclient/initrd.img-2.6.32-21-generic-pae ip=dhcp ro boot=og vga=788 irqpoll acpi=on reposerver=172.17.32.242
411#LABEL grub
412#KERNEL grub.exe
413#APPEND keeppxe
414FIN
415#/etc/hosts
416echo "/var/lib/tftpboot   *(ro,no_subtree_check,no_root_squash,sync)" > /etc/exportsNEWClient
417/etc/init.d/nfs-kernel-server restart
418#####################################################################
419}
420
421
422
423############### No usados en el instalador, solo en actualizaciones.
424#/**
425#         ogClientMount [str_program]
426#@brief   Acceso al 2nd FS del cliente desde el Servidor Opengnsys
427#@param 1 Opciona: scripts o programa a ejecutar para automatizaciones
428#@return  Si no hay parametros: login de acceso.
429#@return  con un parametro: La salida del programa ejecutado
430#@exception
431#@note   
432#@todo   
433#@version 0.9 - Primera versión para OpenGnSys
434#@author  Antonio J. Doblas Viso, Universidad de Málaga
435#@date    2010/02/15
436#*/ ##
437function ogClientMount ()
438{
439        #TODO comprobar que OGFILE y OGFILEMOUNT existe.
440        mount | grep $OGCLIENTFILE > /dev/null || mount $OGCLIENTFILE $OGCLIENTMOUNT -o loop,offset=32256
441        mount | grep $OGCLIENTMOUNT/proc > /dev/null || mount --bind /proc $OGCLIENTMOUNT/proc
442        mount | grep $OGCLIENTMOUNT/sys > /dev/null || mount --bind /sys $OGCLIENTMOUNT/sys
443        mount | grep $OGCLIENTMOUNT/tmp > /dev/null || mount --bind /tmp $OGCLIENTMOUNT/tmp
444        mount | grep $OGCLIENTMOUNT/dev > /dev/null || mount --bind /dev $OGCLIENTMOUNT/dev
445        mount | grep $OGCLIENTMOUNT/dev/pts > /dev/null || mount --bind /dev/pts $OGCLIENTMOUNT/dev/pts
446       
447       
448        [ $# = 0 ] && $(chroot $OGCLIENTMOUNT /sbin/getty 38400 `tty`)
449        [ $# = 1 ] && chroot $OGCLIENTMOUNT $1
450       
451}
452
453#/**
454#         ogClientUnmount
455#@brief   Desmonta el 2nd FS del cliente desde el Servidor Opengnsys
456#@param   
457#@return 
458#@exception
459#@note   
460#@todo   
461#@version 0.9 - Primera versión para OpenGnSys
462#@author  Antonio J. Doblas Viso, Universidad de Málaga
463#@date    2010/02/15
464#*/ ##
465
466function ogClientUnmount ()
467{
468        cd /tmp
469        echo "desmontando cliente espere"
470        sleep 5
471        mount | grep $OGCLIENTMOUNT/dev > /dev/null && umount $OGCLIENTMOUNT/dev || ogClientUnmount
472        mount | grep $OGCLIENTMOUNT/dev/pts > /dev/null && umount $OGCLIENTMOUNT/dev/pts || ogClientUnmount
473        mount | grep $OGCLIENTMOUNT/proc > /dev/null && umount $OGCLIENTMOUNT/proc || ogClientUnmount
474        mount | grep $OGCLIENTMOUNT/sys > /dev/null && umount $OGCLIENTMOUNT/sys || ogClientUnmount
475        mount | grep $OGCLIENTMOUNT/tmp > /dev/null && umount $OGCLIENTMOUNT/tmp || ogClientUnmount
476        mount | grep $OGCLIENTMOUNT > /dev/null && umount $OGCLIENTMOUNT || ogClientUnmount
477        #-d -f -l
478
479}
480
481
482############################ hasta el final del archivo antiguos
483############################# ANTIGUOS
484function ogClientGetRelease ()
485{
486        #1 OSCODENAME jaunty|karmic|lucid
487        case $1 in
488                jaunty|JAUNTY)
489                        OSCODENAME=jaunty
490                        OGRELEASE="2.6.28-11-generic"
491                        echo $OGRELEASE
492                ;;
493                lenny|LENNY)
494                        OSCODENAME=lenny
495                        OGRELEASE="2.6.28-11-generic"
496                        echo $OGRELEASE
497                ;;
498                squeeze|SQUEEZE)
499                        OSCODENAME=squeeze
500                        OGRELEASE="2.6.28-11-generic"
501                        echo $OGRELEASE
502                ;;
503                karmic|KARMIC)
504                        OSCODENAME=karmic
505                        OGRELEASE="2.6.31-14-generic"
506                        echo $OGRELEASE
507                ;;
508                lucid|LUCID)
509                        OSCODENAME=lucid
510                        OGRELEASE="2.6.32-21-generic-pae"
511                        echo $OGRELEASE
512                ;;
513                *)
514                        return 1
515                ;;
516        esac
517               
518}
519
520
521#/**
522#         ogClientGenerator str_versionUbuntu str_release
523#@brief   Crea el 2nd FS del cliente desde el Servidor Opengnsys
524#@param 1 Versión de ubuntu a generar, jaunty karmic
525#@return 
526#@exception
527#@note   
528#@todo   
529#@version 0.9 - Primera versión para OpenGnSys
530#@author  Antonio J. Doblas Viso, Universidad de Málaga
531#@date    2010/02/15
532#*/ ##
533
534function ogClientGeneratorDebootstrap ()
535{
536        if [ $# != 2 ]
537        then
538                echo Debes introducir como argumento1: jaunty karmic lucid
539                echo Debes introducir como argumento2: la release
540                echo utiliza como entrada ogClientCheckVersion
541                return
542        fi
543        OSCODENAME=$1
544        OGRELEASE=$2
545       
546        # instalamos el ultimo debotstrap para permitir instalar versiones superiores a nuestro sistema
547        #apt-get install gdebi-core
548        #wget $LASTDEBOOTSTRAP
549        #gdebi -n debootstrap_1.0.20_all.deb
550
551        #Desmontamos por si acaso el dispositivo virtual
552        mount | grep $OGCLIENTMOUNT && umount $OGCLIENTMOUNT
553
554        #Creamos el directorio donde montaremos el disco virtual
555        mkdir -p $OGCLIENTMOUNT
556
557        #Creamos el disco virtual con el filesystem del cliente.
558        dd if=/dev/zero of=$OGCLIENTFILE bs=1048576 count=$OGCLIENTSIZEMB
559        #qemu-img create $OGCLIENTFILE 3G       
560        #dd if=/dev/zero of=$OGCLIENTFILE bs=1k count=$OGCLIENTSIZEKB   # necesita 500MB
561       
562       
563        #particionamos el disco virtual
564        losetup /dev/loop0 $OGCLIENTFILE
565        echo -e "n\np\n1\n\n\nt\n83\nw" | fdisk /dev/loop0
566        losetup -d /dev/loop0
567       
568       
569        #formateamos la particion principal.
570        losetup -o 32256 /dev/loop1 $OGCLIENTFILE
571        mkfs.ext3 -b 4096 -L $OGCLIENTLABEL /dev/loop1
572        #mkfs.ext3 -L $OGCLIENTLABEL /dev/loop1
573        #mkfs.ext3 -L $OGCLIENTLABEL /dev/loop1
574        losetup -d /dev/loop1
575       
576        #Montamos el dispositivo virtual en su punto de montaje.
577        mount | grep $OGCLIENTMOUNT || mount $OGCLIENTFILE $OGCLIENTMOUNT -o loop,offset=32256
578
579        #TODO Comprobar arquitectura
580        #Iniciamos la creación del sistema en el directorio de clientes.
581        #echo debootstrap --include=linux-image-${OGRELEASE},dbus --arch=i386 --components=main,universe $OGVERSION $OGCLIENTMOUNT http://es.archive.ubuntu.com/ubuntu/
582        debootstrap --include=linux-image-${OGRELEASE},linux-headers-${OGRELEASE} --arch=i386 --components=main,universe $OSCODENAME $OGCLIENTMOUNT http://es.archive.ubuntu.com/ubuntu/
583        ##preubas
584        #debootstrap --include=linux-image-${OGRELEASE} --arch=i386 --variant=minbase $OGVERSION $OGCLIENTMOUNT http://es.archive.ubuntu.com/ubuntu/
585        #debootstrap --variant=minbase --include=linux-image-${OGRELEASE} --arch=i386 $OGVERSION $OGCLIENTMOUNT http://es.archive.ubuntu.com/ubuntu/
586
587        if [ $? -ne 0 ]; then
588                errorAndLog "ogClientGeneratorDebootstrap(): ha fallado!"
589                return 1
590        else
591                echoAndLog "ogClientGeneratorDebootstrap(): ok"
592                return 0
593        fi     
594          sleep 5
595
596mount | grep $OGCLIENTMOUNT && umount $OGCLIENTFILE
597
598cat << EOF > /etc/schroot/schroot.conf
599[DIRogclient]
600type=directory
601directory=/var/lib/tftpboot/ogclient/ogclientmount
602description=ogclient ubuntu lucid DIR
603priority=2
604users=root
605groups=root
606root-groups=root
607root-users=root
608EOF
609}
610
611
612
613
614
Note: See TracBrowser for help on using the repository browser.