Tutorial para la Compilación de Kernel [Archivo] - InfoChaos Foros

PDA

Ver la Versión Completa : Tutorial para la Compilación de Kernel


CCorderoR
22/06/03, 23:09:49
Buenas Noches:

He escrito un tutorial sobre el kernel que espero pueda ayudar a algunos usuarios con este sistema operativo:

En este pequeño tutorial quiero mostrar como compilar un nuevo kernel en nuestra maquina Linux, enseñando a la vez pequeños trucos que he ido aprendido a lo largo del tiempo que he dedicado a ello.

Si tenéis cualquier duda preguntarla, así todos aprenderemos algo nuevo. Durante todo el proceso estaré usando un P3 500Mhz con Debian Woody en sus entrañas.

Nuestro primer paso será la descarga del kernel, vamos a compilar la última versión disponible, la 2.4.21.

Utilizando “WGET”, y desde el directorio /usr/src, la bajaremos con la siguiente orden:
wget http://www.kernel.org/pub/linux/kernel/v2....-2.4.21.tar.bz2 (http://www.kernel.org/pub/linux/kernel/v2.4/linux-2.4.21.tar.bz2)

La descomprimimos: tar jxvf linux-2.4.21.tar.bz2 y creamos un enlace simbólico que nos ayude: ln -s linux-2.4.21 linux (si ya hay un directorio linux, lo borraremos).

http://www.infochaos.com/tutoriales/linux/kernel/imagen_descarga.jpg

Una vez dentro del directorio, tenemos tres formas de seleccionar la compilación del kernel:

-make config (texto, pregunta tras pregunta)
-make menuconfig (en consola, pero de forma grafica a través de ncurses)
-make xconfig (utilizando X11)

En este tutorial utilizaré “menuconfig” por ser la que, personalmente, más me gusta.

http://www.infochaos.com/tutoriales/linux/kernel/imagen_menuconfig.jpg

En un primer vistazo a la pantalla principal podemos ver la versión del kernel arriba (en este caso se ve 2.4.21, “MAJE” es un añadido que personaliza el kernel y que más tarde os enseñaré a poner). Se ven las opciones principales en las cuales habrá que entrar para configurar el kernel.

En este momento voy a intentar ver globalmente las opciones de configuración, sería imposible deciros que opciones tenéis que seleccionar, pues depende de cada equipo y de cada configuración.

Antes de empezar con la configuración de las opciones, hay que distinguir las distintas posibilidades para cada opción del modulo:
-No seleccionado (obvio)
-Seleccionado (incluido en el propio kernel, cargado en cada arranque)
-Modulo (se puede cargar y descargar según las necesidades del usuario)

Mi recomendación es que al compilar el modulo, se incluyan en el kernel las opciones básicas y se ponga como modulo todo lo que sea posible (siempre que se tenga la opción M de modulo), de esa forma se crea un kernel modular y muy versátil.

Ahora listaré las opciones más interesantes, aunque personalmente os invito a probar todas las opciones, siempre que guardéis copia del kernel antiguo, no tendréis problemas.

Code maturity level options ---> No lo recomiendo si no quereís probar drivers “en prueba”, puede crear problemas de estabilidad.

Loadable module support ---> Siempre activado, permite la carga de modulos

Processor type and features --->En esta opción podeís seleccionar el tipo de procesador que teneís, es importante para que el kernel funcione correctamente.

General setup ---> Funciones hardware, se refieren especialmente a opciones de placa madre (se activa el soporte PCMCIA en los portatiles)

Memory Technology Devices (MTD) ---> No es normal tenerlo activado

Parallel port support ---> Soporte del puerto paralelo (impresora)

Plug and Play configuration ---> Soporte Plug and Play, normalmente activado

Block devices ---> Se suele dejar por defecto, activa el soporte de disquetera

Multi-device support (RAID and LVM) ---> No suele ser normal

Networking options ---> Activación de soporte de red, firewall entre otras opciones.

Telephony Support ---> No suele ser normal

