Está en la página 1de 9

Compilando el ncleo

Academia Almi
COMPILANDO EL NUCLEO

1. INTRODUCCION
El kernel o ncleo de linux se podra definir como el corazn de este sistema operativo.
Es el encargado de que el software
y el hardware del ordenador puedan trabajar juntos.
Las funciones ms importantes del kernel son:
- Administracin de la memoria, para todos los programas en ejecucin.
- Administracin del tiempo de procesador, que estos programas en ejecucin utilizan.
- Es el encargado de que podamos acceder a los perifricos/elementos de nuestro
ordenador de una manera comoda.
Otra cosa a tener en cuenta es que existen dos versiones del kernel:
- Versin de produccin: La versin de produccin, es la versin estable hasta el
momento. Esta versin es el resultado final de las versiones de desarrollo o
experimentales.
- Versin de desarrollo: Esta versin es experimental y es la que utilizan los
desarrolladores para programar, comprobar y verificar nuevas caractersticas,
correcciones, etc. Estos ncleos suelen ser inestables y no se deberian usar.
Pero como saber que version es? Muy facil, por los numeros: (Teniendo en cuenta este
orden: XX.YY.ZZ)
- XX: Indica la serie principal del ncleo. Hasta el momento solo existen la 1 y 2. Este
numero cambia cuando la manera de funcionamiento del ncleo ha sufrido un cambio
muy importante.
- YY: Indica si la versin es de desarrollo o de produccin. Un nmero impar, significa
que es de desarrollo, uno par, que es de produccin.
- ZZ: Indica nuevas versiones dentro de una versin, en las que lo unico que se ha
modificado, son fallos de programacin.
2. BAJARSE EL NUCLEO
El ncleo se puede bajar de un gran nmero de servidores en internet. El servidor
principal es http://www.kernel.org/ y la pgina de servidores espejos es
http://www.kernel.org/mirrors/.
Para bajar el kernel 2.6.4. Tenemos dos opciones:
- http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.4.tar.gz --> 41MB
- http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.4.tar.bz2 --> 33MB
En ambos casos lo guardaremos en /usr/src.
Para descomprimirlos lo haremos de la siguiente manera.

Pagina 1 de 9

Compilando el ncleo

Academia Almi

Para el 1ero -> tar xvfz linux-2.6.4.tar.gz


Para el 2o -> bzcat linux-2.6.4.tar.bz2 | tar xv
Ahora ya tendremos la carpeta linux-2.6.4. debemos realizar un enlace simbolico (linux
-> linux-2.6.4). (ln -s linux-2.6.4 linux).
3. CONFIGURACION.
Aqui basicamente configuraremos los controladores para nuestro PC y algunas opciones
del kernel.
Mirar exhaustivamente todos los componentes del PC y tenerlos identificados.
Para empezar la configuracion hay 2 opciones:
- make config
- make menuconfig (en consola mediante ncurses)
- make xconfig (mediante las X)
Para la segunda necesitaras tener instalado las libncurses5-dev; para la tercera, necesitas
tener las X corriendo y la librera libqt4-dev.
Otras dependencias como gcc,g++,make, build-essential, kernel-package,
NOTA: Recomiendo que para los mas novatos, utiliceis el make defconfig, os
configurara el kernel con las opciones por defecto. Luego lanzais un make menuconfig
o xconfig y configurais los controladores necesarios para vuestros componentes.Las
opciones del nuevo kernel se guardan en .config
Se pueden crear dos tipos de configuracin:
-"Built-In": Todo compilado directamente en el kernel. El kernel es ms grande. Esta
opcin es perfecta para mquinas en las
que se necesite un seguridad mxima, ya que al no cargar mdulos externos es difcil
que te cuelen un mdulo troyano.
Esto sin embargo slo es til en servidores, enrutadores y ese tipo de mquinas.
-Modular: Un buen montn de "drivers" y funciones del kernel se compilan aparte como
mdulos. Estos se cargan cada vez que se necesiten y si no se quedan tranquilitos y sin
molestar, liberando memoria cuando se descargan. El kernel es ms pequeo y si
metemos por ejemplo hardware nuevo no har falta recompilar si el mdulo existe ya.
Algunas opciones en general:
-Code Maturity Level OptionsActiva el cdigo de desarrollo del kernel. Puedes usarlo sin peligro y activa algunas
opciones interesantes.
-Loadble Module SupportActiva el soporte para mdulos. Di (Y) a todas las opciones.

