diff options
author | Irina Gómez <irinagomez@us.es> | 2019-01-09 12:47:43 +0100 |
---|---|---|
committer | Irina Gómez <irinagomez@us.es> | 2019-01-18 10:59:35 +0100 |
commit | 30238abde6f70b3c14e9adcb5d0c1384edc9f2b3 (patch) | |
tree | ebeb7083ceaef778afdd37d7705e3fd854af6651 /client/shared/scripts | |
parent | 39b84ff8812a3460f60e00ec2729dba9a7eb7849 (diff) |
#802 UEFI Windows compatibility: necessary functions for create and restore images.
Diffstat (limited to 'client/shared/scripts')
-rwxr-xr-x | client/shared/scripts/configureOs | 48 | ||||
-rwxr-xr-x | client/shared/scripts/createImage | 18 | ||||
-rwxr-xr-x | client/shared/scripts/deployImage | 2 |
3 files changed, 62 insertions, 6 deletions
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] |