#!/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