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

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 7ef8186 was 2c35d86, checked in by adv <adv@…>, 14 years ago

version 1.0.2 boot-tools compatible og2 # 420

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

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