Pagina 2 de 9

Compilando el ncleo

Academia Almi

-Processor Type and FeaturesEsta opcin es la ms importante, si no eliges correctamente tu CPU el kernel ni
siquiera se molestar en arrancar. Por si las moscas puedes usar la opcin 386 que
funciona siempre.
-General Setup*Support for paging of anonymous memory (swap): Soporte para SWAP. (Y)
*System V IPC: Sistema de comunicacion entre procesos. (Y)
*BSD Process Accounting: guarda p.ej., el cdigo de error cuando los procesos
terminan. (N)
*Sysctl support: permite a los programas modificar ciertas opciones del ncleo sin tener
que recompilar el ncleo o reniciar el sistema. (Y)
*Support for hot-pluggable devices: Te permite conectar dispositivos mientras el
ordenador esta encendido sin necesidad de reiniciar. (Y)
*Kernel .config support: Activa todos los contenidos del archivo .config del kernel. (N)
*Remove kernel features (for embedded systems): Permite borrar ciertas opciones base
del kernel (N)
-Power Management OptionsAqui puedes dar soporte a las opciones especiales de encendido y apagado de tu placa
base.
(ej: Suspender sistema)
-Bus OptionsAqui puedes activar opciones como el soporte PCI, soporte para ISA, hot-plug para
PCI...
-Executable Files*Kernel support for ELF binaries: Es un formato utilizado por librerias y ejecutables de
distintas plataformas y sistemas operativos. (Y)
*Kernel support for a.out and ECOFF binaries: Solo utilizado en las primeras versiones
de UNIX.
Util si quieres utilizar programas de esa "epoca" (N)
*Kernel support for MISC binaries: Util si ejecutas programas que necesiten un
interprete como python, java... o si quieres ejecutar algun .EXE con emuladores.
-Device DriversAqui has de escojer todos los controladores necesarios para tu hardware. -Filesystems*Second extended fs support: Este es el sistema de archivos de Linux (Y)
*Ext3 journalling file system support: Es como el sistema ext2 pero mucho mas
robusta ante cortes de luz o apagado brusco del equipo. (Y)

Pagina 3 de 9

Compilando el ncleo

Academia Almi

*Kernel Automounter version 4 Support: Permite el automontado de sistemas de


ficheros. (Y)
*ISO9660 CDROM Filesystem support: Para montar los sistemas de ficheros de los
CDRoms. (Y)
*Microsoft Joliet CDROM extensions: Para quemar los CDRoms en formato
windows. (Y)
*UDF file system support: Para los nuevos sistemas de ficheros de algunos DVDs y
CDRoms. (Y)
*DOS/FAT/NT Filesystems: Aqui tienes que activar el soporte para montar tus
particiones de windows.
*/proc file system support: Te da informacion a tiempo real del estado de tu sistema.
(Y)
*NFS file system support: Permite montar ficheros de otro sistema UNIX en tu red
local. (Y)
*NFS server support: Permite compartir ficheros con otras maquinas que soporten
NFS. (Y)
*SMB file system support: Permite montar los recursos compartidos de una maquina
windows. (Y)
-Profiling support*Profiling support: Sirve para identificar cuellos de botella o aumentar los lmites de
rendimiento del sistema. (Y)
*OProfile system profiling: Complementa al anterior. (Y)
-Kernel hacking*Kernel debugging: Permite detectar los problemas del kernel. Util si desarrollas
drivers. (N)
*Sleep-inside-spinlock checking:
*Compile the kernel with frame pointers: Te da mas informacion a la hora de
debuggear el kernel. (N)
-Security Options*Enable different security models: Te permite escojer diferentes modulos de
seguridad. (N)
-Cryptographic options*Cryptographic API: Da soporte al Cryptographic API.

Pagina 4 de 9

Compilando el ncleo

Academia Almi

