• Suscríbete al Feed Espacio Linux
  • Suscríbete al Feed por Email
  • Sigue a Espacio Linux en Identi.ca
  • Espacio Linux también en Facebook
  • Sigue a Espacio Linux en Twitter
  • Sigue a Espacio Linux en Google +
          Iniciar sesión | Registrarse

Cómo compilar un kernel para principiantes

Después de haber estudiado varios tutoriales acerca de como compilar el kernel decidí contribuir con mi granito de arena y escribir un tutorial bien detallado paso por paso y también contare mi experiencia al respecto.

Tengo una laptop HP Pavillion AMD Turion de 64 Bits y acabo de compilar un kernel 2.6.26, explicare todo el proceso de como lo hice en 12 pasos con unas breves descripciones y notas de cada una ya que es muy importante que se sepa que es lo que busca cada paso, es muy importante que casi todos los pasos hay que hacerlos como super usuario o con sudo:

Pasos a seguir

Pasos a seguir

  1. OBTENER LAS FUENTES.

Primero que nada tenemos que bajar los archivos necesarios para compilar el kernel, estos archivos son los controladores y módulos que utiliza el Sistema Operativo para administrar el hardware. Hay dos metodos diferentes de optener las fuentes que para una compliacion segura y sin ningun inconveniente vamos a utilizar los dos metodos de obtencion de fuentes

METODO 1: Nos vamos a la pagina principal de kernel http://www.kernel.org para bajar la ultima vercion estable. El archivo que se estaremos bajando es un archivo comprimido asi que el siguiente paso es descomprimirlo, esto lo pueden hacer con ark (KDE) o file-roller (GNOME). Una vez que se halla descomprimido las fuentes va a aparecer una carpeta llamada linux-2.6.xx.yy, la cual se tiene que mover en /usr/src/.

sudo mv linux-2.6.xx.yy /usr/src

Notese que es posible que en la carpeta /usr/src exista otra carpeta que se llame linux-2.6.xx.yy, esa carpeta que ya esta grabada en esa carpeta son las fuentes del kernel que estas usando en este momento entonces hay que estar claro cuales son las fuentes del kernel que te acabas de bajar y de las que ya esta grabadas. Hasta que se diga lo contrario vamos a trabajar con las fuentes que acabamos de bajar.

Con este metodo nos vamos a asegurar de compilar un kernel de prueba y en el supuesto caso que algo salga mal siempre vamos a poder iniciar nuestro sistema con el kernel que trae la distro por defecto.

  1. VERIFICAR SI TIENES LOS PROGRAMAS NECESARIOS.

Antes de empezar con la instalación debemos cerciorarnos que tengamos los siguientes programas instalados en nuestro sistema:

1. make (a GNU tool which simplifies the build process for users) {Una herramienta GNU que simplifica la construcción de procesos por el usuario}
2. gcc (GNU Complier Collection) {Compilador GNU}
3. gcc – C++ (C++ support for gcc) {Soporte C++ para gcc}
4. lib64qt3-devel (Qt3 – Files needed to build Qt3 based applications)** {Qt3 Archivos necesarios para construir aplicaciones basadas en Qt3}

5. kernel-source (The Linux Kernel Sources) (Las Fuentes del kernel de los repositorios de tu distro). La vercion de este paquete tiene que concordar con la vercion actual del kernel que estas usando en este instante***

Puede que ya tengas algunos de estos programas instalados y los que no tienes los puedes instalar por medio de tu administrador de paquetes.

NOTA:  ** este es el nombre del archivo para la arquitectura x86_64 si utilizas una computadora de 32 Bits tendrías que instalar libqt3-devel.

NOTA: *** Este es el metodo 2 de obtencion de las fuentes. Para saber la vercion de tu kernel escribe en la consola

uname -r

    3. VERIFICAR QUE MODULOS ESTAN SIENDO USADO POR TU HARDWARE

