Compilar kernel a la medida


Enlace al video: http://blip.tv/file/3557819

El kernel proporcionado por las distribuciones tiende a tener  muchos módulos que ayudan a que la mayoría del hardware sea reconocido. Después de saber que todo funciona correctamente ¿Por qué no compilar un kernel a la medida para nuestra máquina?

Un kernel a la medida

Una forma rápida de tener un kernel a la medida de nuestra máquina es asegurándonos  que los módulos que se necesitan estén cargados y usar la orden:

make localmodconfig

Esta opción fue incluida en el kernel 2.4.32 y realiza lo siguiente:

  • Toma como base el archivo /proc/config.gz para crear el .config a utlilizar.
  • Ejecuta lsmod para ver cuáles módulos están cargados actualmente en el sistema.
  • En el archivo .config se seleccionan cada una de las opciones que activan estos  módulos.
  • También se activan aquellas dependencias que necesiten los módulos detectados.
  • Por último se eliminan los módulo que no sea necesarios, es decir, aquellos que no reportó lsmod.

Lo que no funciona

Los módulos de terceros que se compilaron a mano o a través de herramientas como module-assitant y que no pertenecen al kernel no serán incluidos por este método, pero serán notificados al momento de escribir el archivo .config.

Referencias

Artículos relacionados:

  1. ¿Y cuańto tarda en compilar el kernel en una PC de escritorio?
  2. Compilar el kernel a lo tradicional
  3. ¿Y cuánto tarda compilar el kernel de la netbook en el PC?
  4. ¿Cuánto tarda compilar un kernel en un PS3?
  5. Compilar el kernel a lo Debian

  1. avatar

    #1 by Luis Gallardo on 15/05/2010 - 6:08

    @dark_sasuke Gracias por tus comentarios :P

  2. avatar

    #2 by dark_sasuke on 14/05/2010 - 10:05

    okis ^^ entonces con esto ya entendido ….. mañana me pondre a compilar el kernel para mi maquinita :) …. lo compilare a lo debian ya que sera unicamente pa mi querido debian :)

    Gracias!!! siempre son muy buenos tus posts :)

  3. avatar

    #3 by Luis Gallardo on 14/05/2010 - 9:45

    @dark_sasuke Correcto. Cada vez que compilas el kernel debes compilar los módulos de terceros. Igual ocurrirá cuando instales un kernel nuevo proporcionado por la distribución. Si el módulo está para module-assistant mucho mejor, pero hay veces que aunque el el driver está en m-a no va a ser compatible con el kernel al momento de compilar. ¿En qué casos? Cuando bajas las fuentes de kernel.org y tratas de compilar un driver usando m-a , ya que m-a es un utilitario para kernels de Debian y no necesariamente debe ser compatible con las cosas que hagan en el kernel genérico.

  4. avatar

    #4 by dark_sasuke on 14/05/2010 - 9:22

    Tengo el kernel que tiene too dios y el Driver de Nvidia instalado con module-assitant

    Lo que yo entiendo es osea compilo el Kernel a mi gusto y despues de instalado y tal, instalo nuevamente el Driver?

  5. avatar

    #5 by Luis Gallardo on 14/05/2010 - 8:05

    @dark_sasuke ¿Cómo lo tienes ahora?

  6. avatar

    #6 by dark_sasuke on 14/05/2010 - 6:39

    No entiendo jajajaja …. osea es praticamente ahora como lo tengo hecho ahora? XD

  7. avatar

    #7 by Luis Gallardo on 14/05/2010 - 5:13

    @dark_sasuke No, los drivers de terceros se compilan aparte. Básicamente lo que se hace es que se compila el driver y se copia en el directorio de módulos del kernel actual. Suena a a un trabajón, pero relamente es correr un script que compila y copia los archivos necesarios por ti.

  8. avatar

    #8 by Luis Gallardo on 14/05/2010 - 5:02

    @Rodrigo Te recomiendo que leas la compilación a lo tradicional y la compilación a lo Debian para que compares procedimientos. Si no estás en Debian puedes seguir la compilación tradicional o buscar métodos similares (que existen) en CentOS-Fedora-RedHat. También te recomiendo que leas este artículo que habla de forma general como optimizar Debian para que arranque en 14 segundos

  9. avatar

    #9 by Rodrigo Moreno on 14/05/2010 - 12:32

    Hola, esto crees que ayude realmente a un servidor casero que ando haciendo? Es que en un blog de un amigo hizo la comparación de 2 kernels en su CentOS, el generico y el compilado a la medida, gano 30 segundos al arrancar el equipo… Ademas de los beneficios que mencionas arriba.

    Por cierto, cuando haga esa compilación a la debian, con ese solo comando queda, ya no tendré que hacer el make install y todo eso?

  10. avatar

    #10 by dark_sasuke on 14/05/2010 - 9:33

    Muchas gracias :) …. ahora sale una nueva pregunta -> Cuando eso ocurra, yo voy a compilar el kernel para agregar esa funcionalidad directamente desde el kernel, y no desde drivers de terceros. (Eso lo escribiste tu) entonces yo podria agregar el driver de Nvidia al Kernel? … yo lo instalo desde module-assitant

  11. avatar

    #11 by Luis Gallardo on 13/05/2010 - 10:23

    @dark_sasuke La idea detrás de compilar el kernel es la de poder adaptarlo a tus necesidades ya que el kernel que distribuye cualquier distribución es muy genérico, es decir, en el caso de Ubuntu está pensado para que corra en el mayor número de máquinas posibles. ¿Esto en que te afecta? Bueno que puedes tener muchas funcionalidades que no utilizas en tu kernel o como módulos. Te pongo este ejemplo, imagina que tienes una netbook sin bluetooth como las Acer One, ¿Tiene sentido tener los módulos de bluetooth cargados en tu sistema? Todos ese código ocioso a la larga repercute en rendimiento e incluso en consumo innecesario de energía. Te invito a que veas este post que habla sobre arranque rápido que aun y cuando está relacionado con servicios, el compilar el kernel ayudó a mejorar el arranque en mi máquina: http://lgallardo.com/2009/07/08/arranque-rapido-debian-14-segundosfast-boot-on-debian-14-sec/

    Otra cosa por la que quieras compilar tu kernel es para dar soporte a un hardware nuevo, o un hadware que no tenía soporte antes. Ejemplo, mi netbook lenovo S10 tiene una tarjeta inalámbrica Broadcom BCM4312 la cual no tiene soporte en el kernel, pero están trabajando en ello para que el módulo b43 soporte toda esa gama. Cuando eso ocurra, yo voy a compilar el kernel para agregar esa funcionalidad directamente desde el kernel, y no desde drivers de terceros.

    También ocurre que para ciertas aplicaciones necesitarás de opciones activadas muy específicas del kernel. Por ejemplo, si estás trabajando con aplicaciones que necesiten tiempo real de respuesta, entonces tendrás que compilar el kernel para tal fin.

    ¿Se acttualizará el kernel que compilas? No, si quieres ir actualizando el kernel tendrás que bajar las versiones nuevas y compilarlas. Pero no creas que es complicado, porque basta con hacer un make oldconfig y todo la configuración de tu kernel actual será cargada, y se te preguntará por las nuevas funcionalidades nada más. Los módulos lo configuras y tú a tu gusto, es decir, no vas a perder ningún módulo que tengas actualmente a menos de que tú mismo lo quites al momento de seleccionar las opciones del kernel.

    Espero que todo esto te haya aclarado tu duda :)

  12. avatar

    #12 by dark_sasuke on 13/05/2010 - 8:05

    Y para que sirve compilar un kernel a medida? en que ayuda?
    y si por ejemplo he compilado un kernel a medida y necesito poner una nueva pieza al PC?

Los Comentarios están cerrados