lunes, 23 de abril de 2012

lightdm.conf

lightdm.conf

Vamos a ver las opciones disponibles para este fichero, que está compuesto por 5 secciones
  1. LightDM: Opciones generales de configuración del servicio.
  2. SeatDefaults: Configuración por defecto para los Seats o puestos.
  3. Seat:0, Seat:1, etc: Configuración de cada uno de los Seat que se mostrarán al arrancar el servicio.
  4. XDMCPServer: Opciones para compartir el escritorio con máquinas remotas.
  5. VNCServer: Opciones para compartir el escritorio con máquinas remotas a través del protocolo VNC.

LightDM

Las opciones que podemos configurar en LightDM son las siguientes:

start-default-seat

Indica si se va a arrancar de forma automática el puesto por defecto.
Si lo ponemos a false, no se mostrará el entorno gráfico en la máquina local. Esta configuración solo tiene sentido si nuestro propósito es conectar remotamente a esta máquina. Si hay definidos otros puestos (el Seat:0, Seat:1, etc) si que serán mostrados.
Si lo ponemos a true, se mostrará el puesto por defecto, y si hay más, también los otros.

greeter-user

Por defecto los greeters (o saludadores) se ejecutan bajo el privilegio del usuario lightdm, pero podemos hacer que se ejecute el greeter bajo las credenciales del usuario que aquí indiquemos.

minimum-display-number

Aquí indicamos el número más bajo de pantalla que vamos a usar con el servidor X.

minimum-vt

Aquí indicamos el número de terminal virtual mínimo que usará el entorno gráfico

xsessions-directory

Directorio donde se colocan los ficheros de definición de los distintos inicios de sesión disponibles. Por defecto es /usr/share/xsessions.

xgreeters-directory

Es el directorio donde se colocan los ficheros de definición de los distintos greeters disponibles en el sistema. Por defecto es el directorio /usr/share/xgreeters.

SeatDefaults

Los SeatDefaults son la configuración por defecto para el puesto. Los parámetros más usados aquí son:

xserver-command

Es el comando que nos va a proveer el entorno gráfico, por defecto es el comando X (xserver-command = X).

xserver-config

Fichero de configuración del servidor X. Por defecto en ubuntu es /etc/X11/xorg.conf.

xserver-allow-tcp

Se pone a verdadero si permitimos conexiones TCP/IP al servidor.

xdmcp-manager

Cliente X al que se va a conectar nuestro servidor X. Evidentemente, si colocamos esta linea, se van a permitir las conexiones TCP/IP.
Un ejemplo para esta linea será: xdmcp-manager=192.168.1.1, que nos permitiría conectar el entorno al equipo 192.168.1.1.

xdmcp-port

Puerto usado por xdmcp.

xdmcp-key

Clave de autenticación usada por xdmcp. Por defecto en blanco.

greeter-session

Greeter que va a ser usado en ese puesto. Por defecto Ubuntu usa el unity-greeter, pero dispone de alguno más.

greeter-hide-users

Por defecto, el greeter nos va a mostrar un listado de los usuarios. Escogemos uno e introducimos la contraseña. Al poner esta variable a true, tendremos que introducir el nombre del usuario manualmente.

user-session

Es la sesión por defecto con la que iniciarán los usuarios.

allow-guest

Si es verdadero se permiten sesiones de invitado.
Las sesiones de invitado se ejecutan en perfiles generados al azar dentro de la carpeta tmp, y cada nueva sesión de invitado se arrancará con un nuevo perfil. Solo son útiles para accesos temporales a internet y similares.

guest-session

En principio es la sesión con la que arrancará un acceso de invitado, pero no funciona correctamente.

display-setup-script - greeter-setup-script - session-setup-script -  session-cleanup-script

Son scripts que se arrancan tras el inicio de lightdm, o tras el arranque del greeter, o al iniciar sesión o al salir de ella. Son ejecutados con permisos de root, lo cual los hace bastante peligrosos.

autologin-guest

Verdadero si permitimos que por defecto se inicie una sesión de invitado. No espera y entra en ella automaticamente.

autologin-user

Nombre del usuario que iniciará sesión de forma automática pasado un tiempo fijado por autologin-user-timeout.

autologin-user-timeout

Es el tiempo en segundos que deben pasar sin que el greeter tenga actividad para que se inicie de forma automática la sesión de usuario por defecto.

autologin-session

Es la sesión en la que iniciará de forma automática el usuario por defecto.

exit-on-failure

Si lo ponemos a true, el demonio termina (lightdm) si el puesto falla.

