domingo, febrero 12, 2006

Compilar kernel al modo debian

Debian-Kernel-Compile-Howto (Kernel 2.6)

By falko Created 2004-12-27 18:34 Modificado y traducido por Luis Ángel Ortega Martín el 30/01/06

Como Compilar el kernel 2.6 en Debian

langel [punto] ortega [arroba] educa [punto] madrid [punto] org
En algunos casos puede ser que desees compilar tu propio kernel (núcleo) que satisface tus necesidades mejor que el kernel estándar que viene con tu distribución, aquí se describe cómo se hace esto en una máquina Debian (una descripción para Debian Sarge se puede encontrar aqui!). Observa que este tutorial es para el kernel 2.6 solamente! Un tutorial para el kernel 2.4 lo puedes encontrar aqui.

Enteraté que hay un cierto riesgo en hacerlo! Por ejemplo, podría suceder que su máquina no arranque correctamente después de que hayas instalado el nuevo kernel así que puede ser que tengas que arrancar desde un CD del rescate para reparar su sistema. ¡Quedas advertido! ¡Este documento no viene con garantía! ;-)
Primero logeate en tu maquina Debian como root. Comprueba que los tienes o instala los paquetes que te van a hacer falta para compilar el nuevo kernel:

apt-get install kernel-package ncurses-dev fakeroot wget bzip2

Vete a /usr/src:

cd /usr/src

Bajate el ultimo source kernel Linux (o el que necesites) desde

http://www.kernel.org/pub/linux/kernel/v2.6/:

wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.14.6.tar.bz2

Desempaquetal el sources kernel:

tar xvjf linux-2.6.14.6.tar.bz2

Es conveniente hacer un enlace al directorio donde va a estar el nuevo kernel

ln -s linux-2.6.14.6 linux

Y luego

cd linux-2.6.14.6/

Normalmente es una buena idea tomar la configuración que tenemos, de existir (la que trabaja!) ya un kernel 2.6, como punto de partida para la configuración de su nuevo núcleo. La configuración actual del kernel se guarda generalmente en un fichero, /boot, e.g. /boot/config-2.6.3. Cargaremos esta configuración y después haremos los cambios que deseamos. Si no tienes el archivo de los config de un kernel 2.6 this one éste puede ayudarte.

make mrproper

make menuconfig

La configuracion del tu kernel será leida y puedes navegarla a traves del menu y cambiarla según tus necesidades.

Aquí, si tenemos mas de 1 gb de memoria hay que seleccionar en

Processor Type and Features -> High memory support [4gb],

y añadir tu tarjeta de red al kernel (no como modulo) y las recomendaciones del final.

Luego selecciona Load an Alternate Configuration File e introduce la localización del fichero de configuración del fichero y entra la localización del archivo de la configuración de tu kernel actual (o upload mi kernel configuracion mi configuración del kernel de tu máquina y entra su path):

Luego ejecuta los siguientes comandos (fijate que el comando make dep no es necesario para el kernel 2.6):

make-kpkg clean
fakeroot make-kpkg --revision=luis.1 kernel_image

O mejor, en lugar de lo anterior

make-kpkg buildpackage -initrd -rev luis.1 kernel_image

Si la compilacion se para con un error, entonces ejecuta:

make clean

y reejecuta el comando anterior:

make menuconfig

que cambia la configuración del kernel cuando hay errores en la compilación.

Si no hay errores en la compilación, tardará un buen rato!, podrás encontrar el nuevo kernel como un paquete de Debian llamado kernel-image-2.6.14.6_luis.1_i386.deb en el directorio /usr/src. y también los paquetes .deb kernel-headers, kernel-source y kernel-doc con la revisión que hayamos puesto.

cd ../

Ahora tienes que instalar algunos paquetes que hacen falta para el kernel 2.6.

Primero comprueba que los tienes dpkg -l module-init-tools, nitrd-tools, procps y si no estan instalados agrega la línea siguiente a /etc/apt/sources.list:

deb http://www.backports.org/debian/ sarge module-init-tools initrd-tools procps

y ejecuta

apt-get update
apt-get install module-init-tools initrd-tools procps

Si te hacen la siguiente pregunta:

"If you really want to remove modutils type 'yes':"

responde yes.

Puede ser que también sea necesario actualizar paquetes como ike bind9, quota, etc. dependiendo de tu configuración. Si tienes problemas con tus paquetes existentes intenta conseguir el paquete apropiado en www.backports.org.

Instala tu nuevo nuevo kernel:

dpkg -i kernel-image-2.6.14.6_luis.1_i386.deb

dpkg -i kernel-headers-2.6.14.6_luis.1_i386.deb

