Compilación de Kernel Real Time


Instalación y Compilación del kernel en tiempo real en Debian

Para hacer gran parte de esta explicación usé otras que encontré en internet (de las cuales estoy muy agradecido) y mi propia “prueba y error”. Voy a explicar la compilación del kernel parcheado para su uso en tiempo real en la distribución de Gnu/Linux Debian y las alternativas a no compilarlo: en Debian y Fedora 9 ó 10 (usando los repositorios CCRMA de la Universidad de Standford):

Primero se deben tener instalados los siguientes paquetes (puede ser que algunos ya estén instalados):

*make ; gcc ; binutils ; libc6-dev ; linux-libc-dev ; libncurses5 ; libncurses5-dev; patch

libqt3-mt-dev y libqt3-headers (si se quiere usar xconfig en vez de menuconfig)

DEBIAN LENNY

1- Descargando y preparando las fuentes (vamos a usar un kernel de la rama 2.6.26 para aprovechar el archivo .config del que ya viene instalado en debian Lenny)

Vamos a la carpeta de las fuentes:

# cd /usr/src/

Descargamos las fuentes del kernel:

# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.26.8.tar.gz

Descomprimimos las fuentes:

# tar xvzf linux-2.6.26.8.tar.gz

Y creamos un link simbólico para poder trabajar a través de /usr/src/linux:

# ln -s /usr/src/linux-2.6.26.8 /usr/src/linux

2- Aplicando el parche

-Descargamos el parche:

# wget http://www.kernel.org/pub/linux/kernel/projects/rt/patch-2.6.26.8-rt16.gz

-Lo descomprimimos:

# gunzip patch-2.6.26.8-rt16.gz

-Y lo instalamos:

# cd /usr/src/linux
# patch -p1 <../patch-2.6.26.8-rt16

3- Configurando y compilando el nuevo Kernel

-Copiamos el fichero antiguo de configuración del kernel que vamos a instalar:

# cp /boot/config-2.6.26-2-686 /usr/src/linux/.config

-Compilamos el menu para poder seleccionar las características del kernel:

# make menuconfig

-Aquí, modificamos las siguientes entradas:

General Setup > Local version: 230508rt (La fecha de la configuración, si usan otra fecha cambien todo los nombres a continuación ¿se entiende?)

Processor type and features > Preemption Mode: Real Time (Esto nos aparecerá si tenemos el parche instalado)

Processor type and features > Timer frequency: 1000 Hz (Útil para cuando trabajemos con Rosegarden)

Processor type and features > Processor Family: Pentium4 (Elegimos el tipo de microprocesador, según sea nuestro caso)

Además, podemos desactivar el OSS (Device Drivers > Sound) , ya que no se usa, o podemos activar los módulos de ALSA dedicados al USB-Audio (Device Drivers > Sound). Es muy importante recordar tildar las opciones del driver Alsa y el modelo del chip de nuestra placa, por ejemplo en el caso de las m-audio de la serie delta: ICE1712 [Envy24].
Hay muchas opciones para desactivar y optimizar el kernel pero depende absolutamente del hardware de la computadora de cada uno y el conocimiento que tengamos de él y de que conozcamos el nombre exacto del módulo que el kernel le asigna.
Finalmente salimos pulsando sobre Exit y guardamos el fichero aceptando la pregunta.

4- Compilar, esto puede durar unas cuantas horas (todo depende de la máquina).

# make && make modules && make modules install

5- Copiar cada cosa a sus lugar :

# cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.6.26.8-rt16230508rt


# cp /usr/src/linux/System.map /boot/System.map-2.6.26.8-rt16230508rt


# cp /usr/src/linux/.config /boot/config-2.6.26.8-rt16230508rt

6- Generar el initrd:

# mkinitramfs -o /boot/initrd.img-2.6.26.8-rt16230508rt 2.6.26.8-rt16230508rt

7- Editar el grub:

# nano /boot/grub/menu.lst (pueden usar mcedit en vez de nano si lo tienen instalado)

Y agregar las siguientes líneas para que el kernel inicie:

title         Debian GNU/Linux, kernel 2.6.26.8-rt16230508rt
root          (hd0,0)
kernel        /boot/vmlinuz-2.6.26.8-rt16230508rt root=/dev/hda1 ro quiet
initrd        /boot/initrd.img-2.6.26.8-rt16230508rt

Reiniciar y seleccionar el kernel real time cuando aparezca el menú del grub.

Nota: en la edición de /boot/grub/menu.lst en la línea “kernel” la unidad raíz puede ser sda1 en ves de hda1.

ALTERNATIVAS A NO COMPILAR

1-DEBIAN LENNY

En Debian se puede utilizar el kernel 2.6.26-2-686 que viene por defecto, ya que tiene muy buen rendimiento, solo nos puede llegar a molestar con el uso de Rosegarden que nos da un mensaje al iniciarlo.

2-DEBIAN LENNY

En Debian otra alternativa a no compilar el kernel es usar el kernel RT de los repositorios 64Studio testing: agregar la siguiente línea a /etc/apt/sources.list:

deb http://apt.64studio.com/64studio/testing/ 64studio main

luego:

#aptitude update
#aptitude install linux-image-2.6.21-1-multimedia-486

una vez instalado este kernel comentar odesactivar el repositorio de 64studio.

3-FEDORA 9 ó 10 con reposotorios planet CCRMA

En el caso de Fedora (La alternativa a no compilar el kernel es instalar el del repositorio CCRMA:

#rpm -Uvh http://ccrma.stanford.edu/planetccrma/mirror/fedora/linux/planetccrma/9/i386/planetccrma-repo-1.1-2.fc9.ccrma.noarch.rpm

(así agrego el repositorio, lo mismo para fedora 10 cambiando los 9 por 10)

#yum update

(así actualizo los repositorios)

#yum install planetccrma-core

(así instalo el kernel y se configura automáticamente el archivo de configuración /etc/security/limits.conf)

Luego se pueden instalar una a una las aplicaciones de audio que se requieran desde el repositorio CCRMA ó todas juntas con:

#yum install planetccrma-apps

En el caso que pulse-audio provocara algún problema con el Real Time o con Jack la solución es:

#yum erase pulseaudio

Espero que sirva, ¡Muchas gracias! Matías por el espacio:

PD: Añado unas modificaciones de esta explicación que hizo mi amigo Esteban Segreto, gracias por el copyleft!!!

Gabriel Nicolás González Ferreira.

, , , , , ,

  1. #1 by Tyto on 24 mayo 2009 - 15:32

    Gracias por compartir el “esfuerzo” de vivir en Libertad.
    Compartiré esta nota al igual que la página, con algunos amigos.
    Osvaldo

  2. #2 by Matias F. Gea on 26 mayo 2009 - 9:22

    Excelente artículo!
    Le agregué algunas tags y unas etiquetas de preformateo. Cualquier cosa avisame.

    Salu2 y espero que sigas escribiendo!

(No será publicado)