#673: Actualizar código incluido en OepnGnSys 1.0.6 sobre la rama {{{version1.1}}} para desarrollar la nueva versión.

git-svn-id: https://opengnsys.es/svn/branches/version1.1@4609 a21b9725-9963-47de-94b9-378ad31fedc9
remotes/github/master
ramon 2015-04-20 10:56:54 +00:00
parent 7eb742ebac
commit 82f994e22a
5 changed files with 230 additions and 8 deletions

View File

@ -23,7 +23,7 @@ mv /opt/opengnsys/tftpboot/ogclient /opt/opengnsys/tftpboot/ogclient-old;
#1. Descargar del Subversion las herramientas del cliente
apt-get install subversion wget
svn checkout http://www.opengnsys.es/svn/branches/version1.0/client /tmp/opengnsys_installer/opengnsys/client/;
svn checkout http://www.opengnsys.es/svn/branches/version1.1/client /tmp/opengnsys_installer/opengnsys/client/;
find /tmp/opengnsys_installer/ -name .svn -type d -exec rm -fr {} \; 2>/dev/null;
#2. Ejecutar el instalador:

View File

@ -92,7 +92,7 @@ case "${1,,}" in
export OSHTTP="http://es.archive.ubuntu.com/ubuntu/"
;;
esac
SVNURL="http://opengnsys.es/svn/branches/version1.0/client"
SVNURL="http://opengnsys.es/svn/branches/version1.1/client"
VERSIONSVN=$(LANG=C svn info $SVNURL | awk '/Rev:/ {print "r"$4}')
NAMEISOCLIENT="$VERSIONBOOTTOOLS-$OSCODENAME-$OSRELEASE-$VERSIONSVN"
NAMEHOSTCLIENT="$VERSIONBOOTTOOLS-$OSCODENAME-$VERSIONSVN"

View File

