Monday, July 14, 2008

CCA XenServer Enterprise

Pues como hace bastante que no publico nada pues tengo que comentar ciertos cambios.

Desde hace aproximadamente un mes soy CCA XenServer V4, o lo que es lo mismo, estoy certificado por Citrix como experto en los sistemas de virtualización que comercializan. Para ser más exacto en particular de la versión XenServer Enterprise.

Tengo que decir que el conocer bastante bien los dos grandes sistemas de virtualización que hay actualmente en el mercado me otorga una perspectiva bastante buena del asunto. Como ya he publicado en otras ocasiones sigo opinando que el conjunto VI3 es bastante mejor que el de Citrix, a fecha de hoy, pero esto no quita para que tengamos que descartar como solución a un problema XenServer. Como siempre tenemos que valorar las necesidades de cada situación y los costes de aplicar una opción determinada. Por ejemplo, si lo único que buscamos es tener un par de servidores de virtualización quizas por costes sea mejor tener Xen que VMware. De hecho donde sobre todo VMware gana la batalla a Xen es en el Virtual Center pues XenCenter está muy lejos de él. Pero por el contrario las diferencias entre el ESX y XenServer, aunque mejor el primero que el segundo, no son tan abrumadoras.

La verdad es que XenServer tiene ciertas cosas que lo hacen bastante interesante.

Saturday, May 10, 2008

Mi Laboratiorio

Desde hace una semana que poseo dos económicos pero fantásticos servidor HP ML110 G5 como laboratorio casero de virtualización. La actual configuración hardware es:
  • 2 Servidores HP ML110 G5: Sus características comunes son:
    • Procesador Xeon Dual Core a 2 Ghz
    • Disco duro SATA 250 GB a 7200 RPM
    • Red Broadcom Integrada
    • Tarjeta de Red Intel Desktop PCI
    • Tarjeta de Red HP NC110T PCI Express
  • La RAM del primer servidor es 4 GB y del segundo 6 GB
  • Switch Linksys SLM2008 con 8 interfaces Gigabit Ethernet y capacidad para VLAN
En estos dos servidores he instalado Tanto XenEnterprise como ESX Server 3.5 Update 1. El proceso de instalación tiene su truco pues hay que instalar primero XenEnterprise ya que este en la instalación utiliza todo el disco duro sin dejar opción a realizar un particionamiento personalizado. Tras finalizar la instalación del XenEnterprise realizamos un redimensionamiento de la partición para máquinas virtuales que crea XEN tanto a nivel de partición como a nivel del LVM. Esto último es una tarea sencilla de la cual pondré un apunte posterior. Una ver realizado esto ya podemos pasar a instalar ESX pues en su instalador si que podemos personalizar el particionamiento. El resultado final es:

Disk /dev/sda: 250.0 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sda1 * 1 499 4008186 83 Linux <-- Partición / de XenEnterprise
/dev/sda2 500 998 4008217+ 83 Linux <-- Partición backup de XenEnterprise
/dev/sda3 999 7078 48837600 83 Linux <-- Partición Storage VM de XenEnterprise
/dev/sda4 7079 30401 187341997+ f Win95 Ext'd (LBA)
/dev/sda5 7079 7091 104391 83 Linux <-- Partición /boot del ESX
/dev/sda6 7092 7728 5116671 83 Linux <-- Partición / del ESX
/dev/sda7 7729 7983 2048256 83 Linux <-- Partición /var/log del EXE
/dev/sda8 7984 8052 554211 82 Linux swap <-- SWAP del ESX
/dev/sda9 8053 30401 179518311 fb Unknown <-- Partición VMFS


Con este sencillo método podemos tener instalado tanto XenEnterprise como ESX en la misma máquina.

Mi intención es ampliar estos dos servidores con un tercero, en un par de meses, que me sirva de almacenamiento compartido y así realizar pruebas de VMotion, Storage Motion, HA, DRS, ...

Como máquinas virtuales llevo instaladas ya unas cuantas obteniendo un resultado satisfactorio de rendimiento de las máquinas: Windows 2008, SLES 10, OpenSuse 10.3, Solaris, ...

Tengo que recomendar una Appliance Virtual que utilizo como enrutador, firewall y servidor VPN: Zeroshell

Como por desgracia, a pesar de insistentes peticiones por parte de los usuarios de VMware, no existe una versión de Virtual Center Client para Linux, que es el S.O. que utilizo más de forma habitual, decidí instalar un Windows 2008 Standard con el ROL de Terminal Server. La verdad tengo que decir que de momento Windows 2008 trae algunas características interesantes dentro del área de terminal server como puede ser el RemoteApp. Esto es un portal Web donde el Administrador puede publicar las aplicaciones que usarán los usuarios y las pueden ejecutar en modo de ventana sin tener necesidad de conectarse totalmente al escritorio remoto. Por desgracia esto solo funciona si tienes un cliente: Windows XP SP3 o Windows Vista SP1.

