wiki:EjemploPracticos

Version 17 (modified by ramon, 7 years ago) (diff)

Asegurar la ejecución de postconfiguración para activar Windows/Office?.

TOC(heading=Índice)?

Ejemplos prácticos

Ejemplos de menú personalizado

  • Este es un ejemplo de un menú personalizado en html donde seleccionar el arranque de un cliente con Windows 7 y Linux.

Los ejemplos son de la Universidad Autónoma de Barcelona así que podréis encontrar algo de texto en catalán. En el zip encontraréis dos menús, uno para resolución 800x600 y otro para resolución y 1024x768, así como una carpeta con las imágenes usadas.

Descarga

Activación licencia de productos Microsoft en la restauración

  • Renombrar el fichero configureOsCustom.template como configureOsCustom
  • añadir las siguientes líneas en el fichero configureOsCustom, en el Paso 1
# Llamar a la postconfiguración por defecto
configureOs "$1" "$2"
# Postconfiguración específica para SO y versión.
OSVERSION=$(ogGetOsVersion $1 $2)
case "$OSVERSION" in
    *Windows*)
# PAra sistemas operativos Windows7, Windows8.x y Windows10
        DIRMOUNT=$(ogMount $1 $2)
        # Ejecutar postconfiguración en el 1er inicio de Windows.
        FILECMD=postconf.cmd
        [ "${INSTALLOSCLIENT^^}" != "TRUE" ] && ogInstallMiniSetup $1 $2 $FILECMD
        # Crear fichero de comandos.
        touch "$(ogGetPath $DIRMOUNT/Windows/System32)/$FILECMD"
        ogAddCmd $1 $2 $FILECMD '@echo off'
        ogAddCmd $1 $2 $FILECMD 'echo "* Activar red"'
        ogAddCmd $1 $2 $FILECMD 'net start "Conexiones de red"'
        ogAddCmd $1 $2 $FILECMD 'net start "Cliente DHCP"'
        ogAddCmd $1 $2 $FILECMD 'echo "* Activar Windows 10"'
# Borra la clave original del sistema operativo
        ogAddCmd $1 $2 $FILECMD 'cscript %windir%\system32\slmgr.vbs /upk'
# Establece una clave genérica para la versión del Sistema Operativo, consultar la clave en las NOTAS 
# a continuación
        ogAddCmd $1 $2 $FILECMD 'cscript %windir%\system32\slmgr.vbs /ipk "Clave IPK" >NUL'
# Establece el servidor KMS
        ogAddCmd $1 $2 $FILECMD 'cscript %windir%\system32\slmgr.vbs /skms "Nombre/IP Servidor KMS":1688 >NUL'
# Activa el sistema operativo frente al servido KMS
        ogAddCmd $1 $2 $FILECMD 'cscript %windir%\system32\slmgr.vbs /ato'
# Detecta la versión de Office instalada
        for i in Office14 Office15 Office16; do
            [ -n "$(ogGetPath "$DIRMOUNT/Program Files/Microsoft Office/$i")" ] && OFFICE="$i"
        done
        if [ -n "$OFFICE" ]; then
            ogAddCmd $1 $2 $FILECMD 'echo "* Activar '$OFFICE'"'
            ogAddCmd $1 $2 $FILECMD 'cd "C:\Program Files\Microsoft Office\'$OFFICE'"'
            ogAddCmd $1 $2 $FILECMD 'cscript ospp.vbs /osppsvcrestart >NUL'
            ogAddCmd $1 $2 $FILECMD 'cscript ospp.vbs /sethst:"Nombre/IP Servidor KMS" >NUL'
            ogAddCmd $1 $2 $FILECMD 'cscript ospp.vbs /osppsvcauto >NUL'
            ogAddCmd $1 $2 $FILECMD 'cscript ospp.vbs /act'
            ogAddCmd $1 $2 $FILECMD 'start winword.exe'
            ogAddCmd $1 $2 $FILECMD 'taskkill /F /IM winword.exe'
        fi

        ;;
