source: client/boot-tools/ogClientManager.lib @ 3c0cdb0

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 3c0cdb0 was 971c33f, checked in by adv <adv@…>, 14 years ago

version 1.0.2 #404 acceso al sistema root en arranques usb, cd, particion cache

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

  • Property mode set to 100644
File size: 22.6 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
388
389function ogCrearISO {
390apt-get install syslinux genisoimage
391#TODO: deb http://free.nchc.org.tw/drbl-core drbl stable
392#apt-get install gpxe
393mkdir -p /tmp/iso/isolinux
394#cd tmp/iso/
395cp -prv /usr/lib/syslinux/* /tmp/iso/isolinux/
396cp -prv /usr/share/gpxe/* /tmp/iso/isolinux/
397mkdir -p /tmp/iso/ogclient
398#el ogclienteToISO  debe tener una copia del ogvmlinuz como linuxISO
399cp -prv /var/lib/tftpboot/ogclientToIso/* /tmp/iso/ogclient
400
401
402cat << FIN > /tmp/iso/isolinux/isolinux.cfg
403DEFAULT menu.c32
404PROMPT 0
405ALLOWOPTIONS 1
406
407MENU TITLE  OpenGnsys 1.0.1 v00
408
409LABEL gpxe
410MENU LABEL gpxe
411KERNEL /clonezilla/live/vmlinuz1
412APPEND initrd=/clonezilla/live/initrd1.img boot=live union=aufs noswap vga=788 ip=frommedia
413
414
415#default 0
416#prompt 1
417#timeout 100
418
419#display mensaje.txt
420
421 
422
423
424LABEL 0
425MENU LABEL ogClient vga irqpool acpi ogdebug ip:none
426KERNEL /ogclient/linuxISO
427APPEND initrd=/ogclient/oginitrd.img ro vga=788 irqpoll acpi=on boot=oginit  og2nd=sqfs ogprotocol=local ogactiveadmin=true ogdebug=true ip=none
428
429LABEL 1
430MENU LABEL ogClient irqpoll acpi ip:none
431KERNEL /ogclient/linuxISO
432APPEND initrd=/ogclient/oginitrd.img ro  irqpoll acpi=on boot=oginit  og2nd=sqfs ogprotocol=local ogactiveadmin=true ogdebug=false ip=none
433
434LABEL 2
435MENU LABEL ogClient acpi debug ip=dhcp
436KERNEL /ogclient/linuxISO
437APPEND initrd=/ogclient/oginitrd.img ro acpi=on boot=oginit  og2nd=sqfs ogprotocol=local ogactiveadmin=true ogdebug=true ip=dhcp
438
439LABEL 3
440MENU LABEL ogClient ip=dhcp
441KERNEL /ogclient/linuxISO
442APPEND initrd=/ogclient/oginitrd.img ro acpi=off boot=oginit  og2nd=sqfs ogprotocol=local ogactiveadmin=true ogdebug=false ip=dhcp
443
444
445#LABEL ogclient
446#KERNEL /ogclient/linuxISO
447#APPEND initrd=/ogclient/initrdISO.img
448
449#KERNEL linuxISO
450#APPEND initrd=initrdISO.img
451
452LABEL 4
453MENU LABEL local
454localboot 0x80
455append -
456
457
458label 5
459MENU LABEL Network boot via gPXE lkrn
460KERNEL gpxe.lkrn
461
462label 5
463MENU LABEL Network boot via gPXE usb
464KERNEL gpxe.usb
465
466label 5
467MENU LABEL Network boot via gPXE  pxe
468KERNEL gpxe.pxe
469
470label 5
471MENU LABEL Network boot via gPXE  iso
472KERNEL gpxe.iso
473FIN
474#### /tmp/iso#
475mkisofs -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
476
477### vi /etc/grub.d/40_custom
478##
479#menuentry "og cache " {
480#set root=(hd0,4)
481#linux /ogvmlinuz ro vga=788 irqpoll acpi=on boot=oginit  og2nd=sqfs ogprotocol=local ogactiveadmin=true ogdebug=true ip=none
482#initrd /oginitrd.img
483#}
484
485
486}
487
488function ogprobarISO {
489#/tmp/iso
490qemu -m 256 -boot d -cdrom ogClient.iso
491}
492
493
494
495
496
497
498
499ogClientConfpxe()
500{
501################## DEJAMOS FICHERO DE EJEMPLOS PARA:
502#default
503cat << FIN >> /var/lib/tftpboot/pxelinux.cfg/defaultNEWClient
504LABEL pxe-${OGRELEASE}
505KERNEL ogclient/vmlinuz-$OGRELEASE
506APPEND initrd=ogclient/initrd.img-$OGRELEASE ip=dhcp ro boot=og vga=788 irqpoll acpi=on reposerver=
507LABEL pxe-2.6.32-21-generic-pae
508KERNEL ogclient/vmlinuz-2.6.32-21-generic-pae
509APPEND 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
510LABEL cache
511KERNEL grub.exe
512APPEND --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"
513LABEL net
514KERNEL grub.exe
515APPEND 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"
516LABEL IfNOTcacheGOnet
517KERNEL grub.exe
518APPEND 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"
519#LABEL pxe-2.6.32-21-generic-pae
520#KERNEL ogclient/vmlinuz-2.6.32-21-generic-pae
521#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
522#LABEL grub
523#KERNEL grub.exe
524#APPEND keeppxe
525FIN
526#/etc/hosts
527echo "/var/lib/tftpboot   *(ro,no_subtree_check,no_root_squash,sync)" > /etc/exportsNEWClient
528/etc/init.d/nfs-kernel-server restart
529#####################################################################
530}
531
532
533
534############### No usados en el instalador, solo en actualizaciones.
535#/**
536#         ogClientMount [str_program]
537#@brief   Acceso al 2nd FS del cliente desde el Servidor Opengnsys
538#@param 1 Opciona: scripts o programa a ejecutar para automatizaciones
539#@return  Si no hay parametros: login de acceso.
540#@return  con un parametro: La salida del programa ejecutado
541#@exception
542#@note   
543#@todo   
544#@version 0.9 - Primera versión para OpenGnSys
545#@author  Antonio J. Doblas Viso, Universidad de Málaga
546#@date    2010/02/15
547#*/ ##
548function ogClientMount ()
549{
550        #TODO comprobar que OGFILE y OGFILEMOUNT existe.
551        mount | grep $OGCLIENTFILE > /dev/null || mount $OGCLIENTFILE $OGCLIENTMOUNT -o loop,offset=32256
552        mount | grep $OGCLIENTMOUNT/proc > /dev/null || mount --bind /proc $OGCLIENTMOUNT/proc
553        mount | grep $OGCLIENTMOUNT/sys > /dev/null || mount --bind /sys $OGCLIENTMOUNT/sys
554        mount | grep $OGCLIENTMOUNT/tmp > /dev/null || mount --bind /tmp $OGCLIENTMOUNT/tmp
555        mount | grep $OGCLIENTMOUNT/dev > /dev/null || mount --bind /dev $OGCLIENTMOUNT/dev
556        mount | grep $OGCLIENTMOUNT/dev/pts > /dev/null || mount --bind /dev/pts $OGCLIENTMOUNT/dev/pts
557       
558       
559        [ $# = 0 ] && $(chroot $OGCLIENTMOUNT /sbin/getty 38400 `tty`)
560        [ $# = 1 ] && chroot $OGCLIENTMOUNT $1
561       
562}
563
564#/**
565#         ogClientUnmount
566#@brief   Desmonta el 2nd FS del cliente desde el Servidor Opengnsys
567#@param   
568#@return 
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#*/ ##
576
577function ogClientUnmount ()
578{
579        cd /tmp
580        echo "desmontando cliente espere"
581        sleep 5
582        mount | grep $OGCLIENTMOUNT/dev > /dev/null && umount $OGCLIENTMOUNT/dev || ogClientUnmount
583        mount | grep $OGCLIENTMOUNT/dev/pts > /dev/null && umount $OGCLIENTMOUNT/dev/pts || ogClientUnmount
584        mount | grep $OGCLIENTMOUNT/proc > /dev/null && umount $OGCLIENTMOUNT/proc || ogClientUnmount
585        mount | grep $OGCLIENTMOUNT/sys > /dev/null && umount $OGCLIENTMOUNT/sys || ogClientUnmount
586        mount | grep $OGCLIENTMOUNT/tmp > /dev/null && umount $OGCLIENTMOUNT/tmp || ogClientUnmount
587        mount | grep $OGCLIENTMOUNT > /dev/null && umount $OGCLIENTMOUNT || ogClientUnmount
588        #-d -f -l
589
590}
591
592
593############################ hasta el final del archivo antiguos
594############################# ANTIGUOS
595function ogClientGetRelease ()
596{
597        #1 OSCODENAME jaunty|karmic|lucid
598        case $1 in
599                jaunty|JAUNTY)
600                        OSCODENAME=jaunty
601                        OGRELEASE="2.6.28-11-generic"
602                        echo $OGRELEASE
603                ;;
604                lenny|LENNY)
605                        OSCODENAME=lenny
606                        OGRELEASE="2.6.28-11-generic"
607                        echo $OGRELEASE
608                ;;
609                squeeze|SQUEEZE)
610                        OSCODENAME=squeeze
611                        OGRELEASE="2.6.28-11-generic"
612                        echo $OGRELEASE
613                ;;
614                karmic|KARMIC)
615                        OSCODENAME=karmic
616                        OGRELEASE="2.6.31-14-generic"
617                        echo $OGRELEASE
618                ;;
619                lucid|LUCID)
620                        OSCODENAME=lucid
621                        OGRELEASE="2.6.32-21-generic-pae"
622                        echo $OGRELEASE
623                ;;
624                *)
625                        return 1
626                ;;
627        esac
628               
629}
630
631
632#/**
633#         ogClientGenerator str_versionUbuntu str_release
634#@brief   Crea el 2nd FS del cliente desde el Servidor Opengnsys
635#@param 1 Versión de ubuntu a generar, jaunty karmic
636#@return 
637#@exception
638#@note   
639#@todo   
640#@version 0.9 - Primera versión para OpenGnSys
641#@author  Antonio J. Doblas Viso, Universidad de Málaga
642#@date    2010/02/15
643#*/ ##
644
645function ogClientGeneratorDebootstrap ()
646{
647        if [ $# != 2 ]
648        then
649                echo Debes introducir como argumento1: jaunty karmic lucid
650                echo Debes introducir como argumento2: la release
651                echo utiliza como entrada ogClientCheckVersion
652                return
653        fi
654        OSCODENAME=$1
655        OGRELEASE=$2
656       
657        # instalamos el ultimo debotstrap para permitir instalar versiones superiores a nuestro sistema
658        #apt-get install gdebi-core
659        #wget $LASTDEBOOTSTRAP
660        #gdebi -n debootstrap_1.0.20_all.deb
661
662        #Desmontamos por si acaso el dispositivo virtual
663        mount | grep $OGCLIENTMOUNT && umount $OGCLIENTMOUNT
664
665        #Creamos el directorio donde montaremos el disco virtual
666        mkdir -p $OGCLIENTMOUNT
667
668        #Creamos el disco virtual con el filesystem del cliente.
669        dd if=/dev/zero of=$OGCLIENTFILE bs=1048576 count=$OGCLIENTSIZEMB
670        #qemu-img create $OGCLIENTFILE 3G       
671        #dd if=/dev/zero of=$OGCLIENTFILE bs=1k count=$OGCLIENTSIZEKB   # necesita 500MB
672       
673       
674        #particionamos el disco virtual
675        losetup /dev/loop0 $OGCLIENTFILE
676        echo -e "n\np\n1\n\n\nt\n83\nw" | fdisk /dev/loop0
677        losetup -d /dev/loop0
678       
679       
680        #formateamos la particion principal.
681        losetup -o 32256 /dev/loop1 $OGCLIENTFILE
682        mkfs.ext3 -b 4096 -L $OGCLIENTLABEL /dev/loop1
683        #mkfs.ext3 -L $OGCLIENTLABEL /dev/loop1
684        #mkfs.ext3 -L $OGCLIENTLABEL /dev/loop1
685        losetup -d /dev/loop1
686       
687        #Montamos el dispositivo virtual en su punto de montaje.
688        mount | grep $OGCLIENTMOUNT || mount $OGCLIENTFILE $OGCLIENTMOUNT -o loop,offset=32256
689
690        #TODO Comprobar arquitectura
691        #Iniciamos la creación del sistema en el directorio de clientes.
692        #echo debootstrap --include=linux-image-${OGRELEASE},dbus --arch=i386 --components=main,universe $OGVERSION $OGCLIENTMOUNT http://es.archive.ubuntu.com/ubuntu/
693        debootstrap --include=linux-image-${OGRELEASE},linux-headers-${OGRELEASE} --arch=i386 --components=main,universe $OSCODENAME $OGCLIENTMOUNT http://es.archive.ubuntu.com/ubuntu/
694        ##preubas
695        #debootstrap --include=linux-image-${OGRELEASE} --arch=i386 --variant=minbase $OGVERSION $OGCLIENTMOUNT http://es.archive.ubuntu.com/ubuntu/
696        #debootstrap --variant=minbase --include=linux-image-${OGRELEASE} --arch=i386 $OGVERSION $OGCLIENTMOUNT http://es.archive.ubuntu.com/ubuntu/
697
698        if [ $? -ne 0 ]; then
699                errorAndLog "ogClientGeneratorDebootstrap(): ha fallado!"
700                return 1
701        else
702                echoAndLog "ogClientGeneratorDebootstrap(): ok"
703                return 0
704        fi     
705          sleep 5
706
707mount | grep $OGCLIENTMOUNT && umount $OGCLIENTFILE
708
709cat << EOF > /etc/schroot/schroot.conf
710[DIRogclient]
711type=directory
712directory=/var/lib/tftpboot/ogclient/ogclientmount
713description=ogclient ubuntu lucid DIR
714priority=2
715users=root
716groups=root
717root-groups=root
718root-users=root
719EOF
720}
721
722
723
724
725
Note: See TracBrowser for help on using the repository browser.