De momento esto ya iré contando otras cosas.

Wednesday, May 07, 2008

Problemas de conexión al LDAP de OES 2

Cuando se instala un servidor OES 2, si entramos en iManager y comprobamos la configuración del servidor LDAP veremos que tiene habilitada tanto la comunicación simple (puerto 389) como la comunicación cifrada (puerto 636).

Por desgracia esto no es del todo correcto. Suele ser habitual que al instalar un servidor de Groupwise, en la configuración de los módulos WebAccess y GWIA, en el apartado de comunicación con el LDAP recibamos un error de "LDAP Login Failed". Esto es así pues en la configuración del grupo de servidores LDAP si que tenemos habilitado el requerir TLS. Para solucionar este problema podemos seguir el TID "Unable to configure WebAccess/GWI on Linux":

Resolution


Corrective Actions:

1. Login as root

2. Launch ConsoleOne on the Linux Server and login into tree as Admin. Specify IP address in the Tree name if login isn't granted using the Tree Name.

3. Expand the NDS Tree View and select the LDAP server through which the LDAP login needs to be granted

4. Get into the properties of the LDAP server object and select the SSL/TLS Configuration Tab

5. Uncheck require TLS for all operations. Apply changes and close.

6. Select LDAP Group object for the same LDAP server object selected in previous steps

7. Get into the properties and under the General Tab - LDAP Group General page

8. Uncheck TLS for simple binds with password


Try to specify the local server as the LDAP server if eDirectory is installed on the Linux SLES and follow the procedures above with respect to the Local servers LDAP Server and Group objects

Tuesday, April 29, 2008

Error en Pegasus tras actualizar a ESX 3.5 Update 1

Hoy e actualizado uno de los ESX 3.5 que tengo en el laboratorio a la versión 3.5 Update 1 y me ha dado un error al reiniciar. Dicho error ya está documento y se cuenta con solución. Como cabe la alta probabilidad de que esto me ocurra más adelante dejo aquí la receta para solucionarlo.

Información obtenida de un articulo de Yellow Bricks y los foros de VMware:


Edit the roleauth-schema compiler directive to include the VMware_Identity class definition using


nano /var/pegasus/vmware/install_queue/3_files/mofs/root/PG_Interop/roleauth-schema.mof


Add the bolded line above the pre-existing member directive.


#pragma include ("VMware_Identity.mof")

#pragma include ("VMware_IdentityMemberOfCollection.mof")


It also needs to be added in the standard cimv2 path.


nano /var/pegasus/vmware/install_queue/3_files/mofs/root/cimv2/roleauth-schema.mof


#pragma include ("VMware_Identity.mof")

#pragma include ("VMware_IdentityMemberOfCollection.mof")


Copy the missing file from the stardard cimv2 path to the shared path.


cp
/var/pegasus/vmware/install_queue/3_files/mofs/root/cimv2/VMware_Identity.mof
/var/pegasus/vmware/install_queue/3_files/mofs/root/PG_Interop/



Stop and start the service with these commands.


/etc/init.d/pegasus stop

/etc/init.d/pegasus start


Once the scripts completes the install_queues will be empty and the service will start much more quickly.

Eso es todo.

Han perdido la cabeza

Lo siento, pero no. Si tu tienes, a fecha 29 de abril de 2008, un software de virtualización que es peor que VMware ESX pues tienes que admitirlo. Puede que esa situación cambie pero no puedes utilizar escusas de mal perdedor.

Y esto a que viene. Pues he leido la siguiente entrada:
HYPER-V QUICK MIGRATION & VMWARE LIVE MIGRATION PART 3...
Las escusas que dan son estúpidas. Si no tienes migración en vivo pues no la tienes, ya la tendras. Pero por no tenerla no vas a decir que no es necesaria. Con excusas como esta si te consideras un gran profesional de los sistemas TI pierdes toda la razón.

Yo por ejemplo digo que VMware ESX es mejor que XenServer, y objetivamente lo es. Pero eso no quita que no sea una opción a tener en cuenta en determinados entornos. Tanto es así que ahora mismo me encuentro estudiando para obtener la certificación Citrix Certified Professional for XenServer 4, porque le veo muchas posibilidades bajo determinadas circunstancias. Realmente donde Citrix XenServer pierde la batalla contra VMware es en la parte de administración: XenCenter. A XenCenter todavía le queda un largo recorrido para poder equipararse a VMware VirtualCenter.

Seguramente algún dia Hyper-V será un gran producto, no en vano esta detras de él la todo poderosa Microsoft, y podrá medirse de tu a tu con VMware, pero hoy no.

Desviación del tiempo en eDirectory bajo VMware ESX Server


En servidores Novell ejecutando eDirectory bajo entorno Linux, lógicamente estoy hablando de la versión SLES, existe el problema de que el reloj de tiempo local de la máquina virtual no se mantiene sincronizado.