# Añadir aquí postconfiguración para otros sistemas operativos y otras versiones.
esac

NOTAS:

  • LAS claves IPK son específicas para cada versión del Sistema Operativo Windows, pueden consultarlas en:

https://technet.microsoft.com/en-us/library/jj612867.aspx?f=255&MSPPError=-2147217396

Activación licencia de productos Microsoft: Windows 7 y Office 2010 y superior

  • Antes de usarlo hemos de editar las variables que están al inicio del script, para que correspondan a nuestro caso. Para usarlo tenemos varias opciones:
    1. Sobre un ámbito (equipo, grupo, etc...), botón derecho -> Comando -> ejecutar script -> y pegamos en el cuadro de texto "Código del script" el script completo. (Podemos guardarlo como procedimiento o tarea para usarlo posteriormente)
    2. Creamos en el servidor un archivo con el contenido del script en /opt/opengnsys/client/scripts/ (p.ej. podemos llamarlo: ActivacionMicrosoft) y después lo usamos con en el caso 1, pero sólo pegamos en el cuadro de texto "Código del script" el nombre del archivo que hemos creado en el servidor (ActivacionMicrosoft en este ejemplo). Igual que en el caso 1 lo podemos guardar como procedimiento.

#/bin/bash

################ Bloque de variables ####################
DISK=1
PART=1
ADMIN=administrador
PASSADMIN=unapassword
USER=alumnos
PASSUSER=
POSTCONF=postconf.cmd
################ Fin bloque de variables ################

## Indicación del proceso (variable $POSTCONF), usuario que lo ejecutará ($ADMIN) y configuración del windows para que arranque con autologin tras la postconfiguración (1 "$USER" "$PASSUSER")
ogInstallMiniSetup $DISK $PART $POSTCONF $ADMIN $PASSADMIN 1 "$USER" "$PASSUSER"

### Reactivación Windows 7
ogAddCmd $DISK $PART $POSTCONF "if exist \"%windir%\system32\slmgr.vbs\" FOR /F \"tokens=5\" %%a in ('cscript \"%windir%\system32\slmgr.vbs\" -xpr') do (set _act=%%a)"
ogAddCmd $DISK $PART $POSTCONF "if \"%_act%\" neq \"activated.\" ("
ogAddCmd $DISK $PART $POSTCONF "	cscript \"%windir%\system32\slmgr.vbs\" -ato"
ogAddCmd $DISK $PART $POSTCONF ")"

### Reactivación versiones x86 y x64 de office, visio y project: 2010 y/o 2013
ogAddCmd $DISK $PART $POSTCONF "if exist \"%PROGRAMFILES%\Microsoft Office\Office14\OSPP.VBS\" set _offver2010=%PROGRAMFILES%"
ogAddCmd $DISK $PART $POSTCONF "if exist \"%PROGRAMFILES% (x86)\Microsoft Office\Office14\OSPP.VBS\" set _offver2010=%PROGRAMFILES% (x86)"
ogAddCmd $DISK $PART $POSTCONF "if exist \"%PROGRAMFILES%\Microsoft Office\Office15\OSPP.VBS\" set _offver2013=%PROGRAMFILES%"
ogAddCmd $DISK $PART $POSTCONF "if exist \"%PROGRAMFILES% (x86)\Microsoft Office\Office15\OSPP.VBS\" set _offver2013=%PROGRAMFILES% (x86)"

# arrancamos el servicio "Office Software Protection Platform"
ogAddCmd $DISK $PART $POSTCONF "sc start osppsvc"
# pausa de 5 segundos para asegurarnos que ha arrancado
ogAddCmd $DISK $PART $POSTCONF "ping -n 5 localhost >NUL"

