#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-378ad31fedc9remotes/github/master
parent
7eb742ebac
commit
82f994e22a
|
@ -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:
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -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."
|
Loading…
Reference in New Issue