En la consola ejecuta el siguiente comando

    lspci -k > /home/[tu usuario regular]/[el nombre que quieras mas .txt] (sin los corchetes)

    Esto va a crear un archivo en tu carpeta principal con la descripcion de tu hardware y los modulos del kernel que esta usando actualmente.

      Ahora abre el editor de texto de tu preferencia y busca en tu carpeta principal el archivo que acabas de crear con el nombre que le distes. En cada reglon busca los siguientes datos:

        Kernel driver in use y Kernel modules**

          **NOTA: seria muy conveniente que resaltaras estos datos o los imprimieses pq lo vas a necesitar mas adelante
        1. LIMPIAR LOS POSIBLES ARCHIVOS DE COMPILACION DE KERNEL ANTERIORES.

        Este proceso va a eliminar archivos que se utilizaron para compilaciones anteriores pero NO va afectar la configuracion del kernel actual y asi evitr porblemas con la compilacion que vamos a realizar. Entonces en la terminal escribimos:

        make mrproper

        5. BUSCAR EL ARCHIVO “config-2.6.XX.Y- ” EN /boot.

        Para no empezar la configuración del nuevo kernel desde 0, nos vamos a basar en la configuración del kernel que se está usando en estos momentos, este archivo se encuentra en /boot. Dependiendo de que tan actualizada este tu distro puede que tengas más de un archivo config, el que nos interesa es el más actualizado y parte del sufijo puede variar de distro a ditro, en mi caso se llamaba  “config-2.6.24.5-laptop-2mnb” lo importante es que empiece con  “config-2.6?. Luego que hayamos encontrado este archivo lo copiamos en carpeta de las fuentes que acabamos de bajar /usr/src/linux-2.6.xx.yy con el nombre .config (notese el punto al principio del nombre).

          6. CONFIGURAR EL NUEVO KERNEL.

        Una vez que hayamos verificados que tenemos los programas nos vamos para la carpeta de las fuentes /usr/src/linux-2.6.xx.yy, y ejecutamos el siguiente comando:

        make oldconfig

        Este comando va a revisar que el archivo .config contengan todas las opciones del kernel con que se va a trabajar. Probablemente te haga una serie de preguntas, si quieres solo dale enter a cada pregunta para escoger la opcion por defecto.Ahora ejecutamos el siguiente comando.

        make xconfig

        Esto debería abrir una ventana con opciones para cargar los módulos del nuevo Kernel, si da un error lo mas probable es que falte un programa de la lista que mencione anteriormente.

        En la pantalla que se ve están las opciones ya activadas que esta usando el kernel actual. Este paso es el MAS IMPORTANTE de todo el proceso de compilación del nuevo kernel así que tomate todo el tiempo necesario para leer cada una de las opciones y determinar si las activas o no.

        La ventana está dividida en 3 secciones la primera y la más grande salen las opciones generales, en la segunda aparecen las opciones especificas y la tercera sección una breve descripción de la opción seleccionada.

        Hay dos formas para activar una opción, la primera es cargarla dentro del kernel cuando arranque, la forma de activarla es haciendo clic en el cuadrito y aparecerá un visto bueno (o check mark) y la otra forma de cargarla es afuera del kernel como módulo que se hará disponible cuando se necesite dicha opción, la forma de activarla es presionando la letra M y aparecerá un punto en el cudrito. Cargar una opción dentro del kernel o como módulo tiene ventajas y desventajas y hay opciones que sólo se pueden cargar dentro del kernel o sólo pueden ser cargada como módulos. Seria recomendable que te informaras más sobre este punto en la Web para que tengas más bases a la hora de decidir como cargarlas.

        Hay opciones que te sugieren que hacer si dudas sobre esa opción (no cargarla, cargarla o cargarla como módulo)

        La idea de este paso es seleccionar el mayor numero de opciones que aplique a tu sistema y Des seleccionar las que no apliquen, es como vestir a alguien a la medida, todos podemos comprar ropa en la tienda pero nos puede quedar grande o pequeña pero que sólo nos quedara perfecto cuando la compramos a la medida. Entre menos módulos se carguen más rápido va a iniciar el kernel. En la carpeta ../linux-2.6.xx/Documentation hay mucha más información de la breve descripción que aparece en pantalla, lamentablemente esta información también esta en ingles.

        Cuando terminen guarden los cambios y cierren la ventana

        Lo bueno de este paso es que se puede hacer en varias tandas o rondas, lo que tienes que hacer es guardar los cambios que hagas en esa oportunidad y cerrar la ventana, y para abrirla de nuevo te colocas otra vez en la carpeta  /usr/src/linux y escribes:

        make xconfig

        Lo principal seria deshabilitar la mayor catidad de opciones del lado izquierdo ya que son las opciones principales, la siquietes lista es seguro deshabilitarla por completo

        • PCCard (PCMCIA/CardBus) support

        • Support for PCI Hotplug

        • Amateur Radio support*

        • CAN bus subsystem support

        • IrDA (infrared) subsystem support*

        • Bluetooth subsystem support *

        • Fusion MPT device support

        • I2O device support

        • Macintosh device drivers*

        • “Tulip” family network device support

        • Ethernet (1000 Mbit) *

        • Ethernet (10000 Mbit)*

        • Token Ring driver support

        • Wan interfaces support

        • ATM drivers

        • ISDN support

        • Telephony support

        • Radio Adapters*

        • DVB/ATSC adapters*

        • Open Sound System (DEPRECATED)

        • InfiniBand support

        • Network File Systems*

        • Virtualization*

        • y todos los que digan “Deprecated” u “obsolete”

        *NOTA: los que tengan un astericos NO aplican a todo el mundo, por ejemplo si tienes bluetooth o infrarojo tienes que dejar activado esta opcion y pasar a deshabilitar los modelos que NO concuerden con tu hardware.

        Ayudate a seleccionar los modulos que necesites con el documento que imprimistes o tienes en pantalla el mismo del paso 3.

        7. COMPILAR EL KERNEL.

        En la consola ejecutamos el siguiente comando para compilar el nuevo kernel:

        make

        Este paso utilizara la configuración del paso anterior para crear el nuevo kernel, aquí te puedes ir a tomar un café o ir a ver TV, en mi computadora compile el kernel y se tardo 50 minutos.

        8. INSTALAR LOS MÓDULOS.

        Ejecutamos:

        make modules_install

        En este paso se instalaran en el sistema los módulos que hayamos seleccionado del paso 5

        9. INSTALAR EL NUEVO KERNEL.

        Ejecutamos:

        make install

        Esta opción hay que hacerla como root. Con ese comando se instalara el kernel en el sistema y se configurara el GRUB o el LILO apareciendo la opción de iniciar con el nuevo kernel la próxima vezque se inicia el sistema.

        1. REINICIAR Y PROBAR EL DE PUEBA.

        Cuando se inicie el sistema y aparece el escrritorio se debe de probar, audio, puertos, periferico, etc. Si el nuevo kernel o algun dispositivo no funciona se vuelve a reiniciar la computadora, se escoge el kernel que ya estaba instalado y se repite el proceso desde el paso numero 6, pero con la diferencia que el archivo .config que esta en la carpeta de las fuentes que desscargamos lo vamos a tener que mover temporalmente a otro lugar porque cuando ejecutemos make mrproper va a borrar el archivo .config, asi que luego que ejecutemos este ultimo comando volvemo a copiar el archivo .config a la carpeta de las fuetes que descargamos. Una vez que estemos en la pantalla de configuracion nos enfocaremos en solucionar cualquier dispositivo que no funcione. Esto lo tememos que hacer hasta que tengamos un kernel que funcione y mejor adaptado a tu sistema.

        1. COMPILAR EL KERNEL DEFINITIVO.

        Nos vamos para la carpeta de las fuentes del repositorio (la otra carpeta que no es la que estabamos usando) y ejecutamos

        make mrproper

        Luego copiamos el archivo .config de las fuentes que acabamos de bajar a la capeta de las fuentes de los repositorios y podemos ejecutar todos los demas comandos en una sola linea.

        make oldconfig && make && make modules_install && make install

        La diferencia entre el kernel definitivo y el kernel de pueba (tomando el cuenta el kernel de prueba que funciona) es que el kernel definitivo contiene modulos que tu distro incluyo en el kernel que brindan mas seguridad y/o son modulos que utiliza tu distro para poder funcionar a su 100%. El nombre de este nuevo kernel va a ser el mismo que trajo la distro

        1. FIN!!!!

        Ya que ahora tienes tu kernel definitivo funcionando te puedes sentir ogulloso(a) de haber completado esta tarea.

        La ultima nota es que hay que estar atento a cuando se actualiza el sistema pq puede actualizar el kernel y asi se perdera todo el trabajo que hayamos hecho, para solventar esto compien en un lugar seguro el archivo .config y cada vez que el kernel se actualice solo se tendra que el paso 11 para recompilar el kernel actualizado.


        Temas:
        Documentación, Sistema


        Etiquetas:

        Feed Espacio LinuxSi este artículo ha sido de tu interés, considera hacer un comentario o suscribirte al feed para que te enteres de nuevos artículos a través de tu lector de noticias o email.

        Acerca del autor

        10 Comentarios para “Cómo compilar un kernel para principiantes”

        1. por fin una guia que explica las cosas claras, tengo claro que no me saldrá a la primera, pero hasta leer estas lineas no sabia ni por donde empezar.

          muchas gracias

        2. Excelente guía. Yo tampoco tenía la más mínima idea de como hacer esto ni por donde comenzar. Gracias!!!

        3. Felicidades, una guia muy bien explicada de como compilar un kernel.

        4. Gracias, finalmente alguien que si explica bien.

        5. Muy bien explicadito…. de una forma muy pedagógica ……

        6. EXCELENTE APORTE, GRACIAS.
          ALGUIN NOS PUEDE EXPLICAR PORQUE COMPILAMOS O QUEREMOS TENER UN KERNEL NUESTRO.
          ESTO QUIERE DECIR QUE ES UN SISTEMA OPERATIVO A NUESTRO GUSTO O QUE ES EXACTAMENTE.
          GRACIAS.

        7. es para hacer mas rapido tu ordenador quitando algunas cosas que tu probablemente no utilizas y pues el kernel las ejecuta y pues algunas no se usan

        8. Piensa en Esto, cuando tu instalas una distribucion de linux en una computadora en especifica va a tener la mismas caracteristicas que si lo instalas en otra computadora a pesar que el hardware es diferente. Entonces en ninguna de las dos computadoras estarias sacando el maximo provecho al hardware ya que las configuraciones del linux que estas instalando son genericas para qu funcione con un numero mayor de hardware.
          Entonces se compila el hardware para eliminar modulos y partes que el sistema no va a usar (como dice joms) para hacer el nucleo del kernel mas ligero, mas estable y a la vez mas rapido (en teoria). En varias situaciones tambien se cargan modulos o parte del kernel que son especificas para tu hardware (esto es lo mas importante pq con esto si garantizas sacar el mayor provecho del kernel)
          en otros casos (todavia no me he topado con esta situacion) tambien se compila el kernel para reconocer hardware que no reconoce la version generica del kernel.
           
          para este verano estoy trabajando en una segunda version de este manual donde se puede configurar mas rapido y mas eficiente el archivo .config que es la base de la compilacion del kernel
           
           
          Muchas gracias a Todos por sus comentarios de apoyo!!!!

        9. hola, uso ubuntu 10.04 y he tratado de realizar la compilacion siguiendo los pasos aqui indicados, pero quedo en la parte donde debo descargar lib64qt3-devel, y no me aparece para descargarlo, solo hay rpms a traves de la web. ¿como seria lo que debo hacer desde ubuntu? si alguien me puede ayudar con esto, desde ya le doy mil gracias
           

        10. Prueba con el paquete libqt3-mt-dev

        Publica un comentario

        Puedes usar estas etiquetas XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <blockquote cite=""> <code> <em> <strong>