Este es un problema conocido y del que se puede obtener una solución y mas información aquí.

La solución es bastante sencilla y consiste en modificar la entrada de arranque en el fichero /boot/grub/menu.lst y añadir la opción clock=pit.

Tras modificar esta opción en las dos máquinas virtuales que están ejecutando el servidor eDirectory tenemos que configurar el servidor de tiempos NTP. A mí particularmente me gusta configurar una de las máquinas virtuales para que sincronice contra: es.pool.ntp.org y la segunda que sincronice con la primera:

Servidor a:
# server 127.127.1.0 # local clock
# fudge 127.127.1.0 stratum 10
server es.pool.ntp.org prefer

Servidor b:
# server 127.127.1.0 # local clock

# fudge 127.127.1.0 stratum 10
server x.x.x.x prefer

Donde x.x.x.x es la IP del servidor A. Como siempre si el servidor esta usando el firewall interno propio de la SLES habrá que abrir el correspondiente puerto.

Tuesday, April 15, 2008

Activar log en Zenworks 7 para Linux

Por defecto el soporte de log del servicio de Importar / Eliminar Workstation Automaticamente en la versión de Zenworks 7 para Linux está deshabilitado y para activarlo tenemos que hacer lo siguiente:

  • Editar el fichero /etc/opt/novell/zenworks/zdm/novell-zdm-awsi.conf
  • Localizar las entradas:
    • logfilelevel : por defecto está puesto a -1 (no log) lo cambiamos a 3 para obtener la máxima salida
    • IMPORT_SERVICE_LOGFILE : ruta del archivo de log, por defecto en /var/opt/novell/log/zenworks/awsi.log
    • REMOVAL_SERVICE_LOGFILE : ruta del archivo de log, por defecto en /var/opt/novell/log/zenworks/awsr.log
Con esto ya podemos depurar los problemas que nos surgan. Además en el archivo novell-zdm-awsi.conf podemos definir otros parámetros del servicio, como pueden ser el servidor LDAP que utilizará para realizar el registro.


Friday, April 11, 2008

Pestaña de seguridad

Para habilitar la pestaña seguridad en un Windows XP que no este unido a un dominio se debe modificar la entrada de registro:

HKLM/SYSTEM/CurrentControlSet/Control/LSA/ForceGuest = 0

A partir de ese momento cuando se pulsa botón derecho sobre una carpeta o fichero aparecerá la pestaña seguridad y podremos gestionar más detalladamente la seguridad que queremos tener .

Saturday, March 01, 2008

Citrix XenServer Enterprise


Podeís encontrar una descripción de Xen y Citrix XenServer Enterprise aquí.

Ok, todos sabemos que en temas de virtualización VMware Virtual Infrastructure 3 es el rey, por muchas y variadas razones.

Pero cada vez suena con más fuerza la opción de XenServer, sobre todo desde que Citrix compró XenSource la principal empresa desarrolladora del mismo. Xen comenzó como un proyecto de código abierto, siendo esta la razón de que muchos productos / distribuciones de Linux lo incluyan. Pero en las últimas versiones, XenServer v4, el desarrollo se ha cerrado para aumentar sus caraterísticas y así Citrix controla su desarrollo total y beneficios comerciales.

Bien, comparándolo con ESX 3.5, pues pretende ser el competidor del mismo, encontramos que nos faltan principalmente esta características:
  • Falta de snapshots: No podemos crear ningún punto de restauración al que poder volver en caso de que algo vaya mal en la máquina virtual

  • Falta de Pools de recursos: Bueno esto no es del todo cierto pero la cantidad de opciones que se pueden configurar en XenServer en comparación con ESX es como si no se pudieran crear.

  • Clonación de máquinas virtuales: desde el XenCenter no es posible crear directamente un clon / copia de una máquina virtual. Primero hay que pasarla a plantilla y despues realizar un despliegue. Esto quizas no es muy grave pero es una caréncia más.

  • Ausencia de DRS: XenServer cuenta con un XenMotion, es decir podemos migrar en caliente una máquina virtual a otro servidor, pero no hay un sistema automatizado de migración de MV en función de la carga.

  • Sistema automatizado de Alta Disponibilidad (HA): En caso de fallo de un servidor Xen y encontrandose las máquinas virtuales en un almacenamiento compartido, que estas se auto arranquen en otro servidor para que vuelvan a estar disponibles.

Como se puede comprobar estas y otras muchas son las carencias de XenServer con respecto a ESX que lo convierten, según mi opinión, en una opción no muy real para entornos de producción en una empresa. Dicho lo cual, no quita para que XenServer sea tenido en cuenta en entornos donde las anteriores características no sean importantes como por ejemplo entornos de pruebas de aplicaciones.

Monday, February 25, 2008

Conexiones TCP en Sql Server Express 2005