ATA/IDE/MFM/RLL support ---> Soporte IDE, suele dejarse por defecto (si se tiene CD-RW hay activar la opción de emulación SCSI)

SCSI support ---> Soporte SCSI, dependiendo de la configuración del equipo.

Fusion MPT device support ---> No suele ser normal

IEEE 1394 (FireWire) support (EXPERIMENTAL) ---> Soporte FireWare

I2O device support ---> No suele ser normal

Network device support ---> Selección de Driver de la tarjeta de Red, en caso de disponer de ella

Amateur Radio support ---> No suele ser normal

IrDA (infrared) support ---> Soporte de Infrarrojos

ISDN subsystem ---> Soporte RDSI

Old CD-ROM drivers (not SCSI, not IDE) ---> No suele ser normal

Input core support ---> Control de dispositivos USB, por ejemplo teclados y ratones

Character devices ---> Sistema de Caracteres, suele dejarse por defecto

Multimedia devices ---> Si se tiene tarjeta de televisión/radio, es una opción que se tiene que activar (soporte overlay)

File systems ---> Sistemas de Ficheros soportados, suele ser recomendable compilar la mayoria como modulos (de forma personal uso ext3, así que lo incluyo en el kernel)

Console drivers ---> Se pueden activar distintas opciones para la consola, yo lo dejo por defecto

Sound ---> Opciones para tarjetas de sonido

USB support ---> Soporte USB, en equipos modernos es indispensable

Bluetooth support ---> Soporte Bluetooth

Kernel hacking ---> No lo recomiendo, se activa Debug, solo para desarrolladores

Library routines ---> Opciones de compresión, realmente no muy documentadas hasta el momento.



En este momento salimos, salvamos las opciones, y ya tenemos todo listo para compilar nuestro nuevo kernel.

Antes de empezar, me gustaría comentaros como podéis “personalizar” vuestro kernel para modificar la versión o añadir un pequeño texto al mismo:

En el directorio /usr/src/linux encontrareis un fichero que tendréis que editar con vuestro editor preferido (pico, nano, joe, vi…):

VERSION = 2
PATCHLEVEL = 4
SUBLEVEL = 21
EXTRAVERSION = MAJE

Como podréis ver, el “extraversión” os permitirá esto.

Bien, empecemos a compilar el kernel, la primera opción será “make dep”, siguiente a ese tendréis que escribir será “make clean” y “make bzImage”. Para compilar e instalar los módulos tendréis que escribir “make modules” y “make modules_install”.
De forma personal, recomiendo escribir la siguiente cadena (siempre como root):
make dep && make clean && make bzImage && make modules && make modules_install
Sabiendo que el kernel tarda en compilar, podréis iros a tomar un café o coca-cola mientras se realiza el proceso.

Una vez terminado, solo queda un paso dentro de la carpeta del kernel. En la mayoría de los tutoriales comentarían que el paso es “make install”, sin embargo, esta opción instala el kernel en / (directorio root) y muchos de nosotros lo tenemos por ejemplo en /boot. El último truco que comentaré permitirá elegir la carpeta y de esa forma, hacer más rápido y eficaz el proceso. Volvéis a editar Makefile dentro de /usr/src/linux y os buscáis la línea 74 donde veréis:

# export INSTALL_PATH=/boot

Tendréis que quitar el “#” y escribir la carpeta correcta, después de salvar ya podréis hacer “make install”.

Por último tendréis que editar el fichero de configuración de vuestro programa boot (ej: lilo o grub), aquí os copio la configuración de “lilo” para este ultimo kernel:

image=/boot/vmlinuz-2.4.21MAJE
label=Linux
read-only

Una vez rearrancado el pc, solo tendréis que escribir “depmod –a” y ya tendréis vuestro kernel actualizado y personalizado.

Este tutorial puede ser distribuído siempre que se copie textualmente e integro y se cite el autor y el website de origen, www.infochaos.com.

Espero que os sirva para aprender un poco más acerca de las “entrañas” de linux :)