Sección Seats o puestos

Por defecto no tenemos que tener ningún puesto activado. En este caso, solamente se abrirá un terminal gráfico con las opciones definidas en la sección SeatDefaults.
Los parámetros que admiten los puestos son los mismos que los que hemos visto en SeatDefaults, y heredan la configuración de SeatDefaults, salvo en lo que cambien ellos mismos.
Pero podríamos querer tener dos pantalla abiertas simultaneamente, o tres, o cuatro, etc. Para ello deberemos configurar los seats que Queramos. Veamos varios ejemplos:

Dos pantallas gráficas se inician simultaneamente

Para ello nos bastará con añadir al fichero de configuración estas dos lineas:
[Seat:0][Seat:1]
Estos dos puestos son idénticos al SeatDefaults, ya que heredan su configuración y no se ha modificado. Y podremos acceder a dos greeters iguales, uno con CTRL+ALT+F7 y otra con CTRL+ALT+F8.

Dos pantallas gráficas una de ellas conectándose a otra máquina

Para ello nos basta con añadir algo parecido a lo anterior, pero modificando uno de los seats para que conecte con una máquina remota.
En el ejemplo, se crea una pantalla que conecta a la máquina local (en el terminal 7) y otra (en el terminal 8) que conecta a un equipo llamado xdmcppruebas.emc.lan:
[Seat:0]
[Seat:1]
xdmcp-manager=xdmcppruebas.emc.lan
Evidentemente, debemos tener configurada la red para que pueda haber conectividad con la otra máquina.

Una pantalla gráfica con un greeter distinto al provisto por Ubuntu

Ubuntu provee un paquete denominado unity-greeter, que muestra la pantalla de inicio de sesión a la que estamos acostumbrados.
Podemos instalar otro greeter, como puede ser  el lightdm-qt-greeter, un greeter pensado más para máquinas con KDE.
Para instalar el greeter usaremos:
aptitude install lightdm-qt-greeter
Y luego para disponer de dos pantallas, una con el greeter de unity, y otra con el greeter qt, usaremos:
[Seat:0]
[Seat:1]
greeter-session=lightdm-qt-greeter
Et voila, en la pantalla 8 (CTRL+ALT+F8) nos aparece lo siguiente:

Sección XDMCPServer

Basicamente, xdmcp lo que hace es permitir compartir un escritorio en red. Para ello, se comparte el seat por defecto. En esta sección disponemos solamente de los siguientes parámetros:

enabledTrue si queremos poder conectar desde máquinas remotas.

port

Puerto por defecto para conectar. Por defecto el 177

key

Es una clave 3DES o una palabra que servirá como secreto entre el cliente y el servidor para autenticarse.
Sección VNCServer
Permite la conexión 

Sección VNCServer

Permite conectar el inicio de lightdm mediante el protocolo VNC.

domingo, 22 de abril de 2012

Configurar Lightdm (1)

Configurar Lightdm (1)