En este apunte sirve para aquellos que como yo no son grandes administradores de Sql Server y dan por supuesto que cuando uno instala el Sql Server este permite conexiones TCP al servidor.

Para habilitar las conexiones TCP hay que entrar en la consola mmc de configuración del Sql Server, seleccionar el protocolo TCP, habilitarlo de forma general y también para cada una de las IPs en las que queremos que el Sql Server esté escuchando. También es recomendable definir el puerto de escucha en el 1433.

A continuación reiniciamos el servicio y ya podremos realizar conexiones desde otros PCs / Servidores al Sql Server Express.


Actualizando un servidor ESX


Con el lanzamiento de la versión 3.5 de ESX y 2.5 de Virtual Center por parte de VMware el mantenimiento de las actualizaciones de un servidor se ha convertido en una tarea sencilla.

Para versiones anteriores se puede utilizar la utilidad VMTS PatchManager.

El uso de dicha utilidad es relativamente sencillo pues podriamos resumir su uso en:
  1. La aplicación se descarga al disco duro todos los parches disponibles.
  2. Le indicamos a que servidor ESX queremos conectarnos.
  3. Seleccionamos los parches a aplicar
  4. Aplicamos los parches. Para esto la aplicación monta un servidor web automaticamente desde el que el servidor ESX descargará los parches
  5. Reiniciamos el servidor ESX
Lógicamente para la aplicación de parches tenemos que colocar el servidor ESX en modo mantenimiento, lo que provoca o que las máquinas virtuales migren a otros servidores o se apagen.


Sunday, February 24, 2008

Certificaciones de Sistemas de Virtualización


En verano de 2007 realicé el curso obligatorio para obtener la certificación VCP (VMware Certified Professional) de VI (Virtual Infrastructure) 3. Y a finales de septiembre realicé el examen que superé y así obtuve dicha certificación.

El curso es más que recomendable para obtener una muy buena base con la que empezar a trabajar y conocer en una relativa profundidad el sistema VI, pero no se tocan temas como:
  • Programación de scripts
  • Comandos de la consola del ESX
  • Programación de aplicaciones usando la API
Pero bueno estos son temas más avanzados que se pueden aprender de forma independiente.

Ahora que Citrix ha adquirido XenSource ha publicado los detalles de la nueva certificación como administrador de XenServer Enterprise.

Los detalles los podemos encontrar aquí.

Aunque actualmente VI3 tiene mejores características que XenServer, que analizaré en otra entrada, no quita que XenServer Enterprise no sea una opción más a tener en cuenta en caso de montar un servidor de virtualización.

Por eso estoy pensando en obtener dicha certificación como una contribución más a mi curriculum de virtualización.

Citrix XenServer Training On-line

Peter Blum parte del equipo de Citrix XenServer grabó 37 minutos de video a través de Camtasia, con el fin de promover el entrenamiento y formación para Citrix XenServer, además han publicado algunas informaciones sobre el soporte de hardware para Citrix XenServer (procesadores, memoria, almacenamiento, red) así como las limitaciones de las máquina virtuales.

En este vídeo, abarca los siguientes temas

1. Configuración Xen Enterprise y Xen Center.
2. Creación de grupos de recursos.
3. Agregando el almacenamiento remoto.
4. Creación de la VM.
5. Uso de algunas de las características del producto

Video más que recomendable para hacerse una pequeña idea de algunas características de este sistema de virtualización.

Friday, February 02, 2007

Aprendiendo remoting con Mono

Hola,

Hace ya más de un mes que no publico nada por falta de tiempo. Pero ahora creo que voy hacer una pequeña importante contribución a la causa de aprender .Net, sobre todo usando mono.

En esta dirección podeis encontrar un fichero comprimido que contiene dos programas y que serán una de las bases de Palantir.Net. Se trata de un cliente y un servidor chat en modo texto, muy sencillos para poder aprender de ellos pero alta y facilmente ampliables, que hacen uso de las tecnicas de Remoting que incluye Mono. Intentaré explicar las clases que tiene cada programa y como funciona.

El Servidor


En el servidor podemos encontrar 2 clases principales y 3 espacios de nombres:

  • Clases:


    • MainInit: Esta clase será la que contiene el metodo main del servidor y sirve para inicializar el servidor chat y crear el objeto compartido Login.

    • MainServer: Esta clase mantendrá la información y el objeto Server.


  • Espacio de nombres:


    • DatafromDB: Unos cuantos ejemplos de como acceder a una base de datos MySql. Ahora están desabilitados pero en un futuro se usará para que el servidor almacene toda la información de estado en vivo del chat para que sea accesible por ejemplo mediante una interfaz web.

    • Objects: Contiene las clases que funcionan en "modo local", es decir, estas clases solo funcionan en el servidor y no pueden ser enviadas a los clientes.

    • RemoteObjects: Estas clases sí son MarshalByRefObject en su mayoria y heredan de Interfaces que están definidas en la seccion Common.




