Compilar el kernel en Ubuntu
Posted by K|Ke on July 6th, 2009

Como ocurre con los seres humanos respecto al corazón y cerebro para gobernar el cuerpo, los sistemas operativos necesitan un kernel (núcleo) que permita las operaciones básicas necesarias para el correcto funcionamiento del sistema. Entre estas funciones se encuentran la gestión de la memoria y la ejecución de procesos, proporciona una interfaz de comunicación entre los programas y los dispositivos, además de toda una serie de operaciones imprescindibles para conseguir hacer funcionar todos los mecanismos propios de un sistema operativo como plataforma básica para la ejecución de programas.
Cuando se instala una distribución GNU/Linux automáticamente se copia un kernel en el directorio /boot. Este kernel será utilizado en el arranque del sistema por defecto. Inicialmente se puede usar el kernel copiado automáticamente por la instalación. Sin embargo puede ser necesaria una recompilación del núcleo por diversas razones.
El sistema de compilación de Ubuntu es muy útil para desarrolladores, para gente que precisa el último núcleo y para personas que necesitan compilar un juego surtido de núcleos. Sin embargo puede ser un algo complejo para usuarios normales. Si usted no necesita las últimas fuentes de desarrollo, hay una forma más simple de compilar su núcleo desde el paquete linux-source.
No obstante, para Ubuntu es recomendable realizar la compilación de las fuentes del kernel de Ubuntu, estas se pueden descargar directamente con la herramienta de administración de paquetes ‘apt’ (sudo apt-get install linux-source), o descargándolas desde Ubuntu Packages.
También es posible compilar las fuentes oficiales del núcleo, que puede descargar desde aquí.
Siempre las fuentes del núcleo las desempaquetaremos en /usr/src/
Veamos un ejemplo:
sudo tar xjvf /usr/src/linux-source-2.6.30.tar.bz2
Y luego deberemos ir directamente al directorio principal del árbol de fuentes del núcleo. Como ejemplo vamos a suponer que estamos en este directorio
cd /usr/src/linux-source-2.6.30/
Nos asegurarnos de contar con todos los paquetes necesarios para compilar el núcleo en Ubuntu
sudo apt-get install kernel-package fakeroot build-essential makedumpfile
Ahora usted está en el directorio principal del árbol de las fuentes del núcleo. Antes de compilar, tiene que configurarlo. Si desea reutilizar la configuración del núcleo que está ejecutando, comience con:
sudo cp -vi /boot/config-`uname -r` .config
Pero antes que ejecute ‘make menuconfig’ (que es el próximo paso a realizar), asegúrese que tiene los paquetes necesarios:
sudo apt-get install libncurses5 libncurses5-dev
sudo make menuconfig
También puede utilizar ‘make xconfig’ una interfaz más cómoda aún para la configuración. Antes de utilizar esta opción necesitamos instalar lo siguiente:
sudo apt-get install qt3-dev-tools libqt3-mt-dev
sudo make xconfig
Si ha reutilizado la configuración existente, vea que los núcleos Ubuntu se compilan con información de depuración incorporada, lo cual resulta en que los módulos del núcleo resultantes (archivos *.ko) sean mucho más grandes de lo que serían normalmente. Para desactivar esto, vaya a “Kernel hacking”; ahi, bajo “Kernel debugging”, desactive “Compile the kernel with debug info”.
Entramos a la pantalla de configuración:

Ubicamos ‘Kernel Hacking’ y presionamos Enter

Bajamos hasta encontrar ‘Compile the kernel with debug info’ y lo deseleccionamos con la barra espaciadora:

Luego exit, para salir de esta pantalla y posteriormente salvamos la configuración y salimos.
Ahora puede compilar el núcleo y crear los paquetes
sudo make-kpkg clean
sudo fakeroot make-kpkg --initrd --append-to-version=-alguna-cadena-aquí kernel-image kernel-headers
Puede habilitar make paralelo (parecido a make -j), aunque no es necesario, definiendo la variable de entorno
CONCURRENCY_LEVEL . No trate de añadir la opción -j a make-kpkg. Pruebe agregar 1+número de cores
del procesador, por ejemplo si tiene un dual core: export CONCURRENCY_LEVEL=3
Los paquetes deb van a ser creados en el directorio principal del directorio de las fuentes de Linux. (/usr/src/)
Instale el nuevo núcleo
Si desea ver una pantalla de presentación de Ubuntu (o utilizar modo texto) antes de pasar al servidor X en
lugar de una pantalla vacía, asegúrese que el controlador de framebuffer carga:
echo vesafb | sudo tee -a /etc/initramfs-tools/modules
echo fbcon | sudo tee -a /etc/initramfs-tools/modules
Ahora que le ha dicho a initramfs-tools los módulos que debe incluir y la compilación está completa, puede instalar
los paquetes deb generados utilizando dpkg:
sudo dpkg -i linux-image-2.6.20-16-2be-k7_2.6.20-16_i386.deb
sudo dpkg -i linux-headers-2.6.20-16-2be-k7_2.6.20-16_i386.deb
Si usa módulos de linux-restricted-modules, necesitará recompilar estos con el nuevo paquete linux-headers.
fuente: Ubuntu Forums
Modificado por K|Ke
Entradas relacionadas:










July 7th, 2009 a 3:12 pm
wow expectacular.
lo linkee a mi blog.
vale la pena.
Saludos
July 8th, 2009 a 2:56 am
que raro mira
http://supremos.pastebin.com/f609e10f3
July 8th, 2009 a 11:13 am
Hola, me da la impresión que es un problema en /var/lib/dpkg/info, seguramente en el momento de la instalación del kernel algo no se agregó correctamente a la información del archivo, trata de ver por ahí y busca en la www, algo relacionado.
Saludos.
July 8th, 2009 a 7:57 pm
mira que me dices de esto?
http://juanarg.wordpress.com/2009/04/12/dpkg-error-al-procesar-pakete-%e2%80%93configure/
July 8th, 2009 a 8:20 pm
Mama21mama, haz esto y se va a solucionar $ sudo rm /var/lib/dpkg/info/linux-image-2.6.30-070709.postinst
Luego $ sudo apt-get upgrade
Saludos.
July 8th, 2009 a 9:00 pm
Problema solucionada jedi.
Para cuando mi ascenso? xD
En fin; analizemos el problema.
Que hicimos mal para tener semejante error?
Y traduciendo un poco… que hicimos?
July 14th, 2009 a 3:49 pm
Hola, necesito una ayudita.
Resulta que quiero optimizar la arquitectura para procesador un pentium 4.
Mas detalles del asunto aqui.
http://pastebin.ubuntu.com/218266/
Dice que la arquitectura es para i386, pero si en la conf le especifique que es para la familia P4
http://pastebin.ubuntu.com/218270/
Esta encendida la opcion ahi, pero en el primer enlaze que te pase dice que no, o sea, el escoje la opcion de configuracion de otro sitio.
Como tengo que hacerle o acaso estara bien ahi, para que se optimize para esta arquitectura?
Nos vemos mas luego por el canal
July 14th, 2009 a 5:09 pm
Hola NauTiluS, no hay ningún error en la configuración de tu kernel. Debes saber que el Pentium 4 es un microprocesador de séptima generación basado en la arquitectura x86 de 32 bits. La arquitectura del conjunto de procesadores compatibles con el i386 suele ser llamada arquitectura i386. Ahora, los programas compilados para i386 pueden funcionar en todas las arquitecturas superiores de Intel o compatibles, desde 386 a 686. En definitiva la configuración de tu kernel esta correcta, así que adelante no más y a compilar
Saludos.
July 15th, 2009 a 1:12 am
K|Ke, ya compile el kernel, pero ahora viene el paso para instalarlo, y ahi fue cuando cague el sistema la ultima vez que lo intente en ubuntu, que me decia problemas con los modulos.
Bueno como el sistema esta recien instalado, seguire adelante
Luego te cuento como me fue.
July 15th, 2009 a 1:27 am
Ya empezo a dar problemas jeejje
Mas detalles en el enlaze.
http://pastebin.ubuntu.com/218580/
sudo rm /var/lib/dpkg/info/linux-image-2.6.30.1-14-07-09.postinst
Hize eso que colocaste mas arriba, y luego me salio esto
http://pastebin.ubuntu.com/218583/
Y ahora me arrojo eso.
July 15th, 2009 a 7:21 am
Hola NauTiluS, acepta la instalación no más no hay problema. De todas formas siempre tienes el kernel antiguo en tu sistema, ese no debes borrarlo. Como norma siempre uno debe tener un kernel de repuesto.
Saludos.