COMPILAR KERNEL EN UBUNTU LINUX
Despues de probar diferentes metodos para sacarle mas el jugo al rendimiento de las computadoras que tengo, me decidi a por compilar el kernel.
A razon de esto, para obtener mejores respuesta de latencia del equipo y por ende mejor rendimiento general del mismo.
Pero, porque siempre hay uno, la mayoria de usuarios noveles, incluyendome a mi cuando inicie la andanza con linux, me chocaba mucho tener que compilar el kernel, ni idea de como hacerlo y como empezar, que rayos es compilar como modulo o integrado al nucleo y que beneficio obtengo del mismo.
Compilar como modulo, es como actualmente funciona la mayoria de nucleos modernos en las pc, o sea si compilo con soporte para X camara web, cuando el kernel detecte esta dichosa camara automaticamente le carga el driver necesario para que funcione. Si por el contrario compilo con soporte en el nucleo, automaticamente el kernel carga el driver, aunque no este el dispositivo conectado y esto se traduce a ocupar recursos de memoria que puede ser ofrecido para otro proposito.
Cualquiera de los dos metodos es bueno, pero hay que saber en que campo aplicarlo, ejemplo, si tienes una targeta de sonido integrada y sabes cual es el drivers, lo puedes compilar con integracion al nucleo y asi con los demas.
Al tema, para compilar el kernel como ya dije hay muchas razones, y una de ella es obtener un poco mas de rendimiento.
Puedes utilizar tanto el nucleo oficial de ubuntu que se llama "linux-source" como el que se publica en esta pagina: "http://www.kernel.org/" dando clic donde dice "stable y fullsource".
Iniciamos y disculpen tanta palabrerias que dije
Pueden bajarlo desde el administrador de paquetes Synaptic buscando el paquete que se llama "linux-source" o desde linea de comando con "sudo apt-get install linux-source" o bien visitando la pagina oficial del kernel puesta mas arriba.
Si lo descargaron desde la pagina oficial del kernel, deben copiar el mismo a la ruta "/usr/src/" o si por el contrario lo bajaron por medio de apt o synaptic ya estara en este lugar. Para comprobarlo, basta con hacer un ls -rts y podran ver el mismo con el nombre de "linux-source-2.6.35.tar.bz2", esta version aplica a la que actualmente estaba disponible al momento de hacer este minitutorial.
Descomprimimos el kernel con sudo tar xjvf /usr/src/linux-source-2.6.35.tar.bz2 y luego nos movemos al directorio que sale cd linux-source-2.6.35
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 libncurses5 libncurses5-dev
Siempre es recomendable usar una configuracion previa del kernel, para no tener que hacerlo todo desde cero, para esto estando en el directorio del source, hago este comando: sudo cp -vi /boot/config-`uname -r` .config
Automaticamente tendremos una configuracion de nuestro equipo actual para el kernel que vamos a preparar para optimizarlo mas. Ahora tipeamos el comando: sudo make menuconfig y esperar que salga una pantalla como esta ""
Como estamos usando la configuracion previa del kernel, este se genera mucho mas grande a causa de que tiene la configuracion para debuggear los archivos resultantes "*.ko". Para desactivar esto vamos a, "kernel hacking", "" luego mas abajo se encuentra "Kernel debugging" desactive "compile the kernel with debug info" ""
Bueno, ahora nos vamos al menu principal del configurador del kernel y buscamo la entrada que diga "Processor type and features"
Aqui la familia de su procesador "" y lo seleccionan de los tantos que hay disponibles, yo seleccione la familia P4, porque el procesador que usa el equipo donde estoy actualmente. Luego de seleccionar su familia de procesador, deben quitar lo que dice Generic x86 support, mas abajo dice el numero de procesadores que tiene su equipo, aqui pueden especificar cuantos tienes, sino estas seguro, dejalo como viene. Siguiendo la ruta mas abajo, nos encontramos con algo que hace que los procesos respondan mas rapido a las peticiones de nosotros y es el frecuenciador de tiempo o Timer frequency "" que es el optimo para nuestro equipo de escritorio.
Bueno con esa configuracion es mas que optima para un usuario, asi que guardamos la configuracion y luego damos este comando: sudo make-kpkg clean
Luego que termine los preparativos para construir el kernel, damos este comando que es el que inicia todo: sudo fakeroot make-kpkg --initrd --append-to-version=-alguna-cadena-aquí kernel-image kernel-headers. Donde dice "alguna-cadena-aqui", es el lugar donde le pondremos un nombre para diferenciar entre las versiones del kernel que obtendremos. Me gusta usar la fecha de compilacion, asi que un ejemplo seria ponerle 02-01-2011.
Nota: Puede habilitar make paralelo (parecido a make -j), aunque no es necesario, definiendo la variable de entorno
CONCURRENCY_LEVEL. Prueba 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/)
Ahora, puedes ir al parque la playa y descansar un rato en lo que eso hace su trabajo.
Luego que termine, dos archivos nuevos apareceran en el directorio /usr/src/, de nombre parecido a este:
Bueno me salio ahi con otra fecha de compilacion, porque fue la ultima vez que compile el kernel.
Para instalarlo, primero inicia con linux-image y luego con linux-headers
Comando para instalarlo sudo dpkg -i nombre del paquete, recuerda el orden, primero linux-image y luego linux-headers.
Se me olvidaba, que se puede optimizar mucho mas el kernel, pero para eso, tienes que quitar soporte a muchos dispositivos, y para eso necesitas ciertos conocimientos de tu equipo, lo que tiene exactamente, para asi hacer un kernel ultraligero y rapido.
Créditos a http://www.ubuntusur.org y K|Ke por la ayuda prestada en aquel entonces, ya que desde aquí fue cuando en realidad si pude compilar sin problemas el kernel en ubuntu y de una manera super sencilla.
FAQ: http://taringa.net/posts/linux/5823972/Por-que-compilar-el-kernel-en-Linux_.html
Saludos y buena suerte.
Despues de probar diferentes metodos para sacarle mas el jugo al rendimiento de las computadoras que tengo, me decidi a por compilar el kernel.
A razon de esto, para obtener mejores respuesta de latencia del equipo y por ende mejor rendimiento general del mismo.
Pero, porque siempre hay uno, la mayoria de usuarios noveles, incluyendome a mi cuando inicie la andanza con linux, me chocaba mucho tener que compilar el kernel, ni idea de como hacerlo y como empezar, que rayos es compilar como modulo o integrado al nucleo y que beneficio obtengo del mismo.
Compilar como modulo, es como actualmente funciona la mayoria de nucleos modernos en las pc, o sea si compilo con soporte para X camara web, cuando el kernel detecte esta dichosa camara automaticamente le carga el driver necesario para que funcione. Si por el contrario compilo con soporte en el nucleo, automaticamente el kernel carga el driver, aunque no este el dispositivo conectado y esto se traduce a ocupar recursos de memoria que puede ser ofrecido para otro proposito.
Cualquiera de los dos metodos es bueno, pero hay que saber en que campo aplicarlo, ejemplo, si tienes una targeta de sonido integrada y sabes cual es el drivers, lo puedes compilar con integracion al nucleo y asi con los demas.
Al tema, para compilar el kernel como ya dije hay muchas razones, y una de ella es obtener un poco mas de rendimiento.
Puedes utilizar tanto el nucleo oficial de ubuntu que se llama "linux-source" como el que se publica en esta pagina: "http://www.kernel.org/" dando clic donde dice "stable y fullsource".
Iniciamos y disculpen tanta palabrerias que dije
Pueden bajarlo desde el administrador de paquetes Synaptic buscando el paquete que se llama "linux-source" o desde linea de comando con "sudo apt-get install linux-source" o bien visitando la pagina oficial del kernel puesta mas arriba.
Si lo descargaron desde la pagina oficial del kernel, deben copiar el mismo a la ruta "/usr/src/" o si por el contrario lo bajaron por medio de apt o synaptic ya estara en este lugar. Para comprobarlo, basta con hacer un ls -rts y podran ver el mismo con el nombre de "linux-source-2.6.35.tar.bz2", esta version aplica a la que actualmente estaba disponible al momento de hacer este minitutorial.
Descomprimimos el kernel con sudo tar xjvf /usr/src/linux-source-2.6.35.tar.bz2 y luego nos movemos al directorio que sale cd linux-source-2.6.35
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 libncurses5 libncurses5-dev
Siempre es recomendable usar una configuracion previa del kernel, para no tener que hacerlo todo desde cero, para esto estando en el directorio del source, hago este comando: sudo cp -vi /boot/config-`uname -r` .config
Automaticamente tendremos una configuracion de nuestro equipo actual para el kernel que vamos a preparar para optimizarlo mas. Ahora tipeamos el comando: sudo make menuconfig y esperar que salga una pantalla como esta ""
Como estamos usando la configuracion previa del kernel, este se genera mucho mas grande a causa de que tiene la configuracion para debuggear los archivos resultantes "*.ko". Para desactivar esto vamos a, "kernel hacking", "" luego mas abajo se encuentra "Kernel debugging" desactive "compile the kernel with debug info" ""
Bueno, ahora nos vamos al menu principal del configurador del kernel y buscamo la entrada que diga "Processor type and features"
Aqui la familia de su procesador "" y lo seleccionan de los tantos que hay disponibles, yo seleccione la familia P4, porque el procesador que usa el equipo donde estoy actualmente. Luego de seleccionar su familia de procesador, deben quitar lo que dice Generic x86 support, mas abajo dice el numero de procesadores que tiene su equipo, aqui pueden especificar cuantos tienes, sino estas seguro, dejalo como viene. Siguiendo la ruta mas abajo, nos encontramos con algo que hace que los procesos respondan mas rapido a las peticiones de nosotros y es el frecuenciador de tiempo o Timer frequency "" que es el optimo para nuestro equipo de escritorio.
Bueno con esa configuracion es mas que optima para un usuario, asi que guardamos la configuracion y luego damos este comando: sudo make-kpkg clean
Luego que termine los preparativos para construir el kernel, damos este comando que es el que inicia todo: sudo fakeroot make-kpkg --initrd --append-to-version=-alguna-cadena-aquí kernel-image kernel-headers. Donde dice "alguna-cadena-aqui", es el lugar donde le pondremos un nombre para diferenciar entre las versiones del kernel que obtendremos. Me gusta usar la fecha de compilacion, asi que un ejemplo seria ponerle 02-01-2011.
Nota: Puede habilitar make paralelo (parecido a make -j), aunque no es necesario, definiendo la variable de entorno
CONCURRENCY_LEVEL. Prueba 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/)
Ahora, puedes ir al parque la playa y descansar un rato en lo que eso hace su trabajo.
Luego que termine, dos archivos nuevos apareceran en el directorio /usr/src/, de nombre parecido a este:
linux-headers-2.6.35.4-12-10-2010a_2.6.35.4-12-10-2010a-10.00.Custom_i386.deb
linux-image-2.6.35.4-12-10-2010a_2.6.35.4-12-10-2010a-10.00.Custom_i386.deb
Bueno me salio ahi con otra fecha de compilacion, porque fue la ultima vez que compile el kernel.
Para instalarlo, primero inicia con linux-image y luego con linux-headers
Comando para instalarlo sudo dpkg -i nombre del paquete, recuerda el orden, primero linux-image y luego linux-headers.
Se me olvidaba, que se puede optimizar mucho mas el kernel, pero para eso, tienes que quitar soporte a muchos dispositivos, y para eso necesitas ciertos conocimientos de tu equipo, lo que tiene exactamente, para asi hacer un kernel ultraligero y rapido.
Créditos a http://www.ubuntusur.org y K|Ke por la ayuda prestada en aquel entonces, ya que desde aquí fue cuando en realidad si pude compilar sin problemas el kernel en ubuntu y de una manera super sencilla.
FAQ: http://taringa.net/posts/linux/5823972/Por-que-compilar-el-kernel-en-Linux_.html
Saludos y buena suerte.