Funcionamiento del servidor

Cuando ejecutamos el servidor ocorren los siguientes pasos:

  1. Se ejecuta el MainInit que crea un MainServer que mantiene un objeto Server. Con esto podemos tener varios servidores ejecutandose al mismo tiempo. A continuación comparte por http un objeto Login:


    HttpChannel channel = new HttpChannel(8085);

    ChannelServices.RegisterChannel(channel);

    RemotingConfiguration.ApplicationName = "Server Conference";
    RemotingConfiguration.RegisterWellKnownServiceType(typeof(Login),"Login.soap",
    WellKnownObjectMode.Singleton);



  2. Cuando creamos un objeto Server este contendrá una lista de canales que hay disponibles en el servidor. Por defecto estará vacia.

  3. La clase Login será la encargada de gestionar si un cliente tiene acceso al servidor o no.

  4. Apartir de aquí el servidor se pondría en espera.



Supongamos que un cliente quiere conectarse:

  1. El cliente obtiene la clase Login y si consigue realizar con exito un loginUser puede solicitar un ServerHandler.

  2. Una vez que se tiene un ServerHandler se pueden solicitar canales y unirse a los mismos. Si solicitamos un findChannel obtendremos un ChannelHandler.

  3. Con este ChannelHandler podemos hacer un loginUser para unirnos al canal.



Diferentes aspectos técnicos a tener en cuenta:

  • Server mantiene una lista con todos los canales disponibles.




El proceso de envio recepción de un mensaje tiene lugar principalmente en las clases pertenecientes al servidor:

  1. El cliente ya tiene un objeto ChannelHandler de un canal determinado, para enviar un mensaje invoca el método sendMessageChannel(string message). En el servidor se ejecutará el siguiente código:



  2. public override void sendMessageChannel(string message)
    {
    MessageChannelArgs msgarg = new MessageChannelArgs(message,_idChannel,_user.Name);
    OnMessageChannel(this, msgarg);

    }


    Como podéis leer lo que ocurre es que se llama al evento OnMessageChannel. Conectado a este evento está el correspondiente Channel. Cuando se creo el ChannelHandler se produjo esta conexión.

  3. Al producirse OnMessageChannel se ejecuta el método sendMessageChannel de la clase Channel. Dentro de este método podemos escribir todo lo que queremos que se haga cuando ocurre un mensaje, por ejemplo hacer log del mismo.

  4. Dentro de este método se produce una llamada al evento OnReceiveMessageChannel(null, msgarg) al que todos los ChannelHandlers pertenecientes a ese Channel están conectados. Creo que este es un buen método para evitar hacer el uso de bucles for y al almacenamiento en listas de los ChannelHandler.

  5. Tras esto en los ChannelHandler se ejecuta el metodo receiveMessageChannel(object channel, MessageChannelArgs args) que en su interior contiene una llamada al evento OnReceiveMessageChannel al cual el UserHandler fue conectado cuando hizo loginUser para poder recibir el mensaje.

  6. A continuación en el objeto UserHandler se ejecutará receiveMessageChannel que llama al eventoOnReceiveMessageChannel(channel, msgarg) al cual el cliente deberá haber conectado un delegado para poder recibir finalmente los mensajes.


Posiblmente se podría haber hecho mejor, y por eso acepto todo tipo de sugerencias, pero creo que no es una mala forma de resolver el problema.

El Cliente


El funcionamiento del cliente es muy sencillo.

  1. Obtner el objeto login del servidor.



  2. HttpChannel channel = new HttpChannel();

    ChannelServices.RegisterChannel(channel);

    ILogin login = (ILogin)Activator.GetObject(
    typeof(ILogin),"http://localhost:8085/Login.soap");


  3. Creamos un objeto UserHandler con la información del usuario.

  4. Si el login tuvo exito obtendremos un ServerHandler y ya podemos pasar a crear canales y unirnos a ellos.

  5. Para obtner un canal llamamos al metodo findChannel(string idcanal) que nos devuelve el correspondiente ChannelHandler si la busqueda tuvo exito.

  6. En caso contrario podemos crear un nuevo canal:



  7. chn =(IChannelHandler) srvhandler.findChannel(message.Remove(0,6));

    //If it fails you can create the channel
    if(chn==null)
    {
    Console.WriteLine("Creating channel.");
    srvhandler.createChannel(message.Remove(0,5));
    //After createChannel you have to search the channel again.
    chn =(IChannelHandler) srvhandler.findChannel(message.Remove(0,6));
    }


  8. Tenemos que conectar un delegado al evento onReceiveMessage del UserHandler:



  9. usuario.OnReceiveMessageChannel += new UserHandler.MessageChannelHandler(DisplayMessage);



El código que se puede ver acontinación en el fichero del cliente es un simple manejador de comandos para hacer unas basicas tareas.

