version 1.0.2 boot-tools #404 #420 id.version instalador

git-svn-id: https://opengnsys.es/svn/branches/version1.0@2258 a21b9725-9963-47de-94b9-378ad31fedc9
remotes/github/master
Antonio Doblas Viso 2011-08-03 15:21:09 +00:00
parent 7b5967dd6c
commit ad828d4d21
9 changed files with 275 additions and 218 deletions

View File

@ -13,6 +13,7 @@
# Autor: Antonio J. Doblas Viso. Universidad de Málaga. # Autor: Antonio J. Doblas Viso. Universidad de Málaga.
function btogGetVar() function btogGetVar()
{ {
export BTSVNBOOTTOOLS=/tmp/opengnsys_installer/opengnsys/client/boot-tools export BTSVNBOOTTOOLS=/tmp/opengnsys_installer/opengnsys/client/boot-tools
export BTSVNSHARE=/tmp/opengnsys_installer/opengnsys/client/shared export BTSVNSHARE=/tmp/opengnsys_installer/opengnsys/client/shared
export BTSVNENGINE=/tmp/opengnsys_installer/opengnsys/client/engine export BTSVNENGINE=/tmp/opengnsys_installer/opengnsys/client/engine
@ -23,10 +24,16 @@ export BTTARGETDIR=/var/lib/tftpboot/ogclient/
export BTROOTFSIMG=${BTTARGETDIR}ogclient.img export BTROOTFSIMG=${BTTARGETDIR}ogclient.img
export BTROOTFSMNT=${BTTARGETDIR}ogclientmount export BTROOTFSMNT=${BTTARGETDIR}ogclientmount
# tamaño maximo limitado por schroot 2GB # tamaño maximo limitado por schroot 2GB
export BTVIRTUALDISKSIZE=1000 export BTVIRTUALDISKSIZE=2000
export BTROOTFSIMGLABEL=ogClient export BTROOTFSIMGLABEL=ogClient
export LOG_FILE=/tmp/boot-tools_installation.log export LOG_FILE=/tmp/boot-tools_installation.log
NAMEISOCLIENT=`cat /tmp/opengnsys_info_rootfs`
NAMEHOSTCLIENT=`cat /tmp/opengnsys_chroot`
export NAMEISOCLIENT
export NAMEHOSTCLIENT
} }
@ -228,6 +235,8 @@ proc /proc proc defaults 0 0
/tmp /tmp none rw,bind 0 0 /tmp /tmp none rw,bind 0 0
EOF EOF
rm /etc/schroot/setup.d/*chrootname
echoAndLog "$FUNCNAME: Finalizado: OK " echoAndLog "$FUNCNAME: Finalizado: OK "
return 0 return 0
} }
@ -247,17 +256,26 @@ function btogFsInitrd ()
[ -z "$BTROOTFSIMG" ] && btogGetVar [ -z "$BTROOTFSIMG" ] && btogGetVar
[ -z "$OSCODENAME" ] && btogGetOsInfo [ -z "$OSCODENAME" ] && btogGetOsInfo
#TODO generara md5 del kernel y del initrd.
cd / cd /
schroot -c IMGogclient -- /usr/bin/boot-tools/boottoolsInitrdGenerate.sh schroot -c IMGogclient -- /usr/bin/boot-tools/boottoolsInitrdGenerate.sh
echo "cp /tmp/*-${OSRELEASE} ${BTTARGETDIR}" echo "cp /tmp/*-${OSRELEASE} ${BTTARGETDIR}"
cp /tmp/*-${OSRELEASE} ${BTTARGETDIR} cp /tmp/*-${OSRELEASE} ${BTTARGETDIR}
#Creando copias de las version oginitr y ogvmlinux previas
TIMEMOD=`date +%Y%m%d-%H%M%S`
[ -f $BTTARGETDIR/oginitrd.img ] && mv $BTTARGETDIR/oginitrd.img $BTTARGETDIR/oginitrd.img.$TIMEMOD; mv $BTTARGETDIR/oginitrd.img.sum $BTTARGETDIR/oginitrd.img.sum.$TIMEMOD
[ -f $BTTARGETDIR/ogvmlinuz ] && mv $BTTARGETDIR/ogvmlinuz $BTTARGETDIR/ogvmlinuz.$TIMEMOD; mv $BTTARGETDIR/ogvmlinuz.sum $BTTARGETDIR/ogvmlinuz.sum.$TIMEMOD
#copiando
cp /tmp/initrd.img-${OSRELEASE} ${BTTARGETDIR}/oginitrd.img cp /tmp/initrd.img-${OSRELEASE} ${BTTARGETDIR}/oginitrd.img
cp /tmp/vmlinuz-${OSRELEASE} ${BTTARGETDIR}/ogvmlinuz cp /tmp/vmlinuz-${OSRELEASE} ${BTTARGETDIR}/ogvmlinuz
#generamos md5 del kernel y del initrd.
DATASUM=`md5sum "${BTTARGETDIR}/oginitrd.img" | cut -f1 -d" "`
echo $DATASUM > ${BTTARGETDIR}/oginitrd.img.sum
DATASUM=`md5sum "${BTTARGETDIR}/ogvmlinuz" | cut -f1 -d" "`
echo $DATASUM > ${BTTARGETDIR}/ogvmlinuz.sum
#Damos permisos
cd - cd -
chmod -R 755 $OGCLIENTBASEDIR chmod -R 755 $BTTARGETDIR
} }
#btogFsSqfs convierte el sistema root en sqfs #btogFsSqfs convierte el sistema root en sqfs
@ -270,17 +288,18 @@ chmod -R 755 $OGCLIENTBASEDIR
function btogFsSqfs () function btogFsSqfs ()
{ {
#Dependencias. #Dependencias.
ogClientVar [ -z "$BTROOTFSIMG" ] && btogGetVar
[ -z "$OSCODENAME" ] && btogGetOsInfo
echoAndLog "$FUNCNAME: Iniciando la creación del sistema de archivos en sqfs " echoAndLog "$FUNCNAME: Iniciando la creación del sistema de archivos en sqfs "
# si ya existe un sqfs lo renombramos # si ya existe un sqfs lo renombramos
[ -f $BTTARGETDIR/ogclient.sqfs ] && mv $BTTARGETDIR/ogclient.sqfs $BTTARGETDIR/ogclient.sqfs.`date +%Y%m%d-%H%M%S` [ -f $BTTARGETDIR/ogclient.sqfs ] && mv $BTTARGETDIR/ogclient.sqfs $BTTARGETDIR/ogclient.sqfs.`date +%Y%m%d-%H%M%S`
mount | grep $BTROOTFSMNT || mount $BTROOTFSIMG $BTROOTFSMNT -o loop,offset=32256 mount | grep $BTROOTFSMNT || mount $BTROOTFSIMG $BTROOTFSMNT -o loop,offset=32256
mksquashfs $BTROOTFSMNT $BTTARGETDIR/ogclient.sqfs mksquashfs $BTROOTFSMNT $BTTARGETDIR/ogclient.sqfs
chmod 744 $BTTARGETDIR/ogclient.sqfs
mount | grep $BTROOTFSMNT && umount $BTROOTFSMNT mount | grep $BTROOTFSMNT && umount $BTROOTFSMNT
chmod 744 $BTTARGETDIR/ogclient.sqfs
DATASUM=`md5sum "${BTTARGETDIR}/ogclient.sqfs" | cut -f1 -d" "`
echo $DATASUM > ${BTTARGETDIR}/ogclient.sqfs.sum
} }
@ -295,21 +314,20 @@ mount | grep $BTROOTFSMNT && umount $BTROOTFSMNT
#@author Antonio J. Doblas Viso. Universidad de Malaga. #@author Antonio J. Doblas Viso. Universidad de Malaga.
#@date 2011/08/03 #@date 2011/08/03
function btogIsoGenerator { function btogIsoGenerator {
#Dependencias.
#[ -z "$BTROOTFSIMG" ] && btogGetVar
btogGetVar
#Preparamos los gestores de arranque
mkdir -p /tmp/iso/isolinux mkdir -p /tmp/iso/isolinux
#cd tmp/iso/
cp -prv /usr/lib/syslinux/* /tmp/iso/isolinux/ cp -prv /usr/lib/syslinux/* /tmp/iso/isolinux/
cp -prv /usr/share/gpxe/* /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 cat << FIN > /tmp/iso/isolinux/isolinux.cfg
DEFAULT menu.c32 DEFAULT menu.c32
PROMPT 0 PROMPT 0
ALLOWOPTIONS 1 ALLOWOPTIONS 1
MENU TITLE OpenGnsys 1.0.1 v00 MENU TITLE OpenGnsys ${NAMEISOCLIENT}
LABEL gpxe LABEL gpxe
MENU LABEL gpxe MENU LABEL gpxe
@ -357,8 +375,32 @@ label 8
MENU LABEL Network boot via gPXE iso MENU LABEL Network boot via gPXE iso
KERNEL gpxe.iso KERNEL gpxe.iso
FIN 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
# preparamos el directorio boot-tools.
mkdir -p /tmp/iso/ogclient
cp ${BTTARGETDIR}/ogclient.sqfs /tmp/iso/ogclient/
cp ${BTTARGETDIR}/ogclient.sqfs.sum /tmp/iso/ogclient/
cp ${BTTARGETDIR}/ogvmlinuz /tmp/iso/ogclient/
cp ${BTTARGETDIR}/ogvmlinuz.sum /tmp/iso/ogclient/
cp ${BTTARGETDIR}/ogvmlinuz /tmp/iso/ogclient/linuxISO
cp ${BTTARGETDIR}/ogvmlinuz.sum /tmp/iso/ogclient/linuxISO.sum
cp ${BTTARGETDIR}/oginitrd.img /tmp/iso/ogclient/
cp ${BTTARGETDIR}/oginitrd.img.sum /tmp/iso/ogclient/
#el ogclienteToISO debe tener una copia del ogvmlinuz como linuxISO
#cp -prv /var/lib/tftpboot/ogclientToIso/* /tmp/iso/ogclient
cd /tmp
#TIMEMOD=`date +%Y%m%d-%H%M%S`
####Generamos la iso
echo "mkisofs -V ogClient -o ${NAMEISOCLIENT}.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -J -no-emul-boot -boot-load-size 4 -boot-info-table /tmp/iso"
mkisofs -V ogClient -o ${NAMEISOCLIENT}.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -J -no-emul-boot -boot-load-size 4 -boot-info-table /tmp/iso
##Generamos el md5
DATASUM=`md5sum ${NAMEISOCLIENT}.iso | cut -f1 -d" "`
echo $DATASUM > ${NAMEISOCLIENT}.iso.sum
### vi /etc/grub.d/40_custom ### vi /etc/grub.d/40_custom
## ##

View File

@ -10,6 +10,13 @@
#@date 2011/08/03 #@date 2011/08/03
#*/ #*/
#mkdir -p /tmp/opengnsys_installer/opengnsys;
#mkdir -p /tmp/opengnsys_installer/opengnsys2;
#cp -prv /home/administrador/workspace/OpenGnsys/branches/version2/* /tmp/opengnsys_installer/opengnsys2/;
#cp -prv /home/administrador/workspace/OpenGnsys/branches/version1.0/client/ /tmp/opengnsys_installer/opengnsys/;
#find /tmp/opengnsys_installer/ -name .svn -type d -exec rm -fr {} \; 2>/dev/null;
#Variables #Variables
TYPECLIENT=host TYPECLIENT=host
@ -35,7 +42,7 @@ echoAndLog "OpenGnSys CLIENT installation begins at $(date)"
## FASE 1 - Instalación de software adicional. ## FASE 1 - Instalación de software adicional.
cat /etc/apt/sources.list | grep "http://free.nchc.org.tw/drbl-core" || echo "deb http://free.nchc.org.tw/drbl-core drbl stable " >> /etc/apt/sources.list cat /etc/apt/sources.list | grep "http://free.nchc.org.tw/drbl-core" || echo "deb http://free.nchc.org.tw/drbl-core drbl stable " >> /etc/apt/sources.list
apt-get update apt-get update
apt-get -y --force-yes install debootstrap subversion schroot squashfs-tools syslinux genisoimage apt-get install gpxe apt-get -y --force-yes install debootstrap subversion schroot squashfs-tools syslinux genisoimage gpxe qemu
##### FASE 2 - Asignación de variables ##### FASE 2 - Asignación de variables
#obtenemos las variables necesarias y la información del host. #obtenemos las variables necesarias y la información del host.
@ -62,8 +69,8 @@ cat /etc/schroot/schroot.conf | grep $BTROOTFSIMG || btogSetFsAccess
# FASE 5: Incorporando con ficheros OG el sistema raiz rootfs # FASE 5: Incorporando con ficheros OG el sistema raiz rootfs
cp -prv ${BTSVNBOOTTOOLS}/includes/usr/bin/* /tmp/ cp -prv ${BTSVNBOOTTOOLS}/includes/usr/bin/* /tmp/
chmod 777 /tmp/*.sh chmod 777 /tmp/boot-tools/*.sh
schroot -p -c IMGogclient -- /tmp/boottoolsFsOpengnsys.sh schroot -p -c IMGogclient -- /tmp/boot-tools/boottoolsFsOpengnsys.sh
# FASE6: Instalacion de software # FASE6: Instalacion de software
# 6.1 instalacion de software con apt-get # 6.1 instalacion de software con apt-get
@ -93,16 +100,18 @@ schroot -c IMGogclient -- /usr/bin/boot-tools/boottoolsSshClient.sh
## 7.3 configuramos los locales. ## 7.3 configuramos los locales.
schroot -c IMGogclient -- /usr/bin/boot-tools/boottoolsFsLocales.sh schroot -c IMGogclient -- /usr/bin/boot-tools/boottoolsFsLocales.sh
exit 99
#Fase 7. Generando la ISO. #Fase 7. Generando la ISO.
#7.1 el initrd #7.1 el initrd
btogFsInitrd btogFsInitrd
#7.2 Convertivos el sistema raiz img en formato sqfs #7.2 Convertivos el sistema raiz img en formato sqfs
btogFsSqfs btogFsSqfs
#7.3 Generamos la iso #7.3 Generamos la iso
btogIsoGenerator btogIsoGenerator
# Mostrar sumario de la instalación e instrucciones de post-instalación. # Mostrar sumario de la instalación e instrucciones de post-instalación.
installationSummary installationSummary

View File

@ -1,11 +1,20 @@
#@file ogfunctions.lib #@file ogfunctions.lib
#@brief Librería o clase para la generación del 1erFS #@brief Librería o clase para la gestion del sistema operativo de los clientes OpenGnsys
#@class client #@class client
#@brief Funciones para la generación del primers sistema (initrd) #@brief Librería o clase para la gestion del sistema operativo de los clientes OpenGnsys
#@version 0.91 #@version 0.91
#@warning License: GNU GPLv3+ #@warning License: GNU GPLv3+
#/**
# ogExportKernelParameters
#@brief Exporta los parametros pasados al kernel
#@param
#@return
#@exception OG_ERR_FORMAT Formato incorrecto.
#@version 0.7 -
#@author Antonio J. Doblas. Universidad de Malaga.
#@date 2010/05/24
#*/ ##
ogExportKernelParameters () ogExportKernelParameters ()
{ {
GLOBAL="cat /proc/cmdline" GLOBAL="cat /proc/cmdline"
@ -16,30 +25,32 @@ ogExportKernelParameters ()
return 0 return 0
} }
#/**
# ogExportVarEnvironment
#@brief Exporta las variables usadas en el proceso de inicio OpenGnsys y las almacena en /tmp
#@param
#@return
#@exception OG_ERR_FORMAT Formato incorrecto.
#@version 0.9
#@author Antonio J. Doblas. Universidad de Malaga.
#@date 2011/05/24
#*/ ##
ogExportVarEnvironment () ogExportVarEnvironment ()
{ {
export CFGINITRD="/tmp/initrd.cfg" export CFGINITRD="/tmp/initrd.cfg"
OGPROTOCOL="${ogprotocol:-smb}" OGPROTOCOL="${ogprotocol:-smb}"
case "$OGPROTOCOL" in case "$OGPROTOCOL" in
nfs|NFS) nfs|NFS)
#export NFSROOTBOOT="/var/lib/tftpboot"
export SRCOGLIVE="/var/lib/tftpboot" && echo "SRCOGLIVE=$SRCOGLIVE" >> $CFGINITRD export SRCOGLIVE="/var/lib/tftpboot" && echo "SRCOGLIVE=$SRCOGLIVE" >> $CFGINITRD
#export NFSCLIENTDIR="/opt/opengnsys/client"
export SRCOGSHARE="/opt/opengnsys/client" && echo "SRCOGSHARE=$SRCOGSHARE" >> $CFGINITRD 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 SRCOGLOG="/opt/opengnsys/log/clients" && echo "SRCOGLOG=$SRCOGLOG" >> $CFGINITRD
#export NFSIMGDIR="/opt/opengnsys/images"
export SRCOGIMAGES="/opt/opengnsys/images" && echo "SRCOGIMAGES=$SRCOGIMAGES" >> $CFGINITRD export SRCOGIMAGES="/opt/opengnsys/images" && echo "SRCOGIMAGES=$SRCOGIMAGES" >> $CFGINITRD
;; ;;
smb|SMB|cifs|CIFS|samba|SAMBA) smb|SMB|cifs|CIFS|samba|SAMBA)
export OPTIONS=" -o user=opengnsys,pass=og" export OPTIONS=" -o user=opengnsys,pass=og"
#export SMBROOTBOOT="tftpboot" && echo "SMBROOTBOOT=$SMBROOTBOOT" >> $CFGINITRD
export SRCOGLIVE="tftpboot" && echo "SRCOGLIVE=$SRCOGLIVE" >> $CFGINITRD export SRCOGLIVE="tftpboot" && echo "SRCOGLIVE=$SRCOGLIVE" >> $CFGINITRD
#export SMBCLIENTDIR="ogclient" && echo "SMBCLIENTDIR=$SMBCLIENTDIR" >> $CFGINITRD
export SRCOGSHARE="ogclient" && echo "SRCOGSHARE=$SRCOGSHARE" >> $CFGINITRD export SRCOGSHARE="ogclient" && echo "SRCOGSHARE=$SRCOGSHARE" >> $CFGINITRD
#export SMBLOGDIR="oglog" && echo "SMBLOGDIR=$SMBLOGDIR" >> $CFGINITRD
export SRCOGLOG="oglog" && echo "SRCOGLOG=$SRCOGLOG" >> $CFGINITRD export SRCOGLOG="oglog" && echo "SRCOGLOG=$SRCOGLOG" >> $CFGINITRD
#export SMBIMGDIR="ogimages" && echo "SMBIMGDIR=$SMBIMGDIR" >> $CFGINITRD
export SRCOGIMAGES="ogimages" && echo "SRCOGIMAGES=$SRCOGIMAGES" >> $CFGINITRD export SRCOGIMAGES="ogimages" && echo "SRCOGIMAGES=$SRCOGIMAGES" >> $CFGINITRD
;; ;;
local|LOCAL) local|LOCAL)
@ -47,27 +58,20 @@ ogExportVarEnvironment ()
;; ;;
esac esac
#punto de acceso al boot-tools live #punto de acceso al boot-tools live
#export LOCALROOTBOOT="/opt/og2fs/tftpboot" && echo "LOCALROOTBOOT=$LOCALROOTBOOT" >> $CFGINITRD
export DSTOGLIVE="/opt/oglive/tftpboot" export DSTOGLIVE="/opt/oglive/tftpboot"
#punto de montaje para unionfs #punto de montaje para unionfs
#export LOCALROOTRAM="/opt/og2fs/1stfs" && echo "LOCALROOTRAM=$LOCALROOTRAM" >> $CFGINITRD
export OGLIVERAMFS="/opt/oglive/ramfs" && echo "OGLIVERAMFS=$OGLIVERAMFS" >> $CFGINITRD export OGLIVERAMFS="/opt/oglive/ramfs" && echo "OGLIVERAMFS=$OGLIVERAMFS" >> $CFGINITRD
#punto de montaje donde se accede al 2nd FS mediante loop #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 export OGLIVEROOTFS="/opt/oglive/rootfs" && echo "OGLIVEROOTFS=$OGLIVEROOTFS" >> $CFGINITRD
#punto de union entre LOCALROOTIMG y LOCALROOTRAM #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 export OGLIVEUNIONFS="/opt/oglive/unionfs" && echo "OGLIVEUNIONFS=$OGLIVEUNIONFS" >> $CFGINITRD
#etiquta para los dispositivos offline #etiquta para los dispositivos offline
export OGLIVELABEL="ogClient" export OGLIVELABEL="ogClient"
#echo "puntos de montajes para los demas accesos" #echo "puntos de montajes para los demas accesos"
#echo "acceso al client, engine, scritps, interfaz" #echo "acceso al client, engine, scritps, interfaz"
#export LOCALCLIENTDIR="/opt/opengnsys" && echo "LOCALCLIENTDIR=$LOCALCLIENTDIR" >> $CFGINITRD
export DSTOGSHARE="/opt/opengnsys" && echo "DSTOGSHARE=$DSTOGSHARE" >> $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 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 export DSTOGIMAGES="/opt/opengnsys/images" && echo "DSTOGIMAGES=$DSTOGIMAGES" >> $CFGINITRD
##INFORMACION DE OTRAS VARIABLES OBTENDIAS EN OTRAS FUNCIONES ogConfigureNetwork. ##INFORMACION DE OTRAS VARIABLES OBTENDIAS EN OTRAS FUNCIONES ogConfigureNetwork.
@ -87,18 +91,36 @@ ogExportVarEnvironment ()
return 0 return 0
} }
#/**
# ogConfigureRamfs
#@brief Configura el initrd para adaptarlo al sistema raiz.
#@param
#@return
#@exception OG_ERR_FORMAT Formato incorrecto.
#@version 0.9
#@author Antonio J. Doblas. Universidad de Malaga.
#@date 2010/05/24
#*/ ##
ogConfigureRamfs () ogConfigureRamfs ()
{ {
#mkdir -p $LOCALROOTBOOT
mkdir -p $DSTOGLIVE mkdir -p $DSTOGLIVE
#mkdir -p $LOCALROOTRAM
mkdir -p $OGLIVERAMFS mkdir -p $OGLIVERAMFS
#mkdir -p $LOCALROOTIMG
mkdir -p $OGLIVEROOTFS mkdir -p $OGLIVEROOTFS
#mkdir -p $LOCALROOTUNION
mkdir -p $OGLIVEUNIONFS mkdir -p $OGLIVEUNIONFS
} }
#/**
# ogLoadNetModule
#@brief Carga en un demerminado modulo de red, requiere compilación previo del modulo
#@param
#@return
#@exception OG_ERR_FORMAT Formato incorrecto.
#@version 0.9
#@author Antonio J. Doblas. Universidad de Malaga.
#@date 2010/05/24
#*/ ##
ogLoadNetModule () ogLoadNetModule ()
{ {
if [ -n "$ognetmodule" ] if [ -n "$ognetmodule" ]
@ -109,6 +131,16 @@ ogLoadNetModule ()
} }
#/**
# ogPostConfigureFS
#@brief Configura el sistema raiz, para independizarlo entre los clientes.
#@param
#@return
#@exception OG_ERR_FORMAT Formato incorrecto.
#@version 0.9
#@author Antonio J. Doblas. Universidad de Malaga.
#@date 2010/05/24
#*/ ##
ogPostConfigureFS() ogPostConfigureFS()
{ {
# configuramos el /etc/hostname. # configuramos el /etc/hostname.
@ -135,27 +167,37 @@ ogPostConfigureFS()
echo "localnet $NETIP" >> /etc/networks echo "localnet $NETIP" >> /etc/networks
#route #route
echo "ogLive1.0.2" > /etc/debian_chroot #echo "ogLive1.0.2" > /etc/debian_chroot
#enlace si iniciamos desde ogprotocolo=local { cdrom, usb, cache } . #enlace si iniciamos desde ogprotocolo=local { cdrom, usb, cache } .
# monta el raiz del dispositivo local en /opt/og2fs/tftpboot - acceso al fichero .sqfs # monta el raiz del dispositivo local en /opt/og2fs/tftpboot - acceso al fichero .sqfs
# y monta el sistema root sqfs en /opt/og2fs/2ndfs # 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 [ "$LOCALMEDIA" == "CACHE" ] && ln -s $DSTOGLIVE /opt/opengnsys/cache
[ "$ogprotocol" == "local" ] && ln -s ${OGLIVEROOTFS}/opt/opengnsys/* /opt/opengnsys/ [ "$ogprotocol" == "local" ] && ln -s ${OGLIVEROOTFS}/opt/opengnsys/* /opt/opengnsys/
#Montamos un directorio temporal para el apt-get
mount tmpfs /var/cache/apt/archives -t tmpfs -o size=15M
mkdir -p /var/cache/apt/archives/partial
} }
#/**
# ogGetROOTSERVER
#@brief Determina los puntos de accesos a los distintos recursos.
#Requiere ogConfigureNetworking. #Requiere ogConfigureNetworking.
#Exporta ROOTSERVER #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 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. # 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=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 ## ip=172.17.36.21:62.36.225.150:172.17.36.254:255.255.255.0:prueba1:eth0:none
#@param
#@return
#@exception OG_ERR_FORMAT Formato incorrecto.
#@version 0.9
#@author Antonio J. Doblas. Universidad de Malaga.
#@date 2010/05/24
#*/ ##
ogGetROOTSERVER () ogGetROOTSERVER ()
{ {
# get nfs root from dhcp # get nfs root from dhcp
@ -190,12 +232,23 @@ ogGetROOTSERVER ()
return 0 return 0
} }
#/**
# ogConnect # ogConnect
# parm 1 ip servidor TODO:dns #@brief Conecta con los recursos necesarios para opengnsys
# parm 2 protocolo #@param1 ip del servidor TODO:dns
# parm 3 punto de acceso remoto #@param2 protocolo
# parm 4 punto de montaje local #@param3 punto de acceso remoto
# parm 5 acceso de lectura tipo ",ro" #@param4 punto de montaje local
#@param5 acceso de lectura tipo ",ro"
#@return
#@exception OG_ERR_FORMAT Formato incorrecto.
#@version 0.9
#@author Antonio J. Doblas. Universidad de Malaga.
#@date 2011/05/24
#*/ ##
ogConnect () ogConnect ()
{ {
SERVER=$1 SERVER=$1
@ -214,6 +267,16 @@ ogConnect ()
esac esac
} }
#/**
# ogConnectOgLive
#@brief Conecta con el recurso para usar el sistema raiz externo, remoto o local
#@param1
#@return
#@exception OG_ERR_FORMAT Formato incorrecto.
#@version 0.9
#@author Antonio J. Doblas. Universidad de Malaga.
#@date 2011/05/24
ogConnectOgLive () ogConnectOgLive ()
{ {
# Si ogprotocol=local, la funcion ogExportVar => SRCOGLIVE=local # Si ogprotocol=local, la funcion ogExportVar => SRCOGLIVE=local
@ -236,7 +299,15 @@ ogConnectOgLive ()
} }
#/**
# ogMergeLive
#@brief Metafuncion para fusionar el initrd con el sistema raiz.
#@param1
#@return
#@exception OG_ERR_FORMAT Formato incorrecto.
#@version 0.9
#@author Antonio J. Doblas. Universidad de Malaga.
#@date 2011/05/24
ogMergeLive() ogMergeLive()
{ {
#Si existe en el punto de acceso del del oglive el fichero ogclient.sqfs #Si existe en el punto de acceso del del oglive el fichero ogclient.sqfs
@ -265,10 +336,15 @@ fi
#/**
# ogUnionLiveDir # ogUnionLiveDir
#par 1 el directorio a unir. #@brief fusiona dos directorios con unionfs
# para el parmetro 1 (directorio), #@param1
#@return
#@exception OG_ERR_FORMAT Formato incorrecto.
#@version 0.9
#@author Antonio J. Doblas. Universidad de Malaga.
#@date 2011/05/24
ogUnionLiveDir() ogUnionLiveDir()
{ {
TMPDIR=/$1 #dir TMPDIR=/$1 #dir
@ -287,7 +363,19 @@ ogUnionLiveDir()
#/**
# ogConfigureLoopback
#@brief Configura la interfaz loopback para cliente torrent
#@param
#@return
#@exception OG_ERR_FORMAT Formato incorrecto.
#@version 0.9 Usando funciones generales de ubuntu
#@author Antonio J. Doblas. Universidad de Malaga.
#@date 2010/05/24
#@version 1.0.1 Deteccion automatica de interfaz con enlace activo.
#@author Antonio J. Doblas. Universidad de Malaga.
#@date 2011/05/24
#*/ ##
ogConfigureLoopback() ogConfigureLoopback()
{ {
# for the portmapper we need localhost # for the portmapper we need localhost
@ -295,6 +383,16 @@ ifconfig lo 127.0.0.1
#/etc/init.d/portmap start #/etc/init.d/portmap start
} }
#/**
# ogConfigureNetworking
#@brief Configura la interfaz de red usada en el pxe
#@param
#@return
#@exception OG_ERR_FORMAT Formato incorrecto.
#@version 0.9
#@author Antonio J. Doblas. Universidad de Malaga.
#@date 2010/05/24
#*/ ##
ogConfigureNetworking() ogConfigureNetworking()
{ {
#echo "ogConfigureNetworking: Buscando interfaz a configurar DEVICE" #echo "ogConfigureNetworking: Buscando interfaz a configurar DEVICE"
@ -425,18 +523,18 @@ else
fi 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
#@brief Gestion de peticiones de usuario en modo ogdebug=true
#@param1 OPTIONS --timeout N --default ANSWER
#@param1 Questions
#@return 1=yes 0=no
#@exception OG_ERR_FORMAT Formato incorrecto.
#@version 0.9
#@author:
@date 2010/05/24
#*/ ##
ogYesNo() ogYesNo()
{ {
local ans local ans
@ -513,119 +611,3 @@ ogYesNo()
[[ "$ans" = "y" || "$ans" == "yes" ]] [[ "$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
}

View File

@ -24,6 +24,9 @@
#@version 1.0. - Adaptacion variables. Corrección enlace red #@version 1.0. - Adaptacion variables. Corrección enlace red
#@author Antonio J. Doblas Viso. Universidad de Málaga. EVLT. #@author Antonio J. Doblas Viso. Universidad de Málaga. EVLT.
#@date 2011/06/16 #@date 2011/06/16
#@version 1.0.1 - Adaptacion inicio multiples dispositivos, usb, red, cd
#@author Antonio J. Doblas Viso. Universidad de Málaga. EVLT.
#@date 2011/07/4
#*/ #*/

View File

@ -5,6 +5,13 @@
#svn checkout http://www.opengnsys.es/svn/branches/version2/ /tmp/opengnsys_installer/opengnsys2 #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; find /tmp/opengnsys_installer/ -name .svn -type d -exec rm -fr {} \; 2>/dev/null;
export SVNURL="http://opengnsys.es/svn/branches/version1.0/client/"
VERSIONSVN=$(LANG=C svn info $SVNURL | awk '/Revision:/ {print "r"$2}')
VERSIONBOOTTOOLS=ogLive
NAMEISOCLIENT="/tmp/opengnsys_info_rootfs"
NAMEHOSTCLIENT="/tmp/opengnsys_chroot"
SVNCLIENTDIR=/tmp/opengnsys_installer/opengnsys/client/boot-tools SVNCLIENTDIR=/tmp/opengnsys_installer/opengnsys/client/boot-tools
SVNCLIENTSTRUCTURE=/tmp/opengnsys_installer/opengnsys/client/shared SVNCLIENTSTRUCTURE=/tmp/opengnsys_installer/opengnsys/client/shared
@ -19,14 +26,16 @@ OSCODENAME=$(cat /etc/lsb-release | grep CODENAME | awk -F= '{print $NF}')
OSRELEASE=$(uname -a | awk '{print $3}') OSRELEASE=$(uname -a | awk '{print $3}')
uname -a | grep x86_64 > /dev/null && export OSARCH=amd64 || export OSARCH=i386 uname -a | grep x86_64 > /dev/null && export OSARCH=amd64 || export OSARCH=i386
OSHTTP="http://es.archive.ubuntu.com/ubuntu/" OSHTTP="http://es.archive.ubuntu.com/ubuntu/"
echo $OSDISTRIB:$OSCODENAME:$OSRELEASE:$OSARCH:$OSHTTP echo $OSDISTRIB:$OSCODENAME:$OSRELEASE:$OSARCH:$OSHTTP
LERROR=TRUE LERROR=TRUE
echo "$FUNCNAME: Iniciando la personalización con datos del SVN " echo "$FUNCNAME: Iniciando la personalización con datos del SVN "
# parseamos del apt.source # parseamos del apt.source
sed -e "s/OSCODENAME/$OSCODENAME/g" ${SVNCLIENTDIR}/clientstructure/etc/apt/sources.list.ubuntu > ${SVNCLIENTDIR}/clientstructure/etc/apt/sources.list sed -e "s/OSCODENAME/$OSCODENAME/g" ${SVNCLIENTDIR}/includes/etc/apt/sources.list.ubuntu > ${SVNCLIENTDIR}/includes/etc/apt/sources.list
if [ $? -ne 0 ] if [ $? -ne 0 ]
then then
echo "$FUNCNAME(): Parsing apt.sources : ERROR" echo "$FUNCNAME(): Parsing apt.sources : ERROR"
@ -114,5 +123,9 @@ cp -prv ${SVNOG2}/job_executer $OGCLIENTMOUNT/opt/opengnsys/bin/
cp ${SVNCLIENTSTRUCTURE}/bin/ogAdmClient $OGCLIENTMOUNT/bin cp ${SVNCLIENTSTRUCTURE}/bin/ogAdmClient $OGCLIENTMOUNT/bin
echo ${VERSIONBOOTTOOLS}-${OSCODENAME}-${OSRELEASE}-${VERSIONSVN} > $NAMEISOCLIENT
echo ${VERSIONBOOTTOOLS}-${OSCODENAME}-${VERSIONSVN} > $NAMEHOSTCLIENT
echo ${VERSIONBOOTTOOLS}-${OSCODENAME}-${VERSIONSVN} > /etc/debian_chroot
echo ${VERSIONBOOTTOOLS}-${OSCODENAME}-${VERSIONSVN} > /etc/opengnsys_chroot

View File

@ -15,26 +15,16 @@ apt-get -y --force-yes install build-essential libattr* attr make m4 gettext lib
source /opt/opengnsys/lib/engine/bin/ToolsGNU.c source /opt/opengnsys/lib/engine/bin/ToolsGNU.c
#TODO: comprobar si esta instalado. which ctorrent || ctorrent install
ctorrent install
#TODO: comprobar si esta instalado. which udp-sender || udpcast install
udpcast install
#ntfs-3g install which ms-sys || ms-sys install
#TODO: comprobar si esta instalado. which partclone.ntfs || $(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)
ms-sys install
#TODO: comprobar si esta instalado. which spartlnx.run || $(cd /tmp; wget http://damien.guibouret.free.fr/savepart.zip; unzip savepart.zip -d /sbin/)
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

View File

@ -28,7 +28,7 @@ apt-get -y --force-yes install linux-image-${OSRELEASE} linux-headers-${OSRELEAS
apt-get -y --force-yes install console-data locales apt-get -y --force-yes install console-data locales
# sofware networking # 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 -y --force-yes install netpipes nfs-common sshfs smbfs smbclient davfs2 unionfs-fuse open-iscsi nmap tcpdump arping dnsutils tftp
apt-get clean apt-get clean
# software services # software services
@ -46,7 +46,7 @@ apt-get -y --force-yes install drbl-partimage fsarchiver pv kexec-tools
apt-get -y --force-yes install mbuffer apt-get -y --force-yes install mbuffer
#monitor #monitor
apt-get install bwbar bmon iftop ifstat dstat hdparm sdparm blktool testdisk ssmping mii-diag apt-get -y --force-yes install bwbar bmon iftop ifstat dstat hdparm sdparm blktool testdisk ssmping mii-diag
## software postconf ## software postconf
apt-get -y --force-yes install drbl-chntpw chntpw ethtool lshw gawk subversion apt-get -y --force-yes install drbl-chntpw chntpw ethtool lshw gawk subversion
@ -56,14 +56,17 @@ apt-get -y --force-yes install lzma zip unzip gzip lzop drbl-lzop pigz pbzip2 lb
#compatibilidad og2 #compatibilidad og2
apt-get install python-openssl python apt-get -y --force-yes install python-openssl python
apt-get -y --force-yes remove busybox apt-get -y --force-yes remove busybox
apt-get -y --force-yes install busybox-static bash-static apt-get -y --force-yes install busybox-static bash-static
#apt-get -y --force-yes install xorg-dev xorg lxde roxterm
apt-get clean apt-get clean
#apt-get -y --force-yes xorg-dev xorg lxde roxterm
# #
#################################################################### ####################################################################
###################### Reconfigurando paquetes ###################### ###################### Reconfigurando paquetes ######################

View File

@ -0,0 +1,12 @@
#!/bin/bash
export LANGUAGE=C
export LC_ALL=C
export LANG=C
apt-get clean
apt-get -y update
apt-get -y --force-yes install xorg-dev xorg lxde roxterm
apt-get clean

View File

@ -7,3 +7,6 @@ modprobe 8139too
modprobe 8139cp modprobe 8139cp
dhclient dhclient
/etc/init.d/ssh restart /etc/init.d/ssh restart
#qemu -hda ogclient.img -kernel ./ogvmlinuz -initrd ./oginitrd.img -append "root=/dev/sda1 rw init=false" -boot c