diff options
Diffstat (limited to 'client/shared')
-rw-r--r-- | client/shared/etc/lang.ca_ES.conf | 27 | ||||
-rw-r--r-- | client/shared/etc/lang.en_GB.conf | 26 | ||||
-rw-r--r-- | client/shared/etc/lang.es_ES.conf | 26 | ||||
-rwxr-xr-x | client/shared/etc/preinit/loadenviron.sh | 1 | ||||
-rwxr-xr-x | client/shared/lib/os-probes/mounted/efi/31part-x-y | 28 | ||||
-rwxr-xr-x | client/shared/scripts/bootOsCustom.template | 4 | ||||
-rwxr-xr-x | client/shared/scripts/cloneRemoteFromMaster | 7 | ||||
-rwxr-xr-x | client/shared/scripts/configureOs | 17 | ||||
-rw-r--r-- | client/shared/scripts/configureOsCustom.template | 4 | ||||
-rwxr-xr-x | client/shared/scripts/createImage | 15 | ||||
-rwxr-xr-x | client/shared/scripts/grubSyntax | 31 |
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 |