summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xclient/engine/Disk.lib63
-rwxr-xr-xclient/engine/FileSystem.lib2
-rwxr-xr-xclient/engine/System.lib2
3 files changed, 57 insertions, 10 deletions
diff --git a/client/engine/Disk.lib b/client/engine/Disk.lib
index 0d3b424a..8c178466 100755
--- a/client/engine/Disk.lib
+++ b/client/engine/Disk.lib
@@ -4,7 +4,7 @@
#@brief Librería o clase Disk
#@class Disk
#@brief Funciones para gestión de discos y particiones.
-#@version 0.9
+#@version 1.0.4
#@warning License: GNU GPLv3+
#*/
@@ -470,6 +470,38 @@ esac
#/**
+# ogGetPartitionTableType int_ndisk
+#@brief Devuelve el tipo de tabla de particiones del disco (GPT o MSDOS)
+#@param int_ndisk nº de orden del disco
+#@return str_tabletype - Tipo de tabla de paritiones
+#@warning Salidas de errores no determinada
+#@note tabletype: { MSDOS, GPT }
+#@note Requisitos: parted
+#@version 1.0.4 - Primera versión para OpenGnSys
+#@author Universidad de Huelva
+#@date 2012/03/01
+#*/
+function ogGetPartitionTableType ()
+{
+# Variables locales.
+local DISK
+
+# Si se solicita, mostrar ayuda.
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk" \
+ "$FUNCNAME 1"
+ return
+fi
+# Error si no se recibe 1 parámetro.
+[ $# == 1 ] || ogRaiseError $OG_ERR_FORMAT || return $?
+
+# Sustituye n de disco por su dispositivo.
+DISK=`ogDiskToDev $1` || return $?
+parted -sm $DISK print | awk -F: -v D=$DISK '{ if($1 == D) print toupper($6)}'
+}
+
+
+#/**
# ogGetPartitionType int_ndisk int_npartition
#@brief Devuelve el mnemonico con el tipo de partición.
#@param int_ndisk nº de orden del disco
@@ -510,6 +542,7 @@ case "$ID" in
5|f) TYPE="EXTENDED" ;;
6|e) TYPE="FAT16" ;;
7) TYPE="NTFS" ;;
+ 700|0700) TYPE="WINDOWS" ;;
b|c) TYPE="FAT32" ;;
11) TYPE="HFAT12" ;;
12) TYPE="COMPAQDIAG" ;;
@@ -517,14 +550,28 @@ case "$ID" in
17) TYPE="HNTFS" ;;
1b|1c) TYPE="HFAT32" ;;
42) TYPE="WIN-DYNAMIC" ;;
- 82) TYPE="LINUX-SWAP" ;;
- 83) TYPE="LINUX" ;;
- 8e) TYPE="LINUX-LVM" ;;
+ 82|8200) TYPE="LINUX-SWAP" ;;
+ 83|8300) TYPE="LINUX" ;;
+ 8e|8e00) TYPE="LINUX-LVM" ;;
+ a5|a503) TYPE="FREEBSD" ;;
+ a500) TYPE="FREEBSD-DISK" ;;
+ a501) TYPE="FREEBSD-BOOT" ;;
+ a502) TYPE="FREEBSD-SWAP" ;;
+ a6) TYPE="OPENBSD" ;;
a7) TYPE="CACHE" ;; # (compatibilidad con Brutalix)
- af) TYPE="HFS" ;;
- bf) TYPE="SOLARIS" ;;
- ca) TYPE="CACHE" ;;
- fd) TYPE="LINUX-RAID" ;;
+ af|af00) TYPE="HFS" ;;
+ be|be00) TYPE="SOLARIS-BOOT" ;;
+ bf|bf0[0145]) TYPE="SOLARIS" ;;
+ bf02) TYPE="SOLARIS-SWAP" ;;
+ bf03) TYPE="SOLARIS-DISK" ;;
+ ca|8301) TYPE="CACHE" ;;
+ da) TYPE="DATA" ;;
+ ee) TYPE="GPT" ;;
+ ef|ef00) TYPE="EFI" ;;
+ ef01) TYPE="MBR" ;;
+ ef02) TYPE="BIOS-BOOT" ;;
+ fb) TYPE="VMFS" ;;
+ fd|fd00) TYPE="LINUX-RAID" ;;
*) TYPE="UNKNOWN" ;;
esac
echo "$TYPE"
diff --git a/client/engine/FileSystem.lib b/client/engine/FileSystem.lib
index e781f05d..30cecc19 100755
--- a/client/engine/FileSystem.lib
+++ b/client/engine/FileSystem.lib
@@ -329,7 +329,7 @@ ID=$(ogGetPartitionId "$1" "$2") || return $?
[ "$ID" == "a7" ] && ID="ca" # Traducir antiguo id. de partición de caché.
TYPE=""
case "$ID" in
- ca) # Detectar caché local.
+ ca|8301) # Detectar caché local (revisar detección en tablas GPT).
ogIsFormated $1 $2 2>/dev/null && TYPE="CACHE"
;;
*) # Detectar sistema de ficheros.
diff --git a/client/engine/System.lib b/client/engine/System.lib
index 84ee62f9..9f943c5d 100755
--- a/client/engine/System.lib
+++ b/client/engine/System.lib
@@ -4,7 +4,7 @@
#@brief Librería o clase System
#@class System
#@brief Funciones básicas del sistema.
-#@version 0.9
+#@version 1.0.4
#@warning License: GNU GPLv3+
#*/