Como instalar OpenLDAP en Debian7/Ubuntu13.04 con soporte GnuTLS

OpenLDAP LogoPara quienes trabajamos realizando montajes de servidores usando GNU/Linux y Software Libre, OpenLDAP viene convirtiéndose en una de esas herramientas de “uso obligatorio” en todo montaje medianamente ambicioso.

Pero, ¿Que es OpenLDAP?

Vamos por partes… ¿Que es LDAP?

Según la Wikipedia

LDAP son las siglas de Lightweight Directory Access Protocol (en español Protocolo Ligero de Acceso a Directorios) que hacen referencia a un protocolo a nivel de aplicación que permite el acceso a un servicio de directorio ordenado y distribuido para buscar diversa información en un entorno de red. LDAP también se considera una base de datos (aunque su sistema de almacenamiento puede ser diferente) a la que pueden realizarse consultas.

En resumen…
El protocolo LDAP nos permite crear un directorio (muy similar a un directorio telefónico) para nuestra organización, facilitando la organización de los diferentes objetos (Usuarios, Grupos, Dispositivos, etc) en una estructura jerárquica (similar a un árbol). simplificando la creación de “perfiles” para cada uno de los objetos que conforman nuestro directorio; muy útil para otorgar permisos de acceso (autorización) a los diferentes servicios/recursos que ofrezcamos en nuestra organización.

En una definición mucho mas simple, un directorio LDAP es una base de datos optimizada para llevar a cabo operaciones de lectura.

Ahora si, ¿Que es OpenLDAP?

OpenLDAP es una implementación libre del protocolo LDAP, licenciado bajo la OpenLDAP Public Licence cuyas principales características son:

  • Soporte IPV6
  • Soporte para referrals (distribuido)
  • UTF-8 como codificación de caracteres por defecto
  • Soporte para autenticación usando Kerberos, SASL, CRAM-MD5
  • Soporte para el protocolo LDAPv3
  • Soporte para TLS
  • Soporte para Proxy LDAP
  • Backends Disponibles: DBD (obsoleto), HDB, LDIF y NDB
  • Soporte para LDAP Monitor
  • Soporte para ldap-dnssrv o búsqueda de servicios LDAP usando registro SRV
  • Soporte para llamadas a procedimientos remoto o RPC
  • Gran cantidad de Overlays disponibles (piezas de código que proveen características adicionales. Mayormente al backend de almacenamiento)

Si deseas ahondar aún mas en el proyecto, te invito a que visites su sitio web http://www.openldap.org

OpenLDAP se divide en 3 grandes componentes

  • Demonio de servidor (slapd)
  • Librerías para interactuar con el directorio
  • Herramientas de gestión (ldapsearch, ldapmodify, ldapadd, ldapindex, entre otras)

Manos a la obra

Instalación

Tanto en Debian, como en Ubuntu al instalar el paquete slapd, por defecto se crea un nuevo árbol de directorio usando los datos del dominio plasmados en el archivo /etc/hosts, por lo tanto, si en nuestro archivo hosts, tenemos lo siguiente:

127.0.1.1 debianpruebas.slabinfo.com.co debianpruebas

El instalador, creará automáticamente el siguiente árbol de directorio (BaseDN):

dc=slabinfo,dc=com,dc=co

Aclarado el punto anterior, instalamos OpenLDAP y sus utilidades usando APT

sudo apt-get install slapd ldap-utils

El instalador nos solicitará una contraseña para el administrador del nuevo árbol de directorio (cn=admin, dc=slabinfo,dc=com,dc=co), es aconsejable crear una contraseña segura para proteger de mirones no autorizados nuestro directorio.

Configuración inicial del directorio

El servidor slapd, tanto en Ubuntu, como en Debian, usa el estilo de configuración cn=config o “configuración al vuelo”, por lo que dicha configuración se hace a base de archivos de texto usando el formado LDIF (LDAP Data Interchange Format).

Estructura del directorio

