oglive-builder/old/ogClientFunctions

256 lines
6.0 KiB
Bash

#!/bin/bash
#Definicion de variables
# TODO: Pendiente Definir directorio base del 2FS
OGBASEDIR=/var/lib/tftpboot/ogclient/
OGFSFILE=${OGBASEDIR}ogclient.img
OGFSMOUNT=${OGBASEDIR}ogclientmount
OGLIB=/opt/opengnsys/client/lib
FSCLIENTSIZEMB=1000
PASSROOT=og
SCRIPT=/root/configure.sh
RUNME=$OGFSMOUNT$SCRIPT
LASTDEBOOTSTRAP=http://archive.ubuntu.com/ubuntu/pool/main/d/debootstrap/debootstrap_1.0.20_all.deb
OGMUSTCOMPILE="http://www.informatica.us.es:8080/opengnsys/browser/trunk/client/engine/ToolsGNU.c?format=txt -O /root/ToolsGNU.c"
OGFSLABEL=ogClient
#/**
# ogClientMount [str_program]
#@brief Acceso al 2nd FS del cliente desde el Servidor Opengnsys
#@param 1 Opciona: scripts o programa a ejecutar para automatizaciones
#@return Si no hay parametros: login de acceso.
#@return con un parametro: La salida del programa ejecutado
#@exception
#@note
#@todo
#@version 0.9 - Primera versión para OpenGnSys
#@author Antonio J. Doblas Viso, Universidad de Málaga
#@date 2010/02/15
#*/ ##
function ogClientMount ()
{
#TODO comprobar que OGFILE y OGFILEMOUNT existe.
mount $OGFSFILE $OGFSMOUNT -o loop
mount --bind /proc $OGFSMOUNT/proc
mount --bind /sys $OGFSMOUNT/sys
mount --bind /tmp $OGFSMOUNT/tmp
mount --bind /dev $OGFSMOUNT/dev
mount --bind /dev/pts $OGFSMOUNT/dev/pts
[ $# = 0 ] && $(chroot $OGFSMOUNT /sbin/getty 38400 `tty`)
[ $# = 1 ] && chroot $OGFSMOUNT $1
}
#/**
# ogClientUnmount
#@brief Desmonta el 2nd FS del cliente desde el Servidor Opengnsys
#@param
#@return
#@exception
#@note
#@todo
#@version 0.9 - Primera versión para OpenGnSys
#@author Antonio J. Doblas Viso, Universidad de Málaga
#@date 2010/02/15
#*/ ##
function ogClientUnmount ()
{
cd /tmp
umount -d -f -l $OGFSMOUNT/proc
umount -d -f -l $OGFSMOUNT/sys
umount -d -f -l $OGFSMOUNT/tmp
umount -d -f -l $OGFSMOUNT/dev
umount -d -f -l $OGFSMOUNT/dev/pts
umount -d -f -l $OGFSMOUNT
}
function ogClientCheckVersion ()
{
#TODO: configurar la version lucid
#TODO: introducir un nuevo case para la vesion
case $1 in
jaunty|JAUNTY)
export OGVERSION=jaunty
exort OGRELEASE=2.6.28-11-generic
;;
karmic|KARMIC)
export OGVERSION=karmic
export OGRELEASE=2.6.31-14-generic
;;
lucid|LUCID)
export OGVERSION=lucid
export OGRELEASE=2.6.32-21-generic-pae
;;
esac
echo $OGVERSION $OGRELEASE
}
#/**
# ogClientGenerator str_versionUbuntu str_release
#@brief Crea el 2nd FS del cliente desde el Servidor Opengnsys
#@param 1 Versión de ubuntu a generar, jaunty karmic
#@return
#@exception
#@note
#@todo
#@version 0.9 - Primera versión para OpenGnSys
#@author Antonio J. Doblas Viso, Universidad de Málaga
#@date 2010/02/15
#*/ ##
function ogClientGeneratorDebootstrap ()
{
if [ $# != 2 ]
then
echo Debes introducir como argumento1: jaunty karmic lucid
echo Debes introducir como argumento2: la release
echo utiliza como entrada ogClientCheckVersion
return
fi
OGVERSION=`echo $1`
OGRELEASE=`echo $2`
echo $OGVERSION $OGRELEASE
pause
# instalamos el ultimo debotstrap para permitir instalar versiones superiores a nuestro sistema
apt-get install gdebi-core
wget $LASTDEBOOTSTRAP
gdebi -n debootstrap_1.0.20_all.deb
#Creamos el directorio donde montaremos el disco virtual
mkdir -p $OGFSMOUNT
#Creamos el disco virtual con el filesystem del cliente.
dd if=/dev/zero of=$OGFSFILE bs=1048576 count=$FSCLIENTSIZEMB
mkfs.ext3 -b 4096 -L $OGFSLABEL $OGFSFILE -F
#Montamos el dispositivo virtual en su punto de montaje.
mount $OGFSFILE $OGFSMOUNT -o loop
#TODO Comprobar arquitectura
#Iniciamos la creación del sistema en el directorio de clientes.
echo debootstrap --include=linux-image-$OGRELEASE --arch=i386 --components=main,universe $OGVERSION $OGFSMOUNT http://es.archive.ubuntu.com/ubuntu/
debootstrap --include=linux-image-$OGRELEASE --arch=i386 --components=main,universe $OGVERSION $OGFSMOUNT http://es.archive.ubuntu.com/ubuntu/
}
###### Funciones para los clientes offline
function agregarOG {
cd $NEWROOT
mkdir -p opt/opengnsys
cp -prv /opt/opengnsys/client/* $NEWROOT/opt/opengnsys
echo "agregando OG al newinitrd"
}
function finalizarISO
{
cd $ANTERIORPWD
mv $TMPINITRD/new-initrd.gz $DEST/initrdISO.gz
if [ $LINUX ] ; then
mv $TMPINITRD/linux $DEST/linuxISO
fi
}
function CrearISO {
mkdir -p tmp/iso/isolinux
#cd tmp/iso/
cp -prv /usr/lib/syslinux/* tmp/iso/isolinux/
cp -prv /usr/share/gpxe/* tmp/iso/isolinux/
cp -prv /tmp/linux tmp/iso/isolinux/linuxISO
cp -prv /tmp/initrd.gz tmp/iso/isolinux/
cp -prv /opt/opengnsys/client/og2ndFS tmp/iso/isolinux/
cat << FIN > tmp/iso/isolinux/isolinux.cfg
DEFAULT menu.c32
PROMPT 0
ALLOWOPTIONS 1
MENU TITLE FuTuR3 Live Collection
LABEL gpxe
MENU LABEL gpxe
KERNEL /clonezilla/live/vmlinuz1
APPEND initrd=/clonezilla/live/initrd1.img boot=live union=aufs noswap vga=788 ip=frommedia
#default 0
#prompt 1
#timeout 100
#display mensaje.txt
LABEL 0
MENU LABEL ogClient
KERNEL linuxISO
APPEND initrd=initrd.gz ro vga=788 irqpoll acpi=on boot=admin status=offline
LABEL 1
MENU LABEL ogClient1 sin vga
KERNEL linuxISO
APPEND initrd=initrd.gz ro irqpoll acpi=on boot=admin status=offline
LABEL 2
MENU LABEL ogClient2 sin irqpoll
KERNEL linuxISO
APPEND initrd=initrd.gz ro acpi=on boot=admin status=offline
LABEL 3
MENU LABEL ogClient3 acpi=off
KERNEL linuxISO
APPEND initrd=initrd.gz ro acpi=off boot=admin status=offline
#LABEL ogclient
#KERNEL /ogclient/linuxISO
#APPEND initrd=/ogclient/initrdISO.img
#KERNEL linuxISO
#APPEND initrd=initrdISO.img
LABEL 4
MENU LABEL local
localboot 0x80
append -
label 5
MENU LABEL Network boot via gPXE lkrn
KERNEL gpxe.lkrn
label 5
MENU LABEL Network boot via gPXE usb
KERNEL gpxe.usb
label 5
MENU LABEL Network boot via gPXE pxe
KERNEL gpxe.pxe
label 5
MENU LABEL Network boot via gPXE iso
KERNEL gpxe.iso
FIN
#### /tmp/iso#
mkisofs -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
}
function probarISO {
#/tmp/iso
qemu -m 256 -boot d -cdrom ogClient.iso
}