Salu2,
CCorderoR

Klian
24/06/03, 18:16:19
Muchas gracias por el tuto Ccorderor, está bien saber como hacerlo bien para no cargarnos nada...

desgraciado
20/08/03, 15:46:09
Bueno, el tutorial esta bien, me he bajado el nuevo kernel de la mandrake 9.1 el 2.4.21-0.25mdk, el caso es que segui tu tutorial al pie de la letra ya que nunca habia hecho esto.

Todo fue bien hasta que reinicie, escogi en el boot de arranque el nuevo kernel y bueno, failed a tutiplen, pero arrancó. Entre como root porque con el usuario que tenia no me dejaba. No me monto ni las particiones ni na de na, intento montarlas manualmente y tampoco. No funciona la tele, na de na. Supongo que sera algo en la configuracion anterior a la compilacion del kernel, no hay forma de actualizar el kernel y que configure el como cuando instales o que puedas mantener la configuracion del kernel anterior en el nuevo?, no se... toi confundio. Ademas eso que poner de depmod -a despues de arrancar me da un error y no hace nada.

Haber si me das una pista, volvi a mi kernel antiguo, :-D. A falta de pan,,, buenas son tostadas no? un saludo

koro
20/08/03, 16:29:12
Todo fue bien hasta que reinicie, escogi en el boot de arranque el nuevo kernel y bueno, failed a tutiplen, pero arrancó. Entre como root porque con el usuario que tenia no me dejaba. No me monto ni las particiones ni na de na, intento montarlas manualmente y tampoco. No funciona la tele, na de na. Supongo que sera algo en la configuracion anterior a la compilacion del kernel, no hay forma de actualizar el kernel y que configure el como cuando instales o que puedas mantener la configuracion del kernel anterior en el nuevo?, no se... toi confundio. Ademas eso que poner de depmod -a despues de arrancar me da un error y no hace nada.

Tienes que tener en cuenta que el tutorial de CCorderoR sólo da unas líneas generales sobre cómo se debe realizar el proceso, y partiendo de éstas debes entrar sección por sección y revisar todas las opciones para adecuarlas a tu hardware.

Por otra parte, distros como RedHat o Mandrake están pensadas para que se utilicen los llamados stock kernels (los que vienen precompilados con la propia distro), y aunque consigas configurar correctamente tu núcleo, puede que los Init Scripts sigan produciendo errores (a no ser que los modifiques también, lo cual es bastante complicado y varía según la distribución).

Si no quieres complicarte la vida, espera a que aparezcan las versiones precompiladas para tu distribución (generalmente kernel-image-*), al fin y al cabo si todo te funciona bien no hay motivo para recompilar.

Pero si de todas formas quieres compilar el núcleo (porque te pica la curiosidad o lo que sea :P), debes conocer muy bien tu equipo, y perder mucho tiempo en el menú de configuración repasando la ayuda de las opciones, si quieres que te funcione bien el 100% de tus componentes.

CCorderoR
20/08/03, 17:22:42
Wenas:

Es lo que dice Koro, lo bueno que tiene el kernel de linux es poder seleccionar las opciones segun tu equipo, poder personalizarlo al máximo, pero claro, esto tiene un inconveniente, y es que tienes que conocer especificamente el hardware de tu equipo y saber como tienes que configurar todo. Posiblemente, si solo usas la configuración que expongo en el tutorial, no encuentres activado casi nada, y posiblemente, ni arranque. Simplemente es un inicio para los pasos básicos, como siempre digo a los newbies que encienden una distro por primera vez... PROBAR PROBAR Y PROBARRRRR ;)

Salu2,
CCorderoR

desgraciado
20/08/03, 17:50:30
OK, pues me pondre al tema, probar y probar. Saludos.

Doggie
20/08/03, 17:59:53
Siempre es bueno saber de todo un poco. Esta curioso el tutorial; enhorabuena, me ha gustado. Aunque dudo que me sirva a mi xD

Saludos!