source: client/boot-tools/old/ogClientManager.lib @ 26a1226

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 26a1226 was 26aeb3c, checked in by adv <adv@…>, 14 years ago

branch version 1.0 #420 separando proceso de creacion anterior

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

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