En este punto cada cual puede adaptar dicha configuración según sus necesidades, yo suelo usar un árbol de directorio estructurado así:

   dc=slabinfo,dc=com,dc=co
    +ou=usuarios
    | +uid=john
    | +uid=jhondoe
    |  ...
    |
    +ou=grupos
    | +cn=sistemas
    | +cn=contabilidad
    |  ...
    |
    +ou=equipos
    | +cn=estacion1
    | +cn=estacion2
    |  ...
    |
    +ou=servicios
    | +cn=squid
    | +cn=samba
    |  ...
    |
    +cn=admin

Comenzamos creando un archivo de texto LDIF y lo guardamos con el nombre estructura-directorio.ldif:

dn: ou=usuarios,dc=slabinfo,dc=com,dc=co
objectClass: organizationalUnit
ou: usuarios

dn: ou=grupos,dc=slabinfo,dc=com,dc=co
objectClass: organizationalUnit
ou: grupos

dn: ou=equipos,dc=slabinfo,dc=com,dc=co
objectClass: organizationalUnit
ou: equipos

dn: ou=servicios,dc=slabinfo,dc=com,dc=co
objectClass: organizationalUnit
ou: servicios

Luego, aplicamos los cambios al directorio con el comando:

ldapadd -x -D cn=admin,dc=slabinfo,dc=com,dc=co -W -f estructura-directorio.ldif
Enter LDAP Password:
adding new entry "ou=usuarios,dc=slabinfo,dc=com,dc=co"

adding new entry "ou=grupos,dc=slabinfo,dc=com,dc=co"

adding new entry "ou=equipos,dc=slabinfo,dc=com,dc=co"

adding new entry "ou=servicios,dc=slabinfo,dc=com,dc=co"

Creamos 2 usuarios de prueba (john y jhondoe) en nuestro directorio, creamos el archivo estructura-usuarios.ldif.

dn: uid=john,ou=usuarios,dc=slabinfo,dc=com,dc=co
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: john
sn: Ortiz Roman
givenName: John Edisson
cn: John Edisson Ortiz Roman
displayName: John Edisson Ortiz
uidNumber: 10000
gidNumber: 1000
userPassword: contrasena_segura
gecos: John Edisson Ortiz Roman
loginShell: /bin/false
homeDirectory: /home/john

dn: uid=johndoe,ou=usuarios,dc=slabinfo,dc=com,dc=co
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: johndoe
sn: Doe
givenName: John
cn: John Doe
displayName: John Doe
uidNumber: 10001
gidNumber: 1001
userPassword: contrasena_segura
gecos: John Doe
loginShell: /bin/false
homeDirectory: /home/johndoe

y los añadimos al directorio con el comando:

ldapadd -x -D cn=admin,dc=slabinfo,dc=com,dc=co -W -f estructura-usuarios.ldif
Enter LDAP Password:
adding new entry "uid=john,ou=usuarios,dc=slabinfo,dc=com,dc=co"

adding new entry "uid=johndoe,ou=usuarios,dc=slabinfo,dc=com,dc=co"

finalmente los grupos sistemas y contabilidad, para ello, creamos el archivo estructura-grupos.ldif:

dn: cn=sistemas,ou=grupos,dc=slabinfo,dc=com,dc=co
objectClass: posixGroup
objectClass: top
cn: sistemas
gidNumber: 1000
memberUid: john

dn: cn=consultoria,ou=grupos,dc=slabinfo,dc=com,dc=co
objectClass: posixGroup
objectClass: top
cn: consultoria
gidNumber: 1001
memberUid: jhondoe

Nuevamente el comando ldapadd será nuestro aliado.

ldapadd -x -D cn=admin,dc=slabinfo,dc=com,dc=co -W -f estructura-grupos.ldif
Enter LDAP Password:
adding new entry "cn=sistemas,ou=grupos,dc=slabinfo,dc=com,dc=co"

adding new entry "cn=consultoria,ou=grupos,dc=slabinfo,dc=com,dc=co"

