summaryrefslogtreecommitdiffstats
path: root/client/engine/Disk.lib
diff options
context:
space:
mode:
Diffstat (limited to 'client/engine/Disk.lib')
-rwxr-xr-xclient/engine/Disk.lib591
1 files changed, 591 insertions, 0 deletions
diff --git a/client/engine/Disk.lib b/client/engine/Disk.lib
new file mode 100755
index 00000000..b2dff7cc
--- /dev/null
+++ b/client/engine/Disk.lib
@@ -0,0 +1,591 @@
+#!/bin/bash
+#/**
+#@file Disk.lib
+#@brief Librería o clase Disk
+#@class Disk
+#@brief Funciones para gestión de discos y particiones.
+#@version 0.9
+#@warning License: GNU GPLv3+
+#*/
+
+
+#/**
+# ogCreatePartitions ndisk parttype:partsize ...
+#@brief Define el conjunto de particiones de un disco.
+#@arg \c int_ndisk nº de orden del disco
+#@arg \c str_parttype mnemónico del tipo de partición
+#@arg \c int_partsize tamaño de la partición (en KB)
+#@return (nada, por determinar)
+#@exception OG_ERR_FORMAT formato incorrecto.
+#@exception OG_ERR_NOTFOUND disco o particion no detectado (no es un dispositivo).
+#@attention El nº de partición se indica por el orden de los párametros \c parttype:partsize
+#@attention Pueden definirse particiones vacías de tipo \c EMPTY
+#@note Requisitos: sfdisk, parted, partprobe, awk
+#@todo Definir atributos (arranque, oculta) y tamaños en MB, GB, etc.
+#@version 0.9 - Primera versión para OpenGNSys
+#@author Ramon Gomez, ETSII Universidad de Sevilla
+#@date 2009/09/09
+#*/
+function ogCreatePartitions () {
+
+# Variables locales.
+local DISK PART SECTORS START SIZE TYPE EXTSTART EXTSIZE tmpsfdisk
+#/// Si se solicita, mostrar ayuda.
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk str_parttype:int_partsize ..." \
+ "$FUNCNAME 1 NTFS:10000000 EXT3:5000000 LINUX-SWAP:1000000"
+ return
+fi
+#/// Error si no se reciben menos de 2 parámetros.
+[ $# -gt 2 ] || ogRaiseError $OG_ERR_FORMAT || return $?
+
+#/// Sustituye nº de disco por su dispositivo.
+DISK="$(ogDiskToDev $1)" || return $?
+shift
+
+# Nº total de sectores, para evitar desbordamiento
+SECTORS=$(awk -v D=${DISK#/dev/} '{if ($4==D) {print $3*2}}' /proc/partitions)
+# Sector de inicio de la particon (la 1ª empieza en el sector 63).
+START=63
+PART=1
+
+# Fichero temporal de entrada para "sfdisk"
+tmpsfdisk=/tmp/sfdisk$$
+trap "rm -f $tmpsfdisk" 1 2 3 9 15
+
+echo "unit: sectors" >$tmpsfdisk
+echo >>$tmpsfdisk
+
+#/// Generar fichero de entrada para "sfdisk" con las particiones.
+while [ $# -gt 0 ]; do
+ #/// Leer formato de cada parámetro - Tipo:Tamaño
+ TYPE="${1%%:*}"
+ SIZE="${1#*:}"
+ [ -z "$SIZE" ] && ogRaiseError $OG_ERR_FORMAT && return $?
+ #/// Convertir en sectores de 512 B.
+ SIZE=$[SIZE*2]
+ [ $SIZE -eq 0 ] && ogRaiseError $OG_ERR_FORMAT && return $?
+ #/// Obtener identificador de tipo de partición.
+ case "$TYPE" in
+ EMPTY) ID=0 ;;
+ EXTENDED) ID=5
+ [ $PART -gt 4 ] && ogRaiseError $OG_ERR_FORMAT && return $?
+ EXTSTART=$START
+ EXTSIZE=$SIZE
+ ;;
+ NTFS|EXFAT) ID=7 ;;
+ HNTFS) ID=17 ;;
+ FAT32) ID=b ;;
+ HFAT32) ID=1b ;;
+ EXT[234]|REISERFS|REISER4|XFS|JFS)
+ ID=83 ;;
+ LINUX-SWAP) ID=82 ;;
+ SOLARIS) ID=bf ;;
+ CACHE) ID=ca ;;
+ *) ogRaiseError $OG_ERR_PARTITION "$TYPE"
+ return $? ;;
+ esac
+ #/// Incluir particiones lógicas dentro de la partición extendida.
+ if [ $PART = 5 ]; then
+ [ -z "$EXTSTART" ] && ogRaiseError $OG_ERR_FORMAT && return $?
+ START=$EXTSTART
+ SECTORS=$[EXTSTART+EXTSIZE]
+ fi
+ #/// Generar datos para la partición.
+ echo "$DISK$PART : start=$START, size=$SIZE, Id=$ID" >>$tmpsfdisk
+ #/// Error si se supera el nº total de sectores.
+ START=$[START+SIZE]
+ [ $START -gt $SECTORS ] && ogRaiseError $OG_ERR_FORMAT && return $?
+ PART=$[PART+1]
+ shift
+done
+# Si no se indican las 4 particiones primarias, definirlas como vacías.
+while [ $PART -le 4 ]; do
+ echo "$DISK$PART : start=0, size=0, Id=0" >>$tmpsfdisk
+ PART=$[PART+1]
+done
+# Si se define partición extendida sin lógicas, crear particion 5 vacía.
+if [ $PART = 5 -a -n "$EXTSTART" ]; then
+ echo "${DISK}5 : start=$EXTSTART, size=$EXTSIZE, Id=0" >>$tmpsfdisk
+fi
+
+# Desmontar todos los sistemas de archivos del disco.
+ogUnmountAll $1
+# 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 < $tmpsfdisk 2>/dev/null
+rm -f $tmpsfdisk
+}
+
+
+#/**
+# ogDevToDisk device
+#@brief Devuelve el nº de orden de dicso (y partición) correspondiente al nombre de fichero de dispositivo.
+#@arg \c path_device Camino del fichero de dispositivo.
+#@return ndisk (para dispositivo de disco)
+#@return ndisk npartition (para dispositivo de partición).
+#@exception OG_ERR_FORMAT Formato incorrecto.
+#@exception OG_ERR_NOTFOUND Dispositivo no detectado.
+#@note Requisitos: awk
+#@version 0.9 - Primera versión para OpenGNSys
+#@author Ramon Gomez, ETSII Universidad Sevilla
+#@date 2009-07-20
+#*/
+function ogDevToDisk () {
+
+# Variables locales.
+local d n
+#/// Si se solicita, mostrar ayuda.
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME" "$FUNCNAME path_device" \
+ "$FUNCNAME /dev/sda => 1 1"
+ return
+fi
+
+#/// Error si no se recibe 1 parámetro.
+[ $# == 1 ] || ogRaiseError $OG_ERR_FORMAT || return $?
+#/// Error si no es fichero de bloques.
+[ -b "$1" ] || ogRaiseError $OG_ERR_NOTFOUND "$1" || return $?
+
+#/// Procesa todos los discos para devolver su nº de orden y de partición.
+n=1
+for d in $(ogDiskToDev); do
+ [ -n "$(echo $1 | grep $d)" ] && echo "$n ${1#$d}" && return
+ n=$[n+1]
+done
+ogRaiseError $OG_ERR_NOTFOUND "$1"
+return $OG_ERR_NOTFOUND
+}
+
+
+#/**
+# ogDiskToDev [ndisk [npartition]]
+#@brief Devuelve la equivalencia entre el nº de orden del dispositivo (dicso o partición) y el nombre de fichero de dispositivo correspondiente.
+#@arg \c int_ndisk nº de orden del disco
+#@arg \c int_npartition nº de orden de la partición
+#@return Para 0 parametros: Devuelve los nombres de ficheros de los dispositivos sata/ata/usb linux encontrados.
+#@return Para 1 parametros: Devuelve la ruta del disco duro indicado.
+#@return Para 2 parametros: Devuelve la ruta de la particion indicada.
+#@exception OG_ERR_FORMAT Formato incorrecto.
+#@exception OG_ERR_NOTFOUND Dispositivo no detectado.
+#@note Requisitos: awk, lvm
+#@version 0.9 - Primera versión para OpenGNSys
+#@author Ramon Gomez, ETSII Universidad Sevilla
+#@date 2009-07-20
+#*/
+function ogDiskToDev () {
+
+# Variables locales
+local ALLDISKS VOLGROUPS DISK PART
+
+#/// Si se solicita, mostrar ayuda.
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk [int_npartition]" \
+ "$FUNCNAME => /dev/sda /dev/sdb" \
+ "$FUNCNAME 1 => /dev/sda" \
+ "$FUNCNAME 1 1 => /dev/sda1"
+ return
+fi
+
+#/// Listar dispositivo para los discos duros (tipos: 3=hd, 8=sd).
+ALLDISKS=$(awk '($1==3 || $1==8) && $4!~/[0-9]/ {printf "/dev/%s ",$4}' /proc/partitions)
+VOLGROUPS=$(vgchange -ay &>/dev/null && vgs -a --noheadings | awk '{printf "/dev/%s ",$1}')
+ALLDISKS="$ALLDISKS $VOLGROUPS"
+
+#/// Mostrar salidas segun el número de parametros.
+case $# in
+ 0) # Muestra todos los discos, separados por espacios.
+ echo $ALLDISKS
+ ;;
+ 1) # Error si el parámetro no es un digito.
+ [ -z "${1/[1-9]/}" ] || ogRaiseError $OG_ERR_FORMAT || return $?
+ DISK=$(echo "$ALLDISKS" | awk -v n=$1 '{print $n}')
+ # Error si el fichero no existe.
+ [ -e "$DISK" ] || ogRaiseError $OG_ERR_NOTFOUND "$1" || return $?
+ echo "$DISK"
+ ;;
+ 2) # Error si los 2 parámetros no son digitos.
+ [ -z "${1/[1-9]/}" -a -z "${2/[1-9]/}" ] || ogRaiseError $OG_ERR_FORMAT|| return $?
+ DISK=$(echo "$ALLDISKS" | awk -v n=$1 '{print $n}')
+ [ -e "$DISK" ] || ogRaiseError $OG_ERR_NOTFOUND "$1" || return $?
+ PART="$DISK$2"
+ #/// Comprobar si es partición.
+ if [ -b "$PART" ]; then
+ echo "$PART"
+ elif [ -n "$VOLGROUPS" ]; then
+ #/// Comprobar si volumen lógico.
+ PART=$(lvscan -a 2>/dev/null | grep "'$DISK/" | awk -v n=$2 -F\' '{if (NR==n) print $2}')
+ [ -e "$PART" ] || ogRaiseError $OG_ERR_NOTFOUND "$1 $2" || return $?
+ echo "$PART"
+ else
+ ogRaiseError $OG_ERR_NOTFOUND "$1 $2" || return $?
+ fi
+ ;;
+ *) # Formato erroneo.
+ ogRaiseError $OG_ERR_FORMAT
+ return $OG_ERR_FORMAT
+ ;;
+esac
+}
+
+
+#/**
+# ogGetPartitionActive ndisk
+#@brief Muestra que particion de un disco esta marcada como de activa.
+#@arg \c int_ndisk nº de orden del disco
+#@return Nº de partición activa
+#@exception OG_ERR_FORMAT Formato incorrecto.
+#@exception OG_ERR_NOTFOUND Disco o particion no corresponden con un dispositivo.
+#@note Requisitos: parted
+#@todo Queda definir formato para atributos (arranque, oculta, ...).
+#@version 0.9 - Primera versión compatible con OpenGNSys.
+#@author Ramon Gomez, ETSII Universidad de Sevilla
+#@date 2009/07/24
+#*/
+function ogGetPartitionActive () {
+
+# Variables locales
+local DISK
+
+#/// Si se solicita, mostrar ayuda.
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk" "$FUNCNAME 1 => 1"
+ return
+fi
+#/// Error si no se recibe 1 parámetro.
+[ $# == 1 ] || ogRaiseError $OG_ERR_FORMAT || return $?
+
+#/// Comprobar que el disco existe y listar su partición activa.
+DISK="$(ogDiskToDev $1)" || return $?
+parted $DISK print 2>/dev/null | awk '/boot/ {print $1}'
+}
+
+
+#/**
+# ogGetPartitionId ndisk npartition
+#@brief Devuelve el mnemonico con el tipo de sistema de archivos.
+#@arg \c int_ndisk nº de orden del disco
+#@arg \c int_npartition nº de orden de la partición
+#@return Identificador de tipo de partición.
+#@exception OG_ERR_FORMAT Formato incorrecto.
+#@exception OG_ERR_NOTFOUND Disco o particion no corresponden con un dispositivo.
+#@note Requisitos: sfdisk
+#@version 0.9 - Primera versión compatible con OpenGNSys.
+#@author Ramon Gomez, ETSII Universidad de Sevilla
+#@date 25/03/2009
+#*/
+function ogGetPartitionId () {
+
+# Variables locales.
+local DISK PART
+
+#/// Si se solicita, mostrar ayuda.
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition" \
+ "$FUNCNAME 1 1 => 7"
+ return
+fi
+#/// Error si no se reciben 2 parámetros.
+[ $# == 2 ] || ogRaiseError $OG_ERR_FORMAT || return $?
+
+#/// Detectar id. de tipo de particion y codificar al mnemonico.
+DISK=$(ogDiskToDev $1) || return $?
+PART=$(ogDiskToDev $1 $2) || return $?
+echo $(sfdisk --id $DISK $2 2>/dev/null)
+}
+
+
+#/**
+# ogGetPartitionSize ndisk npartition
+#@brief Muestra el tamano en KB de una particion determinada.
+#@arg \c int_ndisk nº de orden del disco
+#@arg \c int_npartition nº de orden de la partición
+#@return tamañoKB
+#@exception OG_ERR_FORMAT formato incorrecto.
+#@exception OG_ERR_NOTFOUND disco o particion no detectado (no es un dispositivo).
+#@note Requisitos: sfdisk, awk
+#@version 0.9 - Primera versión para OpenGNSys
+#@author Ramon Gomez, ETSII Universidad de Sevilla
+#@date 2009/07/24
+#*/
+function ogGetPartitionSize () {
+
+# Variables locales.
+local PART
+
+#/// Si se solicita, mostrar ayuda.
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition" \
+ "$FUNCNAME 1 1 => 10000000"
+ return
+fi
+#/// Error si no se reciben 2 parámetros.
+[ $# == 2 ] || ogRaiseError $OG_ERR_FORMAT || return $?
+
+#/// Obtener el tamaño de la partición.
+PART="$(ogDiskToDev $1 $2)" || return $?
+sfdisk -s $PART
+}
+
+
+#/**
+# ogListPartitions int_ndisk
+#@brief Lista las particiones definidas en un disco.
+#@arg \c int_ndisk nº de orden del disco
+#@return tipo:tamanoKB ...
+#@exception OG_ERR_FORMAT formato incorrecto.
+#@exception OG_ERR_NOTFOUND disco o particion no detectado (no es un dispositivo).
+#@note Requisitos: \c parted \c awk
+#@attention El nº de partición se indica por el orden de los párametros \c parttype:partsize
+#@attention Las tuplas de valores están separadas por espacios.
+#@version 0.9 - Primera versión para OpenGNSys
+#@author Ramon Gomez, ETSII Universidad de Sevilla
+#@date 2009/07/24
+#*/
+function ogListPartitions () {
+
+# Variables locales.
+local DISK PART NPARTS
+
+#/// Si se solicita, mostrar ayuda.
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk" \
+ "$FUNCNAME 1 => NTFS:10000000 EXT3:5000000 LINUX-SWAP:1000000"
+ return
+fi
+#/// Error si no se recibe 1 parámetro.
+[ $# == 1 ] || ogRaiseError $OG_ERR_FORMAT "$FORMAT" || return $?
+
+#/// Procesar la salida de \c parted .
+DISK="$(ogDiskToDev $1)" || return $?
+NPARTS=$(parted -s $DISK print | awk '$1~/^[1-9]/ {print $1}')
+for PART in $NPARTS; do
+ echo -n "$(ogGetFsType $1 $PART):$(ogGetPartitionSize $1 $PART) "
+done
+echo
+}
+
+
+#/**
+# ogSetPartitionActive ndisk npartition
+#@brief Establece cual es la partición activa de un disco.
+#@arg \c int_ndisk nº de orden del disco
+#@arg \c int_npartition nº de orden de la partición
+#@return Nada.
+#@exception OG_ERR_FORMAT Formato incorrecto.
+#@exception OG_ERR_NOTFOUND Disco o partición no corresponden con un dispositivo.
+#@note Requisitos: parted
+#@version 0.9 - Primera versión compatible con OpenGNSys.
+#@author Ramon Gomez, ETSII Universidad de Sevilla
+#@date 2009/09/17
+#*/
+function ogSetPartitionActive () {
+
+# Variables locales
+local DISK PART
+
+#/// Si se solicita, mostrar ayuda.
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition" \
+ "$FUNCNAME 1 1"
+ return
+fi
+#/// Error si no se reciben 2 parámetros.
+[ $# == 2 ] || ogRaiseError $OG_ERR_FORMAT || return $?
+
+#/// Comprobar que el disco existe y activar la partición indicada.
+DISK="$(ogDiskToDev $1)" || return $?
+PART="$(ogDiskToDev $1 $2)" || return $?
+parted -s $DISK set $2 boot on 2>/dev/null
+}
+
+
+#/**
+# ogSetPartitionSize ndisk npartition size
+#@brief Muestra el tamano en KB de una particion determinada.
+#@arg \c int_ndisk nº de orden del disco
+#@arg \c int_npartition nº de orden de la partición
+#@arg \c int_size tamaño de la partición (en KB)
+#@return (nada)
+#@exception OG_ERR_FORMAT formato incorrecto.
+#@exception OG_ERR_NOTFOUND disco o particion no detectado (no es un dispositivo).
+#@note Requisitos: sfdisk, awk
+#@todo Compruebar que el tamaño sea numérico positivo y evitar que pueda solaparse con la siguiente partición.
+#@version 0.9 - Primera versión para OpenGNSys
+#@author Ramon Gomez, ETSII Universidad de Sevilla
+#@date 2009/07/24
+#*/
+function ogSetPartitionSize () {
+
+# Variables locales.
+local DISK PART SIZE
+
+#/// Si se solicita, mostrar ayuda.
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition" \
+ "$FUNCNAME 1 1 10000000"
+ return
+fi
+#/// Error si no se reciben 3 parámetros.
+[ $# == 3 ] || ogRaiseError $OG_ERR_FORMAT || return $?
+
+#/// Obtener el tamaño de la partición.
+DISK="$(ogDiskToDev $1)" || return $?
+PART="$(ogDiskToDev $1 $2)" || return $?
+# Convertir tamaño en KB a sectores de 512 B.
+SIZE=$[$3*2] || ogRaiseError $OG_ERR_FORMAT || return $?
+#/// Usar \c sfdisk para redefinir el tamaño.
+sfdisk -f -uS -N$2 $DISK <<< ",$SIZE" || ogRaiseError $OG_ERR_PARTITION "$1,$2" || return $?
+}
+
+
+#/**
+# ogUpdatePartitionTable
+#@brief Fuerza al kernel releer la tabla de particiones de los discos duros
+#@arg \c no requiere
+#@return informacion propia de la herramienta
+#@note Requisitos: \c partprobe
+#@warning pendiente estructurar la funcion a opengnsys
+#@version 0.1 Date: 27/10/2008 Author Antonio J. Doblas Viso. Universidad de Malaga
+#@note funcion importada de EAC
+#*/
+
+function ogUpdatePartitionTable () {
+echo "Forzando al kernel la lectura de la tabla de particiones"
+list=`partprobe -s | cut -f1 -d: ` 2>/dev/null
+echo $list > /tmp/disk
+}
+
+
+
+
+function ogGetPartitionsNumber () {
+#/** @function ogGetPartitionsNumber: @brief detecta el numero de particiones del disco duro indicado.
+#@param int_numdisk (indentificado EAC del disco)
+#@return devuelve el numero paritiones del disco duro indicado
+#@warning Salidas de errores no determinada
+#@attention Requisitos: parted
+#@note Notas sin especificar
+#@version 0.1 Date: 27/10/2008 Author Antonio J. Doblas Viso. Universidad de Malaga
+#*/
+disco=`ogDiskToDev $1`
+totalpart=`parted $disco print | egrep ^" [0123456789] " -c`
+echo $totalpart
+}
+
+
+function ogDiskToRelativeDev () {
+#/** @function ogDiskToRelativeDev: @brief Traduce los ID de discos o particiones EAC a ID Linux relativos, es decir 1 1 => sda1
+#@param Admite 1 parametro: $1 int_numdisk
+#@param Admite 2 parametro: $1 int_numdisk $2 int_partition
+#@return Para 1 parametros traduce Discos Duros: Devuelve la ruta relativa linux del disco duro indicado con nomenclatura EAC.........ejemplo: IdPartition 1 => sda
+#@return Para 2 parametros traduce Particiones: Devuelve la ruta relativa linux de la particion indicado con nomenclatura EAC........... ejemplo: IdPartition 2 1 => sdb1
+#@warning No definidas
+#@attention
+#@note Notas sin especificar
+#@version 0.1 Date: 27/10/2008 Author Antonio J. Doblas Viso. Universidad de Malaga
+#*/
+
+if [ $# = 0 ]
+then
+ Msg "Info: Traduce el identificador del dispositivo EAC a dispositivo linux \n" info
+ Msg "Sintaxis1: IdPartition int_disk -----------------Ejemplo1: IdPartition 1 -> sda " example
+ Msg "Sintaxis2: IdPartition int_disk int_partition --Ejemplo2: IdPartition 1 2 -> sda2 " example
+
+return
+fi
+#PART="$(Disk|cut -f$1 -d' ')$2" # se comenta esta linea porque doxygen no reconoce la funcion disk y no crea los enlaces y referencias correctas.
+PART=$(ogDiskToDev|cut -f$1 -d' ')$2
+echo $PART | cut -f3 -d \/
+}
+
+
+function ogDeletePartitionTable () {
+#/** @function ogDeletePartitionTable: @brief Borra la tabla de particiones del disco.
+#@param $1 opcion A (identificador LINUX) str_ID_linux (/dev/sda)
+#@param $1 opcion B (Identifiador EAC) int_numdiskEAC(1)
+#@return la informacion propia del fdisk
+#@warning no definidos
+#@attention
+#@note
+#@version 0.1 Date: 27/10/2008 Author Antonio J. Doblas Viso. Universidad de Malaga
+#*/
+if [ $# = 0 ]
+then
+ Msg "sintaxis1: ogDeletePartitionTable int_disk" red
+ Msg "sintaxis2: ogDeletePartitionTable str_/dev/sdX" red
+ return
+fi
+if [ -n "${1%/dev/*}" ]
+ then
+ dev=`DiskToDev $1`
+ else
+ dev=$1
+fi
+echo -ne "o\nw" | fdisk $dev
+}
+
+
+
+function ogSetPartitionId() {
+#/** @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 Date: 27/10/2008 Author Antonio J. Doblas Viso. Universidad de Malaga
+#*/
+
+# Variables locales
+local DISK PART ID
+
+#/// Si se solicita, mostrar ayuda.
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition" \
+ "$FUNCNAME 1 1 10000000"
+ 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.
+case "$3" in
+ EMPTY) ID=0 ;;
+ EXTENDED) ID=5 ;;
+ NTFS|EXFAT) ID=7 ;;
+ FAT32) ID=b ;;
+ HNTFS) ID=17 ;;
+ HFAT32) ID=1b ;;
+ LINUX-SWAP) ID=82 ;;
+ EXT[234]|REISERFS|REISER4|XFS|JFS)
+ ID=83 ;;
+ SOLARIS) ID=bf ;;
+ CACHE) ID=ca ;;
+ *) ogRaiseError $OG_ERR_PARTITION "$TYPE"
+ return $? ;;
+esac
+echo -ne "t\n$2\n${ID}\nw\n" | fdisk $DISK 1>/dev/null 2>&1
+}
+
+
+function ogDeletePartitionsLabels () {
+#/** @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
+#@warning
+#@attention Requisitos: comando interno linux rm
+#@note
+#@version 0.1 Date: 27/10/2008 Author Antonio J. Doblas Viso. Universidad de Malaga
+#*/
+rm /dev/disk/by-label/* # */ COMENTARIO OBLIGATORIO PARA DOXYGEN
+}
+