# y reactivamos
ogAddCmd $DISK $PART $POSTCONF "if defined _offver2010 ("
ogAddCmd $DISK $PART $POSTCONF "	cscript \"%_offver2010%\Microsoft Office\Office14\OSPP.VBS\" /act"
ogAddCmd $DISK $PART $POSTCONF ")"
ogAddCmd $DISK $PART $POSTCONF "if defined _offver2013 ("
ogAddCmd $DISK $PART $POSTCONF "	cscript \"%_offver2013%\Microsoft Office\Office15\OSPP.VBS\" /act"
ogAddCmd $DISK $PART $POSTCONF ")"

### reiniciamos el equipo
ogAddCmd $DISK $PART $POSTCONF "shutdown /r"


Varios sistemas Windows en un equipo: ocultar particiones.

Cuando tenemos instalados varios sistemas Windows en un equipo, al arrancar uno de ellos necesitamos que las otras particiones estén ocultas. Para ello podemos modificar el script de inicio de sesión /opt/opengnsys/client/scripts/bootOs incluyendo el siguiente código:

case "$OSTYPE" in
    Windows)
        # INICIO CAMBIO #############################################
        echo "[30] Mostrar y activar particion de Windows $PART."
        [ $(ogGetPartitionType $1 $2) == "HNTFS" ] && ogUnhidePartition $1 $2
        # Mostrar la partición NTFS del sistema y ocultamos las demas.
        for (( i=1; i<=$(ogGetPartitionsNumber $1); i++ )); do
                if [ $i == $2 ]; then
                    [ $(ogGetPartitionType $1 $i) == "HNTFS" ] && ogUnhidePartition $1 $2
                    #ogSetPartitionActive $1 $2
                else
                    [ "$(ogGetPartitionType $1 $i)" == NTFS ] && ogHidePartition $1 $i
                fi
        done
        # FIN CAMBIO #############################################
        ...

Este código también ocultaría una partición NTFS que sólo contuviera de datos. En este caso, en vez de detectar el tipo de partición, habría que ver si está instalado el sistema operativo y tardaríamos más tiempo.

Transferencia de UNICAST-DIRECT muy lenta.

Al restaurar una imagen la velocidad de transferencia va bajando de velocidad y no llega a completarse. El equipo se queda totalmente bloqueado.

Se soluciona desactivando IPv6. En el caso de ubuntu incluimos en /etc/sysctl.conf la línea:

net.ipv6.conf.all.disable_ipv6=1

Reiniciamos el servidor.

Para comprobar que ipv6 está desactivado:

lsmod | grep ipv6

ip a | grep inet6

Solución a problemas con la transferencia multicast.

Para la versión 1.0.4a y anteriores.

Depende de la configuración de la red y los equipos de comunicaciones que se utilicen pueden surgir problemas con la transferencia multicast.

En nuestro caso la CPU de las equipos de comunicación de pone al 100%. Para evitarlo basta poner el TTL (time of Life) mayor que 1, se recomienda ponerlo a 16, que será el valor por defecto que se incluya en la versión 1.0.5.

Ficheros que hay que modificar el OpenGnSys:

/opt/opengnsys/client/lib/engine/bin/Protocol.lib

[...]
SYNTAXSERVER="udp-sender $MBUFFER --nokbd --portbase  $PORTBASE --$METHOD --mcast-data-address $ADDRESS 
--fec $CERROR --max-bitrate $BITRATE --ttl 16 --min-clients $NCLIENTS --max-wait $MAXTIME --autostart $MAXTIME 
--log /tmp/mcast.log"/
[...]

/opt/opengnsys/bin/sendFileMcast

[...]
$OGBIN/udp-sender $MBUFFER --nokbd --retries-until-drop 65 --portbase $PORTBASE --$METHOD 
--mcast-data-address $ADDRESS --fec $CERROR --max-bitrate $BITRATE --ttl 16 --min-clients $NCLIENTS 
--max-wait $MAXTIME --file "$FICHIMG"/
[...]

Problemas al iniciar windows después de haber modificado otra partición

Cuando se realiza un particionado sin modificar la partición de windows ni ninguna de las anteriores no se puede iniciar la sesión. Los datos están bien y podemos verlos si listamos el contenido de la partición, pero al iniciar la sesión me da un mensaje de error diciendo que no reconoce el dispositivo de arranque.

