viernes, 29 de noviembre de 2013

Instalación de XBMC sobre OpenSuse: optimización y personalización

En el post anterior, dejamos nuestro XBMC en u punto en el que ya era utilizable. Ahora ha llegado el momento de hacer unas cuantas pruebas y de realizar un ajuste fino para optimizar el arranque. Además le daremos un pequeño toque de personalización para que nos de más impresión de estar ante un equipo HTPC.

Sobre tiempos de arranque

Las comparaciones son odiosas, y esta no va a ser una excepción. Tiempo atrás había estado haciendo unas cuantas pruebas con el equipo original y OpenElec. Como dije, OpenElec está muy optimizado y eso se nota también a la hora de iniciar nuestra máquina.

La prueba inicial, antes de embarcarme en todo esto, fue comparar tiempos de arranque con diferentes medios. Realmente tenía OpenElec instalado en una tarjeta microSD y después la cloné a una memoria USB bastante más rápida. Luego, por tener una primera referencia, comparé esos tiempos con los de arranque de la OpenSuse, que tenía instalada en el disco SATA de 3,5" de la misma máquina.

 Quiero aclarar que el tiempo que quise medir se corresponde con lo que el usuario percibiría como arranque, o sea, desde que se inicia el ordenador hasta que el sistema acepta la interacción con el usuario por ratón, teclado o lo que sea. Así que en el caso de OpenElec era desde que le daba al botón de alimentación hasta que presenta el menú inicial, mientras que para openSuse también comenzaba a contar con el botón de alimentación, me saltaba la espera de Grub pulsando intro y paraba cuando KDE mostraba el escritorio.

Aclarado esto, antes de ponernos con la faena y para tener más información y poder deducir más cosas, podemos averiguar la velocidad de nuestros discos. Para ello, ejecutaremos como root lo siguiente:

hdparm -t /dev/xxxx

donde xxxx podrá ser hda, sda...

En mi caso me dio por comparar unos cuantos medios que tenía a mi alcance pero, para no marear, sólo pondré los que he mencionado antes. Las velocidades de lectura fueron las siguientes:

  1. Tarjeta MicroSD: 12MB/s
  2. USB Kigston DataTraveler G2: 20MB/s
  3. Disco duro SATA 3,5": 120MB/s
Y después me puse a arrancar el mismo PC desde cada uno de los soportes y a tomar tiempos crono en mano:
  1. Arranque de OpenElec desde MicroSD: 40 segundos
  2. Arranque de OpenElec desde la memoria USB: 30 segundos
  3. Arranque de OpenSuse desde el disco: 42 segundos
Viendo esto, y teniendo en cuenta que iba a comprar un disco SATA de 2.5" donde iba a instalar una openSuse que no cargaría KDE, esperaba tener unos tiempos menores de 40 segundos.

 Tras llegarme todo el material, montarlo e instalar el sistema operativo, el tiempo de inicio era de unos 35 segundos. Para mejorarlo busqué algún artículo en el que se hablaba de cómo optimizar este tiempo modificando los servicios arrancados durante el inicio de la máquina. Así pues, lo siguiente que se puede hacer para comprobar nuestros avances, será instalar el paquete systemd-analyze.

El primer resultado que obtuve al ejecutar dicho comando fue el siguiente:

En Yast, en Servicios del Sistema, se puede desactivar aquello que no necesitemos. Yo quité sólo Postfix y CUPS

Como se puede ver en la primera linea ejecutada en la imagen mostrada a continuación, sólo mejoró unas décimas de segundo. Tendremos más pistas de lo que está sucediendo gracias a la segunda orden que aparece:

systemd-analyze blame

En este caso levantar la red resulta ser un proceso muy pesado.
Para evitar lo que acabamos de ver podremos conectarnos a la red mediante NetworkManager en vez de hacerlo con ifup en el arranque. Para ello lo cambiaremos otra vez en Yast, en el apartado de Ajustes de Red tal como se ve aquí:
 Ahora nos avisará de que necesitamos tener una aplicación que nos gestione la conexión. Aceptaremos.
 Revisamos los tiempos y vemos que se obtiene una mejora sustancial (ver en la imagen siguiente). Es cierto que sigue siendo necesario conectarse a la red, pero esa operación se realizará una vez cargado XBMC y no nos percataremos de ello.

Para conseguir lo que se acaba de comentar, es necesario instalar un Addon de XBMC para NetworkManager. Lo encontraremos en el listado de addons de programas de XBMC