dpkg -i kernel-doc-2.6.14.6_luis.1_i386.deb

Hay que comprobar que tenemos el fichero /boot/initrd.img-2.6.14.6 , si no crea un ramdisk del nuevo kernel (si no tu sistema no seguramente no arrancará y te dará un mensaje de kernel panic):

cd /boot/

mkinitrd -o /boot/initrd.img-2.6.14.6 2.6.14.6

Seguramente habra creado las entradas en lilo o grub para lo cual comprobaremos

cat /boot/grub/menu.lst

que tiene que tener las entradas nuevas con algo asi

title Debian GNU/Linux, kernel 2.6.14.6-386

root (hd0,0)

kernel /boot/vmlinuz-2.6.14.6-386 root=/dev/hdb1 ro

initrd /boot/initrd.img-2.6.14.6-386

savedefault

boot

title Debian GNU/Linux, kernel 2.6.14.6-386 (recovery mode)

root (hd0,0)

kernel /boot/vmlinuz-2.6.14.6-386 root=/dev/hdb1 ro single

initrd /boot/initrd.img-2.6.14.6-386

savedefault

boot

Con lo que hemos terminado casi.

En lilo editamos la parte de image=/vmlinuz del fichero /etc/lilo.conf y comprobamos que esta la la linea initrd=/boot/initrd.img-2.6.14.6 o la añadimos

# Boot up Linux by default.
# default=Linux image=/vmlinuz
label=Linux
read-only
initrd=/boot/initrd.img-2.6.14.6
# restricted
# alias=1

Ejecutamos

lilo

esto actualiza el boot loader y luego rebooteamos el ordenador:

shutdown -r now

y si todo esta bien, el ordenador arrancará con el nuevo kernel. Para comprobar

uname -a

que el kernel con el que he arrancado es el nuevo. Good luck (buena suerte, jeje)!

Update:

Esto es un extracto de un email que R (Chandra) Chandrasekhar (muchas gracias por ello!) que le han enviado al autor con respecto a la configuración del kernel en caso de que se utilicen memorias flash y tarjetas nVidia:

"1. Si vas a usar flash drives, deseleciona lo siguiente cuando estes en :

Block Devices -> Low Performance USB Block driver (BLK_DEV_UB)

Hay una clara explicación en http://linux.usc.edu/pipermail/usclug-chat/2004-December/000111.html

y en http://dev.gentoo.org/~dsd/gentoo-dev-sources/issues-current.htm#2.6.9-ub porqué esto es recomendable hasta el desarrollo adicional del desarrollo del módulo del ub.

Tuve que instalar (comprobar primero que no lo tenemos instalado, como antes dpkg -l paquete)

apt-get install udev hotplug

para usar el flash drive, y luego funciono estupendo!

2. Si tienes una tarjeta nVidia, deseleciona lo siguiente cuando estes en :

Graphics Support -> nVidia Riva support (FB_RIVA)

Kernel Hacking -> Use 4Kb for kernel stacks instead of 8Kb (4KSTACKS)

Processor Type and Features -> Local APIC support on uniprocessors (X86_UP_APIC)

Para instalar los drivers de nVidia, seguí el HOWTO de

http://home.comcast.net/~andrex/Debian-nVidia/index.html y compile los drivers desde los paquetes de Debian despues de aplicar el vmalloc_reserve.patch durante la formación del kernel.”


Bueno el método esta probado y funciona fenomenal.

Salu2

AverTV 777 pci tdt (dvb-t) en linux en Debian Sarge

Esta entrada es para explicar como se instala una AverTV 777 pci para ver la tdt (dvb-t) en linux, concretamente en Debian Sarge.

La verdad es que es sencillo, pero no hay documentación acerca de ella y encima se confunde con la de la 771, por lo que me costo un poco.
Agradecer a Jose Alberto Reguero por su ayuda.

Bueno, os cuento por si le interesa a alguien:

1. Actualice el kernel al 2.6.15.2 (última versión) y ademas aproveche para que me reconociera el segundo giga de memoria (tenia el 2.6.8.2-386 que viene con sarge).
2. Me baje los últimos drivers de http://linuxtv.org/hg/v4l-dvb (en la segunda linea, se pincha en tree, y otra vez en la segunda pincha en gz o en bz2. Lo copie a /home/luis y lo descomprimi, cambie a ese directorio y ejecute:
make
y
make install

Luego reinicie e hice
modprobe saa7134-dvb

Luego instale Kaffeine, cree la lista de canales de Madrid, de donde soy y fenomenal.
Luego con modconf agregue el modulo saa7134 que esta en drivers/media/video/ ya que si no tenia que cargar con modprobe el modulo cada arranque.


Salu2