Lightdm se configura a través del fichero de configuración /etc/lightdm/lightdm.conf. Este fichero, con una sintaxis de fichero .ini, en Ubuntu casi aparece vacio:
[LightDM]
[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu
Como puedes ver, no tenemos acceso a los muchos parámetros que seguro que usa lightdm.
Para acceder a un fichero de configuración completo, usaremos el fichero lightdm.conf de ejemplo que se encuentra en el directorio /usr/share/doc/lightdm:
#
# General configuration
#
# start-default-seat = True to always start one seat if none are defined in the configuration
# greeter-user = User to run greeter as
# minimum-display-number = Minimum display number to use for X servers
# minimum-vt = First VT to run displays on
# user-authority-in-system-dir = True if session authority should be in the system location
# guest-account-script = Script to be run to setup guest account
# log-directory = Directory to log information to
# run-directory = Directory to put running state in
# cache-directory = Directory to cache to
# xsessions-directory = Directory to find X sessions
# xgreeters-directory = Directory to find X greeters
#

[LightDM]
#start-default-seat=truedfdf
#greeter-user=lightdm
#minimum-display-number=0
#minimum-vt=7
#user-authority-in-system-dir=false
#guest-account-script=guest-account
#log-directory=/var/log/lightdm
#run-directory=/var/run/lightdm
#cache-directory=/var/cache/lightdm
#xsessions-directory=/usr/share/xsessions
#xgreeters-directory=/usr/share/xgreeters

#
# Seat defaults
#
# xserver-command = X server command to run
# xserver-layout = Layout to pass to X server
# xserver-config = Config file to pass to X server
# xserver-allow-tcp = True if TCP/IP connections are allowed to this X server
# xdmcp-manager = XDMCP manager to connect to (implies xserver-allow-tcp=true)
# xdmcp-port = XDMCP UDP/IP port to communicate on
# xdmcp-key = Authentication key to use for XDM-AUTHENTICATION-1 (stored in keys.conf)
# greeter-session = Session to load for greeter
# greeter-hide-users = True to hide the user list
# user-session = Session to load for users
# allow-guest = True if guest login is allowed
# guest-session = Session to load for guests (overrides user-session)
# session-wrapper = Wrapper script to run session with
# display-setup-script = Script to run when starting a greeter session (runs as root)
# greeter-setup-script = Script to run when starting a greeter (runs as root)
# session-setup-script = Script to run when starting a user session (runs as root)
# session-cleanup-script = Script to run when quitting a user session (runs as root)
# autologin-guest = True to log in as guest by default
# autologin-user = User to log in with by default (overrides autologin-guest)
# autologin-user-timeout = Number of seconds to wait before loading default user
# autologin-session = Session to load for automatic login (overrides user-session)
# exit-on-failure = True if the daemon should exit if this seat fails
#
[SeatDefaults]
#xserver-command=X
#xserver-layout=
#xserver-config=
#xserver-allow-tcp=false
#xdmcp-manager=
#xdmcp-port=177
#xdmcp-key=
#greeter-session=example-gtk-gnome
#greeter-hide-users=false
#user-session=default
#allow-guest=true
#guest-session=UNIMPLEMENTED
#session-wrapper=lightdm-session
#display-setup-script=
#greeter-setup-script=
#session-setup-script=
#session-cleanup-script=
#autologin-guest=false
#autologin-user=
#autologin-user-timeout=0
#autologin-session=UNIMPLEMENTED
#exit-on-failure=false

#
# Seat configuration
#
# Each seat must start with "Seat:".
# Uses settings from [SeatDefaults], any of these can be overriden by setting them in this section.
#
#[Seat:0]

#
# XDMCP Server configuration
#
# enabled = True if XDMCP connections should be allowed
# port = UDP/IP port to listen for connections on
# key = Authentication key to use for XDM-AUTHENTICATION-1 or blank to not use authentication (stored in keys.conf)
#
# The authentication key is a 56 bit DES key specified in hex as 0xnnnnnnnnnnnnnn.  Alternatively
# it can be a word and the first 7 characters are used as the key.
#
[XDMCPServer]
#enabled=false
#port=177
#key=

#
# VNC Server configuration
#
# enabled = True if VNC connections should be allowed
# port = TCP/IP port to listen for connections on
#
[VNCServer]
#enabled=false
#port=5900
#width=1024
#height=768
#depth=8
Esto es otra cosa, como podeis ver, ya podemos acceder a todas las caracteristicas de configuración de lightdm.

Componentes de Lightdm

Componentes de lightdm

Lightdm es el gestor de sesiones usado en Ubuntu. su aspecto es similar al que podeis ver en la imagen:
Como puedes ver, indica en la parte superior el nombre de la máquina (esto es importante por que se pueden iniciar sesiones remotas), opciones de accesibilidad, de sonido, la hora y un icono para apagar el equipo.
Luego puedes escoger el usuario, introducir la contraseña, y si pulsas en el engranaje, podrás ver las distintas sesiones en las cuales puede iniciar el usuario.
Lightdm usa dos componentes primordiales: El greeter y las sesiones.

Greeter

Lightdm no es el programa que aparece en pantalla. En realidad es otro programa llamado Unity-Greeter, o saludador de Unity.
El greeter es el programa que ejecuta lightdm para que los usuarios puedan iniciar sesión.
En el caso de Ubuntu 11.10 disponemos de estos greeters:
  1. unity-greeter.
  2. lightdm-gtk-greeter.
  3. lightdm-qt-greeter.
Por ejemplo, si hubieramos usado el lightdm-qt-greeter, el aspecto de la pantalla de inicio sería el siguiente:

xsessión

Una sesión gráfica, o xsession, es una forma de iniciar el entorno gráfico para un usuario. Tendremos una sesión para KDE, otra para Gnome, etc.
Las podemos ver en esta imagen:
XBMC crea una xsession
XBMC crea una xsession llamada XBMC en la cual entramos al entorno XBMC.

Resumen

  • Lightdm permite iniciar sesión a los usuarios.
  • El programa donde introducimos nuestro usuario y contraseña se llama greeter (unity-greeter).
  • Podemos iniciar sesión en varias xsession (por ej. kde, gnome o unity).
  • xbmc al ser instalado crea una xsessión llamada XBMC.

Componentes del servidor grafico en Ubuntu

Componentes del servidor gráfico en Linux

Para crear nuestro media center debemos modificar el inicio del entorno gráfico para que se arranque la aplicación xbmc, y además será necesario que en caso de que esta provoque errores, que se reinicie de forma automática.
Como puedes imaginar, deberemos conocer que componentes gráficos forman el entorno de escritorio de Linux.

Servidor gráfico (Xserver)

Por debajo de todo el entramado de pantallas que vemos cuando usamos Linux en modo gráfico, hay un programa llamado servidor gráfico (Xserver), que en versiones muy antiguas de linux seria el servidor Xfree, y que para el caso de las últimas distribuciones (a partir del 2005 aproximadamente) sería el proporcionado por Xorg.
El servidor gráfico solamente se va a encargar de mostrar por un layout (o diseño de pantalla) todo lo que le envien los clientes que a el se conecten. El layout estará formado por una o varias pantallas (de forma que puedo crear un escritorio compuesto), y uno o varios teclados y ratones.
Pero, el servidor gráfico no se encarga de mover las ventanas, cambiar su tamaño, Mostrar un escritorio con iconos, etc: Estas tareas son realizadas por otros componentes, como son el gestor de ventanas o el gestor de escritorios.
El servidor gráfico en Linux tiene una potencia inusitada, ya que los clientes que se conectan al servidor pueden ser procesos locales al servidor (es decir, procesos que están ejecutándose en el mismo ordenador), o procesos que pueden ejecutarse remotamente.
Pero esta potencia tiene su coste: Es un entorno gráfico más lento que el usado por Microsoft en Windows.

Aplicaciones gráficas

Las aplicaciones gráficas son aplicaciones que conectan con el servidor gráfico para mostrar un area rectangular llamado ventana, y dentro de el una serie de controles que forman la aplicacion.
Un ejemplo de ventana lo vemos a continuación:
Una aplicación gráfica no tiene bordes de ventana, ya que los bordes son dibujados por el gestor de ventanas, que veremos a continuación. Es decir, la aplicación no es más que la ventana sin bordes.

Bibliotecas de controles

Una aplicación se diseña usando controles que pertenecen a una biblioteca de controles, que no es más que un conjunto de controles (como cuadros de texto, botones, etc) que podemos usar al programar una aplicación.
Actualmente Linux usa profusamente una de las dos siguientes bibliotecas de controles:
  1. gtk: Son los controles usados en el escritorio gnome.
  2. qt: Son los controles usados en el escritorio KDE.

Entorno de escritorio

Un entorno de escritorio no es más que una serie de programas que nos van a permitir usar aplicaciones gráficas en el entorno gráfico de forma cómoda. Este nos va a proveer de una interfaz de usuario gráfica completa, incluyendo iconos,  ventanas, barras de herramientas, etc... , así como la posibilidad de mover las ventanas o modificar sus tamaños. Sus componentes más importantes son el gestor de ventanas y el gestor de escritorio.

Gestor de Ventanas

Una aplicación para el servidor gráfico no dispone de bordes de ventana, ni de botón maximizar, etc.
Para que podamos mover las ventanas, cambiar su tamaño y resto de tareas a las que estamos habituados debemos tener instalado un gestor de ventanas, que no es más que un programa que se va a encargar de dibujar bordes a nuestras ventanas, y nos va a permitir realizar tareas tan habituales con estas, que serían imposibles si solo dispusiéramos del servidor gráfico.
Como en puntos anteriores, en función del entorno de escritorio, tendremos distintos gestores de ventanas:
  1. Para KDE disponemos de Kwin.
  2. Para gnome disponemos de Metacity.

Gestor de archivos

El gestor de archivos nos va a proveer de la posibilidad de poder manejar carpetas y archivos mediante el uso de iconos, usualmente dibujando un/os escritorio/s donde también podremos dejar nuestros iconos.
  1. En KDE el gestor de archivos es el propio navegador Web Conqueror.
  2. Nautilis: Gestor de archivos para Gnome.

Gestor de Sesiones

La forma tradicional de iniciar el entorno gráfico en Linux era iniciar una consola y lanzar el comando startx.
Startx se encargaba de arrancar para el usuario el entorno de escritorio (gnome, KDE, etc) que tuviera configurado.
Pero posteriormente, surgió la necesidad de crear un entorno que nos permitiera arrancar el equipo de una forma similar a como lo hacia Windows: Pidiéndonos nuestro usuario y contraseña. Eso es un gestor de sesiones.
Además de pedirnos nuestro usuario y contraseña, el gestor de sesiones nos va a permitir iniciar la sesión en uno de los entornos de escritorio que tengamos instalados en el equipo, ya sea Unity, KDE, Gnome, etc.
Los gestores de sesiónes más habituales son los siguientes:
  1. xdm: Xdm fue el primer gestor de sesiones para el mundo linux y actualmente está en desuso. Además es muy limitado ya que no permite escoger el entorno de escritorio al usuario.
  2. gdm: Es el gestor de sesiones de Gnome. Gdm nos permitirá iniciar sesiones, tanto locales como remotas. También permite apagar y reiniciar el equipo, escoger el entorno de escritorio al usuario, el idioma del teclado y los mensajes, etc. Es un entorno muy completo, aunque está empezando a caer en desuso.
  3. kdm: Es el gestor de sesiones oficial de KDE. Es similar a gdm.
  4. lightdm: Es un gestor de sesiones nuevo. Su objetivo es ser un gestor de sesiones ligero, y muy adaptable. Es el que usa Ubuntu desde hace algunos años.

Resumen

Cuando iniciamos Linux, se arranca el servidor gráfico Xorg, que nos mostrará un programa llamado Gestor de Sesiones, donde podremos iniciar sesión.
Tras el inicio de sesión, se descarga el gestor de sesiones, y se carga un gestor de escritorio, que nos mostrará el escritorio y las barrás de herramientas que forman el entorno.
En Linux actualmente, el gestor de sesiónes más usado es lightdm.

jueves, 19 de abril de 2012

Un media center con XBMC

Un media center con XBMC

En mi casa tengo un ordenador siempre encendido, y desde hace bastante me asalta la idea de convertirlo en un media center.
Es una máquina con Ubuntu Linux, usando como gestor de sesiones LightDM, para luego arrancar gnome o KDE como entornos de escritorio.
Existe un paquete denominado XBMC que podemos usar como media center, pero que normalmente se arranca como una aplicación más sobre KDE o gnome para después ponerla en pantalla completa: No es lo que buscamos, ya que nuestro objetivo es usar XBMC independientemente de un entorno de escritorio.

Que es XBMC

  1. XBMC es un media center con licencia libre GNU diseñado para la primera consola XBox.
  2. XBMC ha sido portado a distintos sistemas operativos, como son GNU/Linux, Windows, Mac OS X.
  3. XBMC puede reproducir la mayoría de los formatos multimedia.
  4. XBMC puede ser ampliado con plug-ins escritos en Phyton.

Como se instala XBMC en Ubuntu 12.04

En Ubuntu 12.04 ya aparece incluido en los repositorios oficiales, de modo que basta con la siguiente línea para instalarlo:

sudo apt-get install xbmc
En distribuciones mas antiguas de Ubuntu no estaba incluido, por lo cual habrá que incluir un repositorio no oficial para poder usarlo. Para más información, ver la página oficial de xbmc(http://xbmc.org/).

Arrancar XBMC dentro de un entorno de escritorio

Mediante el comando xbmc, obtendremos el siguiente resultado:
Como puedes ver, el aspecto es genial, pero: Todavía no tenemos un media center, ya que necesitamos que xbmc se inicie de forma automática en el inicio del ordenador.

Arranque de XBMC en el inicio de sesión

Si salimos a la pantalla de inicio de sesión, veremos que disponemos de un nuevo inicio de sesión, el inicio XBMC, que nos va a permitir iniciar sesión directamente en xbmc:
Cuando iniciamos sesión en XBMC nos aparece XBMC en modo de pantalla completa, de forma que podremos usarlo como centro multimedia. Al salir de XBMC volveremos a la pantalla de inicio de sesión.

Por que esta solución no es la correcta

Xbmc dispone de una característica de perfiles, que permite crear dentro de xbmc perfiles de usuario con contraseñas, y con los tipicos ajustes de seguridad, haciendo que ciertas características del programa solo esten accesibles desde ciertos perfiles.
Además, lo deseable para un media center sería que xbmc se iniciara automáticamente  en vez de arrancarse la pantalla de inicio de sesión. Es decir, no queremos que aparezca por ningún lado la pantalla de inicio de sesión, y lo que queremos es que xbmc sea nuestro inicio de sesión.