summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorramon <ramongomez@us.es>2012-06-05 07:54:42 +0000
committerramon <ramongomez@us.es>2012-06-05 07:54:42 +0000
commit5af5d5f5f3497bc74cb17b41cc89db68c8bacbe2 (patch)
treefd13df5fc00209c5ecb2c2a0fff4e52ef289a459
parent31c148d8e3e1da78ea52207db4737b08000fe2dd (diff)
Versión 1.0.4, #538: Redefinición de parámetros en función {{{ogTypeToId}}} y función {{{ogSetPartitionId}}} soporta discos GPT.
git-svn-id: https://opengnsys.es/svn/branches/version1.0@3141 a21b9725-9963-47de-94b9-378ad31fedc9
-rwxr-xr-xclient/engine/Cache.lib7
-rwxr-xr-xclient/engine/Disk.lib108
-rw-r--r--doc/CHANGELOG.es.txt2
3 files changed, 66 insertions, 51 deletions
diff --git a/client/engine/Cache.lib b/client/engine/Cache.lib
index 22697788..64196620 100755
--- a/client/engine/Cache.lib
+++ b/client/engine/Cache.lib
@@ -31,7 +31,7 @@
function ogCreateCache ()
{
# Variables locales.
-local DISK PART START END ENDPREVPART SIZE MINSIZE MAXSIZE
+local DISK PART START END ENDPREVPART SIZE MINSIZE MAXSIZE ID
# Si se solicita, mostrar ayuda.
if [ "$*" == "help" ]; then
ogHelp "$FUNCNAME" "$FUNCNAME int_partsize" "$FUNCNAME 10000000"
@@ -65,14 +65,15 @@ case "$(ogGetPartitionTableType $1)" in
# Si existe la cache se borra previamente
[ -n $(ogFindCache) && ogDeleteCache
# Capturamos el codigo de particion GPT para cache
- ID=$(ogTypeToId CACHE)
+ ID=$(ogTypeToId CACHE GPT)
sgdisk $DISK -n$PART:$START:$END -c$PART:CACHE -t$PART:$ID 2>/dev/null && partprobe
;;
MSDOS)
# Si la tabla de particiones no es valida, volver a generarla.
[ $(parted -s $DISK print >/dev/null) ] || fdisk $DISK <<< "w"
# Definir particiones y notificar al kernel.
- sfdisk -f $DISK -uS -N$PART <<<"$START,$SIZE,ca" 2>/dev/null && partprobe
+ ID=$(ogTypeToId CACHE MSDOS)
+ sfdisk -f $DISK -uS -N$PART <<<"$START,$SIZE,$ID" 2>/dev/null && partprobe
;;
esac
}
diff --git a/client/engine/Disk.lib b/client/engine/Disk.lib
index ee255e81..c89e3b3d 100755
--- a/client/engine/Disk.lib
+++ b/client/engine/Disk.lib
@@ -86,7 +86,7 @@ while [ $# -gt 0 ]; do
TYPE="${1%%:*}"
SIZE="${1#*:}"
# Obtener identificador de tipo de partición válido.
- ID=$(ogTypeToId "$TYPE")
+ ID=$(ogTypeToId "$TYPE" MSDOS)
[ "$TYPE" != "CACHE" -a -n "$ID" ] || ogRaiseError $OG_ERR_PARTITION "$TYPE" || return $?
# Comprobar tamaño numérico y convertir en sectores de 512 B.
[[ "$SIZE" == *([0-9]) ]] || ogRaiseError $OG_ERR_FORMAT "$SIZE" || return $?
@@ -201,7 +201,7 @@ while [ $# -gt 0 ]; do
[ $PARTSIZE ] && DELOPTIONS="$DELOPTIONS -d$PART"
# Creamos la particion
# Obtener identificador de tipo de partición válido.
- ID=$(ogTypeToId "$TYPE")
+ ID=$(ogTypeToId "$TYPE" GPT)
[ "$TYPE" != "CACHE" -a -n "$ID" ] || ogRaiseError $OG_ERR_PARTITION "$TYPE" || return $?
# Comprobar tamaño numérico y convertir en sectores de 512 B.
[[ "$SIZE" == *([0-9]) ]] || ogRaiseError $OG_ERR_FORMAT "$SIZE" || return $?
@@ -469,11 +469,13 @@ ogTypeToId "$@"
#/**
-# ogTypeToId str_parttype
+# ogTypeToId str_parttype str_tabletype
#@brief Devuelve el identificador correspondiente a un tipo de partición.
#@param str_parttype mnemónico de tipo de partición.
+#@param str_tabletype mnemónico de tipo de tabla de particiones (MSDOS por defecto).
#@return int_idpart identificador de tipo de partición.
#@exception OG_ERR_FORMAT Formato incorrecto.
+#@note tabletype = { MSDOS, GPT }
#@version 0.1 - Integracion para Opengnsys - EAC: TypeFS () en ATA.lib
#@author Antonio J. Doblas Viso, Universidad de Malaga
#@date 2008/10/27
@@ -487,18 +489,21 @@ ogTypeToId "$@"
function ogTypeToId ()
{
# Variables locales
-local ID
+local PTTYPE ID
# Si se solicita, mostrar ayuda.
if [ "$*" == "help" ]; then
- ogHelp "$FUNCNAME" "$FUNCNAME str_fstype" "$FUNCNAME EXT3 => 83"
+ ogHelp "$FUNCNAME" "$FUNCNAME str_parttype [str_tabletype]" \
+ "$FUNCNAME LINUX => 83" \
+ "$FUNCNAME LINUX MSDOS => 83"
return
fi
-# Error si no se recibe 1 parámetro.
-[ $# == 1 ] || ogRaiseError $OG_ERR_FORMAT || return $?
+# Error si no se reciben 2 parámetro.
+[ $# == 2 ] || ogRaiseError $OG_ERR_FORMAT || return $?
-# Asociar id. de partición para su mnemónico de sistema de archivos.
-case "$(ogGetPartitionTableType $1)" in
+# Asociar id. de partición para su mnemónico.
+PTTYPE=${2:-"MSDOS"}
+case "$PTTYPE" in
GPT) # Se incluyen mnemónicos compatibles con tablas MSDOS.
case "$1" in
EMPTY) ID=0 ;;
@@ -1118,9 +1123,53 @@ parted -s $DISK set $2 boot on 2>/dev/null
#/**
+# ogSetPartitionId int_ndisk int_npartition str_type
+#@brief Cambia el identificador de la partición.
+#@param int_ndisk nº de orden del disco
+#@param int_npartition nº de orden de la partición
+#@param str_partid mnemónico de tipo de partición
+#@return (nada)
+#@attention Requisitos: fdisk, sgdisk
+#@version 0.1 - Integracion para Opengnsys - SetPartitionType() en ATA.lib
+#@author Antonio J. Doblas Viso. Universidad de Malaga
+#@date 2008/10/27
+#@version 1.0.4 - Soporte para discos GPT.
+#@author Universidad de Huelva
+#@date 2012/03/13
+#*/ ##
+function ogSetPartitionId() {
+# Variables locales
+local DISK PART PTTYPE ID
+
+# Si se solicita, mostrar ayuda.
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition str_type" \
+ "$FUNCNAME 1 1 NTFS"
+ return
+fi
+# Error si no se reciben 3 parámetros.
+[ $# == 3 ] || ogRaiseError $OG_ERR_FORMAT || return $?
+
+# Sustituye nº de disco por su dispositivo.
+DISK=`ogDiskToDev $1` || return $?
+PART=`ogDiskToDev $1 $2` || return $?
+
+# Elección del tipo de partición.
+PTTYPE=$(ogGetPartitionTableType $1)
+ID=$(ogTypeToId "$3" "$PTTYPE")
+[ -n "$ID" ] || ogRaiseError $OG_ERR_PARTITION "$3,$PTTYPE" || return $?
+case "$PTTYPE" in
+ GPT) sgdisk $DISK -t$PART:$ID 2>/dev/null ;;
+ MSDOS) echo -ne "t\n$2\n${ID}\nw\n" | fdisk $DISK &>/dev/null ;;
+esac
+partprobe $DISK 2>/dev/null
+}
+
+
+#/**
# ogSetPartitionSize int_ndisk int_npartition int_size
#@brief Muestra el tamano en KB de una particion determinada.
-#@param int_ndisk nº de orden del disco
+#@param int_ndisk nº de orden del disco
#@param int_npartition nº de orden de la partición
#@param int_size tamaño de la partición (en KB)
#@return (nada)
@@ -1156,6 +1205,7 @@ sfdisk -f -uS -N$2 $DISK <<< ",$SIZE" &>/dev/null || ogRaiseError $OG_ERR_PARTIT
partprobe $DISK 2>/dev/null
}
+
#/**
# ogUnhidePartition int_ndisk int_npartition
#@brief Hace visible una partición oculta.
@@ -1246,44 +1296,6 @@ echo $PART | cut -f3 -d \/
}
-#/** @function ogSetPartitionId: @brief Cambia el identificador de la particion, pero no su sistema de archivos.
-#@param $1 int_numdiskEAC
-#@param $2 int_numpartitionEAC
-#@param $3 str_tipoPartition admite EXT2 EXT3 NTFS FAT32 SWAP CACHE
-#@return la propia del fdisk
-#@warning no controla los parametros, si se introducen mal o simplemente no se introducen no muestra mensaje
-#@warning Identifica por nombre del sistema de archivos no por número
-#@attention Requisitos: fdisk
-#@note
-#@version 0.1 - Integracion para Opengnsys - SetPartitionType() en ATA.lib
-#@author Antonio J. Doblas Viso. Universidad de Malaga
-#@date 27/10/2008
-#*/
-function ogSetPartitionId() {
-# Variables locales
-local DISK PART ID
-
-# Si se solicita, mostrar ayuda.
-if [ "$*" == "help" ]; then
- ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition str_type" \
- "$FUNCNAME 1 1 NTFS"
- return
-fi
-# Error si no se reciben 3 parámetros.
-[ $# == 3 ] || ogRaiseError $OG_ERR_FORMAT || return $?
-
-# Sustituye nº de disco por su dispositivo.
-DISK=`ogDiskToDev $1` || return $?
-PART=`ogDiskToDev $1 $2` || return $?
-
-# Elección del tipo de partición.
-ID=$(ogFsToId "$3")
-[ -n "$ID" ] || ogRaiseError $OG_ERR_PARTITION "$3" || return $?
-
-echo -ne "t\n$2\n${ID}\nw\n" | fdisk $DISK 1>/dev/null 2>&1
-}
-
-
#/** @function ogDeletePartitionsLabels: @brief Elimina la informacion que tiene el kernel del cliente og sobre los labels de los sistemas de archivos
#@param No requiere
#@return Nada
diff --git a/doc/CHANGELOG.es.txt b/doc/CHANGELOG.es.txt
index 17b17c12..32e28250 100644
--- a/doc/CHANGELOG.es.txt
+++ b/doc/CHANGELOG.es.txt
@@ -11,6 +11,8 @@ Tickets resueltos en módulo OpenGnSys Cloning Engine:
#521 Función ogUpdateCacheIsNecesary: usar funcion para cálculo de MD5
#522 Script updateCache: eliminar opción del case $ACTIONCACHEFULL=NONE
#530 Función ogReduceFs sobre windows 7 no borra fichero hiberfil.sys
+#538 Función ogTypeToId: error en parámetro
+#540 Función ogCreateCache no detecta tipo de tabla de particiones
Tickets resueltos en módulo OpenGnSys Client:
#116 Aviso en el browser de cliente rechazado (no se resolverá)