diff options
Diffstat (limited to 'client/shared/scripts')
-rwxr-xr-x | client/shared/scripts/bootOsCustom.template | 4 | ||||
-rwxr-xr-x | client/shared/scripts/configureOs | 17 | ||||
-rw-r--r-- | client/shared/scripts/configureOsCustom.template | 4 | ||||
-rwxr-xr-x | client/shared/scripts/createImage | 18 | ||||
-rwxr-xr-x | client/shared/scripts/grubSyntax | 31 |
5 files changed, 64 insertions, 10 deletions
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/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..7b99afe2 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 && [ "$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/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 |