Tras la instalación lo encontraremos en el menú programas y solo tendremos que configurar nuestra red.



Ahora vuelvo a referirme al tiempo crono en mano. Tras todos estos cambios el nuevo tiempo de arranque era de 29 segundos frente a los 35 iniciales. Había mejorado unos 6 segundos, no está mal, aunque supongo que será mejorable, así que cualquier idea será bienvenida :) Me gustaría ver esto mismo en un disco SSD pero, como ya dije, sacrifiqué tiempo por espacio.

Ocultar Grub

Al tratarse de un equipo dedicado a arrancar sólamente nuestro XBMC ¿por qué mostrar el menú de Grub? ¿Por qué perder unso valiosos segundos esperando a que el usuario haga una elección en el menú de arranque? No nos hace falta: vamos a ocultarlo.

Para hacer esto acudiremos como siempre a Yast. En Configuración del cargador de Arranque haremos clic sobre el botón Opciones del cargador de arranque
 Ahora simplemente marcaremos la opción Ocultar el menú en el arranque
 Gracias a esto nuestro sistema iniciará sin pausas nuestro XBMC, con lo que nos habremos ahorrado 8 segundos más. Ojo, este tiempo no lo estaba contabilizando en las referencias que estaba dando antes, así que en el ejemplo siguen siendo los 29 segundos que comentaba antes.

Un arranque más XBMC

No tengo nada en contra de la mascota de openSuse pero no me apetece ver el camaleón verde en los 30-40 segundos en los que carga el sistema, en todo caso se debería mostrar una imagen algo más integrada en el espíritu de nuestro media center. Afortunadamente alguien ya ha pensado en esto y tenemos un paquete que sustituirá al fondo por defecto: plymouth-branding-xbmc

Para bajarlo acudiremos a la web de búsqueda de paquetes, ya que no lo tendremos en ningún repositorio de nuestra máquina y no podremos instalarlo directamente.

Buscaremos el término xbmc


Escogeremos el paquete que nos interesa y se nos desplegarán las opciones. Si no hay versión estable le diremos que nos muestre las que no lo son y finalmente seleccionaremos 1 click install
 Después de esto nos eliminará el paquete  por defecto y nos añadirá el nuevo.
 No hay nada más que hacer, en el próximo reinicio nos encontraremos con una pantalla similar a esta:


Mi guerra con la temperatura

Ya dije en el otro post que adquirí dos nuevos ventiladores. Lo que no conté es que fue una compra posterior, después de ver como funcionaba el equipo recién montado. Con el ventilador original de la placa Zotac, llegaba facilmente a los 65 grados e, incluso, a los 70 en determinadas condiciones. Cuando la tuve montada en la caja anterior no era así, seguramente porque había más espacio interior. Tras el montaje de los dos nuevos ventiladores más silenciosos, y con mejor circulación de aire, la situación mejoro bastante (de 5 a 10 grados).

En todo caso, esto fue un problema mío que tal vez no interese. Lo que sí que puede interesar es lo siguiente. Todos estos valores los veía en un monitor de sistema de KDE ya que mi XBMC no me los mostraba en las pantallas de información en las que debe aparecer.

Si os ocurre esto podéis consultar este enlace y después poneros manos a la obra con el archivo de configuración. Básicamente, necesitáis hacer un script que devuelva el valor de la temperatura que debe ser mostrar tanto para la CPU como para la GPU.

Podéis ejecutar las pruebas que hagáis en un terminal de comandos hasta que os funcione adecuadamente:



después se debe crear el archivo XML que contenga la instrucción, que deberá estar en la ruta:

~./xbmc/userdata/advancedsettings.xml

Este es mi fichero, pero no tiene por qué ser válido para otros, como se puede ver, depende mucho del hardware que se tenga:

  

echo "$(nvidia-settings -c :0 -tq GPUCoreTemp | tail -n 1) C"
echo "$(sensors -u | tail -n64 | grep temp2_input | awk '{print $2 }' |awk '{printf("%d\n",$1 + 0.5);}') C"


Una vez hecho esto ya deberías ver la temperatura de la CPU (sólo mostrará un valor aunque tengáis varios cores)
 Y la temperatura del chip gráfico

Después de todo esto parece que nuestro equipo ya se está ganando un sitio en el salón de nuestra casa. En el próximo capítulo contaré como solucionar alguna de las carencias que sufriremos al no estar bajo la ayuda de KDE, por ejemplo, el manejo de dispositivos Bluetooth.

No hay comentarios: