[[PageOutline(2-5,Índice)]] = Ejemplos prácticos = * [wiki:EjemploPracticos/CambioIPServer Cambio IP del Servidor] == 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. [http://www.opengnsys.es/downloads/56 Descarga] También encontramos más ejemplos en el foro [forum:13 Menús personalizados], que se ha creado el para compartir los menús que utilizamos. == 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. == 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. == 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. [[Image(PlantillaCrear.png)]] 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: [[Image(PlantillaOgLive.png)]] Para asignar esta plantilla al cliente OpenGnsys en la Web nos vamos a la unidad Organizativa y en NetBoot Avanzado aparece la nuava columna. [[Image(PlantillaAsignar.png)]] El código completo de l a plantilla sería el siguiente: {{{ ##NO-TOCAR-ESTA-LINEA ogLiveXenial 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; # } } } }}}