Network Multimedia Middleware

Hola,

Este articulo lo voy a escrbir en castellano pues información en ingles hay mucha en el propio sitio de NMM. Por la tanto esta será una introducción a estas fantasticas librerias multimedia y a sus principales programas.


¿Qué es NMM?



Principalmente son unas librerias que nos sirven para hacer cosas de multimedia: reproducir videos, ver la televisión, dvd, captura de sonído, conversión de formatos, etc. Bajo esta perspectiva simplemente parecerian unas librerias más pero tienen una particularidad muy importante: la red es transparente. Con esto quiero decir que da igual donde tengamos cada componente que forma parte de la tarea multimedia pues estas librerias se encargan de manajar la red y hacerla invisble de cara al usuario.

De lo más facil a lo complicado


La instalación


Por desgracia actualmente, o al menos eso creo, no existen rpm ni deb para las distribuciones actuales. Pero no todo está perdido, los desarrolladores (no he hablado de ellos más, adelante lo haré) han habilitado varios medios para poder instalar NMM.

Desde precompilado en tar.gz


Esta es la opción más sencilla. Primero tenemos que descargar la versión 0.7, hay dos ficheros:
  • Compilada con gcc version 2.95: aquí
  • Compilada con gcc version 3.X: aquí

Tambien podemos encontrar las nightly builds de Sourceforge aquí pero como siempre estas son version de test aunque suelen funcionar.
Ya tenemos el fichero acontinuación lo descomprimimos:

elessar@minastirith$ cd /home/elessar
elessar@minastirith:/home/elessar/$ tar zxvf nmm-0.7.0-binaries-gcc3-i686.tar.gz

Ahora definimos la variable de entorno que utilizará NMM para saber donde está instalado y indicamos el directorio de las librerias para el linker:

elessar@minastirith:/home/elessar$ export NMM_DEV_DIR=/home/elessar/nmm-0.7.0
elessar@minastirith:/home/elessar$
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/elessar/nmm-0.7.0/lib

Ahora tenemos que ejecutar el programa serverregistry para generar el fichero con los recursos multimedia que están disponibles en nuestro ordenador:

elessar@minastirith:/home/elessar$ cd nmm-0.7.0/bin
elessar@minastirith:/home/elessar/nmm-0.7.0/bin$ ./serverregistry -s

Y esperamos a que termine su ejecución. Ahora realizaremos una simple prueba para comprobar si funciona correctamente:

elessar@minastirith:/home/elessar/nmm-0.7.0/bin$ ./helloworld1 fichero.mp3

El programa helloworld1 es un programa de demostración y aprendizaje muy simple y cuyo código fuente puede encontrarse en las fuentes de NMM. Si todo va bien deberiamos escuchar el fichero.mp3. Y con esto ya podemos pasar a hacer cosas mucho más interesantes.

Desde el código fuente


El fichero es la versión 0.7 y puede encontrase aquí. En este caso tras la liberación del fichero sacaron un patch para poder usar las FFMpeg. La información sobre como aplicar el patch puede encontrarse aquí.

elessar@minastirith$ cd /home/elessar
elessar@minastirith:/home/elessar/$ tar zxvf nmm-0.7.0.tar.gz

Aunque podemos compilar NMM contra las librerias (recuerdo que hacer falta los paguetes -devel) que tengamos instaladas yo recomiendo no hacerlo pues NMM es bastante follonero con los numeros de versión y al final resulta mucho más facil y cómodo descargarse los dos siguientes ficheros:
nmm-0.7.0-external-libs.tar.gz
nmm-0.7.0-external-includes.tar.gz
Los descomprimimos:

elessar@minastirith:/home/elessar/$ tar zxvf nmm-0.7.0-external-libs.tar.gz
elessar@minastirith:/home/elessar/$ tar zxvf nmm-0.7.0-external-includes.tar.gz

Y si tenemos la versión del gcc 3.X:

elessar@minastirith:/home/elessar/$ cd nmm-0.7.0-external-libs
elessar@minastirith:/home/elessar/nmm-0.7.0-external-libs$ ./make_gcc3_libs

O si tenemos la version 2.95:

elessar@minastirith:/home/elessar/$ cd nmm-0.7.0-external-libs
elessar@minastirith:/home/elessar/nmm-0.7.0-external-libs$ make

Bien a continuación definimos las variables de entorno:

elessar@minastirith:/home/elessar/$ cd /home/elessar/nmm-0.7.0
elessar@minastirith:/home/elessar/nmm-0.7.0$ export NMM_DEV_DIR=/home/elessar/nmm-0.7.0
elessar@minastirith:/home/elessar/nmm-0.7.0$
export LD_LIBRARY_PATH=/home/elessar/nmm-0.7.0-external-libs:$LD_LIBRARY_PATH

Acontinuación pasamos a configurar y compilar:

