summaryrefslogtreecommitdiffstats
path: root/client/shared
diff options
context:
space:
mode:
authorIrina Gómez <irinagomez@us.es>2019-01-09 12:47:43 +0100
committerIrina Gómez <irinagomez@us.es>2019-01-18 10:59:35 +0100
commit30238abde6f70b3c14e9adcb5d0c1384edc9f2b3 (patch)
treeebeb7083ceaef778afdd37d7705e3fd854af6651 /client/shared
parent39b84ff8812a3460f60e00ec2729dba9a7eb7849 (diff)
#802 UEFI Windows compatibility: necessary functions for create and restore images.
Diffstat (limited to 'client/shared')
-rw-r--r--client/shared/etc/lang.ca_ES.conf8
-rw-r--r--client/shared/etc/lang.en_GB.conf8
-rw-r--r--client/shared/etc/lang.es_ES.conf8
-rwxr-xr-xclient/shared/scripts/configureOs48
-rwxr-xr-xclient/shared/scripts/createImage18
-rwxr-xr-xclient/shared/scripts/deployImage2
6 files changed, 80 insertions, 12 deletions
diff --git a/client/shared/etc/lang.ca_ES.conf b/client/shared/etc/lang.ca_ES.conf
index 1bb2483d..7dd96c72 100644
--- a/client/shared/etc/lang.ca_ES.conf
+++ b/client/shared/etc/lang.ca_ES.conf
@@ -131,6 +131,7 @@ MSG_HELP_ogCreateMbrImage="Genera una imagen del sector de arranque (MBR)."
MSG_HELP_ogCreatePartitions="Define la estructura de particiones de un disco."
MSG_HELP_ogCreatePartitionTable="Genera una tabla de particiones en caso de que no sea valida."
MSG_HELP_ogCreateTorrent=""
+MSG_HELP_ogCopyEfiBootLoader="Copia el cargador de arranque desde la partición EFI a la de sistema."
MSG_HELP_ogDeleteCache="Elimina la partición de caché local."
MSG_HELP_ogDeleteFile="Borra un fichero de un espacio de almacenamiento."
MSG_HELP_ogDeletePartitionTable="Elimina la tabla de particiones del disco"
@@ -196,7 +197,7 @@ MSG_HELP_ogGrubHidePartitions="Configura el grub del MBR para que oculte las par
MSG_HELP_ogGrubInstallMbr="Instal·la el carregador d'arrencada GRUB al MBR del primer disc dur"
MSG_HELP_ogGrubInstallPartition="Instal·la el carregador d'arrencada BURG al BootSector"
MSG_HELP_ogGrubOgliveDefaultEntry="Configura la entrada de ogLive como la entrada por defecto de GRUB."
-MSG_HELP_ogGrubUEFIConf="Genera el fichero grub.cfg de la partición EFI."
+MSG_HELP_ogGrubUefiConf="Genera el fichero grub.cfg de la partición EFI."
MSG_HELP_ogHelp="Muestra mensajes de ayudas para las funciones."
MSG_HELP_ogHidePartition="Oculta una partición de Windows."
MSG_HELP_ogIdToType="Devuelve el mnemónico asociado al identificador de tipo de partición."
@@ -249,9 +250,12 @@ MSG_HELP_ogReduceImage="Reduce el tamaño de la imagen"
MSG_HELP_ogRestoreAclImage=""
MSG_HELP_ogRestoreBootLoaderImage=""
MSG_HELP_ogRestoreDiskImage="Restaura una imagen de un disco completo."
+MSG_HELP_ogRestoreEfiBootLoader="Copia el cargador de arranque de la partición de sistema a la partición EFI."
MSG_HELP_ogRestoreImage="Restaura una imagen de sistema operativo."
MSG_HELP_ogRestoreInfoImage="Restablece informacion del sistema: acl y enlaces simbolicos"
MSG_HELP_ogRestoreMbrImage="Restaura una imagen del sector de arranque (MBR)."
+MSG_HELP_ogRestoreUuidPartitions="Restaura los uuid de las particiones y la tabla de particiones."
+MSG_HELP_ogSaveImageInfo="Crea un fichero con la información de la imagen."
MSG_HELP_ogSetLinuxName=""
MSG_HELP_ogSetPartitionActive="Establece el número de partición activa de un disco."
MSG_HELP_ogSetPartitionId="Modifica el tipo de una partición física usando el mnemónico del tipo."
@@ -283,7 +287,7 @@ MSG_HELP_ogUnmountImage="Desmonta la imagen"
MSG_HELP_ogUnsetDirtyBit=""
MSG_HELP_ogUpdateCacheIsNecesary="Comprueba si es necesario actualizar una archivo en la cache local."
MSG_HELP_ogUpdatePartitionTable="Actualiza informacion tabla particiones del disco"
-MSG_HELP_ogUUIDChange="Reemplaza el UUID de un sistema de ficheros."
+MSG_HELP_ogUuidChange="Reemplaza el UUID de un sistema de ficheros."
MSG_HELP_ogWaitSyncImage=""
MSG_HELP_ogWindowsBootParameters=""
MSG_HELP_ogWindowsRegisterPartition=""
diff --git a/client/shared/etc/lang.en_GB.conf b/client/shared/etc/lang.en_GB.conf
index ca12ed8e..9059e573 100644
--- a/client/shared/etc/lang.en_GB.conf
+++ b/client/shared/etc/lang.en_GB.conf
@@ -134,6 +134,7 @@ MSG_HELP_ogCreateMbrImage="Creates MBR image."
MSG_HELP_ogCreatePartitions="Creates disk partition table."
MSG_HELP_ogCreatePartitionTable="Creates partition table, if necessary."
MSG_HELP_ogCreateTorrent=""
+MSG_HELP_ogCopyEfiBootLoader="Copy the boot loader from the EFI partition to system partition."
MSG_HELP_ogDeleteCache="Deletes local cache partition."
MSG_HELP_ogDeleteFile="Deletes file from storage."
MSG_HELP_ogDeletePartitionTable="Deletes disk table partition"
@@ -199,7 +200,7 @@ MSG_HELP_ogGrubHidePartitions="Sets MBR grub to hide non starting Windows partit
MSG_HELP_ogGrubInstallMbr="Installs GRUB boot loader on 1st HD MBR"
MSG_HELP_ogGrubInstallPartition="Installs GRUB boot loader on BootSector"
MSG_HELP_ogGrubOgliveDefaultEntry="Sets ogLive entry as default GRUB entry."
-MSG_HELP_ogGrubUEFIConf="Generates the grub.cfg file of the EFI partition."
+MSG_HELP_ogGrubUefiConf="Generates the grub.cfg file of the EFI partition."
MSG_HELP_ogHelp="Shows functions help messages."
MSG_HELP_ogHidePartition="Hides Windows partition."
MSG_HELP_ogIdToType="Returns partition type identifier."
@@ -252,9 +253,12 @@ MSG_HELP_ogReduceImage="Reduces image size."
MSG_HELP_ogRestoreAclImage="Restores Windows ACL (Inf. must be on /tmp)."
MSG_HELP_ogRestoreBootLoaderImage=""
MSG_HELP_ogRestoreDiskImage="Restores disk image."
+MSG_HELP_ogRestoreEfiBootLoader="Copy the boot loader from the system partition to the EFI partition."
MSG_HELP_ogRestoreImage="Restore OS image."
MSG_HELP_ogRestoreInfoImage="Restores system information: ACL and symbolic links"
MSG_HELP_ogRestoreMbrImage="Restores boot sector image (MBR)."
+MSG_HELP_ogRestoreUuidPartitions="Restores UUID of partitions and partition table."
+MSG_HELP_ogSaveImageInfo="Creates the image information file."
MSG_HELP_ogSetLinuxName=""
MSG_HELP_ogSetPartitionActive="Sets active partition number of disk."
MSG_HELP_ogSetPartitionId="Changes partition ID using mnemonic."
@@ -286,7 +290,7 @@ MSG_HELP_ogUnmount="Unmounts file system."
MSG_HELP_ogUnsetDirtyBit=
MSG_HELP_ogUpdateCacheIsNecesary="Checks if necessary file update in local cache."
MSG_HELP_ogUpdatePartitionTable="Updates disk partition table info "
-MSG_HELP_ogUUIDChange="Replaces the filesystem UUID"
+MSG_HELP_ogUuidChange="Replaces the filesystem UUID"
MSG_HELP_ogWaitSyncImage=""
MSG_HELP_ogWindowsBootParameters=""
MSG_HELP_ogWindowsRegisterPartition=""
diff --git a/client/shared/etc/lang.es_ES.conf b/client/shared/etc/lang.es_ES.conf
index 281ac1d9..7766e923 100644
--- a/client/shared/etc/lang.es_ES.conf
+++ b/client/shared/etc/lang.es_ES.conf
@@ -131,6 +131,7 @@ MSG_HELP_ogCreateMbrImage="Genera una imagen del sector de arranque (MBR)."
MSG_HELP_ogCreatePartitions="Define la estructura de particiones de un disco."
MSG_HELP_ogCreatePartitionTable="Genera una tabla de particiones en caso de que no sea valida."
MSG_HELP_ogCreateTorrent=""
+MSG_HELP_ogCopyEfiBootLoader="Copia el cargador de arranque desde la partición EFI a la de sistema."
MSG_HELP_ogDeleteCache="Elimina la partición de caché local."
MSG_HELP_ogDeleteFile="Borra un fichero de un espacio de almacenamiento."
MSG_HELP_ogDeletePartitionTable="Elimina la tabla de particiones del disco"
@@ -196,7 +197,7 @@ MSG_HELP_ogGrubHidePartitions="Configura el grub del MBR para que oculte las par
MSG_HELP_ogGrubInstallMbr="Instala el gestor de arranque GRUB en el MBR del primer disco duro"
MSG_HELP_ogGrubInstallPartition="Instala el gestor de arranque GRUB en el BootSector"
MSG_HELP_ogGrubOgliveDefaultEntry="Configura la entrada de ogLive como la entrada por defecto de GRUB."
-MSG_HELP_ogGrubUEFIConf="Genera el fichero grub.cfg de la partición EFI."
+MSG_HELP_ogGrubUefiConf="Genera el fichero grub.cfg de la partición EFI."
MSG_HELP_ogHelp="Muestra mensajes de ayudas para las funciones."
MSG_HELP_ogHidePartition="Oculta una partición de Windows."
MSG_HELP_ogIdToType="Devuelve el mnemónico asociado al identificador de tipo de partición."
@@ -249,9 +250,12 @@ MSG_HELP_ogReduceImage="Reduce el tamaño de la imagen"
MSG_HELP_ogRestoreAclImage="Restaura las ACL de Windows (La informacion debe estar copiada en /tmp)."
MSG_HELP_ogRestoreBootLoaderImage=""
MSG_HELP_ogRestoreDiskImage="Restaura una imagen de un disco completo."
+MSG_HELP_ogRestoreEfiBootLoader="Copia el cargador de arranque de la partición de sistema a la partición EFI."
MSG_HELP_ogRestoreImage="Restaura una imagen de sistema operativo."
MSG_HELP_ogRestoreInfoImage="Restablece información del sistema: ACL y enlaces simbolicos"
MSG_HELP_ogRestoreMbrImage="Restaura una imagen del sector de arranque (MBR)."
+MSG_HELP_ogRestoreUuidPartitions="Restaura los uuid de las particiones y la tabla de particiones."
+MSG_HELP_ogSaveImageInfo="Crea un fichero con la información de la imagen."
MSG_HELP_ogSetLinuxName=""
MSG_HELP_ogSetPartitionActive="Establece el número de partición activa de un disco."
MSG_HELP_ogSetPartitionId="Modifica el tipo de una partición física usando el mnemónico del tipo."
@@ -283,7 +287,7 @@ MSG_HELP_ogUnmountImage="Desmonta la imagen."
MSG_HELP_ogUnsetDirtyBit=""
MSG_HELP_ogUpdateCacheIsNecesary="Comprueba si es necesario actualizar una archivo en la cache local."
MSG_HELP_ogUpdatePartitionTable="Actualiza información de la tabla de particiones del disco."
-MSG_HELP_ogUUIDChange="Reemplaza el UUID de un sistema de ficheros."
+MSG_HELP_ogUuidChange="Reemplaza el UUID de un sistema de ficheros."
MSG_HELP_ogWaitSyncImage=""
MSG_HELP_ogWindowsBootParameters=""
MSG_HELP_ogWindowsRegisterPartition=""
diff --git a/client/shared/scripts/configureOs b/client/shared/scripts/configureOs
index 4a7672a3..c251b0ff 100755
--- a/client/shared/scripts/configureOs
+++ b/client/shared/scripts/configureOs
@@ -5,6 +5,8 @@
#@brief Script para realizar la configuracion del sistema operativo restaurado.
#@param 1 disco
#@param 2 particion
+#@param 3 Repositorio (CACHE, REPO o dirección IP)
+#@param 4 Nombre canónico de la imagen (sin extensión)
#@return
#@TODO comprobar que el tipo de particion corresponde con el sistema de archivos.
#@exception OG_ERR_FORMAT # 1 formato incorrecto.
@@ -32,12 +34,45 @@
#@version 1.0.6b - llamadas opcionales para mejoras varias. Descomentar la instruccion para su activacion. ogConfigureFstab
#@author Antonio J. Doblas Viso. Universidad de Malaga.
#@date 2016-11-03
+#@version 1.1.1 - Equipos UEFI: cambia uuid de las particiones y restaura el cargador de arranque (Windows) (tickect #802)
+#@author Irina Gomez, ETSII Universidad de Sevilla
+#@date 2019-01-08
#*/ ##
# Carga el configurador del engine y los parámetros de red.
[ -z $OGENGINECONFIGURATE ] && source /opt/opengnsys/etc/engine.cfg
[ -f $DEVICECFG ] && source $DEVICECFG
+PROG="$(basename $0)"
+
+# Para Windows en equipos EFI son necesarios cuatro parámetros
+OSTYPE="$(ogGetOsType $1 $2)"
+if [ ogIsEfiActive -a "$OSTYPE" == "Windows" ]; then
+ if [ $# -lt 4 ]; then
+ ogRaiseError session $OG_ERR_FORMAT
+ ogHelp "$PROG:" \
+ "$PROG ndisco nparticion [ REPO|CACHE|IPSERVER ] [imagename]" \
+ "$PROG 1 1" \
+ "$PROG 1 2 REPO Windows (UEFI)"
+ exit $OG_ERR_FORMAT
+ fi
+
+ REPO="${3^^}"
+ REPO=${REPO:-"REPO"}
+ IMGNAME="$4"
+ # Cambio de repositorio
+ if [ "$REPO" == "$(ogGetIpAddress)" -o "$REPO" == "CACHE" ]; then
+ REPO="CACHE"
+ else
+ ogCheckIpAddress "$REPO"
+ if [ $? == 0 -o "$REPO" == "REPO" ]; then
+ # Si falla el cambio -> salimos con error repositorio no valido
+ ogChangeRepo $REPO ${OGUNIT} || exit $(ogRaiseError $OG_ERR_NOTFOUND "$REPO $OGUNIT"; echo $?)
+ REPO="REPO"
+ fi
+ fi
+fi
+
# Si el sistema de archivos no esta extendido, ampliarlo al tamaño de su partición.
PARTSIZE=$(ogGetPartitionSize $1 $2) || exit $?
FSSIZE=$(ogGetFsSize $1 $2)
@@ -61,9 +96,13 @@ fi
HOST="$(ogGetHostname)"
# Post-configuración personalizada para cada tipo de sistema operativo.
-OSTYPE="$(ogGetOsType $1 $2)"
case "$OSTYPE" in
Windows) # Postconfiguración de Windows.
+ # Si es UEFI pongo el UUID de la partición del modelo
+ if ogIsEfiActive; then
+ echo ogRestoreUuidPartitions $REPO $IMGNAME $1 $2
+ ogRestoreUuidPartitions $REPO $IMGNAME $1 $2
+ fi
# Cambiar nombre en sistemas Windows.
HOST=${HOST:-"pc"}
ogSetWindowsName $1 $2 "$HOST"
@@ -80,12 +119,17 @@ case "$OSTYPE" in
ogInstallMiniSetup $1 $2 postconf.cmd
ogUninstallWindowsClient $1 $2 postconf.cmd
fi
+ # Si es UEFI copio el cargador de arranque a la partición EFI
+ if ogIsEfiActive; then
+ echo ogRestoreEfiBootLoader $1 $2
+ ogRestoreEfiBootLoader $1 $2
+ fi
;;
Linux) # Postconfiguración de GNU/Linux.
# Instalamos EFI Boot Loader
if [ ogIsEfiActive ]; then
# Cambio UUID del sistema de ficheros
- ogUUIDChange $1 $2
+ ogUuidChange $1 $2
ogConfigureFstab $1 $2
fi
## Instala (no configura) el codigo de arranque del Grub en la partición (no lo configura, se mantiene el original de la imagen)
diff --git a/client/shared/scripts/createImage b/client/shared/scripts/createImage
index 65da156b..b15955c0 100755
--- a/client/shared/scripts/createImage
+++ b/client/shared/scripts/createImage
@@ -35,6 +35,9 @@
#@version 1.1.0 - Se muestra el espacio necesario para alojar la imagen y el disponible (ticket #771)
#@author Irina Gomez - ETSII Universidad de Sevilla
#@date 2017-03-28
+#@version 1.1.1 - #802 Equipos EFI: se guarda el cargador de arranque y UUID de las particiones
+#@author Irina Gomez - ETSII Universidad de Sevilla
+#@date 2019-01-08
#*/ ##
# Test 1. crear una imagen en un REPO sin espacio libre.
@@ -123,10 +126,20 @@ ogEcho log session "[20] $MSG_HELP_ogCheckFs $PART $SIZEFS (KB)"
ogUnmount $1 $2 2>/dev/null
ogCheckFs $1 $2 || exit $(ogRaiseError $OG_ERR_PARTITION "ogCheckFs $1 $2" && echo $?)
+# Si es UEFI copio el cargador de arranque a la partición
+OSTYPE="$(ogGetOsType $1 $2)"
+if [ ogIsEfiActive -a "$OSTYPE" == "Windows" ] ; then
+ ogEcho log session "[25] $MSG_HELP_ogCopyEfiBootLoader"
+ ogCopyEfiBootLoader $1 $2
+ echo ogSaveImageInfo $1 $2 "$REPO" "$4"
+ ogSaveImageInfo $1 $2 "$REPO" "$4"
+
+fi
+
# Evaluar variable de engine.cfg para reducir el sistema de archivos en la creacion
if [ "$IMGREDUCE" == "TRUE" ]
then
- ogEcho log session "[30]: $MSG_HELP_ogReduceFs"
+ ogEcho log session "[30] $MSG_HELP_ogReduceFs"
ogReduceFs $1 $2 &>> $OGLOGCOMMAND || exit $(ogRaiseError $OG_ERR_REDUCEFS "$1 $2"; echo $?)
NEWSIZEFS=$(ogGetFsSize $1 $2)
TIMEAUX=$[SECONDS-TIME1]
@@ -135,7 +148,7 @@ fi
# Renombrar el fichero de imagen si ya existe.
if [ -f "$IMGFILE" ]; then
- ogEcho log session "[10] $MSG_SCRIPTS_FILE_RENAME \"$IMGFILE\" -> \"$IMGFILE.ant\"."
+ ogEcho log session "[35] $MSG_SCRIPTS_FILE_RENAME \"$IMGFILE\" -> \"$IMGFILE.ant\"."
mv "$IMGFILE" "$IMGFILE.ant"
mv "$IMGFILE.torrent" "$IMGFILE.torrent.ant" 2>/dev/null
mv "$IMGFILE.sum" "$IMGFILE.sum.ant" 2>/dev/null
@@ -170,4 +183,3 @@ TIME=$[SECONDS-TIME1]
ogEcho log session "[100] $MSG_SCRIPTS_TIME_TOTAL $[TIME/60]m $[TIME%60]s"
ogEcho log session " FileSystem $PART with $NEWSIZEFS KB data created onto file-image as $4 and used $IMGSIZE KB across DFS $ogprotocol"
ogEcho log session " Image-file $4 metada: $IMGOS"
-
diff --git a/client/shared/scripts/deployImage b/client/shared/scripts/deployImage
index 824da2af..59188f22 100755
--- a/client/shared/scripts/deployImage
+++ b/client/shared/scripts/deployImage
@@ -220,7 +220,7 @@ if which configureOsCustom &>/dev/null; then
configureOsCustom "$DISK" "$PART" "$REPO" "$IMGNAME"
else
ogEcho log session "[90] $MSG_SCRIPTS_OS_CONFIGURE "
- configureOs "$DISK" "$PART"
+ configureOs "$DISK" "$PART" "$REPO" "$IMGNAME"
fi
TIME=$[SECONDS-TIME1]