diff options
author | adv <adv@uma.es> | 2011-08-02 17:10:03 +0000 |
---|---|---|
committer | adv <adv@uma.es> | 2011-08-02 17:10:03 +0000 |
commit | 00a2c2cb92d8fe71b0048a93ba996cd942a69f97 (patch) | |
tree | 4c4e79a08fa07ddc6b829305f2422849e529df45 | |
parent | 6ddbb9e51116cf3ddbf1729776e38427b60e0f34 (diff) |
version 1.0.2 boot-tools #404 #420
git-svn-id: https://opengnsys.es/svn/branches/version1.0@2250 a21b9725-9963-47de-94b9-378ad31fedc9
38 files changed, 2422 insertions, 0 deletions
diff --git a/client/boot-tools/boottoolsfunctions.lib b/client/boot-tools/boottoolsfunctions.lib new file mode 100644 index 00000000..a5d951b2 --- /dev/null +++ b/client/boot-tools/boottoolsfunctions.lib @@ -0,0 +1,497 @@ +#!/bin/bash +#/** +#@file boottoolsfunctions.lib +#@brief Librería o clase Boot-Tools +#@class Boot-Tools +#@brief Funciones para generar un sistema operativo cliente para opengnsys +#@version 0.9 +#@warning License: GNU GPLv3+ +#*/ + + + + +# btGetVariables: define las constantes a utilizar +# Autor: Antonio J. Doblas Viso. Universidad de Málaga. +btogGetVar() +{ +export BTSVNBOOTTOOLS=/tmp/opengnsys_installer/opengnsys/client/boot-tools +export BTSVNSHARE=/tmp/opengnsys_installer/opengnsys/client/shared +export BTSVNENGINE=/tmp/opengnsys_installer/opengnsys/client/engine + +export BTSVNOG2=/tmp/opengnsys_installer/opengnsys2 + +export BTTARGETDIR=/var/lib/tftpboot/ogclient/ +export BTROOTFSIMG=${BTTARGETDIR}ogclient.img +export BTROOTFSMNT=${BTTARGETDIR}ogclientmount +# tamaño maximo limitado por schroot 2GB +export BTVIRTUALDISKSIZE=1000 +export BTROOTFSIMGLABEL=ogClient + +export LOG_FILE=/tmp/boot-tools_installation.log +} + + +# btGetOsInfo: detecta la version del host, para tenerla de referencia en el boot-tools a generar. +#@version 0.9 - Prototipo de sistema operativo multiarranque de opengnsys. +#@author Antonio J. Doblas Viso. Universidad de Malaga. +#@date 2010/05/24 +#@version 1.0 - Compatibilidad OpengGnsys X. +#@author Antonio J. Doblas Viso. Universidad de Malaga. +#@date 2011/08/03 +function btogGetOsInfo () +{ + case $1 in + lenny|LENNY) + export OSDISTRIB=debian + export OSCODENAME=lenny + export OSRELEASE="2.6.28-11-generic" + export OSARCH=i386 + export OSHTTP="http://es.archive.ubuntu.com/ubuntu/ " + ;; + lucid|LUCID) + export OSDISTRIB=ubuntu + export OSCODENAME=lucid + export OSRELEASE="2.6.32-21-generic-pae" + export OSARCH=i386 + export OSHTTP="http://es.archive.ubuntu.com/ubuntu/ " + ;; + host | HOST | *) + export OSDISTRIB=$(lsb_release -i | awk -F: '{sub(/\t/,""); print $2}') 2>/dev/null + export OSCODENAME=$(cat /etc/lsb-release | grep CODENAME | awk -F= '{print $NF}') + export OSRELEASE=$(uname -a | awk '{print $3}') + uname -a | grep x86_64 > /dev/null && export OSARCH=amd64 || export OSARCH=i386 + export OSHTTP="http://es.archive.ubuntu.com/ubuntu/" + ;; + esac + echo $OSDISTRIB:$OSCODENAME:$OSRELEASE:$OSARCH:$OSHTTP +} + +# btogSetFsVirtual: Crea y formatea el fichero - disco duro virtual +#@version 0.9 - Prototipo de sistema operativo multiarranque de opengnsys. +#@author Antonio J. Doblas Viso. Universidad de Malaga. +#@date 2010/05/24 +#@version 1.0 - Compatibilidad OpengGnsys X. +#@author Antonio J. Doblas Viso. Universidad de Malaga. +#@date 2011/08/03 +# error code return 2 +btogSetFsVirtual () +{ + +local RERROR DISKLOOP PARTLOOP #return code error + +#Dependencias. +[ -z "$BTROOTFSIMG" ] && btogGetVar + +echoAndLog "$FUNCNAME(): Creación y formateo del disco virtual $BTVIRTUALDISKSIZE MB " + +#Desmontamos el dispositivo virtual +mount | grep $BTROOTFSMNT && umount $BTROOTFSMNT +mount | grep $BTROOTFSMNTT && umount $BTROOTFSMNT + +#echo "$FUNCNAME(): Creando el directorio donde se montará el disco virtual $BTROOTFSMNT" +mkdir -p $BTROOTFSMNT + +if [ $? -ne 0 ] +then + errorAndLog "$FUNCNAME(): Creando directorio $BTROOTFSMNT : ERROR" + return 1 +fi + +# Permisos para el usuario opengnsys. +chown -R root:opengnsys $BTTARGETDIR + +#echo "$FUNCNAME(): Creando el disco virtual con tamaño máximo de $BTVIRTUALDISKSIZE MB" +dd if=/dev/zero of=$BTROOTFSIMG bs=1048576 count=$BTVIRTUALDISKSIZE + #qemu-img create $BTROOTFSIMG 3G + #dd if=/dev/zero of=$BTROOTFSIMG bs=1k count=$OGCLIENTSIZEKB # necesita 500MB + +if [ $? -ne 0 ] +then + errorAndLog "$FUNCNAME(): Creando el disco virtual con tamaño maxima $BTVIRTUALDISKSIZE MB : ERROR" + return 2 +fi + +# Particionamos el disco virtual con una sola particion primaria. +DISKLOOP=$(losetup -f) +#TODO: si no DISKLOOP error +losetup $DISKLOOP $BTROOTFSIMG +#echo "$FUNCNAME(): particiondo el disco virtual - $DISKLOOP - con una particion primaria" +echo -e "n\np\n1\n\n\nt\n83\nw" | fdisk $DISKLOOP + + +#echoAndLog "$FUNCNAME(): Liberamos Desmontando $DISKLOOP despues del particionado " +losetup -d $DISKLOOP +if [ $? -ne 0 ] +then + errorAndLog "$FUNCNAME(): Liberando disco virtual despues del particionado: ERROR" + return 2 +fi + + +PARTLOOP=$(losetup -f) +#echo "$FUNCNAME(): Formateando la particion principal $PARTLOOP" +losetup -o 32256 $PARTLOOP $BTROOTFSIMG && mkfs.ext3 -b 4096 -L $BTROOTFSIMGLABEL $PARTLOOP +if [ $? -ne 0 ] +then + errorAndLog "$FUNCNAME(): Formateando la particion principal del disco virtual: ERROR" + return 2 +fi +#echoAndLog "$FUNCNAME(): Desmontando $PARTLOOP despues del formateo " +losetup -d $PARTLOOP +if [ $? -ne 0 ] +then + errorAndLog "$FUNCNAME(): Liberando la particion virtual despues del formateo: ERROR" + return 2 +else + echoAndLog "$FUNCNAME(): $BTROOTFSIMG $BTVIRTUALDISKSIZE MB : OK" +fi +} + + +# btogSetfsBase: Genera el sistema root base con debootstrap +#@version 0.9 - Prototipo de sistema operativo multiarranque de opengnsys. +#@author Antonio J. Doblas Viso. Universidad de Malaga. +#@date 2010/05/24 +#@version 1.0 - Compatibilidad OpengGnsys X. +#@author Antonio J. Doblas Viso. Universidad de Malaga. +#@date 2011/08/03 +# error code return 3 +btogSetFsBase () +{ + +# Dependencias +[ -z "$OSCODENAME" ] && btogGetOsInfo + +echoAndLog "$FUNCNAME: Iniciando la generación del sistema de archivos " + +#Montamos el dispositivo virtual en su punto de montaje. +mount | grep $BTROOTFSMNT || mount $BTROOTFSIMG $BTROOTFSMNT -o loop,offset=32256 +mount | grep $BTROOTFSMNT && echoAndLog "$FUNCNAME: mount $BTROOTFSIMG $BTROOTFSMNT -o loop,offset=32256 OK " || errorAndLog "$FUNCNAME: mount $BTROOTFSIMG $BTROOTFSMNT -o loop,offset=32256 : FAILURE " + +debootstrap --arch=$OSARCH --components=main,universe ${OSCODENAME} ${BTROOTFSMNT} ${OSHTTP} + + +if [ $? -ne 0 ]; then + errorAndLog "$FUNCNAME: debootstrap --include=linux-image-${OSRELEASE},linux-headers-${OSRELEASE} --arch=$OSARCH --components=main,universe $OSCODENAME $BTROOTFSMNT $OSHTTP : ha fallado!" + mount | grep $BTROOTFSMNT && umount $BTROOTFSMNT + return 3 +else + echoAndLog "$FUNCNAME: debootstrap --include=linux-image-${OSRELEASE},linux-headers-${OSRELEASE} --arch=$OSARCH --components=main,universe $OSCODENAME $BTROOTFSMNT $OSHTTP : ok" + mount | grep $BTROOTFSMNT && umount $BTROOTFSMNT + return 0 +fi + sleep 5 + +##preubas revisar OSRELEASE +#debootstrap --include=linux-image-${OSRELEASE},linux-headers-${OSRELEASE} --arch=$OSARCH --components=main,universe ${OSCODENAME} ${OGCLIENTMOUNT} ${OSHTTP} +#debootstrap --include=linux-image-${OSRELEASE} --arch=i386 --variant=minbase $OSVERSION $OGCLIENTMOUNT http://es.archive.ubuntu.com/ubuntu/ +#debootstrap --variant=minbase --include=linux-image-${OGRELEASE} --arch=i386 $OGVERSION $OGCLIENTMOUNT http://es.archive.ubuntu.com/ubuntu/ +#echo debootstrap --include=linux-image-${OGRELEASE},dbus --arch=i386 --components=main,universe $OGVERSION $OGCLIENTMOUNT http://es.archive.ubuntu.com/ubuntu/ +} + +#btogSetFsAcces: habilita el acceso al sistema root del cliente con schroot +#@version 0.9 - Prototipo de sistema operativo multiarranque de opengnsys. +#@author Antonio J. Doblas Viso. Universidad de Malaga. +#@date 2010/05/24 +#@version 1.0 - Compatibilidad OpengGnsys X. +#@author Antonio J. Doblas Viso. Universidad de Malaga. +#@date 2011/08/03 +btogSetFsAccess() +{ +echoAndLog "$FUNCNAME: Iniciando la configuración del schroot " +cp /etc/schroot/schroot.conf /etc/schroot/schroot.conf.`getDateTime` +cat << EOF > /etc/schroot/schroot.conf +[IMGogclient] +type=loopback +file=/var/lib/tftpboot/ogclient/ogclient.img +description=ogclient ubuntu luc IMGi +#priority=1 +users=root +groups=root +root-groups=root +mount-options=-o offset=32256 +root-users=root +EOF + +cp /etc/schroot/mount-defaults /etc/schroot/mount-defaults.`getDateTime` +cat << EOF > /etc/schroot/mount-defaults +# mount.defaults: static file system information for chroots. +# Note that the mount point will be prefixed by the chroot path +# (CHROOT_PATH) +# +# <file system> <mount point> <type> <options> <dump> <pass> +proc /proc proc defaults 0 0 +#procbususb /proc/bus/usb usbfs defaults 0 0 +#/dev /dev none rw,bind 0 0 +/dev/pts /dev/pts none rw,bind 0 0 +/dev/shm /dev/shm none rw,bind 0 0 +#/home /home none rw,bind 0 0 +/tmp /tmp none rw,bind 0 0 +EOF + +echoAndLog "$FUNCNAME: Finalizado: OK " +return 0 +} + + + +#btogFsInitr genera un initrd. +#@version 0.9 - Prototipo de sistema operativo multiarranque de opengnsys. +#@author Antonio J. Doblas Viso. Universidad de Malaga. +#@date 2010/05/24 +#@version 1.0 - Compatibilidad OpengGnsys X. +#@author Antonio J. Doblas Viso. Universidad de Malaga. +#@date 2011/08/03 +btogFsInitrd () +{ +#DEPENDENCIAS +ogClientVar +ogClientOsInfo +# $1 +#TODO generara md5 del kernel y del initrd. + +cd / +schroot -c IMGogclient -- /root/GenerateInitrd.generic.sh +echo "cp /tmp/*-${OSRELEASE} $OGCLIENTBASEDIR" +cp /tmp/*-${OSRELEASE} $OGCLIENTBASEDIR +cp /tmp/initrd.img-${OSRELEASE} ${OGCLIENTBASEDIR}/oginitrd.img +cp /tmp/vmlinuz-${OSRELEASE} ${OGCLIENTBASEDIR}/ogvmlinuz +cd - +chmod -R 755 $OGCLIENTBASEDIR +} + +#btogFsToSqfs convierte el sistema root en sqfs +#@version 0.9 - Prototipo de sistema operativo multiarranque de opengnsys. +#@author Antonio J. Doblas Viso. Universidad de Malaga. +#@date 2010/05/24 +#@version 1.0 - Compatibilidad OpengGnsys X. +#@author Antonio J. Doblas Viso. Universidad de Malaga. +#@date 2011/08/03 +btogFsSqfs () +{ +#Dependencias. +ogClientVar + +echoAndLog "$FUNCNAME: Iniciando la creación del sistema de archivos en sqfs " +# si ya existe un sqfs lo renombramos +[ -f $OGCLIENTBASEDIR/ogclient.sqfs ] && mv $OGCLIENTBASEDIR/ogclient.sqfs $OGCLIENTBASEDIR/ogclient.sqfs.`date +%Y%m%d-%H%M%S` +mount | grep $OGCLIENTMOUNT || mount $OGCLIENTFILE $OGCLIENTMOUNT -o loop,offset=32256 + +mksquashfs $OGCLIENTMOUNT $OGCLIENTBASEDIR/ogclient.sqfs +chmod 744 $OGCLIENTBASEDIR/ogclient.sqfs + +mount | grep $OGCLIENTMOUNT && umount $OGCLIENTMOUNT +} + + + + + +# btogIsoGenerator genera la iso del cliente +#@version 0.9 - Prototipo de sistema operativo multiarranque de opengnsys. +#@author Antonio J. Doblas Viso. Universidad de Malaga. +#@date 2010/05/24 +#@version 1.0 - Compatibilidad OpengGnsys X. +#@author Antonio J. Doblas Viso. Universidad de Malaga. +#@date 2011/08/03 +function btogIsoGenerator { +apt-get install syslinux genisoimage +#TODO: deb http://free.nchc.org.tw/drbl-core drbl stable +#apt-get install gpxe +mkdir -p /tmp/iso/isolinux +#cd tmp/iso/ +cp -prv /usr/lib/syslinux/* /tmp/iso/isolinux/ +cp -prv /usr/share/gpxe/* /tmp/iso/isolinux/ +mkdir -p /tmp/iso/ogclient +#el ogclienteToISO debe tener una copia del ogvmlinuz como linuxISO +cp -prv /var/lib/tftpboot/ogclientToIso/* /tmp/iso/ogclient + + +cat << FIN > /tmp/iso/isolinux/isolinux.cfg +DEFAULT menu.c32 +PROMPT 0 +ALLOWOPTIONS 1 + +MENU TITLE OpenGnsys 1.0.1 v00 + +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 vga irqpool acpi ogdebug ip:none +KERNEL /ogclient/linuxISO +APPEND initrd=/ogclient/oginitrd.img ro vga=788 irqpoll acpi=on boot=oginit og2nd=sqfs ogprotocol=local ogactiveadmin=true ogdebug=true ip=none + +LABEL 1 +MENU LABEL ogClient irqpoll acpi ip:none +KERNEL /ogclient/linuxISO +APPEND initrd=/ogclient/oginitrd.img ro irqpoll acpi=on boot=oginit og2nd=sqfs ogprotocol=local ogactiveadmin=true ogdebug=false ip=none + +LABEL 2 +MENU LABEL ogClient acpi debug ip=dhcp +KERNEL /ogclient/linuxISO +APPEND initrd=/ogclient/oginitrd.img ro acpi=on boot=oginit og2nd=sqfs ogprotocol=local ogactiveadmin=true ogdebug=true ip=dhcp + +LABEL 3 +MENU LABEL ogClient ip=dhcp +KERNEL /ogclient/linuxISO +APPEND initrd=/ogclient/oginitrd.img ro acpi=off boot=oginit og2nd=sqfs ogprotocol=local ogactiveadmin=true ogdebug=false ip=dhcp + + +#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 + +### vi /etc/grub.d/40_custom +## +#menuentry "og cache " { +#set root=(hd0,4) +#linux /ogvmlinuz ro vga=788 irqpoll acpi=on boot=oginit og2nd=sqfs ogprotocol=local ogactiveadmin=true ogdebug=true ip=none +#initrd /oginitrd.img +#} + + +} + + +#@version 0.9 - Prototipo de sistema operativo multiarranque de opengnsys. +#@author Antonio J. Doblas Viso. Universidad de Malaga. +#@date 2010/05/24 +#@version 1.0 - Compatibilidad OpengGnsys X. +#@author Antonio J. Doblas Viso. Universidad de Malaga. +#@date 2011/08/03 +function btogIsoTest { +#/tmp/iso +qemu -m 256 -boot d -cdrom ogClient.iso +} + + + + +function getDateTime() +{ + echo `date +%Y%m%d-%H%M%S` +} + +# Escribe a fichero y muestra por pantalla +function echoAndLog() +{ + echo $1 + FECHAHORA=`getDateTime` + echo "$FECHAHORA;$SSH_CLIENT;$1" >> $LOG_FILE +} + +function errorAndLog() +{ + echo "ERROR: $1" + FECHAHORA=`getDateTime` + echo "$FECHAHORA;$SSH_CLIENT;ERROR: $1" >> $LOG_FILE +} + + + + + + + + + + +############### No usados en el instalador, solo en actualizaciones. +#/** +# 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 | grep $OGCLIENTFILE > /dev/null || mount $OGCLIENTFILE $OGCLIENTMOUNT -o loop,offset=32256 + mount | grep $OGCLIENTMOUNT/proc > /dev/null || mount --bind /proc $OGCLIENTMOUNT/proc + mount | grep $OGCLIENTMOUNT/sys > /dev/null || mount --bind /sys $OGCLIENTMOUNT/sys + mount | grep $OGCLIENTMOUNT/tmp > /dev/null || mount --bind /tmp $OGCLIENTMOUNT/tmp + mount | grep $OGCLIENTMOUNT/dev > /dev/null || mount --bind /dev $OGCLIENTMOUNT/dev + mount | grep $OGCLIENTMOUNT/dev/pts > /dev/null || mount --bind /dev/pts $OGCLIENTMOUNT/dev/pts + + + [ $# = 0 ] && $(chroot $OGCLIENTMOUNT /sbin/getty 38400 `tty`) + [ $# = 1 ] && chroot $OGCLIENTMOUNT $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 + echo "desmontando cliente espere" + sleep 5 + mount | grep $OGCLIENTMOUNT/dev > /dev/null && umount $OGCLIENTMOUNT/dev || ogClientUnmount + mount | grep $OGCLIENTMOUNT/dev/pts > /dev/null && umount $OGCLIENTMOUNT/dev/pts || ogClientUnmount + mount | grep $OGCLIENTMOUNT/proc > /dev/null && umount $OGCLIENTMOUNT/proc || ogClientUnmount + mount | grep $OGCLIENTMOUNT/sys > /dev/null && umount $OGCLIENTMOUNT/sys || ogClientUnmount + mount | grep $OGCLIENTMOUNT/tmp > /dev/null && umount $OGCLIENTMOUNT/tmp || ogClientUnmount + mount | grep $OGCLIENTMOUNT > /dev/null && umount $OGCLIENTMOUNT || ogClientUnmount + #-d -f -l + +} diff --git a/client/boot-tools/boottoolsgenerator.sh b/client/boot-tools/boottoolsgenerator.sh new file mode 100755 index 00000000..ce37eff3 --- /dev/null +++ b/client/boot-tools/boottoolsgenerator.sh @@ -0,0 +1,158 @@ +#!/bin/bash +#@file boottoolsgenerator.sh +#@brief Script generación del sistema opertativo cliente OpenGnSys +#@warning +#@version 0.9 - Prototipo de sistema operativo multiarranque de opengnsys. +#@author Antonio J. Doblas Viso. Universidad de Malaga. +#@date 2010/05/24 +#@version 1.0 - Compatibilidad OpengGnsys X. +#@author Antonio J. Doblas Viso. Universidad de Malaga. +#@date 2011/08/03 +#*/ + + +#Variables +TYPECLIENT=host +WORKDIR=/tmp/opengnsys_installer +INSTALL_TARGET=/opt/opengnsys +PROGRAMDIR=$(readlink -e $(dirname "$0")) + +# Solo ejecutable por usuario root +if [ "$(whoami)" != 'root' ] +then + echo "ERROR: this program must run under root privileges!!" + exit 1 +fi + + +#funciones especificas del cliente. +source $PROGRAMDIR/boottoolsfunctions.lib + + +echoAndLog "OpenGnSys CLIENT installation begins at $(date)" + +########################################################################## +## FASE 1 - Instalación de software adicional. +DEPENDENCIES=( debootstrap subversion schroot squashfs-tools) +apt-get update +# Instalación de dependencias (paquetes de sistema operativo). +declare -a notinstalled +checkDependencies DEPENDENCIES notinstalled +if [ $? -ne 0 ]; then + installDependencies notinstalled + if [ $? -ne 0 ]; then + echoAndLog "Error while installing some dependeces, please verify your server installation before continue" + exit 1 + fi +fi +########### FIN FASE 1 + +##### FASE 2 - Asignación de variables +#obtenemos las variables necesarias. +btogGetVar +#obtenemos la información del host. +btogGetOsInfo +##### FIN fase 2 + +############# FASE 3: Creación del Sistema Root (Segundo Sistema archivos (img)) +##3.1 creación y formateo del disco virtual. generamos el dispositivo loop. +file $BTROOTFSIMG | grep "partition 1: ID=0x83" +if [ $? == 1 ] +then + btogSetFsVirtual || exit 2 +fi +#3.2 generamos el Sistema de archivos con debootstrap +schroot -p -c IMGogclient -- touch /tmp/ogclientOK +if [ -f /tmp/ogclientOK ] +then + rm /tmp/ogclientOK +else + btogSetFsBase || exit 3 +fi + + +############### FASE 4: Configuración el acceso al Segundo Sistema de archivos (img), para schroot +cat /etc/schroot/schroot.conf | grep $BTROOTFSIMG || btogSetFsAccess + + + + +############### FASE 5: Configuración del Segundo Sistema de archivos (img) con la estructura especial de OpenGnsys +cp ${BTSVNBOOTTOOLS}/includes/root/* /tmp/ +chmod 777 /tmp/*.sh +schroot -p -c IMGogclient -- /tmp/importSVNboot-tools.sh + + + + + + +############# FASE6: Ejecutamos los scripts de personalización del 2º sistema de archivos (img) desde la jaula schroot +### 6.1 instalacion de software con apt-get +schroot -p -c IMGogclient -- /root/InstallSoftware.sh +echo "saltando" + if [ $? -ne 0 ]; then + errorAndLog "Instalando sofware adicional OG : ERROR" + exit +else + echoAndLog "Instalando sofware adicional OG: OK" +fi +#### 6.2 compilación de software. +cd / +schroot -p -c IMGogclient -- /root/CompileSoftware.sh +cd - + +### 6.3 configuracion hostname passroot securety +cd / +schroot -c IMGogclient -- /root/ConfFS.sh +cd - +#schroot -c IMGogclient -- echo -ne "og1\nog1\n" | passwd root +# schroot -c IMGogclient -- passwd root | echo "root" + + +### 6.4 incorporamos la clave publica del servidor +cd / +ssh-keygen -q -f /root/.ssh/id_rsa -N "" +cp /root/.ssh/id_rsa.pub /tmp +schroot -p -c IMGogclient -- /root/importSshKeys.sh +cd - +############ y la del propio cliente. +schroot -c IMGogclient -- /root/generateSshKeysClient.sh + +## configuramos los locales. +schroot -c IMGogclient -- /root/ReconfigureLocales.sh + +exit 99 +################## FIN fase 6. Fin de comfiguración del segundo sistema de archivos (img) + + + + + + + + + + + + +################## FASE 7. Generamos el 1er sistema de archivos. INITRD +btogFsInitrd + + +################## FASE 8. convertimos el 2ºFS(img) en 2ºFS(sqfs) +# generamos el 2sistema de archivos en squashfs +ogClient2ndSqfs +################## FIN FASE 8. convertimos el 2ºFS(img) en 2ºFS(sqfs) + + +##################### FASE 9. algunos detallas del pxe +#dejamos ficheros de ejemplo para el pxe y el nfs +#ogClientConfpxe +##################### FIN FASE 9. algunos detallas del pxe + + +# Mostrar sumario de la instalación e instrucciones de post-instalación. +installationSummary + +echoAndLog "OpenGnSys installation finished at $(date)" diff --git a/client/boot-tools/includes/etc/apt/sources.list.debian b/client/boot-tools/includes/etc/apt/sources.list.debian new file mode 100644 index 00000000..495e48d4 --- /dev/null +++ b/client/boot-tools/includes/etc/apt/sources.list.debian @@ -0,0 +1,4 @@ +deb http://ftp.us.debian.org/debian lenny main contrib non-free + +deb http://security.debian.org/ lenny/updates main contrib non-free +deb-src http://security.debian.org/ lenny/updates main contrib non-free diff --git a/client/boot-tools/includes/etc/apt/sources.list.ubuntu b/client/boot-tools/includes/etc/apt/sources.list.ubuntu new file mode 100644 index 00000000..29348ccc --- /dev/null +++ b/client/boot-tools/includes/etc/apt/sources.list.ubuntu @@ -0,0 +1,56 @@ +deb http://es.archive.ubuntu.com/ubuntu/ OSCODENAME main restricted +deb-src http://es.archive.ubuntu.com/ubuntu/ OSCODENAME main restricted +## Major bug fix updates produced after the final release of the +## distribution. +deb http://es.archive.ubuntu.com/ubuntu/ OSCODENAME-updates main restricted +deb-src http://es.archive.ubuntu.com/ubuntu/ OSCODENAME-updates main restricted +## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu +## team. Also, please note that software in universe WILL NOT receive any +## review or updates from the Ubuntu security team. +deb http://es.archive.ubuntu.com/ubuntu/ OSCODENAME universe +deb-src http://es.archive.ubuntu.com/ubuntu/ OSCODENAME universe +deb http://es.archive.ubuntu.com/ubuntu/ OSCODENAME-updates universe +deb-src http://es.archive.ubuntu.com/ubuntu/ OSCODENAME-updates universe + +## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu +## team, and may not be under a free licence. Please satisfy yourself as to +## your rights to use the software. Also, please note that software in +## multiverse WILL NOT receive any review or updates from the Ubuntu +## security team. +deb http://es.archive.ubuntu.com/ubuntu/ OSCODENAME multiverse +deb-src http://es.archive.ubuntu.com/ubuntu/ OSCODENAME multiverse +deb http://es.archive.ubuntu.com/ubuntu/ OSCODENAME-updates multiverse +deb-src http://es.archive.ubuntu.com/ubuntu/ OSCODENAME-updates multiverse + +## Uncomment the following two lines to add software from the 'backports' +## repository. +## N.B. software from this repository may not have been tested as +## extensively as that contained in the main release, although it includes +## newer versions of some applications which may provide useful features. +## Also, please note that software in backports WILL NOT receive any review +## or updates from the Ubuntu security team. +# deb http://es.archive.ubuntu.com/ubuntu/ OSCODENAME-backports main restricted universe multiverse +# deb-src http://es.archive.ubuntu.com/ubuntu/ OSCODENAME-backports main restricted universe multiverse + +## Uncomment the following two lines to add software from Canonical's +## 'partner' repository. +## This software is not part of Ubuntu, but is offered by Canonical and the +## respective vendors as a service to Ubuntu users. +# deb http://archive.canonical.com/ubuntu OSCODENAME partner +# deb-src http://archive.canonical.com/ubuntu OSCODENAME partner + + +deb http://security.ubuntu.com/ubuntu OSCODENAME-security main restricted +deb-src http://security.ubuntu.com/ubuntu OSCODENAME-security main restricted +deb http://security.ubuntu.com/ubuntu OSCODENAME-security universe +deb-src http://security.ubuntu.com/ubuntu OSCODENAME-security universe +deb http://security.ubuntu.com/ubuntu OSCODENAME-security multiverse +deb-src http://security.ubuntu.com/ubuntu OSCODENAME-security multiverse + + +deb http://archive.ubuntu.com/ubuntu OSCODENAME main +deb http://free.nchc.org.tw/drbl-core drbl stable +deb http://free.nchc.org.tw/ubuntu OSCODENAME-security main restricted universe multiverse +deb http://ppa.launchpad.net/freenx-team/ubuntu/ OSCODENAME main +deb http://ppa.launchpad.net/randomaction/ppa/ubuntu OSCODENAME main +deb-src http://ppa.launchpad.net/randomaction/ppa/ubuntu OSCODENAME main diff --git a/client/boot-tools/includes/etc/environment b/client/boot-tools/includes/etc/environment new file mode 100644 index 00000000..bb529d99 --- /dev/null +++ b/client/boot-tools/includes/etc/environment @@ -0,0 +1,4 @@ +LC_TYPE=es_ES@euro +LC_ALL=es_ES@euro +LANG=es_ES@euro +LANGUAGE=es_ES@euro
\ No newline at end of file diff --git a/client/boot-tools/includes/etc/fstab b/client/boot-tools/includes/etc/fstab new file mode 100644 index 00000000..d7473df4 --- /dev/null +++ b/client/boot-tools/includes/etc/fstab @@ -0,0 +1,13 @@ +# /etc/fstab: static file system information. +# +# Use 'blkid -o value -s UUID' to print the universally unique identifier +# for a device; this may be used with UUID= as a more robust way to name +# devices that works even if disks are added and removed. See fstab(5). +# +# <file system> <mount point> <type> <options> <dump> <pass> +proc /proc proc 0 0 +/dev/sda1 ext3 errors=remount-ro 0 1 + + + + diff --git a/client/boot-tools/includes/etc/initramfs-tools/hooks/oghooks b/client/boot-tools/includes/etc/initramfs-tools/hooks/oghooks new file mode 100755 index 00000000..67f807ab --- /dev/null +++ b/client/boot-tools/includes/etc/initramfs-tools/hooks/oghooks @@ -0,0 +1,62 @@ +#!/bin/sh -e +# initramfs hook for OpenGnsys + +#@file oghooks +#@brief configuración initrd para OpenGnSys +#@warning +#@version 0.9 - estrucura opengnsys, bash-static, unionfs, atheros +#@author Antonio J. Doblas Viso. +#@date 2010/05/24 +#*/ + +PREREQ="og" + +# Output pre-requisites +prereqs() +{ + echo "$PREREQ" +} + +case "$1" in + prereqs) + prereqs + exit 0 + ;; +esac + + +. /usr/share/initramfs-tools/hook-functions + +mkdir -p ${DESTDIR}/scripts/og-top +mkdir -p ${DESTDIR}/scripts/og-premount +mkdir -p ${DESTDIR}/scripts/og-bottom +mkdir -p ${DESTDIR}/mnt/ +mkdir -p ${DESTDIR}/net/ +mkdir -p ${DESTDIR}/usr +mkdir -p ${DESTDIR}/var/lock +mkdir -p ${DESTDIR}/var/log +mkdir -p ${DESTDIR}/opt/opengnsys; +mkdir -p ${DESTDIR}/ogboot; +mkdir -p ${DESTDIR}/boot; + +# Insert basic binaries +copy_exec /bin/bash-static /bin/bash +copy_exec /usr/bin/unionfs-fuse +copy_exec /sbin/mount.cifs +copy_exec /sbin/mount.smbfs +copy_exec /bin/lsmod + + +# Insert OpenGnsys Engine +#mkdir -p ${DESTDIR}/opt/opengnsys/lib/engine +#cp -prv /opt/opengnsys/client/lib/engine ${DESTDIR}/opt/opengnsys/lib/engine + +#rm -fr ${DESTDIR}/lib/modules/2.6.32-21-generic-pae/kernel/drivers/net/atl* +manual_add_modules cifs +manual_add_modules smbfs +manual_add_modules atl1e +manual_add_modules squashfs +manual_add_modules md4 + + + diff --git a/client/boot-tools/includes/etc/initramfs-tools/modules b/client/boot-tools/includes/etc/initramfs-tools/modules new file mode 100644 index 00000000..8bac1d4b --- /dev/null +++ b/client/boot-tools/includes/etc/initramfs-tools/modules @@ -0,0 +1,14 @@ +# List of modules that you want to include in your initramfs. +# +# Syntax: module_name [args ...] +# +# You must run update-initramfs(8) to effect this change. +# +# Examples: +# +# raid1 +# sd_mod +vga16b +vesafb +fbcon + diff --git a/client/boot-tools/includes/etc/initramfs-tools/scripts/ogfunctions b/client/boot-tools/includes/etc/initramfs-tools/scripts/ogfunctions new file mode 100644 index 00000000..ae76bf2a --- /dev/null +++ b/client/boot-tools/includes/etc/initramfs-tools/scripts/ogfunctions @@ -0,0 +1,631 @@ +#@file ogfunctions.lib +#@brief Librería o clase para la generación del 1erFS +#@class client +#@brief Funciones para la generación del primers sistema (initrd) +#@version 0.91 +#@warning License: GNU GPLv3+ + + +ogExportKernelParameters () +{ + GLOBAL="cat /proc/cmdline" + for i in `${GLOBAL}` + do + echo $i | grep "=" > /dev/null && export $i + done +return 0 +} + +ogExportVarEnvironment () +{ + export CFGINITRD="/tmp/initrd.cfg" + OGPROTOCOL="${ogprotocol:-smb}" + case "$OGPROTOCOL" in + nfs|NFS) + #export NFSROOTBOOT="/var/lib/tftpboot" + export SRCOGLIVE="/var/lib/tftpboot" && echo "SRCOGLIVE=$SRCOGLIVE" >> $CFGINITRD + #export NFSCLIENTDIR="/opt/opengnsys/client" + export SRCOGSHARE="/opt/opengnsys/client" && echo "SRCOGSHARE=$SRCOGSHARE" >> $CFGINITRD + #export NFSLOGDIR="/opt/opengnsys/log/clients" + export SRCOGLOG="/opt/opengnsys/log/clients" && echo "SRCOGLOG=$SRCOGLOG" >> $CFGINITRD + #export NFSIMGDIR="/opt/opengnsys/images" + export SRCOGIMAGES="/opt/opengnsys/images" && echo "SRCOGIMAGES=$SRCOGIMAGES" >> $CFGINITRD + ;; + smb|SMB|cifs|CIFS|samba|SAMBA) + export OPTIONS=" -o user=opengnsys,pass=og" + #export SMBROOTBOOT="tftpboot" && echo "SMBROOTBOOT=$SMBROOTBOOT" >> $CFGINITRD + export SRCOGLIVE="tftpboot" && echo "SRCOGLIVE=$SRCOGLIVE" >> $CFGINITRD + #export SMBCLIENTDIR="ogclient" && echo "SMBCLIENTDIR=$SMBCLIENTDIR" >> $CFGINITRD + export SRCOGSHARE="ogclient" && echo "SRCOGSHARE=$SRCOGSHARE" >> $CFGINITRD + #export SMBLOGDIR="oglog" && echo "SMBLOGDIR=$SMBLOGDIR" >> $CFGINITRD + export SRCOGLOG="oglog" && echo "SRCOGLOG=$SRCOGLOG" >> $CFGINITRD + #export SMBIMGDIR="ogimages" && echo "SMBIMGDIR=$SMBIMGDIR" >> $CFGINITRD + export SRCOGIMAGES="ogimages" && echo "SRCOGIMAGES=$SRCOGIMAGES" >> $CFGINITRD + ;; + local|LOCAL) + export SRCOGLIVE="local" + ;; + esac + #punto de acceso al boot-tools live + #export LOCALROOTBOOT="/opt/og2fs/tftpboot" && echo "LOCALROOTBOOT=$LOCALROOTBOOT" >> $CFGINITRD + export DSTOGLIVE="/opt/oglive/tftpboot" + #punto de montaje para unionfs + #export LOCALROOTRAM="/opt/og2fs/1stfs" && echo "LOCALROOTRAM=$LOCALROOTRAM" >> $CFGINITRD + export OGLIVERAMFS="/opt/oglive/ramfs" && echo "OGLIVERAMFS=$OGLIVERAMFS" >> $CFGINITRD + #punto de montaje donde se accede al 2nd FS mediante loop + #export LOCALROOTIMG="/opt/og2fs/2ndfs" && echo "LOCALROOTIMG=$LOCALROOTIMG" >> $CFGINITRD + export OGLIVEROOTFS="/opt/oglive/rootfs" && echo "OGLIVEROOTFS=$OGLIVEROOTFS" >> $CFGINITRD + #punto de union entre LOCALROOTIMG y LOCALROOTRAM + #export LOCALROOTUNION="/opt/og2fs/unionfs" && echo "LOCALROOTUNION=$LOCALROOTUNION" >> $CFGINITRD + export OGLIVEUNIONFS="/opt/oglive/unionfs" && echo "OGLIVEUNIONFS=$OGLIVEUNIONFS" >> $CFGINITRD + #etiquta para los dispositivos offline + export OGLIVELABEL="ogClient" + + #echo "puntos de montajes para los demas accesos" + #echo "acceso al client, engine, scritps, interfaz" + #export LOCALCLIENTDIR="/opt/opengnsys" && echo "LOCALCLIENTDIR=$LOCALCLIENTDIR" >> $CFGINITRD + export DSTOGSHARE="/opt/opengnsys" && echo "DSTOGSHARE=$DSTOGSHARE" >> $CFGINITRD + #export LOCALLOGDIR="/opt/opengnsys/log" && echo "LOCALLOGDIR=$LOCALLOGDIR" >> $CFGINITRD + export DSTOGLOG="/opt/opengnsys/log" && echo "DSTOGLOG=$DSTOGLOG" >> $CFGINITRD + #export LOCALIMGDIR="/opt/opengnsys/images" && echo "LOCALIMGDIR=$LOCALIMGDIR" >> $CFGINITRD + export DSTOGIMAGES="/opt/opengnsys/images" && echo "DSTOGIMAGES=$DSTOGIMAGES" >> $CFGINITRD + + ##INFORMACION DE OTRAS VARIABLES OBTENDIAS EN OTRAS FUNCIONES ogConfigureNetwork. + #DEVICE + #IPV4DDR + #IPV4BROADCAST + #IPV4NETMASK + #IPV4GATEWAY + #HOSTNAME + #INFORMACION de otras variasbles obteneidas desde ogGetROOTSERVER + #ROOTSERVER si ip=dhcp -> ROOTSERVER=NEXT-SERVER; si ip=host:rootserver:gw:mask:hostname:interfaz -> ROOTSERVER=rootserver + #BOOTIF -> si el gestor remoto es pxelinux.0 y se añade una linea más tipo "IPAPPEND 2" esta variable tendrá la mac de la interfaz. + #$OGSERVERLIVE + #$OGSERVERSHARE + #$OGSERVERLOG + #$OGSERVERIMAGES + return 0 +} + +ogConfigureRamfs () +{ + #mkdir -p $LOCALROOTBOOT + mkdir -p $DSTOGLIVE + #mkdir -p $LOCALROOTRAM + mkdir -p $OGLIVERAMFS + #mkdir -p $LOCALROOTIMG + mkdir -p $OGLIVEROOTFS + #mkdir -p $LOCALROOTUNION + mkdir -p $OGLIVEUNIONFS +} + +ogLoadNetModule () +{ + if [ -n "$ognetmodule" ] + then + echo "Cargando modulo de red $netmodule" + insmod `find /lib/modules/ -name ${netmodule}*` + fi +} + + +ogPostConfigureFS() +{ + # configuramos el /etc/hostname. + echo $HOSTNAME > /etc/hostname + + #configuramos el /etc/hosts + echo "127.0.0.1 localhost" > /etc/hosts + echo "$IPV4ADDR $HOSTNAME" >> /etc/hosts + + #configuramos el host.conf + echo "order hosts,bind" > /etc/host.conf + echo "multi on" >> /etc/host.conf + + #configuramos el dns + echo "nameserver $ogdns" > /etc/resolv.conf + + + # configuramos el /etc/networks + #read -e NETIP NETDEFAULT <<<$(route -n | grep eth0 | awk -F" " '{print $1}') + NETIP=$(route -n | grep eth0 | awk -F" " '{print $1}') && NETIP=$(echo $NETIP | cut -f1 -d" ") + echo "default 0.0.0.0" > /etc/networks + echo "loopback 127.0.0.0" >> /etc/networks + echo "link-local 169.254.0.0" >> /etc/networks + echo "localnet $NETIP" >> /etc/networks + #route + + echo "ogLive1.0.2" > /etc/debian_chroot + + #enlace si iniciamos desde ogprotocolo=local { cdrom, usb, cache } . + # monta el raiz del dispositivo local en /opt/og2fs/tftpboot - acceso al fichero .sqfs + # y monta el sistema root sqfs en /opt/og2fs/2ndfs + #[ "$LOCALMEDIA" == "CACHE" ] && ln -s /opt/oglive/tftpboot /opt/opengnsys/cache + #[ "$ogprotocol" == "local" ] && ln -s /opt/oglive/2ndfs/opt/opengnsys/* /opt/opengnsys/ + [ "$LOCALMEDIA" == "CACHE" ] && ln -s $DSTOGLIVE /opt/opengnsys/cache + [ "$ogprotocol" == "local" ] && ln -s ${OGLIVEROOTFS}/opt/opengnsys/* /opt/opengnsys/ + + +} + + + +#Requiere ogConfigureNetworking. +#Exporta ROOTSERVER +# si la red ha sido configurada con dhcp el valor de ROOTSERVER será el valor de next-server del dhcp +# si la red ha sido configurada con el parametro de kernel ip, será el segundo valor. + ## ip=iphost:ipnext-server:ipgateway:netmask:hostname:iface:none + ## ip=172.17.36.21:62.36.225.150:172.17.36.254:255.255.255.0:prueba1:eth0:none +ogGetROOTSERVER () +{ + # get nfs root from dhcp + if [ "x${NFSROOT}" = "xauto" ]; then + # check if server ip is part of dhcp root-path + if [ "${ROOTPATH#*:}" = "${ROOTPATH}" ]; then + NFSROOT=${ROOTSERVER}:${ROOTPATH} + else + NFSROOT=${ROOTPATH} + fi + + # nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>] + elif [ -n "${NFSROOT}" ]; then + # nfs options are an optional arg + if [ "${NFSROOT#*,}" != "${NFSROOT}" ]; then + NFSOPTS="-o ${NFSROOT#*,}" + fi + NFSROOT=${NFSROOT%%,*} + if [ "${NFSROOT#*:}" = "$NFSROOT" ]; then + NFSROOT=${ROOTSERVER}:${NFSROOT} + fi + fi + export ROOTSERVER + echo "ROOTSERVER=$ROOTSERVER" >> $CFGINITRD + + #si oglive no oglive=R + export OGSERVERIMAGES="${ogrepo:-$ROOTSERVER}" + export OGSERVERSHARE="${ogshare:-$ROOTSERVER}" + export OGSERVERLOG="${oglog:-$ROOTSERVER}" + export OGSERVERLIVE="${oglive:-$OGSERVERIMAGES}" + + return 0 +} + +#ogConnect +# parm 1 ip servidor TODO:dns +# parm 2 protocolo +# parm 3 punto de acceso remoto +# parm 4 punto de montaje local +# parm 5 acceso de lectura tipo ",ro" +ogConnect () +{ + SERVER=$1 + PROTOCOL=$2 + SRC=$3 + DST=$4 + READONLY=$5 + + case "$PROTOCOL" in + nfs) + nfsmount -o nolock${READONLY} ${SERVER}:${SRC} ${DST} + ;; + smb) + mount.cifs //${SERVER}/${SRC} ${DST} ${OPTIONS}${READONLY} + ;; + esac +} + +ogConnectOgLive () +{ +# Si ogprotocol=local, la funcion ogExportVar => SRCOGLIVE=local + if [ "$SRCOGLIVE" == "local" ] + then + echo "Montar imagen del sistema root desde dispositivo local" + for i in $(blkid /dev/s* | grep $OGLIVELABEL | awk -F: '{print $2}' | tr -d \"); do export $i; done + mount -t $TYPE LABEL=$LABEL $DSTOGLIVE + if [ $? != 0 ] + then + mount -t reiserfs LABEL=CACHE $DSTOGLIVE + export LOCALMEDIA=CACHE + fi + else +# Si ogprotocol es remoto. TODO en smb rw y en nfs ro?? + ogConnect $OGSERVERLIVE $OGPROTOCOL $SRCOGLIVE $DSTOGLIVE + fi +# Si el montaje ha sido correcto, tanto en local como en remoto. Procedemos con la union + ogMergeLive +} + + + +ogMergeLive() +{ +#Si existe en el punto de acceso del del oglive el fichero ogclient.sqfs +if [ -f $DSTOGLIVE/ogclient/ogclient.sqfs ] +then + cat /proc/mounts > /tmp/mtab.preunion + if [ "$og2nd" == "img" ] + then + #Montamos el ROOTFS tipo img, para desarrolladores + losetup /dev/loop0 $DSTOGLIVE/ogclient/ogclient.img -o 32256 + mount /dev/loop0 $OGLIVEROOTFS + else + ## Montamos el ROOTFS tipo squashfs + mount $DSTOGLIVE/ogclient/ogclient.sqfs $OGLIVEROOTFS -t squashfs -o loop + fi +# Realizamos la union entre el ogliveram(initrd) y el ogliverootfs(ogclient.sqfs) + for i in etc var lib bin sbin usr root boot; do + ogUnionLiveDir $i + done + cat /tmp/mtab.preunion > /etc/mtab +else + echo "Fichero imagen del cliente no encontrado" + return 1 +fi +} + + + + +#ogUnionLiveDir +#par 1 el directorio a unir. +# para el parmetro 1 (directorio), +ogUnionLiveDir() +{ + TMPDIR=/$1 #dir + FUSE_OPT="-o default_permissions -o allow_other -o use_ino -o nonempty -o suid" + UNION_OPT="-o cow -o noinitgroups" + UBIN="unionfs-fuse" + + mkdir -p $OGLIVERAMFS$TMPDIR + U1STDIR="${OGLIVERAMFS}${TMPDIR}=RW" + U2NDDIR="${OGLIVEROOTFS}${TMPDIR}=RO" + UNIONDIR=${OGLIVEUNIONFS}${TMPDIR} + mkdir -p $UNIONDIR + $UBIN $FUSE_OPT $UNION_OPT ${U1STDIR}:${U2NDDIR} $UNIONDIR + mount --bind $UNIONDIR $TMPDIR +} + + + + +ogConfigureLoopback() +{ +# for the portmapper we need localhost +ifconfig lo 127.0.0.1 +#/etc/init.d/portmap start +} + +ogConfigureNetworking() +{ +#echo "ogConfigureNetworking: Buscando interfaz a configurar DEVICE" +if [ -n "${BOOTIF}" ] +then + #echo " variable BOOTIF exportada con pxelinux.0 con valor $BOOTIF" + IP=$IPOPTS + temp_mac=${BOOTIF#*-} + # convert to typical mac address format by replacing "-" with ":" + bootif_mac="" + IFS='-' + for x in $temp_mac ; do + if [ -z "$bootif_mac" ]; then + bootif_mac="$x" + else + bootif_mac="$x:$bootif_mac" + fi + done + unset IFS + # look for devices with matching mac address, and set DEVICE to + # appropriate value if match is found. + for device in /sys/class/net/* ; do + if [ -f "$device/address" ]; then + current_mac=$(cat "$device/address") + if [ "$bootif_mac" = "$current_mac" ]; then + DEVICE=${device##*/} + break + fi + fi + done +else + #echo "variable BOOTIF no exportada, intentamos detectar que interfaz se ha iniciado" + IP=$ip + #TODO Detectar que interfaz se ha iniciado + case ${IP} in + none|off) + return 0 + ;; + ""|on|any) + # Bring up device + DEVICE=eth0 + ;; + dhcp|bootp|rarp|both) + DEVICE=eth0 + ;; + *) + DEVICE=`echo $IP | cut -f6 -d:` + ;; + esac +fi +if [ -z "${DEVICE}" ]; then + echo "variable DEVICE con valor $DEVICE no encontrada, llamamos de nuevo a ogconfigure_networking" + ogConfigureNetworking +fi + +[ -n "${DEVICE}" ] && [ -e /tmp/net-"${DEVICE}".conf ] && return 0 +#if [ -n "${DEVICE}" ] && [ -e /tmp/net-"${DEVICE}".conf ]; then +# echo "variable DEVICE con valor $DEVICE y fichero /tmp/net-$DEVICE encontrados" +# return 0 +#else +# echo "variable DEVICE con valor $DEVICE encontrada, procedemos a configurala y a crear el fichero /tmp/net-$DEVICE" +#fi + +# Activamos la interfaz antes de configurar. +ip address flush $DEVICE +ip link set dev $DEVICE up +# Si no se detecta señal portadora volver a configurar. +sleep 1 +CARRIER=$(cat /sys/class/net/${DEVICE}/carrier) +if [ "$CARRIER" != "1" ] +then + ogConfigureNetworking +fi + +# support ip options see linux sources +# Documentation/filesystems/nfsroot.txt +# Documentation/frv/booting.txt +for ROUNDTTT in 2 3 4 6 9 16 25 36 64 100; do + # The NIC is to be configured if this file does not exist. + # Ip-Config tries to create this file and when it succeds + # creating the file, ipconfig is not run again. + if [ -e /tmp/net-"${DEVICE}".conf ]; then + break; + fi + case ${IP} in + none|off) + return 0 + ;; + ""|on|any) + # Bring up device + echo "Setting $DEVICE with option:on|any and Variable IP= $IP: ipconfig -t ${ROUNDTTT} ${DEVICE} " + ipconfig -t ${ROUNDTTT} ${DEVICE} + ;; + dhcp|bootp|rarp|both) + echo "Setting $DEVICE with option:dhcp|bootp|rarp|both and Variable IP= $IP: ipconfig -t ${ROUNDTTT} -c ${IP} -d ${DEVICE} " + ipconfig -t ${ROUNDTTT} -c ${IP} -d ${DEVICE} + ;; + *) + echo "Setting $DEVICE with option * and Variable IP= $IP: ipconfig -t ${ROUNDTTT} -d $IP " + ipconfig -t ${ROUNDTTT} -d $IP + # grab device entry from ip option + NEW_DEVICE=${IP#*:*:*:*:*:*} + if [ "${NEW_DEVICE}" != "${IP}" ]; then + NEW_DEVICE=${NEW_DEVICE%:*} + else + # wrong parse, possibly only a partial string + NEW_DEVICE= + fi + if [ -n "${NEW_DEVICE}" ]; then + DEVICE="${NEW_DEVICE}" + fi + ;; + esac +done + +# source ipconfig output +if [ -n "${DEVICE}" ]; then + . /tmp/net-${DEVICE}.conf + DEVICECFG="/tmp/net-${DEVICE}.conf" + export DEVICECFG + export DEVICE + echo "DEVICE=$DEVICE" >> $CFGINITRD + echo "DEVICECFG=$DEVICECFG" >> $CFGINITRD + echo "exportando variable DEVICE con valor = $DEVICE y el DEVICECFG con valor $DEVICECFG" +else + # source any interface as not exaclty specified + . /tmp/net-*.conf +fi +} + + ##################################################################### +# Ask yesno question. +# +# Usage: yesno OPTIONS QUESTION +# +# Options: +# --timeout N Timeout if no input seen in N seconds. +# --default ANS Use ANS as the default answer on timeout or +# if an empty answer is provided. +# +# Exit status is the answer. 0=yes 1=no + +ogYesNo() +{ + local ans + local ok=0 + local timeout=0 + local default + local t + + while [[ "$1" ]] + do + case "$1" in + --default) + shift + default=$1 + if [[ ! "$default" ]]; then error "Missing default value"; fi + t=$(echo $default | tr '[:upper:]' '[:lower:]') + + if [[ "$t" != 'y' && "$t" != 'yes' && "$t" != 'n' && "$t" != 'no' ]]; then + error "Illegal default answer: $default" + fi + default=$t + shift + ;; + + --timeout) + shift + timeout=$1 + if [[ ! "$timeout" ]]; then error "Missing timeout value"; fi + #if [[ ! "$timeout" =~ ^[0-9][0-9]*$ ]]; then error "Illegal timeout value: $timeout"; fi + shift + ;; + + -*) + error "Unrecognized option: $1" + ;; + + *) + break + ;; + esac + done + + if [[ $timeout -ne 0 && ! "$default" ]]; then + error "Non-zero timeout requires a default answer" + fi + + if [[ ! "$*" ]]; then error "Missing question"; fi + + while [[ $ok -eq 0 ]] + do + if [[ $timeout -ne 0 ]]; then + if ! read -t $timeout -p "$*" ans; then + ans=$default + else + # Turn off timeout if answer entered. + timeout=0 + if [[ ! "$ans" ]]; then ans=$default; fi + fi + else + read -p "$*" ans + if [[ ! "$ans" ]]; then + ans=$default + else + ans=$(echo $ans | tr '[:upper:]' '[:lower:]') + fi + fi + + if [[ "$ans" == 'y' || "$ans" == 'yes' || "$ans" == 'n' || "$ans" == 'no' ]]; then + ok=1 + fi + + if [[ $ok -eq 0 ]]; then warning "Valid answers are: yes y no n"; fi + done + [[ "$ans" = "y" || "$ans" == "yes" ]] +} + + +### # borrar + +ogConectROOTSERVER () +{ +local OPTIONS +#params a detectar +if [ $ogrepo ] +then + # Validar si la ip es correcta + ROOTREPO=$ogrepo +else + ROOTREPO=$ROOTSERVER +fi + +case "$ogprotocol" in + local) + echo "Montar imagen del sistema root desde dispositivo local" + for i in $(blkid /dev/s* | grep ogClient | awk -F: '{print $2}' | tr -d \"); do export $i; done + mount -t $TYPE LABEL=$LABEL $LOCALROOTBOOT + if [ $? != 0 ] + then + mount -t reiserfs LABEL=CACHE $LOCALROOTBOOT + export LOCALMEDIA=CACHE + fi + ;; + httfs) + echo "protocolo httfs aun no soportado" + ;; + sshfs) + echo "protocolo sshfs aun no soportado" + ;; + smb) + echo "Preparando conexión con el Repositorio $ROOTSERVER por $ogprotocol" + OPTIONS=" -o user=opengnsys,pass=og" + mount.cifs //${ROOTSERVER}/${SMBROOTBOOT} $LOCALROOTBOOT $OPTIONS + mount.cifs //${ROOTSERVER}/${SMBCLIENTDIR} $LOCALCLIENTDIR $OPTIONS + mount.cifs //${ROOTSERVER}/${SMBLOGDIR} $LOCALLOGDIR $OPTIONS + + mount.cifs //${ROOTREPO}/${SMBIMGDIR} $LOCALIMGDIR ${OPTIONS},ro + ;; + nfs) + echo "Preparando conexión con el Repositorio $ROOTSERVER por $ogprotocol" + nfsmount -o nolock $ROOTSERVER:$NFSROOTBOOT $LOCALROOTBOOT + nfsmount -o nolock,ro $ROOTSERVER:$NFSCLIENTDIR $LOCALCLIENTDIR + nfsmount -o nolock $ROOTSERVER:$NFSLOGDIR $LOCALLOGDIR + + nfsmount -o nolock,ro $ROOTREPO:$NFSIMGDIR $LOCALIMGDIR + ;; +esac +} + + ogMerge2ndFile() +{ +if [ -f $LOCALROOTBOOT/ogclient/ogclient.sqfs ] +then + cat /proc/mounts > /tmp/mtab.preunion + if [ "$og2nd" == "img" ] + then + #para acceder al img + losetup /dev/loop0 $LOCALROOTBOOT/ogclient/ogclient.img -o 32256 + mount /dev/loop0 $LOCALROOTIMG + else + ## para acceder al squashfs + mount $LOCALROOTBOOT/ogclient/ogclient.sqfs $LOCALROOTIMG -t squashfs -o loop + fi + for i in etc var lib bin sbin usr root boot; do + unionmount $i + done + cat /tmp/mtab.preunion > /etc/mtab +else + echo "Fichero imagen del cliente no encontrado" + return 1 +fi +} + +unionmount() +{ + tmpdir=/$1 #dir + FUSE_OPT="-o default_permissions -o allow_other -o use_ino -o nonempty -o suid" + UNION_OPT="-o cow -o noinitgroups" + UBIN="unionfs-fuse" + #UPATH="/unionfs" + #LOCALROOTIMG="/opt/og2fs/2ndfs" + #LOCALROOTRAM="/opt/og2fs/1stfs" #/unionfs/host #punto de montaje para unionfs + #LOCALROOTUNION=/opt/og2fs/unionfs/" #/unionfs/union #punto de union entreo LOCALROOTIMG y LOCALROOTRAM + #mkdir -p $LOCALROOTRAM #/unionfs/host + #mkdir -p $LOCALROOTUNION #/unionfs/union + mkdir -p $LOCALROOTRAM$tmpdir + #mount --bind /$tmpdir $LOCALROOTRAM$tmpdir + U1STDIR="${LOCALROOTRAM}${tmpdir}=RW" + U2NDDIR="${LOCALROOTIMG}${tmpdir}=RO" + UNIONDIR=$LOCALROOTUNION$tmpdir + mkdir -p $UNIONDIR + $UBIN $FUSE_OPT $UNION_OPT ${U1STDIR}:${U2NDDIR} $UNIONDIR + mount --bind $UNIONDIR $tmpdir +} + + +unionmountOLD() +{ + FUSE_OPT="-o default_permissions -o allow_other -o use_ino -o nonempty -o suid" + UNION_OPT="-o cow -o noinitgroups" + UPATH="/unionfs" + UBIN="unionfs-fuse" + mkdir -p /unionfs/host + mkdir -p /unionfs/union + dir=$1 + mkdir -p /unionfs/host/$dir + #mount --bind /$dir /unionfs/host/$dir + mkdir -p /unionfs/union/$dir + host="/unionfs/host/${dir}=RW" + common="/opt/og2fs/${dir}=RO" + $UBIN $FUSE_OPT $UNION_OPT ${host}:${common} /unionfs/union/$dir + mount --bind /unionfs/union/$dir /$dir +} diff --git a/client/boot-tools/includes/etc/initramfs-tools/scripts/oginit b/client/boot-tools/includes/etc/initramfs-tools/scripts/oginit new file mode 100755 index 00000000..94226a1f --- /dev/null +++ b/client/boot-tools/includes/etc/initramfs-tools/scripts/oginit @@ -0,0 +1,133 @@ +# OpenGnsys oginit -*- shell-script -*- + +#@file oginit +#@brief Guion modificador inicio initrd para OpenGnSys +#@warning +#@version 0.1 - basado en ROOTfs +#@author Antonio J. Doblas Viso. Universidad de Málaga +#@date 2009/00/00 +#@version 0.2 - basado en el instalador de ubunto +#@author Alejandro Castillo +#@author Ramón Gómez +#@author Irina +#@author Antonio Doblas +#@date 2010/00/00 +#@version 0.7 - Generación limpia con mkinitrd, busybox +#@author Antonio J. Doblas Viso. Universidad de Málaga. EVLT. +#@date 2010/05/24 +#@version 0.8 - Integración con FileSystem externo +#@author Antonio J. Doblas Viso. Universidad de Málaga. EVLT. +#@date 2010/06/24 +#@version 0.8.1 - UnionFS + squasfs +#@author Antonio J. Doblas Viso. Universidad de Málaga. EVLT. +#@date 2010/06/29 +#@version 1.0. - Adaptacion variables. Corrección enlace red +#@author Antonio J. Doblas Viso. Universidad de Málaga. EVLT. +#@date 2011/06/16 +#*/ + + + + + +# Parameter: Where to mount the filesystem +mountroot () +{ + [ "$quiet" != "y" ] && log_begin_msg "Running OpenGnsys /scripts/og-top" + run_scripts /scripts/og-top + [ "$quiet" != "y" ] && log_end_msg + + # If the root device hasn't shown up yet, give it a little while + # to deal with removable devices + + . /scripts/functions + . /scripts/ogfunctions + + sleep 2 + + [ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before get OG variables: y/N " + [ $? == 0 ] && sh || echo " " + set -a + log_success_msg "Checking kernel parameters" + ogExportKernelParameters + log_success_msg "Checking Opengnys Environmnet" + ogExportVarEnvironment + + [ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before configure ramfs structure for OG: y/N " + [ $? == 0 ] && sh || echo " " + ogConfigureRamfs + + [ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before configure netmoule specified in kernel parameters: y/N " + [ $? == 0 ] && sh || echo " " + ogLoadNetModule + + #[ "$quiet" != "y" ] && log_begin_msg "Running /scripts/og-premount" + #run_scripts /scripts/og-premount + #[ "$quiet" != "y" ] && log_end_msg + + [ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before configure networking: y/N " + [ $? == 0 ] && sh || echo " " + ogConfigureNetworking + log_success_msg "config networking" + ogConfigureLoopback + log_success_msg "config loopback" + + + [ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before detect rootserver: y/N " + [ $? == 0 ] && sh || echo " " + ogGetROOTSERVER && log_success_msg "Get Info from pxe server and ckeck distribuited OG services " + + [ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before connect and merging the rootfs -ogLive- : y/N " + [ $? == 0 ] && sh || echo " " + ogConnectOgLive && log_success_msg "Merge the initrd with the remote rootfs -ogLive-" || sh + # si es necesario realiza ogConnect $OGSERVERLIVE $OGPROTOCOL $SRCOGLIVE $DSTOGLIVE + + [ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before connect with client dir SHARE -engine,scripts,interface, -share- : y/N " + [ $? == 0 ] && sh || echo " " + ogConnect $OGSERVERSHARE $OGPROTOCOL $SRCOGSHARE $DSTOGSHARE + + [ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before connect with client dir LOG STORAGE : y/N " + [ $? == 0 ] && sh || echo " " + ogConnect $OGSERVERLOG $OGPROTOCOL $SRCOGLOG $DSTOGLOG + + [ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before connect with REPOSITORY STORAGE : y/N " + [ $? == 0 ] && sh || echo " " + ogConnect $OGSERVERIMAGES $OGPROTOCOL $SRCOGIMAGES $DSTOGIMAGES + + + + #[ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before conect with og Services : y/N " + #[ $? == 0 ] && sh || echo " " + #ogConectROOTSERVER && log_success_msg "Conecting with og services" || sh + + + #[ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before merge the Second File System with initrd (First File System) : y/N " + #[ $? == 0 ] && sh || echo " " + #ogMerge2ndFile && log_success_msg "Merge onto Second File System" + + + ####[ "$quiet" != "y" ] && log_begin_msg "Running /scripts/og-bottom" + ####run_scripts /scripts/og-bottom + ####[ "$quiet" != "y" ] && log_end_msg + + + [ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before doing the postconfiguration: y/N " + [ $? == 0 ] && sh || echo " " + ogPostConfigureFS + setupcon -k + + [ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before calling oginit with /etc/inittab: y/N " + [ $? == 0 ] && sh || echo " " + +if [ "$oginit" ] +then + exec $oginit +else + exec init +fi + + + + + +} diff --git a/client/boot-tools/includes/etc/inittab b/client/boot-tools/includes/etc/inittab new file mode 100644 index 00000000..6d3277fc --- /dev/null +++ b/client/boot-tools/includes/etc/inittab @@ -0,0 +1,14 @@ +# This is run first except when booting in single-user mode +# +#::sysinit:/opt/opengnsys/etc/preinit/defaultTESTING.sh +# /bin/sh invocations on selected ttys +# +# Start an "askfirst" shell on the console (whatever that may be) +#::askfirst:/bin/sh +# Start an "askfirst" shell on /dev/tty2-4 +#tty1::respawn:/sbin/getty 38400 tty1 +tty1::respawn:/opt/opengnsys/etc/preinit/default.sh +tty2::respawn:/sbin/getty 38400 tty2 +tty3::respawn:/sbin/getty 38400 tty3 +tty4::respawn:/sbin/getty 38400 tty4 +tty5::respawn:/sbin/getty 38400 tty5 diff --git a/client/boot-tools/includes/etc/modprobe.d/blacklist-framebuffer.conf b/client/boot-tools/includes/etc/modprobe.d/blacklist-framebuffer.conf new file mode 100644 index 00000000..8b047e4e --- /dev/null +++ b/client/boot-tools/includes/etc/modprobe.d/blacklist-framebuffer.conf @@ -0,0 +1,30 @@ +# Framebuffer drivers are generally buggy and poorly-supported, and cause +# suspend failures, kernel panics and general mayhem. For this reason we +# never load them automatically. +blacklist aty128fb +blacklist atyfb +#blacklist radeonfb +blacklist cirrusfb +blacklist cyber2000fb +blacklist cyblafb +blacklist gx1fb +blacklist hgafb +blacklist i810fb +blacklist intelfb +blacklist kyrofb +blacklist lxfb +blacklist matroxfb_base +blacklist neofb +blacklist nvidiafb +blacklist pm2fb +blacklist rivafb +blacklist s1d13xxxfb +blacklist savagefb +blacklist sisfb +blacklist sstfb +blacklist tdfxfb +blacklist tridentfb +#blacklist vesafb +blacklist vfb +blacklist viafb +blacklist vt8623fb diff --git a/client/boot-tools/includes/etc/mtab b/client/boot-tools/includes/etc/mtab new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/client/boot-tools/includes/etc/mtab diff --git a/client/boot-tools/includes/etc/network/interfaces b/client/boot-tools/includes/etc/network/interfaces new file mode 100644 index 00000000..dbe43582 --- /dev/null +++ b/client/boot-tools/includes/etc/network/interfaces @@ -0,0 +1,4 @@ +auto lo +iface lo inet loopback +auto eth0 +iface eth0 inet dhcp
\ No newline at end of file diff --git a/client/boot-tools/includes/etc/profile.d/loadenviron.sh b/client/boot-tools/includes/etc/profile.d/loadenviron.sh new file mode 100755 index 00000000..083ee54b --- /dev/null +++ b/client/boot-tools/includes/etc/profile.d/loadenviron.sh @@ -0,0 +1,93 @@ +#!/bin/bash + +### NOTA este archivo se sobreescribe al conectarse con el ogSHARE + + + + +#/** +#@file loadenviron.sh +#@brief Script de carga de la API de funciones de OpenGNSys. +#@warning License: GNU GPLv3+ +#@version 0.9 +#@author Ramon Gomez, ETSII Universidad de Sevilla +#@date 2009-10-10 +#*/ + + GLOBAL="cat /proc/cmdline" + for i in `${GLOBAL}` + do + echo $i | grep "=" > /dev/null && export $i + done + + +# FIXME Temporal +export LANG="${LANG:-es_ES}" + +#/// Directorios del projecto OpenGNSys. +export OPENGNSYS="${OPENGNSYS:-/opt/opengnsys}" +if [ -d $OPENGNSYS ]; then + export OGBIN=$OPENGNSYS/bin + export OGETC=$OPENGNSYS/etc + export OGLIB=$OPENGNSYS/lib + export OGAPI=$OGLIB/engine/bin + export OGSCRIPTS=$OPENGNSYS/scripts + export OGIMG=$OPENGNSYS/images + export OGCAC=$OPENGNSYS/cache + export OGLOG=$OPENGNSYS/log + +# export PATH=$OGBIN:$OGAPI:$OGSCRIPTS:$PATH + # export LD_LIBRARY_PATH=$OGLIB:$LD_LIBRARY_PATH + + #/// Cargar fichero de idioma. + LANGFILE=$OGETC/lang.$LANG.conf + if [ -f $LANGFILE ]; then + source $LANGFILE + #for i in $(grep "^[a-zA-Z].*=" $LANGFILE | cut -f1 -d=); do + for i in $(awk -F= '{if (NF==2) print $1}' $LANGFILE); do + export $i + done + fi + #/// Cargar API de funciones. + echo "$MSG_LOADAPI" + for i in $OGAPI/*.lib; do + source $i + done + for i in $(typeset -F | cut -f3 -d" "); do + export -f $i + done + # Carga de las API testing + if [ "$engine" = "testing" ] + then + for i in $OGAPI/*.testing; do + source $i + done + fi + + source /tmp/net-eth* 2>/dev/null + + # Añadir dependencia de arquitectura + ARCH=$(ogGetArch) + if [ -n "$ARCH" ]; then + # export PATH=$OGBIN/$ARCH:$PATH + # export LD_LIBRARY_PATH=$OGLIB/$ARCH:$LD_LIBRARY_PATH + export PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin:/bin:/usr/bin:/usr/local/bin:/opt/og2fs/2ndfs/opt/drbl/sbin + export PATH=$OGSCRIPTS:$PATH:$OGAPI:$OGBIN:$OGBIN/$ARCH + fi + # Fichero de registros. + export OGLOGFILE="$OGLOG/$(ogGetIpAddress).log" + # FIXME Pruebas para grupos de ordenadores + #export OGGROUP=$(ogGetGroup) + export OGGROUP=aula3 +fi + +#/// Declaración de códigos de error. +export OG_ERR_FORMAT=1 # Formato de ejecución incorrecto. +export OG_ERR_NOTFOUND=2 # Fichero o dispositivo no encontrado. +export OG_ERR_PARTITION=3 # Error en partición de disco. +export OG_ERR_LOCKED=4 # Partición o fichero bloqueado. +export OG_ERR_IMAGE=5 # Error al crear o restaurar una imagen. +export OG_ERR_NOTOS=6 # Sin sistema operativo. +export OG_ERR_NOTEXEC=7 # Programa o función no ejecutable. + + diff --git a/client/boot-tools/includes/etc/ssh/ssh_config b/client/boot-tools/includes/etc/ssh/ssh_config new file mode 100644 index 00000000..7f9319dc --- /dev/null +++ b/client/boot-tools/includes/etc/ssh/ssh_config @@ -0,0 +1,56 @@ + +# This is the ssh client system-wide configuration file. See +# ssh_config(5) for more information. This file provides defaults for +# users, and the values can be changed in per-user configuration files +# or on the command line. + +# Configuration data is parsed as follows: +# 1. command line options +# 2. user-specific file +# 3. system-wide file +# Any configuration value is only changed the first time it is set. +# Thus, host-specific definitions should be at the beginning of the +# configuration file, and defaults at the end. + +# Site-wide defaults for some commonly used options. For a comprehensive +# list of available options, their meanings and defaults, please see the +# ssh_config(5) man page. + +Host * +# ForwardAgent no +# ForwardX11 no +# ForwardX11Trusted yes +# RhostsRSAAuthentication no +# RSAAuthentication yes +# PasswordAuthentication yes + HostbasedAuthentication no +# GSSAPIAuthentication no +# GSSAPIDelegateCredentials no +# GSSAPIKeyExchange no +# GSSAPITrustDNS no +# BatchMode no +# CheckHostIP yes +# AddressFamily any +# ConnectTimeout 0 +# StrictHostKeyChecking ask +# IdentityFile ~/.ssh/identity +# IdentityFile ~/.ssh/id_rsa +# IdentityFile ~/.ssh/id_dsa +# Port 22 +# Protocol 2,1 +# Cipher 3des +# Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc +# MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160 +# EscapeChar ~ +# Tunnel no +# TunnelDevice any:any +# PermitLocalCommand no +# VisualHostKey no + SendEnv LANG LC_* +# HashKnownHosts yes + GSSAPIAuthentication yes + GSSAPIDelegateCredentials no + + StrictHostKeyChecking no + UserKnownHostsFile=/dev/null + diff --git a/client/boot-tools/includes/etc/ssh/sshd_config b/client/boot-tools/includes/etc/ssh/sshd_config new file mode 100644 index 00000000..80900684 --- /dev/null +++ b/client/boot-tools/includes/etc/ssh/sshd_config @@ -0,0 +1,86 @@ +# Package generated configuration file +# See the sshd_config(5) manpage for details + +# What ports, IPs and protocols we listen for +Port 22 +# Use these options to restrict which interfaces/protocols sshd will bind to +#ListenAddress :: +#ListenAddress 0.0.0.0 +Protocol 2 +# HostKeys for protocol version 2 +HostKey /etc/ssh/ssh_host_rsa_key +HostKey /etc/ssh/ssh_host_dsa_key +#Privilege Separation is turned on for security +UsePrivilegeSeparation no + +# Lifetime and size of ephemeral version 1 server key +KeyRegenerationInterval 3600 +ServerKeyBits 768 + +# Logging +SyslogFacility AUTH +LogLevel INFO + +# Authentication: +LoginGraceTime 120 +PermitRootLogin yes +StrictModes yes + +RSAAuthentication yes +PubkeyAuthentication yes +#AuthorizedKeysFile %h/.ssh/authorized_keys + +# Don't read the user's ~/.rhosts and ~/.shosts files +IgnoreRhosts yes +# For this to work you will also need host keys in /etc/ssh_known_hosts +RhostsRSAAuthentication no +# similar for protocol version 2 +HostbasedAuthentication no +# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication +#IgnoreUserKnownHosts yes + +# To enable empty passwords, change to yes (NOT RECOMMENDED) +PermitEmptyPasswords no + +# Change to yes to enable challenge-response passwords (beware issues with +# some PAM modules and threads) +ChallengeResponseAuthentication no + +# Change to no to disable tunnelled clear text passwords +#PasswordAuthentication yes + +# Kerberos options +#KerberosAuthentication no +#KerberosGetAFSToken no +#KerberosOrLocalPasswd yes +#KerberosTicketCleanup yes + +# GSSAPI options +#GSSAPIAuthentication no +#GSSAPICleanupCredentials yes + +X11Forwarding yes +X11DisplayOffset 10 +PrintMotd no +PrintLastLog yes +TCPKeepAlive yes +#UseLogin no + +#MaxStartups 10:30:60 +#Banner /etc/issue.net + +# Allow client to pass locale environment variables +AcceptEnv LANG LC_* + +Subsystem sftp /usr/lib/openssh/sftp-server + +# Set this to 'yes' to enable PAM authentication, account processing, +# and session processing. If this is enabled, PAM authentication will +# be allowed through the ChallengeResponseAuthentication and +# PasswordAuthentication. Depending on your PAM configuration, +# PAM authentication via ChallengeResponseAuthentication may bypass +# the setting of "PermitRootLogin without-password". +# If you just want the PAM account and session checks to run without +# PAM authentication, then enable this but set PasswordAuthentication +# and ChallengeResponseAuthentication to 'no'. +UsePAM yes diff --git a/client/boot-tools/includes/lib/plymouth/themes/opengnsys/box.png b/client/boot-tools/includes/lib/plymouth/themes/opengnsys/box.png Binary files differnew file mode 100644 index 00000000..54876e68 --- /dev/null +++ b/client/boot-tools/includes/lib/plymouth/themes/opengnsys/box.png diff --git a/client/boot-tools/includes/lib/plymouth/themes/opengnsys/bullet.png b/client/boot-tools/includes/lib/plymouth/themes/opengnsys/bullet.png Binary files differnew file mode 100644 index 00000000..dd527369 --- /dev/null +++ b/client/boot-tools/includes/lib/plymouth/themes/opengnsys/bullet.png diff --git a/client/boot-tools/includes/lib/plymouth/themes/opengnsys/entry.png b/client/boot-tools/includes/lib/plymouth/themes/opengnsys/entry.png Binary files differnew file mode 100644 index 00000000..a9f4157b --- /dev/null +++ b/client/boot-tools/includes/lib/plymouth/themes/opengnsys/entry.png diff --git a/client/boot-tools/includes/lib/plymouth/themes/opengnsys/lock.png b/client/boot-tools/includes/lib/plymouth/themes/opengnsys/lock.png Binary files differnew file mode 100644 index 00000000..a0f8c12f --- /dev/null +++ b/client/boot-tools/includes/lib/plymouth/themes/opengnsys/lock.png diff --git a/client/boot-tools/includes/lib/plymouth/themes/opengnsys/logoopengnsys.png b/client/boot-tools/includes/lib/plymouth/themes/opengnsys/logoopengnsys.png Binary files differnew file mode 100644 index 00000000..c87ca25e --- /dev/null +++ b/client/boot-tools/includes/lib/plymouth/themes/opengnsys/logoopengnsys.png diff --git a/client/boot-tools/includes/lib/plymouth/themes/opengnsys/opengnsys.plymouth b/client/boot-tools/includes/lib/plymouth/themes/opengnsys/opengnsys.plymouth new file mode 100644 index 00000000..a974b70c --- /dev/null +++ b/client/boot-tools/includes/lib/plymouth/themes/opengnsys/opengnsys.plymouth @@ -0,0 +1,11 @@ +[Plymouth Theme] +Name=Script +Description=Script example plugin. +ModuleName=script + +[script] +ImageDir=/lib/plymouth/themes/opengnsys +ScriptFile=/lib/plymouth/themes/opengnsys/opengnsys.script + +[script-env-vars] +example_env_var=example env var value diff --git a/client/boot-tools/includes/lib/plymouth/themes/opengnsys/opengnsys.png b/client/boot-tools/includes/lib/plymouth/themes/opengnsys/opengnsys.png Binary files differnew file mode 100644 index 00000000..c87ca25e --- /dev/null +++ b/client/boot-tools/includes/lib/plymouth/themes/opengnsys/opengnsys.png diff --git a/client/boot-tools/includes/lib/plymouth/themes/opengnsys/opengnsys.script b/client/boot-tools/includes/lib/plymouth/themes/opengnsys/opengnsys.script new file mode 100644 index 00000000..dc0c8541 --- /dev/null +++ b/client/boot-tools/includes/lib/plymouth/themes/opengnsys/opengnsys.script @@ -0,0 +1,203 @@ +# This is an example plymouth plugin script + +Window.SetBackgroundTopColor(0, 0, 0); +Window.SetBackgroundBottomColor(0, 0, 0); + +#logo.image = Image("special://logo"); +logo.image = Image ("opengnsys.png"); +logo.sprite = Sprite(logo.image); +logo.opacity_angle = 0; + +fun refresh_callback () + { + if (status == "normal") + { + logo.opacity_angle += ((2 * 3.14) / 50) * 0.5; # 0.5 HZ + min_opacity = 0.3; + opacity = (Math.Cos(logo.opacity_angle) + 1) / 2; + opacity *= 1 - min_opacity; + opacity += min_opacity; + logo.sprite.SetX (Window.GetX() + Window.GetWidth() / 2 - logo.image.GetWidth() / 2); + logo.sprite.SetY (Window.GetY() + Window.GetHeight() / 2 - logo.image.GetHeight() / 2); + logo.sprite.SetOpacity (opacity); + } + else + { + logo.sprite.SetX (0); + logo.sprite.SetY (0); + logo.sprite.SetOpacity (1); + } + } + +Plymouth.SetRefreshFunction (refresh_callback); + +#----------------------------------------- Dialogue -------------------------------- + +status = "normal"; + +fun dialog_setup() + { + local.box; + local.lock; + local.entry; + + box.image = Image("box.png"); + lock.image = Image("lock.png"); + entry.image = Image("entry.png"); + + box.sprite = Sprite(box.image); + box.x = Window.GetX() + Window.GetWidth() / 2 - box.image.GetWidth ()/2; + box.y = Window.GetY() + Window.GetHeight() / 2 - box.image.GetHeight()/2; + box.z = 10000; + box.sprite.SetPosition(box.x, box.y, box.z); + + lock.sprite = Sprite(lock.image); + lock.x = box.x + box.image.GetWidth()/2 - (lock.image.GetWidth() + entry.image.GetWidth()) / 2; + lock.y = box.y + box.image.GetHeight()/2 - lock.image.GetHeight()/2; + lock.z = box.z + 1; + lock.sprite.SetPosition(lock.x, lock.y, lock.z); + + entry.sprite = Sprite(entry.image); + entry.x = lock.x + lock.image.GetWidth(); + entry.y = box.y + box.image.GetHeight()/2 - entry.image.GetHeight()/2; + entry.z = box.z + 1; + entry.sprite.SetPosition(entry.x, entry.y, entry.z); + + global.dialog.box = box; + global.dialog.lock = lock; + global.dialog.entry = entry; + global.dialog.bullet_image = Image("bullet.png"); + dialog_opacity (1); + } + +fun dialog_opacity(opacity) + { + dialog.box.sprite.SetOpacity (opacity); + dialog.lock.sprite.SetOpacity (opacity); + dialog.entry.sprite.SetOpacity (opacity); + for (index = 0; dialog.bullet[index]; index++) + { + dialog.bullet[index].sprite.SetOpacity(opacity); + } + } + +fun display_normal_callback () + { + global.status = "normal"; + if (global.dialog) + dialog_opacity (0); + } + +fun display_password_callback (prompt, bullets) + { + global.status = "password"; + if (!global.dialog) + dialog_setup(); + else + dialog_opacity(1); + for (index = 0; dialog.bullet[index] || index < bullets; index++) + { + if (!dialog.bullet[index]) + { + dialog.bullet[index].sprite = Sprite(dialog.bullet_image); + dialog.bullet[index].x = dialog.entry.x + index * dialog.bullet_image.GetWidth(); + dialog.bullet[index].y = dialog.entry.y + dialog.entry.image.GetHeight() / 2 - dialog.bullet_image.GetHeight() / 2; + dialog.bullet[index].z = dialog.entry.z + 1; + dialog.bullet[index].sprite.SetPosition(dialog.bullet[index].x, dialog.bullet[index].y, dialog.bullet[index].z); + } + if (index < bullets) + dialog.bullet[index].sprite.SetOpacity(1); + else + dialog.bullet[index].sprite.SetOpacity(0); + } + } + +Plymouth.SetDisplayNormalFunction(display_normal_callback); +Plymouth.SetDisplayPasswordFunction(display_password_callback); + +#----------------------------------------- Progress Bar -------------------------------- + +progress_box.original_image = Image("progress_box.png"); +progress_box.image = progress_box.original_image.Scale(Window.GetWidth (), progress_box.original_image.GetHeight()); +progress_box.sprite = Sprite(progress_box.image); + +progress_box.x = Window.GetX() + Window.GetWidth() / 2 - progress_box.image.GetWidth() / 2; +progress_box.y = Window.GetY() + Window.GetHeight() - progress_box.image.GetHeight(); +progress_box.sprite.SetPosition(progress_box.x, progress_box.y, 0); + +progress_bar.original_image = Image("progress_bar.png"); +progress_bar.image = progress_bar.original_image.Scale(0, progress_box.image.GetHeight()); +progress_bar.sprite = Sprite(); + +progress_bar.x = Window.GetX() + Window.GetWidth() / 2 - progress_box.image.GetWidth() / 2; +progress_bar.y = Window.GetY() + Window.GetHeight() - progress_box.image.GetHeight(); +progress_bar.sprite.SetPosition(progress_bar.x, progress_bar.y, 1); + +fun progress_callback (duration, progress) + { + if (progress_bar.image.GetWidth () != Math.Int (progress_bar.original_image.GetWidth () * progress)) + { + progress_bar.image = progress_bar.original_image.Scale(progress_box.image.GetWidth(progress_box.image) * progress, progress_box.image.GetHeight()); + progress_bar.sprite.SetImage (progress_bar.image); + } + } + +Plymouth.SetBootProgressFunction(progress_callback); + +#----------------------------------------- Quit -------------------------------- + +fun quit_callback () +{ + logo.sprite.SetOpacity (1); +} + +Plymouth.SetQuitFunction(quit_callback); + +#----------------------------------------- Message -------------------------------- + +message_sprite = Sprite(); +message_sprite.SetPosition(10, 10, 10000); + +fun message_callback (text) +{ + my_image = Image.Text(text, 0.6, 0.6, 0.6); + message_sprite.SetImage(my_image); + message_sprite.SetX(Window.GetWidth () / 2 - my_image.GetWidth() / 2); + message_sprite.SetY((Window.GetHeight () * 0.7) - (2 * my_image.GetHeight())); + message.sprite.SetZ(11); +} + +Plymouth.SetMessageFunction(message_callback); + + +#----------------------------------------- Status Update -------------------------------- + +statusupdate_sprite = Sprite(); + +fun StringLength(string) { + + index = 0; + str = String(string); + while(str.CharAt(index)) index++; + return index; +} + +fun status_callback (text) +{ + // Truncate the message if too long + if (StringLength(text) > (Window.GetHeight () / 4 )) { + text = text.SubString(0, (Window.GetHeight () / 4 ) - 3); + text += "..."; + } + + my_image = Image.Text(text, 0.4, 0.4, 0.4); + statusupdate_sprite.SetPosition(10, 10 + (i * 20), 10000); + statusupdate_sprite.SetImage(my_image); + statusupdate_sprite.SetX(Window.GetWidth () / 2 - my_image.GetWidth() / 2); + statusupdate_sprite.SetY((Window.GetHeight () * 0.7) - my_image.GetHeight()); + statusupdate.sprite.SetZ(11); +} + +Plymouth.SetUpdateStatusFunction(status_callback); + + diff --git a/client/boot-tools/includes/lib/plymouth/themes/opengnsys/progress_bar.png b/client/boot-tools/includes/lib/plymouth/themes/opengnsys/progress_bar.png Binary files differnew file mode 100644 index 00000000..fad2e3f9 --- /dev/null +++ b/client/boot-tools/includes/lib/plymouth/themes/opengnsys/progress_bar.png diff --git a/client/boot-tools/includes/lib/plymouth/themes/opengnsys/progress_box.png b/client/boot-tools/includes/lib/plymouth/themes/opengnsys/progress_box.png Binary files differnew file mode 100644 index 00000000..bdc029e1 --- /dev/null +++ b/client/boot-tools/includes/lib/plymouth/themes/opengnsys/progress_box.png diff --git a/client/boot-tools/includes/root/CompileSoftware.sh b/client/boot-tools/includes/root/CompileSoftware.sh new file mode 100755 index 00000000..a421352b --- /dev/null +++ b/client/boot-tools/includes/root/CompileSoftware.sh @@ -0,0 +1,40 @@ +#!/bin/bash +################################################################ +##################### SOFTWARE ##################### +################################################################ +export LANGUAGE=C +export LC_ALL=C +export LANG=C + +#dpkg-divert --local --rename --add /sbin/initctl +#ln -s /bin/true /sbin/initctl + +apt-get -y update +# software to compile code +apt-get -y --force-yes install build-essential libattr* attr make m4 gettext libmhash-dev gdebi-core gawk + +source /opt/opengnsys/lib/engine/bin/ToolsGNU.c + +#TODO: comprobar si esta instalado. +ctorrent install + +#TODO: comprobar si esta instalado. +udpcast install + +#ntfs-3g install + +#TODO: comprobar si esta instalado. +ms-sys install + +#TODO: comprobar si esta instalado. +wget -O partclone_0.2.16_i386.deb http://downloads.sourceforge.net/project/partclone/stable/0.2.16/partclone_0.2.16_i386.deb?use_mirror=ovh +gdebi -n partclone_0.2.16_i386.deb + +#TODO: comprobar si esta instalado. +cd /tmp +wget http://damien.guibouret.free.fr/savepart.zip +unzip savepart.zip -d /sbin/ + + +#apt-get remove build-essential libattr* attr make m4 gettext libmhash-dev gdebi-core gawk + diff --git a/client/boot-tools/includes/root/ConfFS.sh b/client/boot-tools/includes/root/ConfFS.sh new file mode 100755 index 00000000..3e0f4b5c --- /dev/null +++ b/client/boot-tools/includes/root/ConfFS.sh @@ -0,0 +1,24 @@ +#!/bin/bash +dpkg-divert --local --rename --add /sbin/initctl +ln -s /bin/true /sbin/initctl +#mv /etc/fstab /etc/fstab.original 2>/dev/null +#mv /etc/mtab /etc/mtab.original 2>/dev/null + +#TODO: fichero etc/hosts +#TODO: fichero etc/resolv.conf +echo "ogClient" > /etc/hostname + +#export PASSROOT=og +#dpkg-reconfigure passwd +#echo "root:$PASSROOT" | chpasswd + + +#for i in pts/0 pts/1 pts/2 pts/3 do +# +# +#done +#TODO: introducir mas consoluas para el acceso como root. +echo "pts/0" >> /etc/securetty +echo "pts/1" >> /etc/securetty +echo "pts/2" >> /etc/securetty +echo "pts/3" >> /etc/securetty
\ No newline at end of file diff --git a/client/boot-tools/includes/root/GenerateGraphicBoot.sh b/client/boot-tools/includes/root/GenerateGraphicBoot.sh new file mode 100644 index 00000000..b12eeb2b --- /dev/null +++ b/client/boot-tools/includes/root/GenerateGraphicBoot.sh @@ -0,0 +1,17 @@ +#!/bin/bash +#TODO Comprobar si esta los source. + +#svn checkout http://www.opengnsys.es/svn/branches/version1.0/client /tmp/opengnsys_installer/opengnsys/client/; +#svn checkout http://www.opengnsys.es/svn/branches/version2/ /tmp/opengnsys_installer/opengnsys2 +find /tmp/opengnsys_installer/ -name .svn -type d -exec rm -fr {} \; 2>/dev/null; + +#plymouth +apt-get install plymouth plymouth-theme-script + + +#plymoutyh +update-alternatives --install /lib/plymouth/themes/default.plymouth default.plymouth /lib/plymouth/themes/opengnsys/opengnsys.plymouth 100 +update-alternatives --set default.plymouth /lib/plymouth/themes/opengnsys/opengnsys.plymouth + +mkdir -p /etc/initramfs-tools/conf.d +echo "FRAMEBUFFER=y" > /etc/initramfs-tools/conf.d/splash
\ No newline at end of file diff --git a/client/boot-tools/includes/root/GenerateInitrd.generic.sh b/client/boot-tools/includes/root/GenerateInitrd.generic.sh new file mode 100755 index 00000000..eaeb475b --- /dev/null +++ b/client/boot-tools/includes/root/GenerateInitrd.generic.sh @@ -0,0 +1,16 @@ +#!/bin/bash +export OSDISTRIB=$(lsb_release -i | awk -F: '{sub(/\t/,""); print $2}') 2>/dev/null +#OSCODENAME=$(lsb_release -c | awk -F: '{sub(/\t/,""); print $2}') 2>/dev/null +export OSCODENAME=$(cat /etc/lsb-release | grep CODENAME | awk -F= '{print $NF}') +export OSRELEASE=$(uname -a | awk '{print $3}') +uname -a | grep x86_64 > /dev/null && export OSARCH=amd64 || export OSARCH=i386 +export OSHTTP="http://es.archive.ubuntu.com/ubuntu/" + + + +cd /usr/lib/initramfs-tools/bin/ +rm * +cp /bin/busybox ./ +cd /tmp/ +mkinitramfs -o /tmp/initrd.img-$OSRELEASE -v $OSRELEASE +cp /boot/vmlinuz-$OSRELEASE /tmp
\ No newline at end of file diff --git a/client/boot-tools/includes/root/InstallSoftware.sh b/client/boot-tools/includes/root/InstallSoftware.sh new file mode 100755 index 00000000..11838ea3 --- /dev/null +++ b/client/boot-tools/includes/root/InstallSoftware.sh @@ -0,0 +1,80 @@ +#!/bin/bash +################################################################ +##################### SOFTWARE ##################### +################################################################ +export LANGUAGE=C +export LC_ALL=C +export LANG=C + +export OSDISTRIB=$(lsb_release -i | awk -F: '{sub(/\t/,""); print $2}') 2>/dev/null +#OSCODENAME=$(lsb_release -c | awk -F: '{sub(/\t/,""); print $2}') 2>/dev/null +export OSCODENAME=$(cat /etc/lsb-release | grep CODENAME | awk -F= '{print $NF}') +export OSRELEASE=$(uname -a | awk '{print $3}') +uname -a | grep x86_64 > /dev/null && export OSARCH=amd64 || export OSARCH=i386 +export OSHTTP="http://es.archive.ubuntu.com/ubuntu/" + + + +dpkg-divert --local --rename --add /sbin/initctl +ln -s /bin/true /sbin/initctl + +apt-get clean +apt-get -y update + + +# software system +apt-get -y --force-yes install linux-image-${OSRELEASE} linux-headers-${OSRELEASE} linux-image-$RELEASE wget dialog man-db htop fbset gdebi-core busybox-static + +apt-get -y --force-yes install console-data locales + +# sofware networking +apt-get -y --force-yes install netpipes nfs-common sshfs smbfs smbclient davfs2 unionfs-fuse open-iscsi nmap tcpdump arping dnsutils + +apt-get clean +# software services +apt-get -y --force-yes install openssh-server bittornado trickle iptraf screen schroot grub lighttpd + +# software disk and filesystem +apt-get -y --force-yes install drbl-ntfsprogs ntfsprogs parted ntfs-3g dosfstools +apt-get -y --force-yes install dmraid dmsetup lvm2 e2fsprogs jfsutils reiserfsprogs xfsprogs unionfs-fuse mhddfs squashfs-tools +apt-get -y --force-yes install hfsplus hfsprogs hfsutils nilfs-tools reiser4progs ufsutils + +#btrfs-tools + +# software cloning +apt-get -y --force-yes install drbl-partimage fsarchiver pv kexec-tools +apt-get -y --force-yes install mbuffer + +#monitor +apt-get install bwbar bmon iftop ifstat dstat hdparm sdparm blktool testdisk ssmping mii-diag + +## software postconf +apt-get -y --force-yes install drbl-chntpw chntpw ethtool lshw gawk subversion + +# software compressor +apt-get -y --force-yes install lzma zip unzip gzip lzop drbl-lzop pigz pbzip2 lbzip2 rzip p7zip-full unzip + + +#compatibilidad og2 +apt-get install python-openssl python + + + +apt-get -y --force-yes remove busybox +apt-get -y --force-yes install busybox-static bash-static +apt-get clean +#apt-get -y --force-yes xorg-dev xorg lxde roxterm +# +#################################################################### +###################### Reconfigurando paquetes ###################### +################################################################### + + +#dpkg-reconfigure console-data +#dpkg-reconfigure console-setup +#dpkg-reconfigure locales +apt-get clean +##TODO################# Borrar algunos binarios del mkinitramfs + + + diff --git a/client/boot-tools/includes/root/ReconfigureLocales.sh b/client/boot-tools/includes/root/ReconfigureLocales.sh new file mode 100755 index 00000000..5480d141 --- /dev/null +++ b/client/boot-tools/includes/root/ReconfigureLocales.sh @@ -0,0 +1,4 @@ +#!/bin/bash +dpkg-reconfigure console-data +dpkg-reconfigure console-setup +dpkg-reconfigure locales
\ No newline at end of file diff --git a/client/boot-tools/includes/root/generateSshKeysClient.sh b/client/boot-tools/includes/root/generateSshKeysClient.sh new file mode 100755 index 00000000..9857ad40 --- /dev/null +++ b/client/boot-tools/includes/root/generateSshKeysClient.sh @@ -0,0 +1,23 @@ +#!/bin/bash +echo "comprobando directorio .ssh del root" +if [ ! -d /root/.ssh ] +then + echo "creando directorio .ssh 600" + mkdir -p /root/.ssh + chmod 700 /root/.ssh +fi + + +echo "comprobando el fichero authorized_keys .ssh del root" +if [ ! -f /root/.ssh/authorized_keys ] +then + echo "creando el fichero authorized_keys" + touch /root/.ssh/authorized_keys + chmod 600 /root/.ssh/authorized_keys +fi + +ssh-keygen -q -f /root/.ssh/id_rsa -N "" +cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys + +## TODO: exportamos la publica a los repos +cp /root/.ssh/id_rsa.pub /tmp/rsa.ogclient.pub
\ No newline at end of file diff --git a/client/boot-tools/includes/root/importSVNboot-tools.sh b/client/boot-tools/includes/root/importSVNboot-tools.sh new file mode 100644 index 00000000..0067715f --- /dev/null +++ b/client/boot-tools/includes/root/importSVNboot-tools.sh @@ -0,0 +1,118 @@ +#!/bin/bash +#TODO Comprobar si esta los source. + +#svn checkout http://www.opengnsys.es/svn/branches/version1.0/client /tmp/opengnsys_installer/opengnsys/client/; +#svn checkout http://www.opengnsys.es/svn/branches/version2/ /tmp/opengnsys_installer/opengnsys2 +find /tmp/opengnsys_installer/ -name .svn -type d -exec rm -fr {} \; 2>/dev/null; + + +SVNCLIENTDIR=/tmp/opengnsys_installer/opengnsys/client/boot-tools +SVNCLIENTSTRUCTURE=/tmp/opengnsys_installer/opengnsys/client/shared +SVNCLIENTENGINE=/tmp/opengnsys_installer/opengnsys/client/engine +SVNOG2=/tmp/opengnsys_installer/opengnsys2 + +OGCLIENTMOUNT="" + + +OSDISTRIB=$(lsb_release -i | awk -F: '{sub(/\t/,""); print $2}') 2>/dev/null +OSCODENAME=$(cat /etc/lsb-release | grep CODENAME | awk -F= '{print $NF}') +OSRELEASE=$(uname -a | awk '{print $3}') +uname -a | grep x86_64 > /dev/null && export OSARCH=amd64 || export OSARCH=i386 +OSHTTP="http://es.archive.ubuntu.com/ubuntu/" +echo $OSDISTRIB:$OSCODENAME:$OSRELEASE:$OSARCH:$OSHTTP + +LERROR=TRUE + +echo "$FUNCNAME: Iniciando la personalización con datos del SVN " + +# parseamos del apt.source +sed -e "s/OSCODENAME/$OSCODENAME/g" ${SVNCLIENTDIR}/clientstructure/etc/apt/sources.list.ubuntu > ${SVNCLIENTDIR}/clientstructure/etc/apt/sources.list +if [ $? -ne 0 ] +then + echo "$FUNCNAME(): Parsing apt.sources : ERROR" + exit 1 +fi + +#parseamos el script de generación del initrd. +#sed -e "s/OSRELEASE/$OSRELEASE/g" ${SVNCLIENTDIR}/clientstructure/root/GenerateInitrd.generic.sh > ${SVNCLIENTDIR}/clientstructure/root/GenerateInitrd.sh +# +#if [ $? -ne 0 ] +#then +# echo "$FUNCNAME(): Parsing GenerateInitrd.sh : ERROR" +# exit 1 +#else +# rm /root/GenerateInitrd.generic.sh +#fi + +#damos permiso al directorio de scripts +chmod 775 ${SVNCLIENTDIR}/clientstructure/root/* + +# los copiamos +cp -prv ${SVNCLIENTDIR}/includes/* / +mkdir -p ${OGCLIENTMOUNT}/opt/opengnsys/ +cp -prv ${SVNCLIENTSTRUCTURE}/* ${OGCLIENTMOUNT}/opt/opengnsys/ +cp -prv ${SVNCLIENTENGINE}/* ${OGCLIENTMOUNT}/opt/opengnsys/lib/engine/bin/ + +if [ $? -ne 0 ] +then + echo "$FUNCNAME(): Copying client data : ERROR" + exit 1 +fi + +# copiamos algunas cosas del nfsexport + +#### Tipos de letra para el Browser. +cp -pr ${SVNCLIENTSTRUCTURE}/lib/fonts $OGCLIENTMOUNT/usr/local/lib/fonts +#### Crear enlaces para compatibilidad con las distintas versiones del Browser. +mkdir -p $OGCLIENTMOUNT/usr/local/Trolltech/QtEmbedded-4.5.1/lib/ +mkdir -p $OGCLIENTMOUNT/usr/local/QtEmbedded-4.6.2/lib/ +mkdir -p $OGCLIENTMOUNT/usr/local/QtEmbedded-4.6.3/lib/ +cp -pr ${SVNCLIENTSTRUCTURE}/lib/fonts $OGCLIENTMOUNT/usr/local/Trolltech/QtEmbedded-4.5.1/lib/fonts +cp -pr ${SVNCLIENTSTRUCTURE}/lib/fonts $OGCLIENTMOUNT/usr/local/QtEmbedded-4.6.2/lib/fonts +cp -pr ${SVNCLIENTSTRUCTURE}/lib/fonts $OGCLIENTMOUNT/usr/local/QtEmbedded-4.6.3/lib/fonts +if [ $? -ne 0 ] +then + echo "$FUNCNAME(): Linking Browser fonts : ERROR" + exit 1 +fi + +######################################################### +cp -pr ${SVNCLIENTSTRUCTURE}/lib/pci.ids $OGCLIENTMOUNT/etc +if [ $? -ne 0 ] +then + echo "$FUNCNAME(): Copying pci.ids : ERROR" + exit 1 +fi +####### Browsser +cp ${SVNCLIENTSTRUCTURE}/bin/browser $OGCLIENTMOUNT/bin +if [ $? -ne 0 ] +then + echo "$FUNCNAME(): Copying Browser : ERROR" + exit 1 +fi + + +#Compatiblidad con og2 +cp ${SVNCLIENTSTRUCTURE}/bin/browser2 $OGCLIENTMOUNT/bin + +cp -prv ${SVNOG2}/ogr/ogr $OGCLIENTMOUNT/opt/opengnsys/bin/ + +cp -prv ${SVNOG2}/ogr/libogr.py $OGCLIENTMOUNT/usr/lib/python2.7/libogr.py +cp -prv ${SVNOG2}/ogr/libogr.py $OGCLIENTMOUNT/usr/lib/python2.6/libogr.py +cp -prv ${SVNOG2}/ogr/libogr.py $OGCLIENTMOUNT/opt/opengnsys/lib/python + + +echo "mkdir -p /opt/opengnsys/lib/engine/" +mkdir -p /opt/opengnsys/lib/engine/ +echo "cp -prv ${SVNOG2}/engine/2.0/* $OGCLIENTMOUNT/opt/opengnsys/lib/engine/" +cp -prv ${SVNOG2}/engine/2.0/* $OGCLIENTMOUNT/opt/opengnsys/lib/engine/ + + +cp -prv ${SVNOG2}/job_executer $OGCLIENTMOUNT/opt/opengnsys/bin/ + + +cp ${SVNCLIENTSTRUCTURE}/bin/ogAdmClient $OGCLIENTMOUNT/bin + + + + diff --git a/client/boot-tools/includes/root/importSshKeys.sh b/client/boot-tools/includes/root/importSshKeys.sh new file mode 100755 index 00000000..17a797f8 --- /dev/null +++ b/client/boot-tools/includes/root/importSshKeys.sh @@ -0,0 +1,17 @@ +#!/bin/bash +echo "comprobando directorio .ssh del root" +if [ ! -d /root/.ssh ] +then + echo "creando directorio .ssh 600" + mkdir -p /root/.ssh + chmod 700 /root/.ssh +fi +echo "creando el fichero authorized_keys" +touch /root/.ssh/authorized_keys +chmod 600 /root/.ssh/authorized_keys + +echo "importando la clave publica del servidor OG" +cat /tmp/id_rsa.pub + +[ -f /tmp/id_rsa.pub ] && cat /tmp/id_rsa.pub >> /root/.ssh/authorized_keys || echo "no key publica og" +
\ No newline at end of file diff --git a/client/boot-tools/includes/root/qemu.sh b/client/boot-tools/includes/root/qemu.sh new file mode 100755 index 00000000..c5a93cd9 --- /dev/null +++ b/client/boot-tools/includes/root/qemu.sh @@ -0,0 +1,9 @@ +#/bin/bash + +mount -o rw,remount / +mount proc /proc -t proc +export PATH=$PATH dpkg -i *.deb +modprobe 8139too +modprobe 8139cp +dhclient +/etc/init.d/ssh restart
\ No newline at end of file diff --git a/client/boot-tools/includes/var/lib/locales/supported.d/local b/client/boot-tools/includes/var/lib/locales/supported.d/local new file mode 100644 index 00000000..be3f2a41 --- /dev/null +++ b/client/boot-tools/includes/var/lib/locales/supported.d/local @@ -0,0 +1,5 @@ +es_ES ISO-8859-1 +es_ES@euro ISO-8859-15 +es_ES.UTF-8 UTF-8 +es_ES.UTF-8@euro UTF-8 +en_US.UTF-8 UTF-8
\ No newline at end of file |