Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
http://mogaal.com/articulos/kernel-a-la-debian.html
1. Conceptos bsicos
Si posees conocimientos de GNU/Linux y sistemas operativos puedes aventurarte a la prxima seccin; en la presente discutiremos conceptos bsicos. Cuando hablamos de "Linux" es frecuente referirnos al sistema operativo y sus aplicaciones y no al ncleo del sistema. La realidad es que Linux es solamente el ncleo del sistema (tambin denominado kernel): componente de gran envergadura que hace operar nuestra computadora. Entre las funciones ms importantes del kernel: Administracin de la memoria del computador. Establecimiento de la comunicacin entre aplicaciones y dispositivos de hardware. Administracin de procesos (o tareas). Aunque no son las nicas, si son las de ms relevancia. Vale recalcar que el ncleo Linux se caracteriza por ser muy voltil y tener cleres desarrolladores al momento
1 de 10 23/06/12 20:15
http://mogaal.com/articulos/kernel-a-la-debian.html
de corregir un problema o agregar una nueva caracterstica al ncleo; recibiendo as gran cantidad de actualizaciones en poco tiempo. Dichas actualizaciones comnmente contienen nuevos mdulos, mejoras de seguridad, administracin de recursos y muchas otras caractersticas. Cmo averiguar que innovaciones incorpora determinado ncleo? Observando un archivo incorporado en el mismo llamado ChangLog. Asimismo es factible descargar y observar el archivo de texto plano Changelog desde la pgina oficial del proyecto. Muchas veces surgen dudas acerca de la necesidad de compilar el kernel cuando liberan una nueva versin: no debemos dudar, solamente se compila una nueva versin de kernel cuando tenemos dispositivos de hardware muy recientes y nos vemos forzados a migrar hacia una versin que incluya mdulos para el soporte de este. Otra razn se basa en que poseemos una versin muy antigua y optamos por actualizarlo para tener mejoras en la administracin de memoria, procesos, recursos, etc. Actualmente ocurre esto con la rama 2.4 y 2.6 del kernel Linux; algunos servidores poseen la 2.4 y compilan la versin de la rama (2.6.X) con el objetivo de mejorar la administracin de recursos, ya que esta ltima es ms eficaz. El kernel NO se actualiza, si deseas una nueva versin debes descargarla de la pgina oficial del proyecto y compilarla. Tambin puedes buscar un paquete (por ejemplo en los repositorios de Debian) con una versin ya compilada para tu arquitectura de hardware; evitando la tarea de compilar y desaprovechando la optimizacin del sistema.
2 de 10
23/06/12 20:15
http://mogaal.com/articulos/kernel-a-la-debian.html
3 de 10
23/06/12 20:15
http://mogaal.com/articulos/kernel-a-la-debian.html
Notar la j para el de extensin .tar.bz2 Luego necesitamos ingresar al directorio donde se descomprimi y desempaquet el kernel para poder configurarlo y compilarlo, ingresamos al directorio:
cd linux-2.6.15
4. Configurando el kernel
Una vez dentro del directorio, necesitamos limpiarlo de todo archivo de configuracin que tenga. NOTA: Podemos obviar este paso para la primera vez que nos lo descarguemos, ya que este viene completamente listo para compilar. Pero una vez que terminas la compilacin y por cualquier razn quieres volver a compilarlo, no es necesario que tengas que descomprimirlo y desempaquetarlo de nuevo, puedes reutilizar ese mismo cdigo y es all cuando tienes que eliminar (limpiar) todos los archivos que se generaron con la compilacin anterior. Para "limpiar" los fuentes del kernel:
make mrproper
Ahora debemos configurarlo, esto quiere decir decidir cuales mdulos deseamos que tenga (o que no tenga) una vez compilado. Como es caracterstico del Software Libre: tenemos varias maneras de hacer las cosas, hablemos sobre 3 formas de configurar el kernel: 1era alternativa: make config <-- Hay que tener algo de experiencia, si no la tienes no te recomiendo seguir este camino ya que hace muchas preguntas de hardware. 2da alternativa: make menuconfig <-- Es muy cmodo hacer la configuracin por este mtodo porque posees un men muy sencillo he interactivo. NOTA: Necesitas tener instalado las las libreras ncurses, en debian: aptitude install libncurses5-dev 3ra alternativa: make xconfig <-- Debes tener instalado y en funcionamiento el servidor X, ya que toda la configuracin se hace grficamente (haciendo uso del sistema de ventanas). NOTA: Necesitas tener instaladas las libreras QT, en debian
aptitude install libqt3-dev
Para la configuracin utilizar la segunda alternativa, es decir, make menuconfig, como lo hago siempre. Ests en la libertad de utilizar la que quieras. Sin embargo te
4 de 10
23/06/12 20:15
http://mogaal.com/articulos/kernel-a-la-debian.html
recomiendo el segundo mtodo debido a que no necesitas estar en entornos de escritorio ni tener funcionando el servidor X, adems que tiene una interfaz muy simple e interactiva. Para comenzar la configuracin:
make menuconfig
Cuando se dediquen a configurar el kernel recuerden ser muy precavidos seleccionando o habilitando los mdulos. Si tenemos dispositivos como FlashDrive (o Pendrive) es indefectible activar el soporte SCSI (especficamente soporte para discos SCSI), ya que estos son emulados como discos SCSI en Linux. Si desactivas el soporte para CDROM, evidentemente la unidad de CDROM no funcionara una vez instalado. De igual manera pasa si desactivamos el soporte USB, no funcionara todo los que conectemos por el puerto USB.
5. Compilando
Terminada la configuracin 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 compilacin debemos estar en el directorio donde se encuentra el cdigo fuente del kernel y luego ejecutar lo siguiente:
make-kpkg clean make-kpkg --initrd kernel_image kernel_headers
Los que hayan compilado un kernel de Linux este comando equivale a: make
clean, make bzImage y make modules
dep, make
La opcin --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 extensin .deb en el directorio superior. Un paquete ser el kernel y el otro los kernel-headers. La opcin de kernel_headers es opcional, yo la utilizo debido a que muchos programas y mdulos (ver la seccin Gestin de mdulos) necesitan tener los headers del kernel que se est usando para poder ser instalados, ejemplo: el driver de nvidia, VMware, ndiswrapper, madwifi, otros. NOTA: El tiempo de compilacin es proporcional a la configuracin que hayas hecho y a tu poder de computo. Si incluiste muchjos mdulos se demorar ms. Hay que tener paciencia, es muy frecuente que se tarde bastante.
5 de 10
23/06/12 20:15
http://mogaal.com/articulos/kernel-a-la-debian.html
6. Instalndolo
Una vez que termina la compilacin y es corroborada la existencia de los dos paquetes en el directorio superior es el momento de instalarlo. La instalacin es muy trivial, debemos ejecutar en el directorio donde estn los paquetes:
dpkg -i TU_KERNEL.deb dpkg -i TU_KERNEL-HEADERS.deb
Felicitaciones! Con esto terminas la instalacin del kernel, ya podras reiniciar la mquina e iniciar con tu nuevo kernel.
7. Gestionando mdulos
7.1. Module Assistant - Compilando y agregando mdulos
Module Assistant es una herramienta para la gestin de mdulos ya empaquetados (preparadas sus fuentes con un debian/rules) para Debian. Nos permite compilar, construir e instalar mdulos del kernel sin necesidad de reiniciar el computador ni recompilar el kernel. No olvidar que permite gestionar slo los mdulos que estn preparados para Debian (y derivados, p.e Ubuntu). Debes tener los headers de nuestro kernel Para entender su funcionamiento se elaborar un ejemplo con algn mdulo. Arbitrariamente escog uno que permite hacer uso de cualquier tarjeta inalmbrica que implemente chipset atheros (por ejemplo mi tarjeta inalmbrica LanPro :-). Los mdulos de madwifi nos habilitarn el soporte para estas tarjetas, por lo que debemos agregar los mdulos de madwifi. Ya dichos mdulos vienen preparados para debian y se encuentran en los repositorios oficiales (en la seccin de non-free). Debemos instalar (descargar) el cdigo fuente del mdulo madwifi, para eso instalaremos el paquete madwifi-source el cual trae empaquetado las fuentes de estos mdulos. Motivo que es condicin sine qua non que el mdulo deba estar preparado para debian, es frecuente que la mayora de los que queramos instalar estn en los repositorios oficiales de Debian.
aptitude install madwifi-source
6 de 10
23/06/12 20:15
http://mogaal.com/articulos/kernel-a-la-debian.html
/modules/madwifi. Si ingresan al directorio de las fuentes podrn notar una carpeta debian/, la cual contiene las reglas para la construccin del paquete. Por eso hice tanta referencia en que module-assistant debe ser usado para mdulos preparados nicamente para debian o derivados.
m-a prepare madwifi
El argumento prepare determinar si tenemos todo lo necesario para la compilacin del mdulo, si no, module-assistant se encarar de instalar lo que haga falta. Es muy tpico que nos falten los cabeceras del kernel (kernel-headers), ya estas se se necesitan para construir todos los mdulos (no slo de madwifi). Una vez corroborado por m-a que tenemos todo lo necesario para compilar el mdulo procedemos a compilarlo:
m-a build madwifi
La compilacin generar un paquete .deb (paquete de debian) el cual contiene el mdulo para nuestro kernel, lo que faltara es instalar el paquete y cargar el mdulo para usarlo (no hace falta reiniciar el computadora).
m-a install madwifi
Con esto ya tienes el mdulo instalado y listo para funcionar funcionar. El ltimo comando lo que hace es instalar el paquete .deb al que hicimos referencia anteriormente. Ya el mdulo est instalado, faltara cargarlo (en la mayora de los sistemas de carga al conectar la tarjeta).
modprobe ath_pci
Consulta la seccin de tips para encontrar una manera mas resumida de ejecutar todos estos pasos ;-)
http://mogaal.com/articulos/kernel-a-la-debian.html
Para aplicar un parche hacemos uso del programa patch. Es probable que lo tengamos instalado, de no ser as:
aptitude install patch
make-kpkg se encargar de aplicar el parche y compilar nuevamente el kernel, notar que es le mismo comando (make-kpkg) que hemos venido usando a lo largo del tutorial. Adjunto al argumento --added-patches= debers colocar, separado por comas, los parches a aplicar al kernel.
http://mogaal.com/articulos/kernel-a-la-debian.html
nuestra configuracin anterior, el archivo que contiene tu configuracin anterior se llama config-VERSION_KERNEL. Por ejemplo el mio se llama config2.6.14. Ese archivo lo tenemos que copiar en directorio donde estn las fuentes del kernel con el nombre .config (recuerden el "." que es importante, sin l no funcionar el proceso). En mi caso lo copi de esta manera:
cp /boot/config-2.6.14 /usr/src/linux-2.6.15/.config make oldconfig
Una vez que hacemos eso ya tenemos lista la configuracin, podemos verificar usando cualquiera de los 3 mtodos explicados en el captulo 4. Notaremos que tiene una configuracin diferente a la que viene por defecto. Recordar que para la configuracin del kernel con make config debemos conocer nuestro hardware, cuando digo conocer me refiero a que debemos de saber algunos dispositivos de hardware que posee nuestro ordenador. Por eso si eres medio novato te recomiendo que te vayas por el make menuconfig Si compilars ms de un kernel puedes colocarle un nombre a cada compilacin para identificar al paquete .deb en el directorio superior. Para hacer esto necesitas agregar --append-to-version=NOMBRE. Como ya se imaginan, donde dice nombre es donde colocan el nombre que caracterice a cada kernel. Quieres ejecutar con un solo comando todos los pasos para tener en funcionamiento un mdulo con Module Assistant? Pues el truco es ejecutar:
m-a a-i madwifi a-i
Si tenas un kernel con mdulos ya instalados (por ejemplo, madwifi, nvidia, etc) e instalas un nuevo kernel perders el soporte de estos mdulos en tu nuevo kernel. Ergo: tienes que volver a compilarlos, no es tan trfico porque afortunadamente tienes la herramienta Module Assitant Recuerda que no ests vetado de google. Si se presenta algn problema: www.google.com
9 de 10
23/06/12 20:15
http://mogaal.com/articulos/kernel-a-la-debian.html
1ra edicin. Versin 1.0: 15 Junio del 2006 2da edicin. Versin 1.3: Mejorado y actualizado el artculo. 28 de noviembre del 2006 3ra edicin. Versin-1.4: Agregando informacin acerca de Gestin de mdulos y parches. 4 Febrero del 2008
10 de 10
23/06/12 20:15