lunes, 21 de diciembre de 2009

Compilar kernel para Asterisk + Instalacion en Debian Lenny

Bueno hace días que no me tiempo de postear nada pero creo que este Post le va a servir a muchos como me sirvió a mi en mis pruebas, al instalar

PASOS DE INSTALACION

Instalar librerias base

apt-get install kernel-package libncurses5-dev fakeroot wget bzip2 build-essential

Descargar kernel de linux

cd /usr/src

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

tar xfv linux-2.6.26.8.tar.gz

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

Compilar kernel

make clean && make mrproper

"make mrproper se usar para limpiar los fuentes del kernel"

cp /boot/config-`uname -r` ./.config

make menuconfig

Ahora en la configuración del kernel seleccionamos:

Processor type and features >> [*]IRQ balancing ---> opcion importante para el balanceo de IRQ's de tarjetas digium
Processor type and features >> Timer frequency = 1000 Hz --> por default viene lo minimo 100 Hz
Processor type and features >> [*]High Resolution Timer Option
Processor type and features >> [*]HPET Timer Support
Device Drivers >> Character Devices >> [*]Enchanced Real Time Clock Support
Library Routines >> [*]CONFIG_CRC_CCITT


Terminada la configuración del kernel lo compilaremos. Debido a que lo estamos haciendo a la Debian way es necesario que tengamos instalado un paquete llamado kernel-package, el cual suministrará las herramientas necesarias para poder compilar y generar el paquete con nuestro kernel, para instalarla: aptitude install kernel-package. Antes de comenzar la compilación debemos estar en el directorio donde se encuentra el código fuente del kernel y luego ejecutar lo siguiente:

“PRIMERO se necesitará hacer un "make-kpkg clean" si desea recompilar el kernel usando la opción de revisión”

make-kpkg clean

Es importante realizar un cambio primero en la configuración de la imagen antes de realizar los .deb del kernel, sino nos dará un error al crear los paquetes, seguimos los siguientes pasos:

cd /usr/src/linux
vim Documentation/lguest/Makefile




Cambiamos:
all: lguest
Por:
all:


Sino lo hacen así les tirará un error como:

make[1]: Leaving directory `/usr/src/linux-2.6.31.6'
/usr/bin/make  EXTRAVERSION=.6-ast01-lw  ARCH=i386 \
-C Documentation/lguest
make[1]: Entering directory `/usr/src/linux-2.6.31.6/Documentation/lguest'
cc -m32 -Wall -Wmissing-declarations -Wmissing-prototypes -O3 -I../../include -I../../arch/x86/include -U_FORTIFY_SOURCE    lguest.c   -o lguest
lguest.c:21:25: error: sys/eventfd.h: No such file or directory
lguest.c:37:18: error: zlib.h: No such file or directory
lguest.c: In function 'create_thread':
lguest.c:1021: warning: implicit declaration of function 'eventfd'
make[1]: *** [lguest] Error 1
make[1]: Leaving directory `/usr/src/linux-2.6.31.6/Documentation/lguest'
make: *** [debian/stamp/build/kernel] Error 2

make-kpkg --initrd kernel_image kernel_headers

Los que hayan compilado un kernel de Linux este comando equivale a: make dep, make clean, make bzImage y make modules

La opción --initrd crea una imagen initrd en el paquete que se guardará en /boot cuando instalemos el kernel (recordar que solo estamos compilando y empaquetando, no instalando).

El comando anterior creará dos paquetes con extensión .deb en el directorio superior. Un paquete será el kernel y el otro los kernel-headers.

Instalación de paquetes generados:

dpkg -i *.deb

Y reiniciamos el servidor, veremos la nueva versión de imagen :D

Instalación de Asterisk

Instalación de dependencias:

cd /usr/src/

aptitude install linux-headers-`uname -r` bison ncurses-dev libssl-dev zlib1g-dev initrd-tools cvs procps  build-essential libnewt-dev libusb-dev libmysqlclient15-dev make sox libsox-fmt-gsm libsox-fmt-mp3 flex fail2ban subversion libiksemel-dev libcurl3-dev libvorbis-dev libspeex-dev flex xsltproc libxml2-dev bison g++ libncurses5-dev libnewt-dev libusb-dev subversion git-core

En esta ocasión voy a instalar un Asterisk estable que han tomado unos españoles se trata del

Asterisk-ES-rsp, en su página hallarán toda la información que necesiten saber acerca de este gran proyecto, entre sus ventajas es que ya trae por defecto muchos parches para usar octqe y usa por defecto oslec de manera maravillosa cabe recalcar :), porque usar esta versión de Asterisk mmm pues la ultima versión de dahdi y de asterisk la 1.4.27.1 me estaba reventando mucho, para tarjetas tdm me daba problemas de colgado al minuto casi siempre, en Digium me dijeron tienes que hace un tonezone para tu país y yo mmm, intente hacerlos pero no me sirvió, instale esta versión los problemas de eco se fueron, y la estabilidad volvió xD

En el siguiente link están todos los pasos de descarga, compilación e instalación de esta gran versión:

ASTERISK-ES-RSP



Para finalizar quiero dejar un parche que tuve que aplicar para un error al usar la opcion L(limit) en la aplicación dial, me daba un loop terrible


ERROR[5003]: channel.c:2043 __ast_read: ast_read() called with no recorded file descriptor


En https://issues.asterisk.org/view.php?id=14723 esta la solución, solo aplique el parche 14723_1-4-24.patch  por si quieren probar wget 'https://issues.asterisk.org/file_download.php?file_id=22202&type=bug' -O - | patch -p0
y pues parece que se soluciono el problema porque ya no se me quedan pegadas las llamadas y no se genera ese mundo de log





No hay comentarios.:

Publicar un comentario