Como se puede observar, creamos 4 unidades organizacionales (usuarios, grupos, servicios y equipos), 2 usuarios (john y jhondoe) y 2 grupos (sistemas y contabilidad), a la vez que “matriculamos” al usuario john en el grupo sistemas y a johndoe en contabilidad.

Por ahora no haremos uso de las unidades organizacionales servicios y equipos, pues entraremos en detalles sobre las mismas en futuros artículos cuando expliquemos como hacer para que samba y squid usen LDAP en sus procesos de autenticación.

Ya tenemos nuestra estructura terminada, ahora a habilitar el soporte para GnuTLS.

Activando el soporte GnuTLS

GnuTLS es una implementación libre y de código abierto de los protocolos SSL y TLS permitiendo establecer comunicaciones seguras entre clientes y servidores en la capa de red.

Para hacer uso de TLS en nuestro servidor LDAP, requeriremos de mínimo 1 certificado público y una clave privada. En nuestro caso en particular, crearemos además una CA (Autoridad Certificadora) la cual va a firmar el certificado que nuestro servidor slapd usará en sus conexiones.

De nuevo, manos a la obra

Tanto para crear nuestra CA, como para crear y firmar el par llave/certificado para nuestro servidor LDAP usaremos el paquete gnutls-bin disponibe en los repositorios de Debian y Ubuntu.

sudo apt-get install gnutls-bin

Para mi comodidad, siempre creo una carpeta con el nombre CA-dominio-fqdn, en mi caso dicha carpeta se llama asi: CA-slabinfo.com.co.

mkdir CA-slabinfo.com.co && cd CA-slabinfo.com.co

Creando la CA

Lo primero, la llave privada que usará nuestra CA

~/CA-slabinfo.com.co# certtool --generate-privkey > ca-slabinfo.com.co-key.pem
Generating a 2432 bit RSA private key...

Ahora el turno es para el certificado público de nuestra CA
Antes que nada, crearemos una plantilla que contendra los datos de nuestra CA (parece complicado, pero no tiene ciencia), el archivo en cuestión se llama ca.info

cn = Slabinfo EU
ca
cert_signing_key

Ahora, creamos el certificado y lo firmamos

certtool --generate-self-signed --load-privkey ca-slabinfo.com.co-key.pem --template ca.info --outfile ca-slabinfo.com.co-cert.pem
Generating a self signed certificate...
X.509 Certificate Information:
	Version: 3
	Serial Number (hex): 521bc2e8
	Validity:
		Not Before: Mon Aug 26 21:04:40 UTC 2013
		Not After: Tue Aug 26 21:04:40 UTC 2014
	Subject: CN=Slabinfo EU
	Subject Public Key Algorithm: RSA
	Certificate Security Level: Normal
		Modulus (bits 2432):
			00:c0:1b:c8:62:5a:79:6d:50:f3:f6:56:e9:e5:34:e4
			de:9b:4a:b5:f4:07:98:9b:ef:85:06:46:39:3d:b6:cf
			6d:88:89:a8:37:9e:71:d4:10:f3:13:66:39:7b:85:b4
			20:97:ee:91:f3:7f:95:2e:69:46:5f:a6:cb:93:0d:98
			80:ec:20:eb:c2:75:73:f0:a3:85:31:17:ae:45:66:99
			15:ab:66:07:5a:e5:cb:f6:8a:94:78:4f:35:e9:73:75
			53:f6:d9:4d:19:a7:42:20:51:b3:ad:bf:53:65:87:0e
			e7:39:a0:29:44:73:9d:59:52:8b:42:ef:7e:c9:30:ba
			dc:a1:c7:97:5d:c0:cb:50:b7:55:75:b7:b0:15:02:d7
			99:43:3c:d2:ac:97:d1:93:9e:e5:45:b3:ae:75:7a:43
			d3:d5:a7:b5:9f:3a:ba:68:4d:01:41:5c:f5:e2:44:05
			e7:73:cc:85:4d:b7:d2:c3:ce:da:4c:0c:22:be:be:ca
			24:85:fc:b4:f8:3a:66:fe:b0:40:5f:61:53:37:28:c7
			db:56:6f:96:9f:a3:23:02:b0:dd:fc:ef:84:46:ae:ed
			f6:1a:d1:c6:38:8a:65:4b:36:46:26:de:17:c7:58:6e
			c9:d9:ae:74:7b:71:97:78:b0:22:40:1d:6c:dd:23:52
			f2:e0:3c:61:c1:38:a9:9b:d4:cc:43:42:0b:17:8e:b3
			58:70:15:1e:a3:b5:38:25:bf:ee:3f:ee:2c:de:92:f8
			cf:a8:42:95:92:74:be:56:08:04:eb:47:ff:f4:b6:24
			01
		Exponent (bits 24):
			01:00:01
	Extensions:
		Basic Constraints (critical):
			Certificate Authority (CA): TRUE
		Key Usage (critical):
			Certificate signing.
		Subject Key Identifier (not critical):
			d7fce9fc2f83362289c6116792b82cd41d66e144
