Para empezar, Que es el kernel o nucleo?
Practicamente el Kernel es Linux, que es lo que se encarga de que todos los procesos que hacemos se ejecuten adecuadamente, por ejemplo el abrir un navegador, el reproducir un video, reconocer hardware, etc.
Existen dos tipos de kernel, el generico y el personalizado.
- El kernel generico es aquel que viene por defecto y que puede funcionar casi en cualquier equipo, contando con el soporte y controladores para la mayoria de los componentes que existan.
- El kernel personalizado es un kernel 100% optimizado para nuestra maquina. En este agregamos solo los modulos que necesitemos, es mas ligero y mas veloz, reconoce nuevos componentes y llega a tener mejoras en su codigo.
Visto lo anterior es mejor un kernel personalizado o compilado, asi que antes de empezar fijense en lo siguiente:
- Es recomendable hacer un respaldo de informacion.
- No me hago responsable por cualquier tipo de daño o error que llegase a sufrir alguna maquina.
- Los comandos empezados con # tienen que ser ejecutados como root.
- Puede o no haber versiones mas nuevas del kernel, la que yo use es la mas reciente hasta el dia que se publico este tutorial, asi que les recomiendo verificen cual es la version mas nueva con un:
sudo apt-cache search linux-source - Algunas de las configuraciones varian dependiendo al hardware, por eso es importante que tomen nota de sus componentes.
- Este tutorial esta basado en el manual hecho por Guillermo Valdez.
Empezamos instalando los siguientes paquetes:
# apt-get install kernel-package
# apt-get install build-essential
# apt-get install libncurses-dev
# apt-get install fakeroot
# apt-get install linux-source-2.6.24
Ya que hayamos instalado este ultimo nos ubicamos en el directorio y lo desempacamos.
# cd /usr/src
# tar xjf /usr/src/linux-source-2.6.24.tar.bz2
Ahora hacemos un enlace directo.
# ln -s linux-source-2.6.18 linux
Ahora nos vamos a ubicar en la carpeta linux y veremos nuestros componentes PCI con:
lspci
Ahora vemos los modulos con
lsmod
Terminado pasamos a la configuracion.
Configuracion del kernel bajo ncourses
# make menuconfig
La interfaz ncourses se usa asi:
- Use las flechas para navegar.
- Estando sobre una opción presione Y para incluirla dentro del kernel, N para excluirla o M para que sea un módulo. Las opciones marcadas con [*] serán incluídas en el kernel, las marcadas con <M> serán compiladas como módulos y las vacías no serán compiladas.
- Presione ? para mostrar la ayuda de la opcióniluminada.
- Presione ESC para bajar una rama o para salir si está en el menú raíz. Al salir le preguntará si quiere guardar los cambios.
Configuraciones Basicas.
Hacemos la configuracion para que cada vez que conectemos un medio externo se carge con modulo automaticamente:
Loadable module support —>
[*] Enable loadable module support
[*] Module unloading
[*] Forced module unloading
[*] Automatic kernel module loading
Si tienes mas o dos procesadores debes de seleccionar:
Processor type and features —>
[*] Symmetric multi-processing support
Si tenemos particiones con Ext2 o Ext3, seleccionamos:
File systems —>
<*> Second extended fs support
[*] Ext2 extended attributes
<*> Ext3 journalling file system support
[*] Ext3 extended attributes
Ahora configuramos para que los administradores de archivos muestren los archivos sin tener que estar refrescando.
File systems —>
[*] Inotify file change notification support
[*] Inotify support for userspace
Pseudo filesystems —>
— /proc file system support
[*] /proc/kcore support
[*] Virtual memory file system support (former shm fs)
Si deseamos pertenecer a una red debemos de seleccionar:
Networking —>
[*] Networking support
Networking options —>
<*> Packet socket
[*] Packet socket: mmapped IO
<*> Unix domain sockets
[*] TCP/IP networking
[*] Network packet filtering (replaces ipchains) —>
Core Netfilter Configuration —>
<*> Netfilter Xtables support (required for ip_tables)
<*> “limit” match support
<*> “mac” address match support
<*> “state” match support
IP: Netfilter Configuration —>
<*> Connection tracking (required for masq/NAT)
<*> FTP protocol support
<*> IP tables support (required for filtering/masq/NAT)
<*> Packet filtering
Ya terminamos con las configuraciones basicas.
Configuracion de Medios Extraibles (recomendada).
Device Drivers —>
Block devices —>
<*> Normal floppy disk support
<*> Loopback device support
<*> RAM disk support
Unidades Ata (ejemplo para Intel).
Device Drivers —>
ATA/ATAPI/MFM/RLL support —>
<*> ATA/ATAPI/MFM/RLL support
<*> Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support
<*> Include IDE/ATA-2 DISK support
<*> Include IDE/ATAPI CDROM support
<*> Include IDE/ATAPI FLOPPY support
<*> generic/default IDE chipset support
<*> Intel PIIXn chipsets support
Unidades Sata (ejemplo para intel)
Device Drivers —>
Serial ATA (prod) and Parallel ATA (experimen
<*> ATA device support
<*> Intel PIIX/ICH SATA support
Soporte SCSI, este es indispensable para unidades de CD/DVD y dispositivos via USB.
[*] legacy /proc/scsi/ support
{*} SCSI Device Support
<*> SCSI disk support
<*> SCSI CDROM support
<*> SCSI generic support
Dispositivos USB (casi obligatorio).
Device Drivers —>
USB support —>
<*> Support for Host-side USB
[*] USB device filesystem
<M> EHCI HCD (USB 2.0) support
[*] Full speed ISO transactions (EXPERIMENTAL)
[*] Root Hub Transaction Translators (EXPERIMENTAL)
<M> OHCI HCD support
<M> UHCI HCD (most Intel and VIA) support
<M> USB Printer support
<*> USB Mass Storage support
Tarjeta de red. Ejemplo Intel.
Intel (R) PRO/100+ support
Tarjeta de red inalambrica (WiFi), ejemplo para Intel Corporation PRO/Wireless LAN 2100:
<*> Intel Corporation PRO/Wireless LAN 2100 Network Connection
Tarjeta de Video, ejemplo para Ati Radeon.
Device Drivers —>
Graphics Support —>
<*> /dev/agpgart (AGP Support)
<M> ATI chipset support
Tarjeta de audio.
No encontre la manera correcta de configurar mi tarjeta, pero ustedes pueden configurar la suya viendo los diferentes modelos que se listan.
Ahora ya terminamos con configurar nuestro kernel, revisamos y guardamos.
Compilacion y Instalacion.
Eliminamos cualquier compilacion hecha anteriormente:
# make-kpkg clean
Y ahora toca crear el kernel, lo podemos hacer con initrd o sin initrd, yo lo inclui:
fakeroot make-kpkg –initrd \–revision=personal.1.0 kernel_image
Ahora descansamos y esperamos a que termine de compilar.
Cuando termine de compilar, tendremos nuestro kernel en un archivo .deb listo para instalar:
# dpkg -i linux-image-2.6.24.3_personal.1.0_i386.deb
Esto nos realizara lo siguiente:
- Instalara el nuevo kernel con o sin initrd el directorio /boot
- Copiara los modulos a /lib/modules/version-del-kernel
- Lo agregara al Grub o Lilo para poder seleccionarlo al momento de arrancar.
Una vez que hayamos terminado, lo unico que nos falta es reiniciar y probar al primer arranque. Si al primer arranque no funciona bien recuerda que:
- Las proabibilades de que funcione a la perfeccion la 1era vez, son pocas.
- Si no funciona bien, tendras que volver a configurar, compilar e instalar.
- Si tienes un fallo, te recomiendo visites foros, o hagas una busqueda en internet para encontrar solucion a tu problema.
Si te funciona bien revisa:
- La bitacora con un dmesg | more en busca de mensajes de error.
- Observa que los modulos cargados sean los mismos que vimos anteriormente.
- Prueba video, sonido, mouse, teclado, y los principales dispositivos.
- Prueba medios que no siempre esten conectados a la computadora. (Memorias, Unidades Externas)
Eso es todo, a disfrutar de nuestro kernel compilado.










2 Comentarios
Hola
solo quiero sennalar que te falto poner el cd linux despues de hacer el link con ln y que dicho link tendria que decir 2.6.24
Salu2
@ Mario Ferreira:
Cierto, gracias por la observacion y el comentario.
4 Trackbacks
[...] Rolo: [...]
[...] Links de interés: – Instalar Ubuntu 8.04 Hardy Heron – Documentación oficial de Ubuntu – Installation (en ingles) – El nuevo sistema de archivos ext4 frente a ext3 – Qué es la SWAP? – Como compilar el kernel. [...]
[...] compilarlo a la manera clásica estándard para toda distribución de GNU/Linux. Ahora veremos cómo hacerlo a la manera Debian/ubuntu. (…) You can follow any responses to this entry through the RSS 2.0 feed. You can leave a [...]
[...] Elegimos lo que toque y nos plazca pero intentando saber qué es cada cosa! En este enlace explican un poco como configurar algunos ejemplos concretos de hardware (a menudo configurados por [...]