wiki:EjemploPracticos

Ejemplos prácticos

Cambio IP del Servidor

El cambio de IP se realiza de forma automática con el script de servidor setserveraddr, a partir de la versión 1.0.6.

Uno de los casos en el que podemos utilizar este script es cuando un servidor tiene varias tarjetas de red y la instalación ha cogido la tarjeta incorrecta.

Formato sudo /opt/opengnsys/bin/setserveraddr Interfaz
ej: sudo ./setserveraddr eth1

Si queremos realizar el cambio de forma manual podemos seguir la siguiente documentación.

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

También encontramos más ejemplos en el foro Menús personalizados, que se ha creado el para compartir los menús que utilizamos.

Postconfiguración

Para personalizar la postconfiguración de los sistemas operativos se recomienda utilizar el script configureOsCustom.

Cuando el proceso de despliegue de la imagen encuentra esté script lo ejecuta en sustitución al configureOs, que contiene la postconfiguración por mínima necesaria.

La instalación de OpenGnsys contiene una plantilla de este script con algunos ejemplos a partir de la versión 1.0.5.

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 /act'
        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.

Errores al iniciar un ogLive o un sistema operativo

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.

Problemas con los protocolos de clonación

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"/
[...]

Agente de sistema operativo (versión 1.0.6b o anterior)

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.

grldr-0.4.4: da problemas con varios ogLive (versión 1.1)

Descripción de error

Para el gestor de arranque remoto de los equipos por PXE utilizamos grub2dos. Se utiliza la última versión pero por compatibilidad con hardware más antiguo también está disponible una versión anterior: grldr-0.4.4.

El archivo grldr-0.4.4 no permite usar variables. Esto afecta al uso de varios ogLives ya que las plantilla PXE utilizan una variable para la información del directorio que contiene el ogLive.

Ejemplo de archivo de configuración PXE de un equipo:

    ##NO-TOCAR-ESTA-LINEA ogLiveAdmin
    default saved
    timeout 1
    hiddenmenu
    fallback 1 2 3

    set ISODIR=ogLive-xenial-4.8.0-amd64-r5331

    title OpenGnsys-NET
    kernel (pd)/%ISODIR%/ogvmlinuz  ro boot=oginit quiet splash  irqpoll acpi=on og2nd=sqfs ogprotocol=smb ogactiveadmin=true ogdebug=true ogupdateinitrd=true ogtmpfs=15 oglivedir=%ISODIR%  LANG=es_ES ip=192.168.2.11:192.168.2.10:192.168.2.1:255.255.255.0:ogClient01:eth0:none group=Sala_Virtual ogrepo=192.168.2.10 oglive=192.168.2.10 oglog=192.168.2.10 ogshare=192.168.2.10 vga=791 ogunit=cdc
    initrd (pd)/%ISODIR%/oginitrd.img
    boot

    title OpenGnsys-NET default
    kernel (pd)/ogLive/ogvmlinuz  ro boot=oginit  irqpoll acpi=on og2nd=sqfs ogprotocol=smb ogactiveadmin=true ogdebug=true ogupdateinitrd=true #ogtmpfs=15 oglivedir=ogLive  LANG=es_ES ip=192.168.2.11:192.168.2.10:192.168.2.1:255.255.255.0:ogClient01:eth0:none group=Sala_Virtual #ogrepo=192.168.2.10 oglive=192.168.2.10 oglog=192.168.2.10 ogshare=192.168.2.10 vga=791 ogunit=cdc
    initrd (pd)/ogLive/oginitrd.img
    boot

Si se utiliza el grldr-0.4.4 el cliente sólo podrá usar la última línea, que corresponde al ogLive por defecto y no contiene variables.

Posibles soluciones

Para quién tenga equipos antiguos que necesiten usar ese grldr y quiera utilizar varios ogLive tiene varias opciones:

  • Crear plantillas de archivos PXE para cada tipo de ogLive y asignárselas a los equipos.
  • Crear en el dhcpd.conf dos grupos distintos:
    • para los equipos "normales" dónde si podré utilizar varios oglive.
    • para los equipos antiguos que usan grldr-0.4.4 que tendrán todos el ogLive defecto.

Crear varias plantillas PXE