4. COMPILANDO.
Los comandos necesarios para compilar el kernel.
-make clean
Esto borrara todos los archivos ".o". Esto normalmente se utiliza despus de una
compilacin fallida.
-make dep
Este comando slo se utiliza para kernels de serie inferior a la 2.6.x, as que aqu
olvidaros(construye dependencias).
-make bzImage
Esto nos compilar el Kernel. En caso de error te pondr algo parecido a ***[make]
Error 1 (o otro nmero).
Sino te sale eso, ya tienes tu kernel compilado.
-make modules
Con esto compilaras los modulos que escojiste en la configuracin. Si alguno te da error
es que no se puede compilar como modulo. En ese caso, vuelves a lanzar un make
menuconfig o xconfig y lo cambias. Luego vuelves a repetir estos pasos.
-make modules_install
Como se puede deducir esto te instalara los modulos.
5. CONFIGURANDO EL ARRANQUE.
Primero de todo copiaremos nuestro kernel (el bzImage) en la carpeta /boot.
# cp ./arch/i386/boot/bzImage /boot/bzImage-2.6.4
Ahora copiaremos el System.map
# cp System.map /boot/System.map-2.6.4
Ahora ya lo tenemos todo preparado, solo falta configurar el gestor de arranque:
(estos pasos no a veces no hara falta realizarlos ya que ahora lo suele hacer el modules
install , de todas formas nos fijamos en /boot aver si tenemos el kernel y el sytem.map
copiados, y si no lo hacemos a mano.
Otra forma de compilar el nucleo seria:
make
make install
make modules_install
update-initramfs c k 2.6.version
update-grub
(aade el kernel automaticamente al grub)

Pagina 5 de 9

Compilando el ncleo

Academia Almi

LILO
Para los que tengan lilo, teneis que modificar el /etc/lilo.conf y aadir:
image=/boot/bzImage-2.6.4
label="Linux-2.6.4"
root=/dev/hda1
#Tu particin
Ahora ejecutamos lilo:
# lilo
GRUB
Edita /boot/grub/menu.lst y aade:
title Linux 2.6.4
root (hd0,0)
#Cambiar segun tu paticion
kernel /boot/bzImage-2.6.4 root=/dev/hda1
#Cambiar segun tu paticion
savedefault
boot
GRUB2
Ejecutar startupmanager y el nuevo kernel lo aadir a la slista de arranque

Initial ramdisk
Es un sistema de ficheros temporal usado en el proceso de arranque podemos construir
dos modelos distintos initrd o initramfs, ambos pueden ser usados sin ningn problema.
Una imagen de Initrd.img simplemente es una imagen de los modulos del nuevo kernel,
por eso lo hacemos en "/lib/modules/2.6.x.x" porque alli estan los modulos
mkinitrd -o nombre_imagen version_kernel
por ej:
mkinitrd -o /boot/initrd.img-2.6.30 /lib/modules/2.6.30
mkinitrd -o /boot/initrd.img-2.6.30 2.6.30
tambin podemos usar
initramfs k o initrd.img-2.6.30 2.6.30
initramfs k o initramfs-2.6.30 2.6.30
Pero si no queres hacerlo y ya pusiste como parte del kernel los fs tambien deberas
poner como parte del kernel ( y no como modulo) el soporte para discos ide (si usas ide)
o scsi( en el caso de que tu controladora sea scsi) y evitamos el initrd

Pagina 6 de 9

Compilando el ncleo

Academia Almi

Mdulos del kernel


El kernel de Linux tiene un diseo modular. En el momento del arranque, tan slo se
carga un mnimo de kernel residente en la memoria. En lo sucesivo, siempre que un
usuario solicite una caracterstica que no est presente en el kernel residente, se cargar
un mdulo de kernel de forma dinmica en su memoria. Tras un periodo especfico de
inactividad, el mdulo ser borrado de la memoria.
El mecanismo que soporta la carga dinmica de mdulos es un thread de kernel llamado
kmod. No se cargan los mdulos a menos que stos sean necesarios. Cuando un kernel
solicita un mdulo, el mdulo se carga junto a todas sus dependencias de mdulo.
Red Hat Linux tambin incluye una tarea cron que elimina todos los mdulos que no se
han usado cada diez minutos. La tarea cron est ubicada en el fichero /etc/cron.d/kmod.
Al instalar Red Hat Linux, el hardware de su sistema se somete a un chequeo y usted
aporta informacin sobre la forma en que se usar el sistema y qu programas deberan
cargarse. En base a este chequeo y a su informacin, el programa de instalacin decide
qu mdulos necesita para cargarse al arrancar el sistema. El programa de instalacin
configura el mecanismo de carga dinmica para trabajar de forma transparente. Si
construye su propio kernel personalizado, puede tomar todas estas decisiones por s
mismo.
Si aade hardware nuevo tras la instalacin y ste requiere un mdulo de kernel, es
necesario que configure el mecanismo de carga dinmico. Kudzu detecta habitualmente
hardware nuevo. Tambin puede aadir este controlador modificando el fichero de
configuracin del mdulo, /etc/modules.conf.
Por ejemplo, si su sitema inclua un modelo de adaptador de red SMC EtherPower 10
PCI en el momento de la instalacin, el fichero de configuracin del mdulo contar
con la siguiente lnea:
alias eth0 modelo
Tras la instalacin, si instala un segundo adaptador de red en su sistema, deber aadir
la siguiente lnea a /etc/modules.conf:
alias eth1 modelo
Consulte el Manual oficial de referencia de Red Hat Linux para una lista alfabtica de
mdulos de kernel y hardware soportado por los mdulos.

Pagina 7 de 9

Compilando el ncleo

Academia Almi

Utilidades del mdulo del kernel


Puede utilizar un grupo de comandos para listar, cargar o descargar los mdulos del
kernel. Estos comandos son tiles si quiere probar mdulo diferentes o ver si un mdulo
se ha cargado con xito.
El comando /sbin/lsmod visualiza una lista de mdulos cargados en la actualidad.
Ejemplo 24-1. Example lsmod output
Module
sr_mod
mga
agpgart
nfs
lockd
sunrpc
autofs
3c59x
ipchains
ide-scsi
scsi_mod
ide-cd
cdrom
usb-uhci
usbcore

Size Used by
15264 0 (autoclean)
95984 1
23392 3
79008 1 (autoclean)
52464 1 (autoclean) [nfs]
61328 1 (autoclean) [nfs lockd]
11264 4 (autoclean)
25344 1 (autoclean)
38976 0 (unused)
8352 0
95104 2 [sr_mod ide-scsi]
26848 0
27232 0 [sr_mod ide-cd]
20720 0 (unused)
49664 1 [usb-uhci]

lsmod muestra el tamao, el recuento de usos y los mdulos de referencia para cada
mdulo cargado en la actualidad.
Para cargar un mdulo de un kernel, puede utilizar el comando /sbin/insmod seguido del
nombre del mdulo del kernel. insmod intentar cargar el mdulo desde los
subdirectorios /lib/modules/<kernel-version>/kernel/drivers, por defecto. Existe un
subdirectorio para cada tipo de mdulo, como por ejemplo el subdirectorio net para los
controladores de la interfaz de red. Algunos mdulos de kernel poseen dependencias del
mdulo (otros mdulos deben cargarse para poder cargar). Para resolver estas
dependencias, puede cargar las dependencias del mdulo y a continuacin cargar el
mdulo que desea o podra usar el comando /sbin/modprobe seguido del nombre del
mdulo para cargar el mdulo con sus dependencias.
Por ejemplo, el comando
/sbin/modprobe tulip
carga el mdulo de interfaz de red tulip.
Para descargar los mdulos del kernel, utilice el comando /sbin/rmmod seguido del
nombre del mdulo. La utilidad rmmod tan slo descargar los mdulos que no estn en
uso y que no son una dependencia de los otros mdulos en uso.
Pagina 8 de 9

Compilando el ncleo

Academia Almi

Por ejemplo, el comando


/sbin/rmmod tulip
descarga el mdulo de la interfaz de red tulip.
Otra utilidad del mdulo del kernel vlida es modinfo. Puede usar el comando
/sbin/modinfo para visualizar informacin sobre un mdulo del kernel. La sintaxis
general es:
/sbin/modinfo [options] <module>
Las opciones incluyen -d que muestra un descripcin breve del mdulo y -p que lista los
parmetros que soporta el mdulo. Para ver una lista completa de opciones, remtase a
la pgina del manual de modinfo (man modinfo).
Ficheros de configuracion:
/etc/modprobe.conf establece opciones para los modulos
/lib/modules/2.x.x/modules.dep generado por depmod, establece dependencias entre
modulos
/etc/modules listado de modulos que se cargan al arrancar

Pagina 9 de 9