@ -74,6 +74,8 @@ ogExportVarEnvironment ()
{
export CFGINITRD="/tmp/initrd.cfg"
OGPROTOCOL="${ogprotocol:-smb}"
# OPTIONS Para samba y local (a nfs no le afecta)
export OPTIONS=" -o user=opengnsys,pass=og"
case "$OGPROTOCOL" in
nfs|NFS)
export SRCOGLIVE="/var/lib/tftpboot" && echo "SRCOGLIVE=$SRCOGLIVE" >> $CFGINITRD
@ -82,14 +84,17 @@ ogExportVarEnvironment ()
export SRCOGIMAGES="/opt/opengnsys/images" && echo "SRCOGIMAGES=$SRCOGIMAGES" >> $CFGINITRD
;;
smb|SMB|cifs|CIFS|samba|SAMBA)
export OPTIONS=" -o user=opengnsys,pass=og"
export SRCOGLIVE="tftpboot" && echo "SRCOGLIVE=$SRCOGLIVE" >> $CFGINITRD
export SRCOGSHARE="ogclient" && echo "SRCOGSHARE=$SRCOGSHARE" >> $CFGINITRD
export SRCOGLOG="oglog" && echo "SRCOGLOG=$SRCOGLOG" >> $CFGINITRD
export SRCOGIMAGES="ogimages" && echo "SRCOGIMAGES=$SRCOGIMAGES" >> $CFGINITRD
;;
local|LOCAL)
# Ponemos variables SRC compatibles con smb y nfs.
export SRCOGLIVE="local"
export SRCOGSHARE="client" && echo "SRCOGSHARE=$SRCOGSHARE" >> $CFGINITRD
export SRCOGLOG="log" && echo "SRCOGLOG=$SRCOGLOG" >> $CFGINITRD
export SRCOGIMAGES="images" && echo "SRCOGIMAGES=$SRCOGIMAGES" >> $CFGINITRD
;;
esac
#punto de acceso al boot-tools live
@ -214,8 +219,39 @@ ogPostConfigureFS()
#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 $DSTOGLIVE /opt/opengnsys/cache
[ "$ogprotocol" == "local" ] && ln -s ${OGLIVEROOTFS}/opt/opengnsys/* /opt/opengnsys/
#[ "$LOCALMEDIA" == "CACHE" ] && ln -s $DSTOGLIVE /opt/opengnsys/cache
#[ "$ogprotocol" == "local" ] && ln -s ${OGLIVEROOTFS}/opt/opengnsys/* /opt/opengnsys/
if [ "$ogprotocol" == "local" ]; then
# Creamos los subdirectorios de /opt/opengnsys/
[ "$ogstatus" == "offline" ] && ln -s ${OGLIVEROOTFS}/opt/opengnsys/* /opt/opengnsys/
# Montamos CACHE
# Si existe particion identificada como CACHE se monta.
DEVICECACHE=$(blkid -L "CACHE")
if [ "$DEVICECACHE" != "" ]; then
# Se monta diferente segun el dispositivo de cache igual o no al de ogclient.
DEVICEOGLIVE=$(df |grep $DSTOGLIVE|awk '{print $1}')
if [[ "$DEVICECACHE" == "*$DEVICEOGLIVE*" ]];then
mount --bind $DSTOGLIVE /opt/opengnsys/cache
else
mount $DEVICECACHE /opt/opengnsys/cache
fi
if [ "$ogstatus" == "offline" ]; then
[ -d /opt/opengnsys/cache/log ] || mkdir /opt/opengnsys/cache/log
mount --bind /opt/opengnsys/cache/log /opt/opengnsys/log
fi
fi
# Montamos REPO
if [ "$ogstatus" == "offline" ]; then
# Si estatus distinto de online buscamos un dispositivo con etiqueta repo
# y si no existe montamos la cache como repo (si existe).
TYPE=$(blkid | grep REPO | awk -F"TYPE=" '{print $2}' | tr -d \")
if [ "$TYPE" == "" ]; then
[ -d "/opt/opengnsys/cache$DSTOGIMAGES" ] && mount --bind /opt/opengnsys/cache$DSTOGIMAGES $DSTOGIMAGES
else
mount -t $TYPE LABEL=REPO $DSTOGIMAGES &>/dev/null
fi
fi
fi
#Montamos un directorio temporal para el apt-get
mount tmpfs /var/cache/apt/archives -t tmpfs -o size=15M
@ -361,6 +397,17 @@ ogConnect ()
smb)
mount.cifs //${SERVER}/${SRC} ${DST} ${OPTIONS}${READONLY}
;;
local)
# Comprobamos que estatus sea online y que la variable del server no esta vacia.
if [ "$ogstatus" != "offline" -a "$SERVER" != "" -a "$SRC" != "" ]; then
# Comprobamos que existe un servicio de samba.
smbclient -L $SERVER -N &>/dev/null
if [ $? -eq 0 ]; then
mount.cifs //${SERVER}/og${SRC} ${DST} ${OPTIONS}${READONLY}
fi
# TODO: buscar condicion para NFS
fi
;;
esac
}
@ -387,11 +434,11 @@ ogConnectOgLive ()
then
# Si local es particion CACHE es identificada como CACHE
mount LABEL=CACHE $DSTOGLIVE
export LOCALMEDIA=CACHE
#export LOCALMEDIA=CACHE
fi
else
# Si ogprotocol es remoto. TODO en smb rw y en nfs ro??
ogConnect $OGSERVERLIVE $OGPROTOCOL $SRCOGLIVE $DSTOGLIVE
# 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

55
ogclientImg2Sqfs 100755
View File

@ -0,0 +1,55 @@
#!/bin/bash
#/**
#@brief Comprime el fichero ogclient.img en ogclient.sqfs.
#@param none
#@exeption 1 No es usuario root
#@exeption 2 No existe el fichero ogclient.img
#@date 2013-11.27
#*/
PROG="$(basename $0)"
# Mostrar ayuda: Si se solicita, si faltan parametros o $3 no es SYNC1 o SYNC2.
if [ "$*" == "help" ]; then
echo -e "$PROG: Comprime el fichero ogclient.img en ogclient.sqfs. \n"
" Uso: $PROG (sin parametros)"
exit 0
fi
if [ "$USER" != "root" ]; then
echo "$PROG: Error: solo ejecutable por root" >&2
exit 1
fi
DATE=$(date +%y-%m-%d)
OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"}
OGCLIENTBASEDIR=$OPENGNSYS/tftpboot/ogclient/;
OGCLIENTFILE=${OGCLIENTBASEDIR}ogclient.img;
OGCLIENTSQFS=${OGCLIENTBASEDIR}ogclient.sqfs
OGCLIENTMOUNT=${OGCLIENTBASEDIR}ogclientmount;
OGCLIENTSIZEMB=1900;
OGCLIENTLABEL=ogClient;
# Comprobamos que existe el cliente .sqfs
! [ -f $OGCLIENTFILE -a -d $OGCLIENTMOUNT ] && echo "No existe $OGCLIENTFILE o $OGCLIENTMOUNT" && exit 3
# Montamos ogclient.img.
echo "Montamos ogclient.img."
mkdir -p $OGCLIENTMOUNT;
mount | grep $OGCLIENTMOUNT || mount $OGCLIENTFILE $OGCLIENTMOUNT -o loop,offset=32256;
# Si existe ogclient.sqfs hacemos copia de seguridad.
echo "Si existe ogclient.sqfs hacemos copia de seguridad."
[ -f ${OGCLIENTSQFS} ] && mv ${OGCLIENTSQFS} ${OGCLIENTSQFS}.$DATE
# Comprimimos el cliente.
echo "Comprimimos el cliente."
echo "mksquashfs $OGCLIENTMOUNT ${OGCLIENTSQFS}"
mksquashfs $OGCLIENTMOUNT ${OGCLIENTSQFS}
# Desmontamos el ogclient.img
echo "Desmontamos el ogclient.img"
umount $OGCLIENTMOUNT
# Generamos nuevo archivo de suma de comprobación.
echo "Generamos nuevo archivo de suma de comprobacion."
mv ${OGCLIENTSQFS}.sum ${OGCLIENTSQFS}.sum.$DATE
md5sum ${OGCLIENTSQFS} |awk '{print $1}' >${OGCLIENTSQFS}.sum