Other Information:
	Public Key Id:
		d7fce9fc2f83362289c6116792b82cd41d66e144

Signing certificate...

Ya hemos creada nuestra CA (muuuuy básica, por cierto), ahora, a crear y firmar el par llave/certificado para nuestro servidor.
Empezamos con la clave (ejem 1024bits siguen siendo una longitud aceptable)

certtool --generate-privkey --bits 1024 --outfile ldap.slabinfo.com.co-key.pem
** Note: Please use the --sec-param instead of --bits
Generating a 1024 bit RSA private key...

Ahora, es el turno de generar y firmar certificado
Primero, crearemos el “template” a usar por el certificado, de nuevo un archivo de texto llamado ldap.info con lo siguiente

organization = Slabinfo E.U.
cn = ldap.slabinfo.com.co
tls_www_server
encryption_key
signing_key
expiration_days = 720

Luego, creamos y firmarmos nuestro certificado

certtool --generate-certificate --load-privkey ldap.slabinfo.com.co-key.pem --load-ca-certificate ca-slabinfo.com.co-cert.pem --load-ca-privkey ca-slabinfo.com.co-key.pem --template ldap.info --outfile ldap.slabinfo.com.co-cert.pem
Generating a signed certificate...
X.509 Certificate Information:
	Version: 3
	Serial Number (hex): 521bc601
	Validity:
		Not Before: Mon Aug 26 21:17:53 UTC 2013
		Not After: Sun Aug 16 21:17:53 UTC 2015
	Subject: O=Slabinfo E.U.,CN=ldap.slabinfo.com.co
	Subject Public Key Algorithm: RSA
	Certificate Security Level: Weak
		Modulus (bits 1024):
			00:b8:53:57:5b:18:0b:b6:c4:eb:2b:da:14:7f:dd:7c
			b1:82:7e:d8:df:f3:27:c2:ea:25:84:7b:dd:29:33:18
			bc:b5:8a:6f:4e:fd:24:30:50:95:7c:23:43:ff:2f:10
			a9:07:7e:c5:b0:28:de:02:3e:5d:f8:d7:5f:df:3f:0d
			e6:e3:7f:c0:6a:af:4b:b3:48:91:a1:13:a8:ad:12:07
			0b:1a:bc:ae:67:ca:81:f7:71:81:55:70:ce:80:42:f7
			86:c5:12:c5:24:52:21:70:45:7c:ee:fd:37:3a:f0:e0
			fd:81:71:ea:b4:bd:5b:3f:bc:31:0b:52:91:cd:75:94
			85
		Exponent (bits 24):
			01:00:01
	Extensions:
		Basic Constraints (critical):
			Certificate Authority (CA): FALSE
		Key Purpose (not critical):
			TLS WWW Server.
		Key Usage (critical):
			Digital signature.
			Key encipherment.
		Subject Key Identifier (not critical):
			88d07313bdf48e7bb27606bf358be399a7175a16
		Authority Key Identifier (not critical):
			d7fce9fc2f83362289c6116792b82cd41d66e144