Basta configurar de nuevo el sistema operativo, desde línea de comandos en el cliente o desde la consola con "ejecutar script" hay que ejecutar:

configureOs num_disk num_part

No puedo arrancar el cliente en opengnsys.

Si los sistemas de ficheros de alguna partición del disco está muy deteriorado el cliente de opengnsys en modo usuario no arranca, hemos de pasarlo a modo administración y restaurar la partición. Suele ocurrir cuando una restauración se corta a mitad por algún motivo.

Esto se debe que el primer paso para arrancar el cliente en modo usuario busca dentro de las particiones por si existe una marca para iniciar windows, en algunos casos cuando la partición está corrupta se queda bloqueado. El cliente en modo administración nos permitirá arrancar en este caso pero no podremos iniciar sesión en windows.

Fallo en el disco duro del cliente

En caso de que el disco duro del cliente esté dañado, el proceso de inicio se relentiza y la pantalla del equipo muestra un mensaje de este tipo durante la carga de datos:

/opt/opengnsys/interfaceAdm/getConfiguration: line 1:  727 killed
     timeout -k -5s -s KILL -3s $(which parted) "$@"

Este mensaje puede mostrarse varias veces antes de cargar el Browser, el cual solo deberá mostrar la opción de apagado si se usa el menú por defecto.

La solución a este problema es sustituir el disco duro del equipo.

Desactivar agente de OpenGnsys en sistema operativo

En caso de que tengáis equipos restaurados y simplemente queráis deshabilitar el servicio del agente (sin instalar una nuevo), podéis usar estos script desde la consola con "ejecutar script" o desde línea de comando:

Windows.

Propuesto por francesc en el foro.

Lo que hace es simplemente poner a 4 (deshabilitado) el estado del servicio "Cliente OpenGnSys".

chntpw /mnt/sda1/Windows/System32/config/SYSTEM << EOT &> /dev/null
cd ControlSet001\services\Cliente Opengnsys
ed Start
4
q
y
EOT

Linux

Comentamos el inicio del servicio en /etc/rc.local

cd /mnt/sda6/etc
sed s/'\/usr\/sbin\/ogAdmLnxClient'/'\#\/usr\/sbin\/ogAdmLnxClient'/g rc.local

Si queremos que no se vuelva a instalar tras las restauración de los clientes en /opt/opengnsys/client/scripts/configureOs comentamos las líneas:

Windows)
    ....
    #ogInstallMiniSetup $1 $2 postconf.cmd
    #ogInstallWindowsClient $1 $2 postconf.cmd
    ;;
Linux)
    ...
    #ogInstallLinuxClient $1 $2

Agente de OpenGnsys para Windows: reiniciar en caso de error

Windows permite configurar la acción que deben realizar los servicios en caso de error. En vez de hacerlo a mano, desde opengnsys podemos cambiar la clave del registro correspondiente para que en caso de error se reinicie.

El código es el siguiente.

PART=$(ogMount $1 $2)
drbl-chntpw $PART/Windows/System32/config/SYSTEM << EOT
cd \ControlSet001\services\Cliente Opengnsys
ed FailureActions
44
:00000  00 00 00 00 00 00 00 00 00 00 00 00 03 00 00 00
:00010  14 00 00 00 01 00 00 00 60 EA 00 00 01 00 00 00
:00020  60 EA 00 00 01 00 00 00 00 00 00 00
s
q
y
EOT

Habría que crear un script y darle como parámetros el número de disco y el número de partición

En Windows puede variar el nombre de los archivos y las ramas del registro respecto a las mayúsculas y minúsculas, esto provocaría que fallará. En este caso hay que comprobar si el directorio "/Windows/System32/config/SYSTEM" y la rama del registro "SYSTEM \ControlSet001\services\Cliente Opengnsys" están escritas correctamente.

Attachments (3)

Download all attachments as: .zip