Los archivos de configuración PXE de cada equipo se crean partiendo de una plantilla y añadiendoles información propia del equipo alojada en la base de datos. Para cada ogLive que queramos utilizar necesitaremos una plantilla que contenga el directorio del ogLive.

Para crear la plantilla nos vamos a la zona de administración de la consola a la pestaña de NetBootAvanzado y pulsamos el botón nuevo.

Crear nueva plantilla PXE

Nos aparece un formulario pridiendo el nombre d la plantilla y el código de la misma. Podemos partir de la plantilla de modo usuario (pxe) y modificarla sustituyendo la variable por el directorio del ogLive deseado. Por ejemplo mostramos una plantilla para el ogLive ogLive-xenial-4.8.0-amd64-r5331:

Ejemplo de plantilla con ogLive-xenial

Para asignar esta plantilla al cliente OpenGnsys en la Web nos vamos a la unidad Organizativa y en NetBoot Avanzado aparece la nuava columna.

Asignar la plantilla OgLive-xenial a un equipo

El código completo de l a plantilla sería el siguiente:

##NO-TOCAR-ESTA-LINEA OgLive-xenial
default saved
timeout 1
hiddenmenu
fallback 1 2 3 4

title firsboot
find --set-root --ignore-floppies --ignore-cd /ogboot.me
cmp /ogboot.me /ogboot.firstboot || ls FALLBACK
write /ogboot.firstboot iniciado
chainloader +1
boot

title secondboot
find --set-root --ignore-floppies --ignore-cd /ogboot.me
cmp /ogboot.me /ogboot.secondboot || ls FALLBACK
write /ogboot.secondboot iniciado
chainloader +1
boot

title OpenGnsys-CACHE
find --set-root --ignore-floppies --ignore-cd /boot/ogLive-xenial-4.8.0-amd64-r5331/ogvmlinuz
kernel /boot/ogLive-xenial-4.8.0-amd64-r5331/ogvmlinuz ro boot=oginit quiet splash vga=788 irqpoll acpi=on og2nd=sqfs ogprotocol=smb ogactiveadmin=false ogdebug=false ogupdateinitrd=true ogtmpfs=15 oglivedir=ogLive-xenial-4.8.0-amd64-r5331 INFOHOST
initrd /boot/ogLive-xenial-4.8.0-amd64-r5331/oginitrd.img
boot

title OpenGnsys-NET
kernel (pd)/ogLive-xenial-4.8.0-amd64-r5331/ogvmlinuz  ro boot=oginit quiet splash vga=788 irqpoll acpi=on og2nd=sqfs ogprotocol=smb ogactiveadmin=false ogdebug=false ogtmpfs=15 oglivedir=ogLive-xenial-4.8.0-amd64-r5331 INFOHOST
initrd (pd)/ogLive-xenial-4.8.0-amd64-r5331/oginitrd.img
boot

Crear en la configuración del servicio DHCP grupos de ordenadores

Al intalar OpenGnsys viene un ejemplo de configuración dhcp con un grupo de ordenadores, pensado para equipos mac. Podemos utilizar este grupo para los equipos que utilizen el grldr-0.4.4. En nuestro archivo /etc/dhcp/dhcpd.conf tendremos:

ddns-update-style none;
option domain-name "example.org";
log-facility local7;
not-authoritative;

subnet NETIP netmask NETMASK {
    option domain-name-servers DNSIP;
    option routers ROUTERIP;
    option broadcast-address NETBROAD;
    default-lease-time 600;
    max-lease-time 7200;
    next-server SERVERIP;
    filename "grldr";
    use-host-decl-names on;

# Ejemplo para PC.
#    host HOSTNAME1 {
#        hardware ethernet HOSTMAC1;
#        fixed-address HOSTIP1;
#   }

# Ejemplo para Old Host.
    group {
        option tftp-server-name="SERVERIP";
        option bootfile-name "grldr-0.4.4";

#        host OLDHOST1 {
#            hardware ethernet OLDHOSTMAC1;
#            fixed-address OLDHOSTIP1;
#       }
   }

}
Last modified 8 weeks ago Last modified on Apr 24, 2018, 10:35:44 AM

Attachments (3)

Download all attachments as: .zip