Other Information:
	Public Key Id:
		88d07313bdf48e7bb27606bf358be399a7175a16

Signing certificate...

Una vez termindos los pasos anteriores, tendremos 6 archivos en nuestra carpeta:

  • ca.info
  • ca-slabinfo.com.co-cert.pem
  • ca-slabinfo.com.co-key.pem
  • ldap.info
  • ldap.slabinfo.com.co-cert.pem
  • ldap.slabinfo.com.co-key.pem

Nuestro servidor LDAP usará solo 3 archivos (el certificado público de la CA, y su par llave/certificado) por lo que los movemos a una ubicación mas idónea.

cp {ca-slabinfo.com.co-cert.pem,ldap.slabinfo.com.co-cert.pem} /etc/ssl/certs/
cp ldap.slabinfo.com.co-key.pem /etc/ssl/private/

Es importante brindarle los permisos de acceso adecuados a dichos certificados/llave para evitar quebraderos de cabeza tratando de dar con el error main: TLS init def ctx failed: -1.

sudo adduser openldap ssl-cert
Añadiendo al usuario `openldap' al grupo `ssl-cert' ...
Añadiendo al usuario openldap al grupo ssl-cert
sudo chgrp ssl-cert /etc/ssl/private/ldap.slabinfo.com.co-key.pem
chmod g+r /etc/ssl/private/ldap.slabinfo.com.co-key.pem
chmod o-r /etc/ssl/private/ldap.slabinfo.com.co-key.pem