elessar@minastirith:/home/elessar/nmm-0.7.0$
./configure --with-extra-libs=/home/elessar/nmm-0.7.0-external-libs --with-extra-includes=/home/elessar/nmm-0.7.0-external-includes
elessar@minastirith:/home/elessar/nmm-0.7.0$ make

Tras esto nos queda esperar pues tardará un rato en compilarlo todo. Una vez finalizada la compilación podemos realizar el mismo test de antes para comprobar que funciona correctamente.

Lo interesante: quiero multimedia distribuida


Vamos a dejarnos de vueltas y vamos a lo importante pues ya lo tenemos instalado. Hay 2 programas principales:

serverregistry


Este programa es el que se encarga de gestionar los recursos y realizar las conexiones oportunas entre las diferentes máquinas. Por ello tendremos que tener ejecutando en una consola diferente a la que usamos para ejecutar clic.

clic


Este programa es el que podriamos llamar el "reproductor". Tiene 2 maneras diferentes de funcionar:

  • Usando ficheros .gd: Asi tendremos toda la potencia de NMM

  • Usando Graph Builder: Para cosas más sencillas o típicas


Ficheros .gd


Tienen una sintaxis bastante sencilla que veremos a base de ejemplos.
Reproducir un fichero .mp3: mp3.gd

% This graph description realizes a simple MP3 player.
% Use the -i option of clic to specify the MP3 file

MP3ReadNode ! MPEGAudioDecodeNode ! PlaybackNode

Y para ejecutarlo:

elessar@minastirith:/home/elessar/nmm-0.7.0/bin/$
./clic mp3.gd -i /home/elessar/audio/song.mp3

Vosotros direis: Esto esta muy bien pero para hacer esto uso el amarok que está más chulo. Y teneis razón así que vamos a complicarlo un poquito. Supongamos que tenemos los ordenadores minastirith y minasmorgul (ambos deben estar nombrados en el fichero /etc/hosts o ser resolubles por dns ya que de momento las IP no están soportadas) y en ambos tengo instalado NMM y serverregistry se está ejecutando. Yo tengo el fichero en minastirith pero lo quiero escuchar en minasmorgul. Pues creamos el siguiente fichero: mp3remote.gd

% This graph description describes a simple MP3 player where the MPEGAudioDecodeNode
% is running on host "minasmorgul". The serverregistry on host "minasmorgul"
% is listening on port 22801.
% Use the -i option of clic to specify the MP3 file

MP3ReadNode !
MPEGAudioDecodeNode # setLocation("minasmorgul") !
PlaybackNode # setLocation("minasmorgul")

Y lo ejecutamos en minastirith con:

elessar@minastirith:/home/elessar/nmm-0.7.0/bin/$
./clic mp3remote.gd -i /home/elessar/audio/song.mp3

Y deberiamos escuchar el fichero en minasmorgul. Esto ahora si que está mucho más interesante.
Pero esto es un ejemplo muy sencillo podemos hacer mucho más. Supongamos que tenemos una lectora de dvd en minastirith y que minasmorgul no tiene. Pues podemos usar NMM para ver nuestros videos más facilmente pero esto lo explicaré usando Graph Builder.

Graph Builder


Aunque el ejemplo puesto en el apartado anterior era un simple reproductor de mp3 solo hay coger la documentación disponible para extender las capacidades mucho más allá. Pero para cosas más cotidianas la gente de NMM han habilitado un método más sencillo: los Graph Builder.
Reproductor DVD: Como hemos dicho anteriormente queremos ver el DVD en minasmorgul pero este no dispone de unidad lectora. Pues es así de sencillo:

elessar@minasmorgul:/home/reybrujo/nmm-0.7.0/bin/$
./clic -u dvd://minastirith/dev/dvd?title=1&chapter=4&angle=1"

Así de simple. La sintaxis completa de este comando es:

dvd://<hostname>/<path to dvd device>?title=<number>&
chapter=<number>&angle=<number>

Hay otros Graph Builder disponibles como pueden ser:

file://<hostname>/<path and filename>
audiocd://<path to audio cdrom device>?track=<track number>
tv://<hostname>/<path to video device>
dvbtv://<hostname>/<path to video device>
ivtv://<hostname>/<path to video device>
mpegtv://<hostname>/<path to video device>

Podeis encontrar más información aquí.

Terminando


Para terminar esta introducción diré varias cosas que puede en entradas posteriores amplie. Este programa lo está desarrollando principalmente un grupo de personas de la universidad alemana Computer Graphics Lab - University of Saarbrücken. Son gente maja y estan haciendo un gran software. Yo por mi parte he realizado un plugin para captura de video usando V4L2 y que puede encontrarse en el CVS en la sección contrib (esto es para subirme un poco el ego ;-) ).

Tienen tambien desarrollado un plugin para poder usar NMM con Amarok.

