Ubuntu Kernel 2.6.30 + ALSA

June 20th, 2009 | Tags: , ,

Bueno, ahora ya tengo el nuevo Kernel recién salido del horno instalado, y parece que el sistema en si funciona bien, pero sin sonido y la red no carga automáticamente, aunque tanto la ethernet como wifi, cargados manualmente con el ifconfig funcionan bien. Esto último es un mal menor.

Para el sonido me he bajado la última versión de ALSA, pero da un error de compilación, ya que en los kernel-headers creados por la nueva versión del kernel falta el Makefile_32.cpu, que debería estar en /usr/src/linux-headers-2.6.30-ultimate/arch/x86.

Tras bajarme del site de Ubuntu los headers para x86 (linux-headers-2.6.30-2-386) ya tengo el fichero que faltaba.

De todas formas, vamos a hacerlo bien siguiendo manualmente el script encontrado en antonywilliams.com, realizado para actualizar ALSA de forma automática cada vez que cambiemos la versión del Kernel. Aprovecho también las explicaciones del blog “Seamos realistas…pidamos lo imposible”.En estos momentos la última versión de ALSA es la 1.0.20.

Primeramente actualizaremos ciertas librerias necesarias. He tenido que poner el --fix-missing porqué no encontraba alguna de las dependencias:

apt-get install build-essentials libncurses5-dev gettext xmlto linux-headers`uname -r` --fix-missign

Descargamos la última versión del driver, lib y utils de ALSA:

wget ftp://ftp.alsa-project.org/pub/driver/alsa-driver-1.0.20.tar.bz2
wget ftp://ftp.alsa-project.org/pub/lib/alsa-lib-1.0.20.tar.bz2
wget ftp://ftp.alsa-project.org/pub/utils/alsa-utils-1.0.20.tar.bz2

Seguidamente nos creamos una carpeta donde vamos a mover y descomprimir los ficheros descargados:

sudo mkdir -p /usr/src/alsa
cd /usr/src/alsa
sudo cp ~/alsa* .
sudo tar xjf alsa-driver*
sudo tar xjf alsa-lib*
sudo tar xjf alsa-utils*

Ahora ya los tenemos preparados para compilar. En este paso podemos indicarle el tipo de tarjeta de sonido que tenemos (en los netbooks y portátiles suele ser la hda-intel, aunque podemos consultar el módulo correspondiente a nuestra tarjeta o fabricante en la página ALSA Sound Matrix).

Uno de los switch interesantes si tenéis un lio de kernels y headers como yo es el --with-kernel, que nos permite indicarle donde están los headers que debe usar para compilar. En mi caso usaré linux-headers-2.6.30-2-386, aunque lo habitual es que con `uname -r` os compile perfectamente.

cd alsa-driver*
sudo ./configure --with-cards=hda-intel --with-kernel=/usr/src/linux-headers-2.6.30-2-386
sudo make
sudo make install

Y hacemos lo mismo con las lib y utils:

cd ../alsa-lib*
sudo ./configure
--with-kernel=/usr/src/linux-headers-2.6.30-2-386
sudo make
sudo make install

cd ../alsa-utils*
sudo ./configure
--with-kernel=/usr/src/linux-headers-2.6.30-2-386
sudo make
sudo make install

Tras reiniciar el sistema lo más normal es que ya tengamos la versión actualizada y sonido en nuestro ordenador. Como no podía ser de otra manera, en mi caso no hay sonido y sigo teniendo el mismo error de que no tengo los “complementos correctos de GStreamer instalados“. Bueno, primeramente voy a copiar los módulos a la carpeta Ubuntu, que, al menos en la instalación original, era dónde los buscaba:

cp -v /lib/modules/`uname -r`/kernel/sound/pci/hda/snd-hda-intel.ko /lib/modules/`uname -r`/ubuntu/media/snd-hda-intel/snd-hda-intel.ko
cp -v /usr/src/alsa/alsa-driver*/modules/* /lib/modules/`uname -r`/kernel/sound/
depmod -a

Para mi sorpresa, seguro que debido a mis inventos, el snd-hda-intel.ko no está donde debería, así que no vamos a sobreescribir nada. Mi intuición me dice que este debe ser el motivo por lo que las cosas no funcionan. Bueno, vamos a copiar los nuevos drivers compilados a la carpeta de módulos del sistema. Bueno, puestos a hacer unos inventos más copio el snd-hda-intel.ko a la nueva carpeta /lib/modules/2.6.30-ultimate/ubuntu/media/snd-hda-intel.

Aprovecho también para hacer un cambio en /etc/modprobe.d/alsa-base, y modifico (o añadir si no la tenéis) la siguiente linea:

options snd-hda-intel model=hp

Vamos a reiniciar…aquí no se oye nada…seguro que en algún momento hice un “si lo haces de esta manera no te va a funcionar nunca”. Bueno, vamos a seguir…

Primeramente pruebo un sudo modprobe snd-hda-intel y me da errores por todas partes. Claramente veo que no voy a llegar a ninguna parte, parece ser que hay problemas en la compilación y que no pueden encontrarse los módulos y funciones que busca.

Definitivamente no ha sido buena idea jugar actualizando unas partes si y otras no. Jugar con tener los headers que no hayan sido generados por la compilación del kernel seguro que ha sido la peor idea, aunque ya era de suponer, pero me gusta forzar las pruebas a ver qué resiste y qué no.

Si alguien se ha leído este post y tiene un sistema “normal” no habrá tenido problemas en instalar una versión actualizada de los ALSA y tendrá sonido.

Bueno, el siguiente paso es probar una actualización completa y automática del sistema…a ver que ocurre.

No comments yet.