120
ogclientSqfs2Img 100755
View File

@ -0,0 +1,120 @@
#!/bin/bash
#/**
#@brief Descomprime el fichero ogclient.sqfs en ogclient.img con un formato donde podemos escribir.
#@param none
#@note Copiado del wiki: http://opengnsys.es/wiki/ClienteInitrdDSGenerarlo
#@note para "entrar" en ogclient: schroot -c ogclient.img o mount ogclient.img ogclientmount -o loop,offset=32256
#@exeption 1 No es usuario root
#@exeption 2 No existe el fichero ogclient.sqfs
#@date 2013-11.27
#*/
PROG="$(basename $0)"
# Mostrar ayuda si se solicita.
if [ "$*" == "help" ]; then
echo -e "$PROG: Descomprime el fichero ogclient.sqfs en ogclient.img con un formato donde podemos escribir. \n" \
" Uso: $PROG (sin parametros)"
exit 0
fi
if [ "$USER" != "root" ]; then
echo "$PROG: Error: solo ejecutable por root" >&2
exit 1
fi
DATE=$(date +%y-%m-%d)
OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"}
OGCLIENTBASEDIR=$OPENGNSYS/tftpboot/ogclient/;
OGCLIENTSQFS=${OGCLIENTBASEDIR}ogclient.sqfs
OGCLIENTFILE=${OGCLIENTBASEDIR}ogclient.img;
OGCLIENTMOUNT=${OGCLIENTBASEDIR}ogclientmount;
OGCLIENTSIZEMB=1900;
OGCLIENTLABEL=ogClient;
# Comprobamos que existe el cliente .sqfs
! [ -f $OGCLIENTSQFS ] && echo "No existe $OGCLIENTSQFS" && exit 3
# instalamos los paquetes necesarios.
echo "Si no existen, instalamos los paquetes necesarios: squashfs-tools schroot."
if ! which schroot unsquashfs 2>&1 >/dev/null; then
apt-get update
apt-get -y install squashfs-tools schroot
fi
# Creamos el archivo.
echo -e "\nCreamos el archivo."
echo dd if=/dev/zero of=$OGCLIENTFILE bs=1048576 count=$OGCLIENTSIZEMB;
dd if=/dev/zero of=$OGCLIENTFILE bs=1048576 count=$OGCLIENTSIZEMB;
DISKLOOP=$(losetup -f);
losetup $DISKLOOP $OGCLIENTFILE;
echo -e "n\np\n1\n\n\nt\n83\nw" | fdisk $DISKLOOP;
losetup -d $DISKLOOP ;
# Creamos el sistema de ficheros.
echo "Creamos el sistema de ficheros."
echo "mkfs.ext4 -b 4096 -L $OGCLIENTLABEL $PARTLOOP"
PARTLOOP=$(losetup -f);
losetup -o 32256 $PARTLOOP $OGCLIENTFILE && mkfs.ext4 -b 4096 -L $OGCLIENTLABEL $PARTLOOP;
losetup -d $PARTLOOP ;
# Descomprimimos el ogclient.sqfs en el sistema de ficheros.
mkdir -p $OGCLIENTMOUNT;
echo "Descomprimimos el ogclient.sqfs en el sistema de ficheros."
mount | grep $OGCLIENTMOUNT || mount $OGCLIENTFILE $OGCLIENTMOUNT -o loop,offset=32256;
echo "unsquashfs -d ${OGCLIENTMOUNT}/ -f $OGCLIENTSQFS"
unsquashfs -d ${OGCLIENTMOUNT}/ -f $OGCLIENTSQFS
umount $OGCLIENTMOUNT;
# Creamos los archivos de configuracion de schroot.
echo "Creamos los archivos de configuracion de schroot."
cp /etc/schroot/schroot.conf /etc/schroot/schroot.conf.$DATE
cat << EOF > /etc/schroot/schroot.conf
[ogclient.img]
type=loopback
file=${OGCLIENTBASEDIR}ogclient.img
description=ogclient ubuntu luc IMGi
#priority=1
users=root
groups=root
root-groups=root
mount-options=-o offset=32256
root-users=root
#[DIRogclient]
#type=directory
#directory=${OGCLIENTBASEDIR}ogclientmount
#description=ogclient ubuntu lucid DIR
#priority=2
#users=root
#groups=root
#root-groups=root
#root-users=root
EOF
cp /etc/schroot/mount-defaults /etc/schroot/mount-defaults.$DATE
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
# Si existen dispositivos loop los eliminamos.
echo "Si existen dispositivos loop los eliminamos."
LOOPDEVICES=$(losetup -a|grep $OGCLIENTFILE |cut -d: -f1)
for DEVICE in $LOOPDEVICES
do
echo "losetup -d $DEVICE"
losetup -d $DEVICE
done
echo -e "Para \"entrar\" en ogclient: \n \t schroot -c ogclient.img o \n \t mount ogclient.img ogclientmount -o loop,offset=32256"
echo "El servicio schroot montará el cliente automaticamente, si no queremos que pase hay que apagarlo."