#802 #889 ogHidePartition and ogUnhidePartition: Add Windows and Windows Reserved Partitions. ogSaveImageInfo and ogRestoreUuidPartitions: Only save/restore GUID Partition Table.
parent
f028c36341
commit
a31f7a97b1
|
@ -1024,6 +1024,9 @@ echo "$TYPE"
|
|||
#@version 1.0 - Versión en pruebas.
|
||||
#@author Ramon Gomez, ETSII Universidad de Sevilla
|
||||
#@date 2010/01/12
|
||||
#@version 1.1.1 - Se incluye tipo Windows para UEFI (ticket #802)
|
||||
#@author Irina Gomez, ETSII Universidad de Sevilla
|
||||
#@date 2019/01/18
|
||||
#*/ ##
|
||||
function ogHidePartition ()
|
||||
{
|
||||
|
@ -1046,6 +1049,7 @@ case "$TYPE" in
|
|||
FAT32) NEWTYPE="HFAT32" ;;
|
||||
FAT16) NEWTYPE="HFAT16" ;;
|
||||
FAT12) NEWTYPE="HFAT12" ;;
|
||||
WINDOWS)NEWTYPE="WIN-RESERV";;
|
||||
*) ogRaiseError $OG_ERR_PARTITION "$TYPE"
|
||||
return $? ;;
|
||||
esac
|
||||
|
@ -1595,6 +1599,9 @@ echo $ID
|
|||
#@version 1.0 - Versión en pruebas.
|
||||
#@author Ramon Gomez, ETSII Universidad de Sevilla
|
||||
#@date 2010/01/12
|
||||
#@version 1.1.1 - Se incluye tipo Windows Reserver para UEFI (ticket #802)
|
||||
#@author Irina Gomez, ETSII Universidad de Sevilla
|
||||
#@date 2019/01/18
|
||||
#*/ ##
|
||||
function ogUnhidePartition ()
|
||||
{
|
||||
|
@ -1613,10 +1620,11 @@ PART=$(ogDiskToDev "$1" "$2") || return $?
|
|||
# Obtener tipo de partición.
|
||||
TYPE=$(ogGetPartitionType "$1" "$2")
|
||||
case "$TYPE" in
|
||||
HNTFS) NEWTYPE="NTFS" ;;
|
||||
HFAT32) NEWTYPE="FAT32" ;;
|
||||
HFAT16) NEWTYPE="FAT16" ;;
|
||||
HFAT12) NEWTYPE="FAT12" ;;
|
||||
HNTFS) NEWTYPE="NTFS" ;;
|
||||
HFAT32) NEWTYPE="FAT32" ;;
|
||||
HFAT16) NEWTYPE="FAT16" ;;
|
||||
HFAT12) NEWTYPE="FAT12" ;;
|
||||
WIN-RESERV) NEWTYPE="WINDOWS" ;;
|
||||
*) ogRaiseError $OG_ERR_PARTITION "$TYPE"
|
||||
return $? ;;
|
||||
esac
|
||||
|
|
|
@ -189,8 +189,8 @@ esac
|
|||
#@exception OG_ERR_FORMAT Formato incorrecto.
|
||||
#@exception OG_ERR_NOTFOUND No encontrado fichero de información de la imagen (con uuid)
|
||||
function ogRestoreUuidPartitions () {
|
||||
local DISK PART IMGNAME INFOFILE DEVICE PARTDEVICE DATA GUID UUID IMGGUID IMGUUID
|
||||
local EFIPARTDEVICE EFIDEVICE EFIDATA EFIGUID EFIUUID EFIUUID IMGEFIGUID IMGEFIUUID
|
||||
local DISK PART IMGNAME INFOFILE DEVICE DATA GUID UUID IMGGUID
|
||||
local EFIDEVICE EFIDATA EFIGUID EFIUUID EFIUUID IMGEFIGUID
|
||||
|
||||
# Si se solicita, mostrar ayuda.
|
||||
if [ "$*" == "help" ]; then
|
||||
|
@ -214,20 +214,15 @@ DISK=$3
|
|||
PART=$4
|
||||
|
||||
DEVICE=$(ogDiskToDev $DISK)
|
||||
PARTDEVICE=$(ogDiskToDev $DISK $PART) || return $?
|
||||
read -e EFIDISK EFIPART <<<"$(ogGetEsp)"
|
||||
EFIPARTDEVICE=$(ogDiskToDev $EFIDISK $EFIPART) || return $?
|
||||
|
||||
# Datos de la imagen
|
||||
IMGGUID=$(jq .guid $INFOFILE|tr -d \")
|
||||
IMGUUID=$(jq .uuid $INFOFILE|tr -d \")
|
||||
IMGEFIGUID=$(jq .espguid $INFOFILE|tr -d \")
|
||||
IMGEFIUUID=$(jq .espuuid $INFOFILE|tr -d \")
|
||||
|
||||
# Datos actuales
|
||||
DATA=$(sfdisk -J $DEVICE)
|
||||
GUID=$(echo $DATA|jq ".partitiontable|.id"|tr -d \")
|
||||
UUID=$(echo $DATA|jq ".partitiontable.partitions[]|select(.node==\"$PARTDEVICE\").uuid"|tr -d \")
|
||||
|
||||
if [ "$IMGGUID" != "$GUID" ]; then
|
||||
echo sgdisk -U "$IMGGUID" "$DEVICE"
|
||||
|
@ -235,13 +230,6 @@ if [ "$IMGGUID" != "$GUID" ]; then
|
|||
partprobe
|
||||
fi
|
||||
|
||||
if [ "$IMGUUID" != "$UUID" ]; then
|
||||
NUMPART="${PARTDEVICE##$DEVICE}"
|
||||
echo sgdisk -u "${NUMPART}:$IMGUUID" "$DEVICE"
|
||||
sgdisk -u "${NUMPART}:$IMGUUID" "$DEVICE"
|
||||
partprobe
|
||||
fi
|
||||
|
||||
if [ $DISK -eq $EFIDISK ]; then
|
||||
EFIDATA=$DATA
|
||||
EFIDEVICE=$DEVICE
|
||||
|
@ -256,13 +244,6 @@ echo sgdisk -U "$IMGEFIGUID" "$EFIDEVICE"
|
|||
fi
|
||||
fi
|
||||
|
||||
EFIUUID=$(echo $EFIDATA|jq ".partitiontable.partitions[]|select(.node==\"$EFIPARTDEVICE\").uuid"|tr -d \")
|
||||
if [ "$IMGEFIUUID" != "$EFIUUID" ]; then
|
||||
EFINUMPART="${EFIPARTDEVICE##$EFIDEVICE}"
|
||||
echo sgdisk -u "${EFINUMPART}:$IMGEFIUUID" "$EFIDEVICE"
|
||||
sgdisk -u "${EFINUMPART}:$IMGEFIUUID" "$EFIDEVICE"
|
||||
partprobe
|
||||
fi
|
||||
}
|
||||
|
||||
# ogSaveImageInfo
|
||||
|
@ -274,8 +255,8 @@ fi
|
|||
#@exception OG_ERR_FORMAT formato incorrecto.
|
||||
#@exception OG_ERR_NOTFOUND fichero o dispositivo no encontrado.
|
||||
function ogSaveImageInfo () {
|
||||
local DISK PART IMGDIR IMGNAME INFO INFOFILE DEVICE PARTDEVICE DATA GUID UUID
|
||||
local EFIPARTDEVICE EFIDEVICE EFIDATA EFIUUID EFIGUID
|
||||
local DISK PART IMGDIR IMGNAME INFO INFOFILE DEVICE DATA GUID
|
||||
local EFIPARTDEVICE EFIDEVICE EFIDATA EFIGUID
|
||||
|
||||
# Si se solicita, mostrar ayuda.
|
||||
if [ "$*" == "help" ]; then
|
||||
|
@ -295,14 +276,12 @@ IMGNAME="$(basename "$4")"
|
|||
INFOFILE="$IMGDIR/.$IMGNAME.img.json"
|
||||
|
||||
DEVICE=$(ogDiskToDev $DISK) || return $?
|
||||
PARTDEVICE=$(ogDiskToDev $DISK $PART) || return $?
|
||||
DATA=$(sfdisk -J $DEVICE)
|
||||
GUID=$(echo $DATA|jq ".partitiontable|.id"|tr -d \")
|
||||
UUID=$(echo $DATA|jq ".partitiontable.partitions[]|select(.node==\"$PARTDEVICE\").uuid"|tr -d \")
|
||||
|
||||
# Información de la imagen. Valor inicial de efi: false
|
||||
INFO=$(cat << EOT | jq .
|
||||
{"name":"$IMGNAME","efi":"false","guid":"$GUID","uuid":"$UUID"}
|
||||
{"name":"$IMGNAME","efi":"false","guid":"$GUID"}
|
||||
EOT
|
||||
)
|
||||
|
||||
|
@ -318,16 +297,13 @@ if ogIsEfiActive; then
|
|||
EFIDATA=$DATA
|
||||
EFIGUID=$GUID
|
||||
else
|
||||
EFIDEVICE=$(ogDiskToDev $EFIDISK) || return $?
|
||||
EFIDEVICE=$(ogDiskToDev $EFIDISK)
|
||||
EFIDATA=$(sfdisk -J $EFIDEVICE)
|
||||
EFIGUID=$(echo $EFIDATA|jq ".partitiontable|.id"|tr -d \")
|
||||
fi
|
||||
EFIUUID=$(echo $EFIDATA|jq ".partitiontable.partitions[]|select(.node==\"$EFIPARTDEVICE\").uuid"|tr -d \")
|
||||
|
||||
# Incluyo valor de EFIGUID (por si partición EFI en distinto disco que la de sistema)
|
||||
INFO=$(echo $INFO| jq --arg aux $EFIGUID '. + {espguid: $aux}')
|
||||
# Incluyo valor de EFIUUID
|
||||
INFO=$(echo $INFO| jq --arg aux $EFIUUID '. + {espuuid: $aux}')
|
||||
fi
|
||||
|
||||
cat << EOT | jq . > $INFOFILE
|
||||
|
|
|
@ -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
|
||||
;;
|
||||
|
|
|
@ -28,7 +28,7 @@ IMGNAME="$4" # Nombre canónico de imagen (sin extensión).
|
|||
# Nota: incluye llamada al script "configureOs" para realizar previamente una configuración estándar.
|
||||
|
||||
# Configurarción típica.
|
||||
configureOs "$1" "$2"
|
||||
configureOs "$DISK" "$PART" "$REPO" "$IMGNAME"
|
||||
# Postconfiguración personalizada para cada tipo de sistema operativo.
|
||||
OSTYPE="$(ogGetOsType $1 $2)"
|
||||
case "$OSTYPE" in
|
||||
|
|
Loading…
Reference in New Issue