diff options
-rwxr-xr-x | admin/Sources/Services/ogAdmRepoAux | 5 | ||||
-rwxr-xr-x | client/engine/Rsync.lib | 36 | ||||
-rw-r--r-- | client/shared/etc/lang.ca_ES.conf | 1 | ||||
-rw-r--r-- | client/shared/etc/lang.en_GB.conf | 1 | ||||
-rw-r--r-- | client/shared/etc/lang.es_ES.conf | 1 | ||||
-rwxr-xr-x | client/shared/scripts/createBaseImage | 4 | ||||
-rwxr-xr-x | client/shared/scripts/createDiffImage | 3 |
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. |