summaryrefslogtreecommitdiffstats
path: root/client/shared
diff options
context:
space:
mode:
Diffstat (limited to 'client/shared')
-rw-r--r--client/shared/etc/lang.ca_ES.conf27
-rw-r--r--client/shared/etc/lang.en_GB.conf26
-rw-r--r--client/shared/etc/lang.es_ES.conf26
-rwxr-xr-xclient/shared/etc/preinit/loadenviron.sh1
-rwxr-xr-xclient/shared/lib/os-probes/mounted/efi/31part-x-y28
-rwxr-xr-xclient/shared/scripts/bootOsCustom.template4
-rwxr-xr-xclient/shared/scripts/cloneRemoteFromMaster7
-rwxr-xr-xclient/shared/scripts/configureOs17
-rw-r--r--client/shared/scripts/configureOsCustom.template4
-rwxr-xr-xclient/shared/scripts/createImage15
-rwxr-xr-xclient/shared/scripts/grubSyntax31
11 files changed, 176 insertions, 10 deletions
diff --git a/client/shared/etc/lang.ca_ES.conf b/client/shared/etc/lang.ca_ES.conf
index ed20f3af..92e97598 100644
--- a/client/shared/etc/lang.ca_ES.conf
+++ b/client/shared/etc/lang.ca_ES.conf
@@ -16,6 +16,7 @@ MSG_ERR_IMAGE="No se puede crear o restaurar una image de sistema"
MSG_ERR_NOTEXEC="Programa o función no ejecutable"
MSG_ERR_NOTWRITE="No hay acceso de escritura"
MSG_ERR_NOTCACHE="No existe particion Cache en el cliente"
+MSG_ERR_NOTUEFI="La interfaz UEFI no está activa"
MSG_ERR_CACHESIZE="El espacio de la cache local o remota no es suficiente"
MSG_ERR_REDUCEFS="Error al reducir el sistema de archivos"
MSG_ERR_EXTENDFS="Error al expandir el sistema de archivos"
@@ -131,6 +132,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,9 +198,23 @@ 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_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."
+MSG_HELP_ogNvramActiveEntry="Configura a activa entrada del gestor de arranque (NVRAM)."
+MSG_HELP_ogNvramAddEntry="Crea nueva entrada del gestor de arranque (NVRAM)."
+MSG_HELP_ogNvramDeleteEntry="Borra entrada del gestor de arranque (NVRAM)."
+MSG_HELP_ogNvramGetCurrent="Muestra la entrada del gestor de arranque (NVRAM) que ha iniciado el equipo."
+MSG_HELP_ogNvramGetNext="Muestra la entrada del gestor de arranque (NVRAM) que se utilizará en el próximo arranque."
+MSG_HELP_ogNvramGetOrder="Muestra el orden de las entradas del gestor de arranque (NVRAM)."
+MSG_HELP_ogNvramGetTimeout="Muestra el tiempo de espera del gestor de arranque (NVRAM)."
+MSG_HELP_ogNvramInactiveEntry="Configura a inactiva entrada del gestor de arranque (NVRAM)."
+MSG_HELP_ogNvramList="Lista las entradas del gestor de arranque (NVRAN) marcando con un asterisco las activas"
+MSG_HELP_ogNvramSetNext="Configura el próximo arranque con la entrada del gestor de arranque (NVRAM)."
+MSG_HELP_ogNvramSetOrder="Configura el orden de las entradas del gestor de arranque (NVRAM)."
+MSG_HELP_ogNvramSetTimeout="Configura el tiempo de espera del gestor de arranque (NVRAM)."
+MSG_HELP_ogGetOsType="Devuelve el tipo de un sistema operativo instalado."
MSG_HELP_ogInstallFirstBoot="Crea un archivo que se ejecutará en el primer arranque de Windows."
MSG_HELP_ogInstallLaunchDaemon="Instala un archivo que se ejecutará en el arranque de macOS."
MSG_HELP_ogInstallLinuxClient="$MSG_OBSOLETE."
@@ -245,12 +261,22 @@ MSG_HELP_ogMount="Monta un sistema de archivos y devuelve el punto de montaje."
MSG_HELP_ogRaiseError="Muestra y registra mensajes de error y devuelve el código correspondiente."
MSG_HELP_ogReduceFs="Reduce el tamaño del sistema de archivos al mínimo ocupado por sus datos."
MSG_HELP_ogReduceImage="Reduce el tamaño de la imagen"
+MSG_HELP_ogRefindDeleteEntry="Borra en rEFInd las entradas para el inicio en una particion."
+MSG_HELP_ogRefindDefaultEntry="Configura la entrada por defecto de rEFInd."
+MSG_HELP_ogRefindOgliveDefaultEntry="Configura la entrada de ogLive como la entrada por defecto de rEFInd."
+MSG_HELP_ogRefindSetTheme="Asigna un tema al rEFInd."
+MSG_HELP_ogRefindSetTimeOut="Define el tiempo (segundos) que se muestran las opciones de inicio de rEFInd."
+MSG_HELP_ogRefindSetResolution="Define la resolución que usuará el thema del gestor de arranque rEFInd."
+MSG_HELP_ogRefindInstall="Instala y configura el gestor rEFInd en la particion EFI"
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."
@@ -282,6 +308,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_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 13365baf..b21a270f 100644
--- a/client/shared/etc/lang.en_GB.conf
+++ b/client/shared/etc/lang.en_GB.conf
@@ -19,6 +19,7 @@ MSG_ERR_IMAGE="Cannot create or restore a system image"
MSG_ERR_NOTEXEC="Non executable program or function"
MSG_ERR_NOTWRITE="Write access denied"
MSG_ERR_NOTCACHE="No client cache partition"
+MSG_ERR_NOTUEFI="UEFI isn't active"
MSG_ERR_CACHESIZE="Not enough space in local or remote cache"
MSG_ERR_REDUCEFS="Error when reducing file system"
MSG_ERR_EXTENDFS="Error when expanding file system"
@@ -134,6 +135,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,6 +201,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_ogHelp="Shows functions help messages."
MSG_HELP_ogHidePartition="Hides Windows partition."
MSG_HELP_ogIdToType="Returns partition type identifier."
@@ -245,15 +248,37 @@ MSG_HELP_ogMountCdrom="Mounts default optical drive."
MSG_HELP_ogMountFs=$MSG_HELP_ogMount
MSG_HELP_ogMountImage="Mounts synchronizable image"
MSG_HELP_ogMount="Mounts file system and returns mount point."
+MSG_HELP_ogNvramActiveEntry="Sets active a bootloader (NVRAM) entry."
+MSG_HELP_ogNvramAddEntry="Creates new entry in bootloader (NVRAM)."
+MSG_HELP_ogNvramDeleteEntry="Deletes a bootloader (NVRAM) entry."
+MSG_HELP_ogNvramGetCurrent="Displays the bootloader (NVRAM) entry that was started by the computer."
+MSG_HELP_ogNvramGetNext="Displays the bootloader (NVRAM) entry for the boot next."
+MSG_HELP_ogNvramGetOrder="Displays the bootloader (NVRAM) entries order."
+MSG_HELP_ogNvramGetTimeout="Displays the bootloader (NVRAM) timeout."
+MSG_HELP_ogNvramInactiveEntry="Sets inactive bootloader (NVRAM) entry."
+MSG_HELP_ogNvramList="Lists bootloader (NVRAM) entries, by staring actives ones."
+MSG_HELP_ogNvramSetNext="Set the bootloader (NVRAM) entry for the boot next."
+MSG_HELP_ogNvramSetOrder="Sets the bootloader (NVRAM) entries order."
+MSG_HELP_ogNvramSetTimeout="Sets the bootloader (NVRAM) timeout."
MSG_HELP_ogRaiseError="Displays and registers error messages and returns code."
MSG_HELP_ogReduceFs="Reduces file system size to minimum."
MSG_HELP_ogReduceImage="Reduces image size."
+MSG_HELP_ogRefindDeleteEntry="Deletes the menu entry of a partition in rEFInd."
+MSG_HELP_ogRefindDefaultEntry="Configures default menu entry in rEFInd.""
+MSG_HELP_ogRefindOgliveDefaultEntry="Configures ogLive menu entry as default menu entry in rEFInd."
+MSG_HELP_ogRefindSetTheme="Configures rEFInd's theme."
+MSG_HELP_ogRefindSetTimeOut="Defines the time that rEFInd shows the menu."
+MSG_HELP_ogRefindSetResolution="Defines the resolucion of rEFInd's theme."
+MSG_HELP_ogRefindInstall="Installs and configures rEFInd boot loader in ESP."
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."
@@ -285,6 +310,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_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 782cb624..27d0cd64 100644
--- a/client/shared/etc/lang.es_ES.conf
+++ b/client/shared/etc/lang.es_ES.conf
@@ -16,6 +16,7 @@ MSG_ERR_IMAGE="No se puede crear o restaurar una image de sistema"
MSG_ERR_NOTEXEC="Programa o función no ejecutable"
MSG_ERR_NOTWRITE="No hay acceso de escritura"
MSG_ERR_NOTCACHE="No existe partición caché en el cliente"
+MSG_ERR_NOTUEFI="La interfaz UEFI no está activa"
MSG_ERR_CACHESIZE="El espacio de la caché local o remota no es suficiente"
MSG_ERR_REDUCEFS="Error al reducir el sistema de archivos"
MSG_ERR_EXTENDFS="Error al expandir el sistema de archivos"
@@ -131,6 +132,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"
@@ -172,6 +174,18 @@ MSG_HELP_ogGetMacAddress="Devuelve la dirección Ethernet del cliente."
MSG_HELP_ogGetMountImageDir="Devuelve el directorio de montaje de una imagen."
MSG_HELP_ogGetMountPoint="Devuelve el directorio donde está montado un sistema de archivos local."
MSG_HELP_ogGetNetInterface=""
+MSG_HELP_ogNvramActiveEntry="Configura a activa entrada del gestor de arranque (NVRAM)."
+MSG_HELP_ogNvramAddEntry="Crea nueva entrada del gestor de arranque (NVRAM)."
+MSG_HELP_ogNvramDeleteEntry="Borra entrada del gestor de arranque (NVRAM)."
+MSG_HELP_ogNvramGetCurrent="Muestra la entrada del gestor de arranque (NVRAM) que ha iniciado el equipo."
+MSG_HELP_ogNvramGetNext="Muestra la entrada del gestor de arranque (NVRAM) que se utilizará en el próximo arranque."
+MSG_HELP_ogNvramGetOrder="Muestra el orden de las entradas del gestor de arranque (NVRAM)."
+MSG_HELP_ogNvramGetTimeout="Muestra el tiempo de espera del gestor de arranque (NVRAM)."
+MSG_HELP_ogNvramInactiveEntry="Configura a inactiva entrada del gestor de arranque (NVRAM)."
+MSG_HELP_ogNvramList="Lista las entradas del gestor de arranque (NVRAN) marcando con un asterisco las activas"
+MSG_HELP_ogNvramSetNext="Configura el próximo arranque con la entrada del gestor de arranque (NVRAM)."
+MSG_HELP_ogNvramSetOrder="Configura el orden de las entradas del gestor de arranque (NVRAM)."
+MSG_HELP_ogNvramSetTimeout="Configura el tiempo de espera del gestor de arranque (NVRAM)."
MSG_HELP_ogGetOsType="Devuelve el tipo de un sistema operativo instalado."
MSG_HELP_ogGetOsUuid="Devuelve el UUID de un sistema operativo"
MSG_HELP_ogGetOsVersion="Devuelve el tipo y la versión de un sistema operativo instalado."
@@ -196,6 +210,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_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."
@@ -245,12 +260,22 @@ MSG_HELP_ogMount="Monta un sistema de archivos y devuelve el punto de montaje."
MSG_HELP_ogRaiseError="Muestra y registra mensajes de error y devuelve el código correspondiente."
MSG_HELP_ogReduceFs="Reduce el tamaño del sistema de archivos al mínimo ocupado por sus datos."
MSG_HELP_ogReduceImage="Reduce el tamaño de la imagen"
+MSG_HELP_ogRefindDeleteEntry="Borra en rEFInd las entradas para el inicio en una particion."
+MSG_HELP_ogRefindDefaultEntry="Configura la entrada por defecto de rEFInd."
+MSG_HELP_ogRefindOgliveDefaultEntry="Configura la entrada de ogLive como la entrada por defecto de rEFInd."
+MSG_HELP_ogRefindSetTheme="Asigna un tema al rEFInd."
+MSG_HELP_ogRefindSetTimeOut="Define el tiempo (segundos) que se muestran las opciones de inicio de rEFInd."
+MSG_HELP_ogRefindSetResolution="Define la resolución que usuará el thema del gestor de arranque rEFInd."
+MSG_HELP_ogRefindInstall="Instala y configura el gestor rEFInd en la particion EFI"
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."
@@ -282,6 +307,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_ogWaitSyncImage=""
MSG_HELP_ogWindowsBootParameters=""
MSG_HELP_ogWindowsRegisterPartition=""
diff --git a/client/shared/etc/preinit/loadenviron.sh b/client/shared/etc/preinit/loadenviron.sh
index 314fb872..c80043cf 100755
--- a/client/shared/etc/preinit/loadenviron.sh
+++ b/client/shared/etc/preinit/loadenviron.sh
@@ -141,3 +141,4 @@ export OG_ERR_DONTUNMOUNT_IMAGE=72 # Error al desmontar la imagen
export OG_ERR_NOTDIFFERENT=73 # No se detectan diferencias entre la imagen basica y la particion.
export OG_ERR_SYNCHRONIZING=74 # Error al sincronizar, puede afectar la creacion/restauracion de la imagen
+export OG_ERR_NOTUEFI=80 # La interfaz UEFI no está activa
diff --git a/client/shared/lib/os-probes/mounted/efi/31part-x-y b/client/shared/lib/os-probes/mounted/efi/31part-x-y
new file mode 100755
index 00000000..349c36d8
--- /dev/null
+++ b/client/shared/lib/os-probes/mounted/efi/31part-x-y
@@ -0,0 +1,28 @@
+#!/bin/sh
+# OG: Detects Microsoft bootloader on a EFI System Partition in directory Part-xx-yy (#802 #888)
+
+. /usr/share/os-prober/common.sh
+
+efi="$1"
+
+found=
+for microsoft in $(item_in_dir Part-..-.. "$efi"); do
+ for boot in $(item_in_dir boot "$efi/$microsoft"); do
+ bcd=$(item_in_dir bcd "$efi/$microsoft/$boot")
+ bootmgfw=$(item_in_dir bootmgfw.efi "$efi/$microsoft/$boot")
+ if [ -n "$bcd" -a -n "$bootmgfw" ]; then
+ long="Windows Boot Manager"
+ short=Windows
+ path="$microsoft/$boot/$bootmgfw"
+ found=true
+ break
+ fi
+ done
+done
+
+
+if [ -n "$found" ]; then
+ label="$(count_next_label "$short")"
+ result "${path}:${long}:${label}"
+fi
+exit 0
diff --git a/client/shared/scripts/bootOsCustom.template b/client/shared/scripts/bootOsCustom.template
index b457fde4..06046526 100755
--- a/client/shared/scripts/bootOsCustom.template
+++ b/client/shared/scripts/bootOsCustom.template
@@ -50,11 +50,11 @@ case "$OSTYPE" in
#echo "[40] Activar particion de Windows $PART y ocultar las demás."
#for (( i=1; i<=$(ogGetPartitionsNumber $DISK); i++ )); do
# if [ $i == $PART -o $i == $PARTDATA ]; then
- # [ $(ogGetPartitionType $DISK $PART) == "HNTFS" ] && ogUnhidePartition $1 $PART
+ # [ $(ogGetPartitionType $DISK $PART) == "HNTFS" -o $(ogGetPartitionType $DISK $PART) == "WIN-RESERV" ] && ogUnhidePartition $1 $PART
# # Activo la particion si no es de datos
# [ $i -ne $PARTDATA ] && ogSetPartitionActive $DISK $i
# else
- # [ "$(ogGetPartitionType $DISK $i)" == NTFS ] && ogHidePartition $DISK $i
+ # [ "$(ogGetPartitionType $DISK $i)" == NTFS -o "$(ogGetPartitionType $DISK $i)" == "WINDOWS" ] && ogHidePartition $DISK $i
# fi
#done
;;
diff --git a/client/shared/scripts/cloneRemoteFromMaster b/client/shared/scripts/cloneRemoteFromMaster
index b78bd629..6d8001d2 100755
--- a/client/shared/scripts/cloneRemoteFromMaster
+++ b/client/shared/scripts/cloneRemoteFromMaster
@@ -159,6 +159,13 @@ case $MASTERIP in
#Obtener tamaño de la partición.
SIZE=$(ogGetPartitionSize $2 $3) || exit $(ogRaiseError $OG_ERR_REDUCEFS "Error al detectar tamaño partcion $2 $3 l127"; echo $?)
+ # Si es UEFI copio el cargador de arranque a la partición
+ OSTYPE="$(ogGetOsType $2 $3)"
+ if ogIsEfiActive && [ "$OSTYPE" == "Windows" ]; then
+ ogEcho log session "[12] $MSG_HELP_ogCopyEfiBootLoader"
+ ogCopyEfiBootLoader $2 $3
+ fi
+
if [ "$OGWINREDUCE" == "TRUE" ]
then
ogEcho log session "[15]: Calculando la reduccion del sistema de archivos DISK:$DISKSOURCE PARTITION:$PARTSOURCE SIZE:$SIZE"
diff --git a/client/shared/scripts/configureOs b/client/shared/scripts/configureOs
index 5e02ec4c..2e529c9e 100755
--- a/client/shared/scripts/configureOs
+++ b/client/shared/scripts/configureOs
@@ -32,6 +32,9 @@
#@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: para Windows copia cargador de arranque a partición UEFI, para linux configura particion ESP en fstab. (ticket #802 #889 #890)
+#@author Irina Gomez, ETSII Universidad de Sevilla
+#@date 2019-01-08
#*/ ##
# Carga el configurador del engine y los parámetros de red.
@@ -67,8 +70,14 @@ case "$OSTYPE" in
# Cambiar nombre en sistemas Windows.
HOST=${HOST:-"pc"}
ogSetWindowsName $1 $2 "$HOST"
- # Configurar el boot sector de la partición Windows.
- ogFixBootSector $1 $2
+ # Si es UEFI copio el cargador de arranque a la partición EFI e instalo rEFInd.
+ if ogIsEfiActive; then
+ ogRestoreEfiBootLoader $1 $2
+ ogRefindInstall
+ else
+ # Configurar el boot sector de la partición Windows.
+ ogFixBootSector $1 $2
+ fi
# Configurar el gestor de arranque de Windows XP/Vista/7.
ogWindowsBootParameters $1 $2
# Registrar en Windows que la partición indicada es su nueva unidad C:\
@@ -82,8 +91,12 @@ case "$OSTYPE" in
fi
;;
Linux) # Postconfiguración de GNU/Linux.
+ # Configuro fstab: particion de Swap y si es UEFI además la partición EFI.
+ ogConfigureFstab $1 $2
## Instala (no configura) el codigo de arranque del Grub en la partición (no lo configura, se mantiene el original de la imagen)
ogGrubInstallPartition $1 $2
+ # Si es UEFI instalo rEFInd.
+ ogIsEfiActive && ogRefindInstall
# Eliminar el antiguo cliente de Linux.
[ -n "$(find $MNTDIR/usr/sbin $MNTDIR/sbin $MNTDIR/usr/local/sbin -name ogAdmLnxClient -print)" ] && ogUninstallLinuxClient $1 $2
# Configurar nuevo agente OGAgent.
diff --git a/client/shared/scripts/configureOsCustom.template b/client/shared/scripts/configureOsCustom.template
index 66be3c63..f1c8e2a6 100644
--- a/client/shared/scripts/configureOsCustom.template
+++ b/client/shared/scripts/configureOsCustom.template
@@ -39,8 +39,8 @@ case "$OSTYPE" in
#ogLoadHiveWindows $1 $2; ogSetWindowsChkdisk $OGWINCHKDISK; ogUpdateHiveWindows
;;
Linux) # Postconfiguración de GNU/Linux.
- ##OPCIONAL: Configurar el FSTAB. En esta versión solo autoconfigura la partición SWAP
- #ogConfigureFstab $1 $2
+ ##OPCIONAL Para UEFI: cambia el UUID de la partición (para tener dos linux en un equipo)
+ #ogUuidChange $DISK $PART
##OPCIONAL Limpiar dispositivos reconocidos previamente
#ogCleanLinuxDevices $1 $2
## 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..be1cb439 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,17 @@ 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 && [ "$OSTYPE" == "Windows" ]; then
+ ogEcho log session "[25] $MSG_HELP_ogCopyEfiBootLoader"
+ ogCopyEfiBootLoader $1 $2
+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 +145,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 +180,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/grubSyntax b/client/shared/scripts/grubSyntax
index 209cfc00..aa1adb2e 100755
--- a/client/shared/scripts/grubSyntax
+++ b/client/shared/scripts/grubSyntax
@@ -7,6 +7,8 @@ set -e
#basado en scripts del paquete de grub
#Antonio Doblas Viso
#Universidad de Málaga
+#@version 1.1.1 - En los parámetros del kernel se sustituye el UUID por el dispositivo.
+#@version 1.1.1 - Detecta cargador de Windows en directorio Part-xx-yy dentro de ESP (#802 #888)
DISK=
PART=
@@ -31,7 +33,13 @@ fi
grub_probe=${grub_probe:-$OGBIN/grub-probe1.99_$(arch)}
#librerias del osProber para kernel antiguos: detecta e identifica sistema operativos.
-grub-install --version | grep 1.99 && cp -r /opt/opengnsys/lib/os-probes/* /usr/lib/os-probes/
+if grub-install --version | grep 1.99 ; then
+ cp -r /opt/opengnsys/lib/os-probes/* /usr/lib/os-probes/
+else
+ # Librería os-probe para cargador de microsoft en dir part-x-y (uefi)
+ OSPROBE_MS_PART="/opt/opengnsys/lib/os-probes/mounted/efi/31part-x-y"
+ [ -f $OSPROBE_MS_PART ] && cp $OSPROBE_MS_PART /usr/lib/os-probes/mounted/efi
+fi
#Autoreconocimiento del ogLive en cache
@@ -341,6 +349,24 @@ EOF
}
EOF
;;
+ efi)
+
+ found_other_os=1
+ EFIPATH=${DEVICE#*@}
+ DEVICE=${DEVICE%@*}
+ onstr="$(gettext_printf "(on %s)" "${DEVICE}")"
+ cat << EOF
+menuentry '$(echo "${LONGNAME} $onstr" | grub_quote)' --class windows --class os \$menuentry_id_option 'osprober-efi-$(grub_get_device_id "${DEVICE}")' {
+EOF
+ save_default_entry | sed -e "s/^/\t/"
+#ADV prepare_grub_to_access_device ${DEVICE} | sed -e "s/^/\t/"
+ OG_prepare_grub_to_access_device ${DEVICE} | sed -e "s/^/\t/"
+
+ cat <<EOF
+ chainloader ${EFIPATH}
+}
+EOF
+ ;;
linux)
KERNELPARAM=""
#linuxprobed detecta todos los kernels de una partición.
@@ -358,6 +384,9 @@ EOF
LKERNEL="`echo ${LINUX} | cut -d ':' -f 4`"
LINITRD="`echo ${LINUX} | cut -d ':' -f 5`"
LPARAMS="`echo ${LINUX} | cut -d ':' -f 6- | tr '^' ' '`"
+ # En los parámetros cambiamos el UUID por el valor de LROOT
+ UUID=$(blkid -s UUID -o value $LROOT)
+ LPARAMS="$(echo $LPARAMS | sed "s|UUID=$UUID|$LROOT|g")"
if [ -z "${LLABEL}" ] ; then
LLABEL="${LONGNAME}"
fi