summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xadmin/Sources/Services/ogAdmRepoAux5
-rwxr-xr-xclient/engine/Rsync.lib36
-rw-r--r--client/shared/etc/lang.ca_ES.conf1
-rw-r--r--client/shared/etc/lang.en_GB.conf1
-rw-r--r--client/shared/etc/lang.es_ES.conf1
-rwxr-xr-xclient/shared/scripts/createBaseImage4
-rwxr-xr-xclient/shared/scripts/createDiffImage3
7 files changed, 33 insertions, 18 deletions
diff --git a/admin/Sources/Services/ogAdmRepoAux b/admin/Sources/Services/ogAdmRepoAux
index 7d21b241..01dac195 100755
--- a/admin/Sources/Services/ogAdmRepoAux
+++ b/admin/Sources/Services/ogAdmRepoAux
@@ -25,8 +25,9 @@ REPODIR="$BASEDIR/images/"
# BACKUP: Define si se realiza copia de seguridad al crear una imagen (true|false).
eval $(grep BACKUP $BASEDIR/client/etc/engine.cfg)
# FS segun kernel. ext4 para < 3.7, para >= BTRFS
-KERNEL=$(file $BASEDIR/tftpboot/ogclient/ogvmlinuz |awk -F . '{print $2}')
-[ $KERNEL -lt 7 ] && IMGFS="EXT4" || IMGFS="BTRFS"
+KERNEL=$(file -bkr /opt/opengnsys/tftpboot/ogclient/ogvmlinuz |awk '/Linux/ {for(i=1;i<=NF;i++) if($i~/version/) {v=$(i+1);printf("%d",v);sub(/[0-9]*\./,"",v);printf(".%02d",v)}}')
+[ $KERNEL \< 3.7 ] && IMGFS="EXT4" || IMGFS="BTRFS"
+
# Añade registro de incidencias.
function echolog () {
diff --git a/client/engine/Rsync.lib b/client/engine/Rsync.lib
index 0d750800..b45406b1 100755
--- a/client/engine/Rsync.lib
+++ b/client/engine/Rsync.lib
@@ -10,7 +10,7 @@
#*/
function ogCreateFileImage () {
-local SIZEREQUIRED IMGDIR IMGFILE DIRMOUNT LOOPDEVICE IMGSIZE IMGEXT
+local SIZEREQUIRED IMGDIR IMGFILE DIRMOUNT LOOPDEVICE IMGSIZE IMGEXT KERNELVERSION
if [ "$*" == "help" ]; then
ogHelp "$FUNCNAME" : "$MSG_HELP_ogCreateFileImage" \
@@ -28,6 +28,7 @@ fi
SIZEREQUIRED=$4
[ $SIZEREQUIRED -lt 300000 ] && SIZEREQUIRED=300000
+KERNELVERSION=$(uname -r| awk '{printf("%d",$1);sub(/[0-9]*\./,"",$1);printf(".%02d",$1)}')
if [ "$1" == "CACHE" -o "$1" == "cache" ]; then
IMGDIR="$(ogGetParentPath "$1" "/$2")"
@@ -64,8 +65,7 @@ if [ "$1" == "CACHE" -o "$1" == "cache" ]; then
echo " truncate --size=>$SIZEREQUIRED k $IMGFILE"
truncate --size=">$SIZEREQUIRED"k "$IMGFILE" &> $OGLOGCOMMAND
# FS de la imagen segun la version del kernel: < 3.7 ext4, si >= btrfs
- #if [[ "$(uname -r)" < "3.7" ]]; then
- if [ $(uname -r|cut -d. -f2) -lt 7 ]; then
+ if [ $KERNELVERSION \< 3.7 ]; then
losetup $LOOPDEVICE "$IMGFILE"
echo " resize2fs -f $LOOPDEVICE"
resize2fs -f $LOOPDEVICE &> $OGLOGCOMMAND
@@ -83,8 +83,7 @@ if [ "$1" == "CACHE" -o "$1" == "cache" ]; then
#Formateamos imagen
losetup $LOOPDEVICE $IMGFILE
# FS de la imagen segun la version del kernel: < 3.7 ext4, si >= btrfs
- #if [[ "$(uname -r)" < "3.7" ]]; then
- if [ $(uname -r|cut -d. -f2) -lt 7 ]; then
+ if [ $KERNELVERSION \< 3.7 ]; then
echo " mkfs.ext4 -i 4096 -b 4096 -L "${2##*\/}" $LOOPDEVICE"
mkfs.ext4 -i 4096 -b 4096 -L "${2##*\/}" $LOOPDEVICE 2>&1 |tee -a $OGLOGCOMMAND
else
@@ -119,8 +118,7 @@ function ogCreateInfoImage () {
#@param 4 Nombre Imagen Basica (opcional en las completas)
#@param 5 Tipo imagen [ img | diff ]
#*/
-local IMGTYPE IMGDIRAUX DIRMOUNT DESTRSYNC PASSWORD OPTRSYNC USERRSYNC ORIG FSTYPE PART DIREMPTY IMGLIST IMGINFO IMGACL
-
+local IMGTYPE IMGDIRAUX DIRMOUNT DESTRSYNC PASSWORD OPTRSYNC USERRSYNC ORIG FSTYPE PART DIREMPTY IMGLIST IMGINFO IMGACL KERNELVERSION
# Ayuda o menos de 5 parametros y la imagen no es basica
if [ "$*" == "help" -o $# -lt 5 -a "$3" != "img" ]; then
ogHelp "$FUNCNAME" : "$MSG_HELP_ogCreateInfoImage" \
@@ -178,8 +176,8 @@ rm -f $ORIG/ogimg.* 2>/dev/null
SIZEDATA=${SIZEDATA:-"SIZEDATA"}
# Incluimos información de la imagen. Segun el kernel sera ext4 o btrfs.
-#if [[ "$(uname -r)" < "3.7" ]]; then
-if [ $(uname -r|cut -d. -f2) -lt 7 ]; then
+KERNELVERSION=$(uname -r| awk '{printf("%d",$1);sub(/[0-9]*\./,"",$1);printf(".%02d",$1)}')
+if [ $KERNELVERSION \< 3.7 ]; then
echo "#EXT4:NO:$FSTYPE:$SIZEDATA" > $IMGINFO
else
echo "#BTRFS:LZO:$FSTYPE:$SIZEDATA" > $IMGINFO
@@ -498,7 +496,7 @@ function ogMountImage () {
#@param 3 Tipo imagen [ img |diff ]
#@return punto de montaje
#*/
-local IMGEXT IMGFILE DIRMOUNT
+local IMGEXT IMGFILE DIRMOUNT KERNELVERSION
if [ "$*" == "help" ]; then
ogHelp "$FUNCNAME": "$MSG_HELP_ogMountImage" \
@@ -531,7 +529,8 @@ else
mkdir -p "/tmp/$DIRMOUNT"
# FS de la imagen segun la version del kernel: < 3.7 ext4, si >= btrfs
- if [ $(uname -r|cut -d. -f2) -lt 7 ]; then
+ KERNELVERSION=$(uname -r| awk '{printf("%d",$1);sub(/[0-9]*\./,"",$1);printf(".%02d",$1)}')
+ if [ $KERNELVERSION \< 3.7 ]; then
mount -t ext4 -o loop "$IMGFILE" "/tmp/$DIRMOUNT" 1>/dev/null
else
mount -o compress=lzo "$IMGFILE" "/tmp/$DIRMOUNT" 1>/dev/null
@@ -672,7 +671,7 @@ let TIMEOUT=$SIZE/$CREATESPEED
until $(grep -i $STATE $LOCKFILE &>/dev/null) ; do
[ $STATE = "mounted" -a -f "$DIRMOUNT/ogimg.info" ] && ogEcho session "" && return 0
TIMEAUX=$[SECONDS-TIME]
- [ "$TIMEAUX" -lt "$TIMEOUT" ] || return $(ogRaiseError $OG_ERR_DONTMOUNT_IMAGE "$3 $4 $IMGEXT"; echo $?)
+ [ "$TIMEAUX" -lt "$TIMEOUT" ] || return $(ogRaiseError $OG_ERR_DONTMOUNT_IMAGE "$3 $4 $IMGEXT: time_out."; echo $?)
echo -n "#" | tee -a $OGLOGSESSION $OGLOGFILE
sleep 5
done
@@ -812,7 +811,7 @@ file "$IMGFILE" | grep -i -e " BTRFS Filesystem " -e " ext4 filesystem " >/dev/n
#@exception OG_ERR_NOTFOUND # 2 Fichero o dispositivo no encontrado.
#*/
function ogCheckSyncImage () {
-local IMGEXT IMGDIR IMGFILE DIRMOUNT RETVAL
+local IMGEXT IMGDIR IMGFILE DIRMOUNT ISMOUNT RETVAL KERNELVERSION
if [ "$*" == "help" ]; then
ogHelp "$FUNCNAME": "$MSG_HELP_ogCheckSyncImage" \
@@ -833,10 +832,19 @@ IMGFILE="${IMGDIR}/$(basename "/$2").$IMGEXT"
ogIsSyncImage $1 "$2" "${IMGEXT#*\.}" || return $(ogRaiseError $OG_ERR_DONTSYNC_IMAGE "$3 $4"; echo $?)
+# Comprobamos que no esté montada (daria falso error)
+if [ "$1" == "CACHE" -o "$1" == "cache" ]; then
+ $(df | grep "/tmp/mount/$2${IMGEXT#img}$" &>/dev/null) && ISMOUNT=TRUE
+else
+ [ -f "$OGIMG/mount/$2${IMGEXT#img}/ogimg.info" ] && ISMOUNT=TRUE
+fi
+[ "$ISMOUNT" == TRUE ] && ogEcho session warning "$MSG_SYNC_NOCHECK" && return 0
+
DIRMOUNT="/tmp/ogCheckImage$$"
mkdir "$DIRMOUNT"
# FS de la imagen segun la version del kernel: < 3.7 ext4, si >= btrfs
-if [ $(uname -r|cut -d. -f2) -lt 7 ]; then
+KERNELVERSION=$(uname -r| awk '{printf("%d",$1);sub(/[0-9]*\./,"",$1);printf(".%02d",$1)}')
+if [ $KERNELVERSION \< 3.7 ]; then
mount -t ext4 -o loop "$IMGFILE" "$DIRMOUNT" 2>&1 | tee -a $OGLOGCOMMAND
RETVAL=${PIPESTATUS[0]}
else
diff --git a/client/shared/etc/lang.ca_ES.conf b/client/shared/etc/lang.ca_ES.conf
index 47c1ea51..6aa9fa2a 100644
--- a/client/shared/etc/lang.ca_ES.conf
+++ b/client/shared/etc/lang.ca_ES.conf
@@ -259,6 +259,7 @@ MSG_SYNC_SLEEP="Espera que se monte/reduzca la imagen"
# mensajes syncronizadas complementarios a errores
MSG_SYNC_DIFFERENTFS="El sistema de ficheros de destino no coincide con el de la imagen"
MSG_SYNC_EXTENSION="Las extensiones de la imagenes deben ser img o diff"
+MSG_SYNC_NOCHECK="La imagen esta montada por otro proceso, no podemos comprobarla"
MSG_RESTORE="Restaura la imagen en"
diff --git a/client/shared/etc/lang.en_GB.conf b/client/shared/etc/lang.en_GB.conf
index c8ea82d1..98dd7877 100644
--- a/client/shared/etc/lang.en_GB.conf
+++ b/client/shared/etc/lang.en_GB.conf
@@ -259,6 +259,7 @@ MSG_SYNC_SLEEP="Espera que se monte/reduzca la imagen"
# mensajes syncronizadas complementarios a errores
MSG_SYNC_DIFFERENTFS="El sistema de ficheros de destino no coincide con el de la imagen"
MSG_SYNC_EXTENSION="Las extensiones de la imagenes deben ser img o diff"
+MSG_SYNC_NOCHECK="La imagen esta montada por otro proceso, no podemos comprobarla"
MSG_RESTORE="Restaura la imagen en"
diff --git a/client/shared/etc/lang.es_ES.conf b/client/shared/etc/lang.es_ES.conf
index 3d26227d..9b4afdfd 100644
--- a/client/shared/etc/lang.es_ES.conf
+++ b/client/shared/etc/lang.es_ES.conf
@@ -259,6 +259,7 @@ MSG_SYNC_SLEEP="Espera que se monte/reduzca la imagen"
# mensajes syncronizadas complementarios a errores
MSG_SYNC_DIFFERENTFS="El sistema de ficheros de destino no coincide con el de la imagen"
MSG_SYNC_EXTENSION="Las extensiones de la imagenes deben ser img o diff"
+MSG_SYNC_NOCHECK="La imagen esta montada por otro proceso, no podemos comprobarla"
MSG_RESTORE="Restaura la imagen en"
diff --git a/client/shared/scripts/createBaseImage b/client/shared/scripts/createBaseImage
index 538aa74b..85eb4075 100755
--- a/client/shared/scripts/createBaseImage
+++ b/client/shared/scripts/createBaseImage
@@ -44,7 +44,9 @@ TIME1=$SECONDS
CREATESPEED=${CREATESPEED:-"100000*4"}
# Sistema de fichero de la imagen según kernel, menor que 3.7 EXT4. comparamos revision
-[ $(uname -r|cut -d. -f2) -lt 7 ] && IMGFS="EXT4" || IMGFS="BTRFS"
+KERNELVERSION=$(uname -r| awk '{printf("%d",$1);sub(/[0-9]*\./,"",$1);printf(".%02d",$1)}')
+[ $KERNELVERSION \< 3.7 ] && IMGFS="EXT4" || IMGFS="BTRFS"
+
# % de compresion para estimacion tamaño imagen IMGFS="EXT4"
ZSYNC=${ZSYNC:-"120"}
diff --git a/client/shared/scripts/createDiffImage b/client/shared/scripts/createDiffImage
index e9806939..ecbf2914 100755
--- a/client/shared/scripts/createDiffImage
+++ b/client/shared/scripts/createDiffImage
@@ -46,7 +46,8 @@ function onexit() {
# Factor de calculo de Time out al crear imagen: valor por defecto en engine.cfg
CREATESPEED=${CREATESPEED:-"100000*4"}
# Sistema de fichero de la imagen según kernel, menor que 3.7 EXT4. comparamos revision
-[ $(uname -r|cut -d. -f2) -lt 7 ] && IMGFS="EXT4" || IMGFS="BTRFS"
+KERNELVERSION=$(uname -r| awk '{printf("%d",$1);sub(/[0-9]*\./,"",$1);printf(".%02d",$1)}')
+[ $KERNELVERSION \< 3.7 ] && IMGFS="EXT4" || IMGFS="BTRFS"
# % de compresion para estimacion tamaño imagen IMGFS="EXT4"
ZSYNC=${ZSYNC:-"120"}
# Si IMGFS="BTRFS" la compresion es mayor.