summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorramon <ramongomez@us.es>2018-03-22 13:23:04 +0000
committerramon <ramongomez@us.es>2018-03-22 13:23:04 +0000
commit6bb748bfd6df24cf0fd7b2b6fe03f889e3ba336e (patch)
tree3922362f0c1b0e1e3c253f573a309b548d7dca2f
parent5d62f74c02997213e4821b0b43601603ceb3eb8a (diff)
#802: Integrar nuevas funciones en pruebas para gestión de equipos UEFI.
git-svn-id: https://opengnsys.es/svn/branches/version1.1@5683 a21b9725-9963-47de-94b9-378ad31fedc9
-rwxr-xr-xclient/engine/Boot.lib58
-rwxr-xr-xclient/engine/Disk.lib2
-rwxr-xr-xclient/engine/Image.lib73
3 files changed, 132 insertions, 1 deletions
diff --git a/client/engine/Boot.lib b/client/engine/Boot.lib
index 2cda9095..695feba7 100755
--- a/client/engine/Boot.lib
+++ b/client/engine/Boot.lib
@@ -2166,3 +2166,61 @@ fi
#Cambiamos la entrada el fichero de configuración.
sed -i s/gfxmode=.*$/gfxmode=$NEWRESOLUTION/g $CFGFILE
}
+
+
+# ogRefindInstall int_ndisk bool_autoconfig
+#@brief Instala y actualiza el gestor rEFInd en la particion EFI
+#@param int_ndisk
+#@param bolean_Check__auto_config true | false[default]
+#@return
+#@exception OG_ERR_FORMAT Formato incorrecto.
+#@version 1.1.0 - Primeras pruebas.
+#@author Juan Carlos Garcia. Universidad de ZAragoza.
+#@date 2017-06-26
+#*/ ##
+function ogRefindInstall {
+
+# Variables locales.
+local DISK EFIDIR CONFIG EFIPARTITIONID
+
+
+# Si se solicita, mostrar ayuda.
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk boolean_autoconfig " \
+ "$FUNCNAME 1 TRUE"
+ return
+fi
+
+# Error si no se recibe 1 parámetro.
+[ $# -ge 1 ] || return $(ogRaiseError $OG_ERR_FORMAT; echo $?)
+
+
+DISK=$1
+EFIDIR=/mnt/$(ogDiskToDev $1 1 | cut -c 6-8)$1/EFI
+CONFIG=${2:-"FALSE"}
+EFIPARTITIONID=$(ogGetPartitionId $1 1)
+if [ "$EFIPARTITIONID" == "EF00" ] || [ "$EFIPARTITIONID" == "ef00" ]; then
+ cp -pr /opt/opengnsys/lib/refind ${EFIDIR}
+ case "$CONFIG" in
+ FALSE)
+ if [ -a ${EFIDIR}/ubuntu ]; then
+ echo "menuentry \"Ubuntu\" {" >> ${EFIDIR}/refind/refind.conf
+ echo "loader /EFI/ubuntu/grubx64.efi" >> ${EFIDIR}/refind/refind.conf
+ echo "icon /EFI/refind/icons/os_linux.png" >> ${EFIDIR}/refind/refind.conf
+ echo "}" >> ${EFIDIR}/refind/refind.conf
+ fi
+ if [ -a ${EFIDIR}/Microsoft ]; then
+ echo "menuentry \"Windows\" {" >> ${EFIDIR}/refind/refind.conf
+ echo "loader /EFI/Microsoft/Boot/bootmgfw.efi" >> ${EFIDIR}/refind/refind.conf
+ echo "}" >> ${EFIDIR}/refind/refind.conf
+ fi
+ ;;
+ TRUE)
+ cp ${EFIDIR}/refind/refind.conf.auto ${EFIDIR}/refind/refind.conf
+ ;;
+ esac
+else
+$(ogRaiseError $OG_ERR_FORMAT; echo $?)
+fi
+}
+
diff --git a/client/engine/Disk.lib b/client/engine/Disk.lib
index 3316d0d3..0b1a4c20 100755
--- a/client/engine/Disk.lib
+++ b/client/engine/Disk.lib
@@ -494,7 +494,7 @@ fi
# Listar dispositivos de discos.
ALLDISKS=$((lsblk -n -e 1,2 -x MAJ:MIN 2>/dev/null || lsblk -n -e 1,2) | \
awk '$6~/^disk$/ {gsub(/!/,"/"); printf "/dev/%s ",$1}')
-#ALLDISKS=$(lsblk -Jd -e 1,2 | jq -r '.blockdevices[] | "/dev/"+select(.type=="disk").name')
+#ALLDISKS=$(lsblk -Jdp | jq -r '.blockdevices[] | select(.type=="disk").name')
# Listar volúmenes lógicos.
VOLGROUPS=$(vgs -a --noheadings 2>/dev/null | awk '{printf "/dev/%s ",$1}')
ALLDISKS="$ALLDISKS $VOLGROUPS"
diff --git a/client/engine/Image.lib b/client/engine/Image.lib
index dfbcb487..13d234ec 100755
--- a/client/engine/Image.lib
+++ b/client/engine/Image.lib
@@ -1075,3 +1075,76 @@ IMGFILE=$(ogGetPath "$1" "$2.img") || return $?
ogGetImageInfo $IMGFILE | awk -F: '{print $4}'
}
+
+#/**
+# ogCreateGptImage int_ndisk str_repo path_image
+#@brief Crea una imagen de la tabla de particiones GPT de un disco.
+#@param int_ndisk nº de orden del disco
+#@param str_repo repositorio de imágenes (remoto o caché local)
+#@param path_image camino de la imagen (sin extensión)
+#@return (nada, por determinar)
+#@note repo = { REPO, CACHE }
+#@exception OG_ERR_FORMAT formato incorrecto.
+#@exception OG_ERR_NOTFOUND fichero o dispositivo no encontrado.
+#@exception OG_ERR_IMAGE error al crear la imagen del sistema.
+#@version 1.1 - Adaptación a OpenGnSys 1.1
+#@author Juan Carlos Garcia. Universidad de Zaragoza
+#@date 2017/03/29
+#*/ ##
+function ogCreateGptImage ()
+{
+# Variables locales
+local DISK IMGDIR IMGFILE
+# Si se solicita, mostrar ayuda.
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk path_dir str_image" \
+ "$FUNCNAME 1 REPO /aula1/gpt"
+ return
+fi
+# Error si no se reciben 3 parámetros.
+[ $# == 3 ] || ogRaiseError $OG_ERR_FORMAT || return $?
+
+DISK=$(ogDiskToDev "$1") || return $?
+IMGDIR=$(ogGetParentPath "$2" "$3")
+[ -n "$IMGDIR" ] || ogRaiseError $OG_ERR_NOTFOUND "$2 $(dirname $3)" || return $?
+IMGFILE="$IMGDIR/$(basename "$3").gpt"
+
+# Crear imagen de la tabla GPT.
+sgdisk -b="$IMGFILE" "$DISK" || ogRaiseError $OG_ERR_IMAGE "$1 $IMGFILE" || return $?
+}
+
+#/**
+# ogRestoreGptImage str_repo path_image int_ndisk
+#@brief Restaura la imagen de la tabla de particiones GPT de un disco.
+#@param str_repo repositorio de imágenes o caché local
+#@param path_image camino de la imagen
+#@param int_ndisk nº de orden del disco
+#@return (por determinar)
+#@exception OG_ERR_FORMAT formato incorrecto.
+#@exception OG_ERR_NOTFOUND fichero de imagen o partición no detectados.
+#@exception OG_ERR_IMAGE error al restaurar la imagen del sistema.
+#@version 1.1 - Adaptación a OpenGnSys 1.1
+#@author Juan Carlos Garcia, Universidad de Zaragoza
+#@date 2017/03/29
+#*/ ##
+function ogRestoreGptImage ()
+{
+# Variables locales
+local DISK IMGFILE
+# Si se solicita, mostrar ayuda.
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME" "$FUNCNAME path_dir str_image int_ndisk" \
+ "$FUNCNAME REPO /aula1/gpt 1"
+ return
+fi
+# Error si no se reciben 3 parámetros.
+[ $# == 3 ] || ogRaiseError $OG_ERR_FORMAT || return $?
+# Procesar parámetros.
+DISK=$(ogDiskToDev "$3") || return $?
+IMGFILE=$(ogGetPath "$1" "$2.gpt") || return $?
+[ -r "$IMGFILE" ] || ogRaiseError $OG_ERR_NOTFOUND "$IMGFILE" || return $?
+
+# Restaurar tabla GPT del disco.
+sgdisk -l="$IMGFILE" "$DISK" || ogRaiseError $OG_ERR_IMAGE "$1 $IMGFILE" || return $?
+}
+