#!/bin/bash
#/**
#         bootOsCustom
#@brief   Plantilla para script de configuración personalizada de sistema operativo restaurado.
#@param   $1 nº de disco 
#@param   $2 nº de partición 
#@warning Renombrar este fichero como "bootOsCustom" para personalizar el script estándar "bootOs".
#@note	  La partición a inicializar debe estar montada
#@version 1.1.1 Soporta varios discos
#@date    2019/08/26
#**/
# CONFIGURAR: Partición de datos de Windows que no queremos ocultar (valor por defecto '0' no oculta nada)
DISKDATA=0
PARTDATA=0

PROG="$(basename $0)"
# Control de errores
if [ $# -lt 2 ]; then
    ogRaiseError $OG_ERR_FORMAT "Formato: $PROG ndisco nparticion"
    exit $?
fi

# Parámetros obligatorios.
DISK="$1"               # Nº de disco.
PART="$2"               # Nº de partición.

# Paso 0: Añadir código para realizar control de errores de los parámetros de entrada (recomendado).
DEVICE=$(ogDiskToDev "$DISK" "$PART") || exit $?

# Paso 1: Adaptar el código de ejemplo para arranque personalizado.
# Nota: el script "bootOs" llama al script "bootOsCustom" después de realizar la operaciones de inicio estándar y antes de desmontar las particiones e iniciar el sistema operativo.


MNTDIR=$(ogMount $DISK $PART) || exit $?
NAME="$(ogGetHostname)"
NAME=${NAME:-"pc"}
OSTYPE=$(ogGetOsType $DISK $PART)

case "$OSTYPE" in
    Windows)
        ## Mostrar las particiones NTFS de sistema (dos opciones)
        ## Opción 1: SIN ocultar las demás. 
        #ogEcho log session "[40] Mostrar y activar particion de Windows $PART."
        #[ $(ogGetPartitionType $DISK $PART) == "HNTFS" -o $(ogGetPartitionType $DISK $PART) == "WIN-RESERV" ] && ogUnhidePartition $DISK $PART

        ## Recorremos los distintos discos
        #for DEVICE in $(ogDiskToDev); do
        #    d=$(ogDevToDisk $DEVICE)

        #    ## Mostrar las particiones NTFS de sistema (dos opciones)
        #    ## Opción 2: Ocultamos las demás.
        #    ogEcho log session "[40] Activar particion de Windows $PART y ocultar las demás."
        #    for (( i=1; i<=$(ogGetPartitionsNumber $d); i++ )); do
        #        if [ $d == $DISK -a $i == $PART ] || [ $d == $DISKDATA -a $i == $PARTDATA ]; then
        #	    [ $(ogGetPartitionType $d $i) == "HNTFS" -o $(ogGetPartitionType $d $i) == "WIN-RESERV" ] && ogUnhidePartition $d $i
        #        else
        #            [ "$(ogGetPartitionType $d $i)" == NTFS -o "$(ogGetPartitionType $d $i)" == "WINDOWS" ] && ogHidePartition $d $i
        #        fi
        #    done

        #    ## Borrar marcas de arrranque de todos los Windows instalados en el disco.
        #    ogEcho log session "[30] Borrar marcas de arrranque de todos los Windows instalados en el disco."
        #    for (( i=1; i<=$(ogGetPartitionsNumber $d); i++ )); do
        #        [ "$(ogGetOsType $d $i)" == "Windows" ] && ogMount $d $i &>/dev/null
        #    done
        #    rm -f /mnt/*/ogboot.*

        #done
    ;;
    Linux)
        ## Modificar el nombre del equipo
        #ogEcho log session "[30] Asignar nombre Linux \"$NAME\"."
        #ETC=$(ogGetPath $DISK $PART /etc)
        #[ -d "$ETC" ] && echo "$NAME" >$ETC/hostname 2>/dev/null

        ## Sustituir UUID o LABEL por su dispositivo en definición de sistema de archivo raíz.
        #if [ -f "$ETC/fstab" ]; then
        #    ogEcho log session "[40] Actualizar fstab con particion raíz \"$PART\"."
        #    awk -v P="$PART " '{ if ($2=="/" && $1!~/^#/) {sub(/^.*$/, P, $1)}
        #                         print }' $ETC/fstab >/tmp/fstab
        #    mv /tmp/fstab $ETC/fstab
        #fi

	## Cambiar claves usuarios, copiando fichero /etc/passwd
	## En el servidor el nuevo fichero debe situarse en el directorio del grupo: 
	##    /opt/opengnsys/images/groups/nombre_aula
	#if [ -r $(ogGetGroupDir)/passwd ]; then
	#    ogEcho log session "[65] Cambiar claves de usuarios."
	#    cp $(ogGetGroupDir)/passwd $MNTDIR/etc
	#fi
    ;;
esac