La sección de documentación es bastante buena y en ella podemos encontrar un listado con los plugins que tiene y una breve descripción de para que sirven.

Bueno quizas me dejo algo en el tintero pero ya hablaremos más de NMM más tarde.

Un saludo.

Monday, June 26, 2006

GUADEC 2006


Ha comenzado la GUADEC 2006. Este evento es la reunión de desarrolladores de Gnome, uno de los escritorios para Linux.

Como siempre hay conferencias muy interesantes y para los que no estamos allí podemos seguirlas en directo desde la siguiente dirección:

- Live

O en diferido desde la siguiente:

- Videos

El programa en el siguiente:

- Horario

Nos vemos.

Monday, May 29, 2006

Problemilla con el aMule/mlDonkey y los routers


Pues resulta que tenia un problemilla, bueno más bien un problema, cuando activa cualquier programa de la red edonkey. El problema era que automaticamente dejaba de navegar e incluso el propio programa no conseguia subir y descargar ningun archivo.

Así que este fin de semana me he puesto a averiguar que pasaba. La configuración de mi red casera es la siguiente:

- Como modem router a la adsl tengo un Linksys wrt354g.
- Conectado a este tengo un Linksys wrt54g con un firmware dd-wrt, última versión.
- Tras este tengo mi servidor, donde ejecuto todos los programas: web, ssh, amule, ...

Con el wrt54g monto un QoS usando filtrado de capa 7, (Netfilter L7 para el dd-wrt).

La primera opción fue pensar que el QoS no era capaz de tanta carga como genera un aMule. Desactivo el QoS pero todo sigue igual. En un principio pensaba esto pues cuando reiniciaba este router wifi el problema se arreglaba momentaneamente o totalmene si previamente desactivaba el aMule.

La segunda opción fue bajarle al aMule todos sus requerimientos de red: numero de conexiones simultaneas, velocidad de descarga/subida, ... Pero el asunto seguía fallando.

El tercer intento fue conectar directamente el servidor al modem/router. Previamente a este intento, como tenía que modificar la configuración del modem/router entre los cambios que realicé fue desactivar algunos servicios del dispositivo como: el log y el firewall. Desactivar el firewall no me importa pues en el servidor ya implemento uno.

En este intento la cosa mejora el aMule ya funciona correctamente y puedo navegar algo simultaneamente. Tras esto lo lógico es pensar que el problema está en el router wifi. Pero no me combence la respuesta. Así vuelvo a poner el servidor tras el router wifi y activo el QoS del mismo. Y la cosa parece que funciona muy bien: el aMule consigue velocidades de descarga decentes y puedo navegar comodamente.

Esto me hace concluir que el problema era que el modem/router va un poco corto de procesador si tengo activado el log y el firewall. Aunque al principio pareciese que el problema estaba en el router wifi pues al reiniciarlo se arreglaba el asunto esto no era correcto pues era una cuestión de un problema en cascada.

Espero que esto os sirva de ayuda algún dia.

Sunday, May 14, 2006

NjbMediaDevice añadido a Amarok


Este viernes envie mi MediaDevice a los desarrolladores de Amarok y ya ha sido añadido al repositorio.

No entrará para le versión 1.4.0 pues esta congelada para poder lanzar la versión estable, así que la gente tendrá que esperar hasta la versión 1.4.1 para poder disfrutar de él.

Esto es bueno pues me da más tiempo para testear y añadirle más características.


Friday, May 12, 2006

OpenSuSE 10.1 Publicada


Ayer se publicó la versión 10.1 de OpenSuSE. Ha fecha de hoy solo se han publicado la versión en 5 cds para varias plataformas de procesador: x86, ppc, 64bits y creo que alguna más.

Todavía Novell no ha publicado su versión comercial, habrá que esperar un poco. Yo por mi parte estoy interesado en la versión de DVD para así llevarlo todo en un solo disco.

Para los impacientes hay archivos .torrent para poder tener una descarga bastante rápida.

Más información en: OpenSuSE

Sunday, May 07, 2006

NjbMediaDevice

Este fin de semana he avanzado en el desarrollo de NjbMediaDevice para Amarok. Ya está practicamente listo para enviarlo a la lista de desarrollo de Amarok para ver si quieren incluirlo.

Las carácteristicas actuales són:

- Se muestra el listado de canciones
- Borrar canciones
- Copiar canciones del ordenador al reproductor
- Copiar canciones del reproductor al ordenador

Con esto se obtiene la funcionalidad necesaria. El manejo de listas de reproducción lo voy a dejar para lo último porque como no las uso no me corre prisa ;-).

Antes voy a programar el manipulado de ficheros no mp3 para así poder subir y bajar ficheros de datos al reproductor usando Amarok. Para esto realmente sería más interesante usar kionjb pero creo que no me será muy dificultoso añadirselo a mi desarrollo.

Espero que para mañana haberlo mandado a la lista.

Un saludo.