En Debian podrían necesitar instalar el paquete ssl-cert
En Ubuntu podría ser necesario modificar el archivo /etc/apparmor.d/usr.sbin.slapd y agregar:

  /etc/ssl/private/ r,
  /etc/ssl/private/* r,

Ya que tenemos todos los certificados y llaves que necesitamos, procederemos a configurar nuestro servidor LDAP para que haga uso de el protocolo TLS, una vez mas.. recurrimos a la creación de un archivo llamado tls.ldif

dn: cn=config
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/certs/ca-slabinfo.com.co-cert.pem
-
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ssl/private/ldap.slabinfo.com.co-key.pem
-
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/certs/ldap.slabinfo.com.co-cert.pem

Aplicamos la configuración en nuestro servidor LDAP:

sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f tls.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"

y reiniciamos

sudo service slapd restart
[ ok ] Stopping OpenLDAP: slapd.
[ ok ] Starting OpenLDAP: slapd.

Ahora solo nos queda conectarnos a nuestro servidor usando cualquier GUI que soporte TLS (recomiendo Apache Directory Studio)

apacheds-conexion
apacheds-conexion-1
apacheds-conexion-2

Anuncios

Emesene 2.11.11 para ArchLinux i686

Hace escasos días se actualizó emesene a la versión 2.11.11, dado que en los repos de Archlinux no se actualizaba, decidí crear mi propio paquete para Archlinux.

si deseas instalarlo, puedes descargarlo desde aca:

http://dl.dropbox.com/u/1236084/emesene-2.11.11-1-i686.pkg.tar.xz

Como auditar la actividad de los usuarios en Samba

Samba es una pieza de software maravillosa, llena de funcionalidades y opciones interesantes de las cuales podemos sacar provecho.
Una de estas funcionalidades es, precisamente los Stackable VFS Modules, pequeños trozos de software que añaden funcionalidades a Samba, uno de estos módulos VFS es full_audit, un VFS que te permite loguear toda la actividad de tus usuarios en el servidor Samba.

Vamos a ver como instalarlo y como configurarlo.

Lo primero:
Es muy importante contar con una versión de samba igual o superior a la 3, pues los VFS fueron implementados apartir de esta.
Lo segundo:
A nuestro archivo smb.conf agregamos dentro de la directiva [Global] las siguientes lineas:

vfs objects = full_audit
full_audit:prefix = %u|%I|%m|%S
full_audit:success = mkdir rename unlink rmdir pwrite pread connect disconnect
full_audit:failure = none
full_audit:facility = LOCAL7
full_audit:priority = NOTICE

Vamos a ver que significa cada linea:
vfs objects = full_audit: Le decimos a samba que queremos cargar el módulo full_audit
full_audit:prefix = %u|%I|%m|%S: Indicamos las variables que se almacenarán en el log.
full_audit:success = mkdir rename unlink rmdir pwrite pread connect disconnect: Le indicamos a samba que tipo de operaciones almacenará en el log, para este caso almacenaremos:

  • Registros de creación de carpetas
  • Registros de renombrado de archivos
  • Registros de archivos borrados
  • Registros de archivos creados
  • Registro de directorios borrados
  • Registro de archivos abiertos
  • Registro de conexiones
  • Registro de desconexiones

full_audit:failure = none: Le indicamos a Samba que no queremos almacenar registros de error en el log
full_audit:facility = LOCAL7: Le indicamos a Samba que queremos enviar los registros al syslog utilizando el facility LOCAL7
full_audit:priority = NOTICE: Le indicamos a Samba el nivel de detalle que queremos usar en los registros

Una vez guardado nuestro smb.conf, procederemos a configurar rsyslog (En ubuntu server 10.04) para que almacene en un lugar predeterminado nuestros registros, para ello editamos el archivo /etc/rsyslog.d/50-default.conf y agregamos la siguiente línea:

local7.* /var/log/samba/audit/log.audit

Con esto le indicamos al syslog que todos los registros originados desde el facility LOCAL7 se almacenarán en /var/log/samba/audit/log.audit.

Reiniciamos rsyslog y samba con el siguiente comando:

service rsyslog restart && service smbd restart

y ya podremos tener un registro de lo que hacen nuestros usuarios en el servidor Samba.

para poder revisar los registros podemos utilizar el siguiente comando:

sudo tail -f /var/log/samba/audt/log.audit | ccze

y nos arrojará algo como esto:

Espero que este truco les haya sido de utilidad.

Configurar Ubuntu Server para Aceptar OTP (One Time Passwords)

Como recomendación en seguridad, cuando necesitemos acceder a nuestros servidores desde una ubicación poco o nada segura y no queramos exponer el password de nuestro servidor, podemos optar por utilizar los famosos passwords de un solo uso u OTP (por sus siglas en inglés)

Para esto necesitamos instalar opie:

apt-get install opie-server

A continuación, como usuario establecemos una contraseña y el programa nos proporciona un challenge:

opiepasswd -c -f

ID kobayasymaru OTP key is 499 ku8732
FISH FORM BEAR HID FEAT RUBE

Podemos obtener un listado de los 10 futuros password de un solo uso que vamos a poder usar mediante el comando siguiente:

$ opiekey -n 10 499 ku8732
495: FATE SANE INN SOFA TONG OWLY
496: CRAY TACT LASS DARE JAN MART
497: COED MAUL SITU JAY KIND SINE
498: OUTS CLAN NORM LIEU AVOW PRO
499: FISH FORM BEAR HID FEAT RUBE

Por último, falta configurar el sistema para que acepte estas contraseñas. Editamos ‘/etc/pam.d/common-auth’:

auth sufficient pam_unix.so nullok_secure
auth sufficient pam_opie.so
auth required pam_deny.so
#auth requisite pam_unix.so nullok_secure
#auth optional pam_smbpass.so migrate missingok

Y en el caso de que usemos SSH, editamos ‘/etc/ssh/sshd_config’:

ChallengeResponseAuthentication yes

Deseo agradecer al Blog de Marble, por servirme de guia para crear esta entrada.

Como habilitar las techas de funcion (Fn) en Toshiba Satellite en ArchLinux

Debo confesar que llevaba mucho tiempo buscando la forma de habilitar las teclas de funcion en mi Toshiba Satellite L305 con Linux, probe con ubuntu, debian, fedora y archlinux sin exito, hasta que encontre el proyecto omnibook.

Para habilitar las teclas de Funcion en mi Toshiba Satellite (y posiblemente en todos los modelos con board phoenix) tendremos que instalar el paquete “omnibook-svn” desde AUR:

sudo yaourt -S omnibook-svn

luego, agregamos omnibook a la seccion MODULES en el archivo “/etc/rc.conf“, resultando algo como esto:

MODULES=(… omnibook …)

Luego, agregamos una nueva linea con “options omnibook ectype=1” al archivo “/etc/modprobe.d/modprobe.conf“, si no hacemos esto, la carga del modulo fallará.

Luego de esto, podemos reiniciar nuesto equipo o podemos cargar el modulo por nuestra cuenta:

sudo modprobe omnibook

Una vez hecho esto, ya deberian de funcionar nuestras teclas de funcion en nuestro laptop Toshiba Satellite.

Recomiendo visitar la web del proyecto omnibook para que puedan enterarse de otras marcas y modelos de laptops estan soportadas por el proyecto:

web del proyecto omnibook

EDIT!!!

Cacharriando un poco mas con el modulo omnibook, he podido comprobar que las funciones para hibernar y suspender ahora funcionan perfectamente.

Instalar y Configurar Pulseaudio en ArchLinux

PulseAudio Logo


PulseAudio es (segun la Wikipedia)…

PulseAudio (antiguamente PolypAudio) es un servidor de sonido multiplataforma, capaz de funcionar por red, licenciado bajo los terminos de GNU LGPL (para las librerías de software) y GNU GPL (para el servidor de sonido en sí), PulseAudio es software libre.

Funciona bajo sistemas compatibles con POSIX como Linux y otros sistemas operativos como Microsoft Windows. Se pretende que sea un reemplazo para el servidor Enlightened Sound Daemon.

El mismo es un Excelente proyecto, el cual en su versión mas reciente (0.9.15) soluciona gran parte de los problemas que se presentaron en las versiones anteriores, yo, por lo menos reemplace completamente a ALSA por el.

La forma de instalarlo en Archlinux es bastante sencilla, bastara con abrir una consola y ejecutar un:

# pacman -S pulseaudio

Adicionalmente, podemos instalar los siguientes componentes “opcionales”

# pacman -S padevchooser paman paprefs pavucontrol pavumeter

Las versiones actuales de GNOME soportan de manera nativa el proyecto ESD (que por cierto… esta muerto) asi que podremos utilizar PulseAudio en lugar de este:

# ln -sf /usr/bin/esdcompat /usr/bin/esd

Ahora tenemos a Gnome corriendo automáticamente PulseAudio en cada inicio de sesion, pero todavia tenemos algunos problemas que solventar:

Por defecto PulseAudio corre en un socket diferente (/tmp/.esd-xxx), necesitaremos hacer que PulseAudio corra en el socket en el que la mayoria de apps de gnome buscan a ESD, para hacer esto, modificaremos el archivo (/etc/pulse/system.pa), alli buscamos la linea “load-module module-esound-protocol-unix” y la modificaremos dejandola asi:

load-module module-esound-protocol-unix socket=/tmp/.esd/socket

Ahora agregaremos el demonio de PulseAudio al arranque del sistema, editanto el archivo /etc/rc.conf:

DAEMONS=(syslog-ng !network netfs crond fam hal avahi-daemon pulseaudio)

configuramos ALSA para dar soporte a PulseAudio, editando y/o creando el archivo /etc/asound.conf de la siguiente manera:

pcm.!default {
type pulse
}
ctl.!default {
type pulse
}

Por ultimo nos aseguramos que la siguiente linea este presente en el archivo /etc/pulse/system.pa:

load-module module-hal-detect

Lo ultimo que falta por hacer, es configurar Gstreammer para que use PulseAudio:

# pacman -S gstreamer0.10-pulse

Finalmente configuraremos el sistema para que utilice PulseAudio por defecto:

$ gconftool-2 -t string –set /system/gstreamer/0.10/default/audiosink pulsesink
$ gconftool-2 -t string –set /system/gstreamer/0.10/default/audiosrc pulsesrc

como-instalar-fbsplash-y-obtener-una-resolucion-nativa-de-1280×800-en-archlinux

Durante las ultimas semanas estuve “chuleando” mi ArchLinux, una de las tareas que tenia en mente era darle un poco de “eyecandy” ak arranque del sistema, asi que mi eleccion fue fbsplash, no solo porque es mas liviano, sino porque es mas “bonito” que splashy (aunque no hay muchos themes que digamos).

Instalando fbsplash

Los pasos para instalar fbsplash en archlinux son basicamente:

  • Instalacion de fbsplash
  • Instalacion de initscripts-extra-fbsplash
  • Configuración de fbsplash
  • añadir el demonio fbsplash al archivo rc.conf
  • arrancar fbsplash en el initcpio
  • configurar el grub con el theme y la resolucion de fbsplash
  • Regenerar la imagen initramfs del Kernel

Ahora si.. manos a la obra:

  1. El fbsplash, por defecto no esta soportado por el dev-team de Archlinux, por lo que lo instalaremos desde AUR con el siguiente comando:

    root ~ # yaourt -S fbsplash

  2. Ahora, para que fbsplash pueda iniciar correctamente, instalaremos (tambien desde AUR) el paquete que reemplazara los initscripts de Arch:

    root ~ # Yaourt -S initscripts-extras-fbsplash

  3. Si hemos instalado uno o mas themes para fbsplash (por cierto en AUR hay varios y muy buenos … fbsplash en aur) debemos agregarlos al archivo de configuración de fbsplash, el que esta ubicado en /etc/conf.d/fbsplash, el cual debería quedar mas o menos así:

    SPLASH_THEMES=”arch-black arch-banner-icons arch-banner-noicons”

  4. Agregamos el demonio fbsplash al arranque del sistema en el archivo /etc/rc.conf, deberia quedarte algo como esto:

    DAEMONS=(… fbsplash gpm gdm)

  5. Para hacer que fbsplash arranque con Archlinux, agregaremos fbsplash al array HOOKS en el archivo /etc/mkinitcpio.conf, quedando el resultado mas o menos asi:

    HOOKS=(base udev fbsplash …)

  6. Configuraremos el grub, agregando al final del kernel lo siguiente (para 1024×768)

    logo.nologo quiet console=tty1 vga=792 splash=silent,theme:arch-black,fadein,fadeout

  7. Finalmente, regeneramos la imagen del initramfs con el siguiente comando:

    root ~ # mkinitcpio -p kernel26

Una vez hayamos terminado, reiniciamos nuestro sistema y si todo va bien.. deberíamos ver una linda pantalla de arranque.

Conseguir una resolucion nativa de 1280×800 en el framebuffer

Personalmente, este tema me tuvo “entretenido” un par de días probando y probando diferentes soluciones, y a la final la solución era mas sencilla de lo que pensaba:

La solución propuesta es para tarjetas de vídeo intel, para las vcards de otra marca, debería funcionar cambiando el modulo por el de su tarjeta.

  1. lo primero que debemos hacer es des-habilitar el modulo vesafb y habilitar el modulo intelfb en el archivo /etc/modprobe.d/framebuffer_blacklist.confbastara con agregar una almohadilla (#) en intelfb y agregar vesafb al final del archivo.
  2. Luego agregamos intelfb a la seccion MODULES en el archivo /etc/mkinitcpio.conf y regeneramos la imagen initramfs
  3. Finalmente realizamos algunas modificaciones en el grub (menu.lst) adecuándolo a nuestra resolucion:
    Anterior:

    logo.nologo quiet console=tty1 vga=795 splash=silent,theme:arch-banner-icons,fadein,fadeout

    Nuevo

    logo.nologo quiet console=tty1 video=intelfb mode=1280×800-24@60 splash=silent,theme:arch-black,fadein,fadeout

Con esto bastaria para tener nuestra resolución nativa en el framebuffer y el fbsplash arrancara con dicha resolución.

Recursos adicionales:

Fbsplash en la ArchWiki