09 julio 2010

Como compilar un kernel en Ubuntu 10.04

En el wiki oficial tenemos practicamente toda la informacion disponible para compilar nuestro propio kernel en Ubuntu, pero esa informacion esta bastante desorganizada y es un poco un lio para alguien que no sea un usuario bastante avanzado

he intentado estructurarlo todo un poco para poder crear un "How-to" paso a paso con todos los detalles para que practicamente no tengais ningun problema

primeros pasos

instalar los programas y herramientas que nos hacen falta, para ello abrimos un terminal y pegamos el siguiente comando, tened en cuenta que es todo uno:
sudo apt-get install fakeroot kernel-wedge build-essential makedumpfile kernel-package libncurses5 libncurses5-dev


luego viene el siguiente:
sudo apt-get build-dep --no-install-recommends linux-image-$(uname -r)


y finalmente estos cuatro pasos:
mkdir ~/src

cd ~/src

apt-get source linux-image-$(uname -r)

cd linux-2.6.32


ahora mismo (9-7-2010) el codigo fuente del kernel estable actual es el 2.6.32, por eso en el ultimo comando anterior nos crea la carpeta 2.6.32

es una buena idea empezar la configuracion del kernel copiando el .config actual del kernel que tenemos instalado y mas en ubuntu, para ello escribimos en consola el siguiente comando:
sudo cp -vi /boot/config-`uname -r` .config


ahora ya estamos preparados para cambiar los parametros pertinentes en el .config del kernel que vamos a compilar escribiendo el siguiente comando:
sudo make menuconfig


este momento es el mas delicado, porque aqui hay muuuuuuuuchos parametros modificables, yo personalmente solo he buscado mas compatibilidad con mi procesador y eliminar algun modulo que otro innecesario, pero si no sabeis exactamente lo que estais haciendo, mejor tocar lo justo

una vez finalizadas las modificaciones pertinentes guardamos y salimos del menuconfig, ahora es tiempo de compilar

para mejorar el aprovechamiento de los nucleos que pueda tener nuestro procesador podemos ejecutar el siguiente parametro en la consola:
export CONCURRENCY_LEVEL=3


la regla general es uno mas de los nucleos que tengamos, o sea, si tenemos un dualcore seria LEVEL=3 pero en el caso de un quad, LEVEL=5 por poner dos ejemplos

ahora a compilar:
sudo make-kpkg clean

sudo fakeroot make-kpkg --initrd --append-to-version=-aqui-el-nombre-del-kernel kernel-image kernel-headers


acordaros en la linea que pone "--append-to-version=-aqui-el-nombre-del-kernel" teneis que modificar modificar el "=-aqui-el-nombre-del-kernel" por "=-lo-que-os-de-la-gana"

esto puede tardar desde unos minutos hasta unas horas, todo depende del poder de nuestro procesador, una vez terminado y si no ha habido demasiados errores se os creara el kernel en forma de paquete instalable en el mismo directorio donde hemos compilado el kernel

ahora toca instalarlo:
cd ~/src

sudo dpkg -i linux-image-2.6.32.etc.etc.etc.deb

sudo dpkg -i linux-headers-2.6.32.etc.etc.etc.deb


acordaros de cambiar los .etc.etc.etc por la version real del kernel compilada

teoricamente el initramfs se crea automaticamente al instalar el kernel via dpkg, pero a mi no me ha funcionado, por ello actualizamos el initramfs con el siguiente comando que tan solo es un ejemplo, a lo mejor en vuestro caso es 2.6.32.50+drm40.3-lo-que habeis-escrito-antes:
sudo update-initramfs -c -k 2.6.32.11+drm33.2-lo-que-teniais-que-modificar-antes


ahora tan solo nos queda añadir el nuevo kernel al grub:
sudo update-grub


y reiniciamos con nuestro flamante nuevo kernel compilado por nosotros mismos ;)

toda la informacion ha sido sacada de http://linuxtweaking.blogspot.com

Etiquetas: , ,

2 Comentarios:

Blogger Unknown dice...

Artículo muy bien traducido, de echo estaba a punto de publicar algo parecido. Por suerte aún no había empezado a prepararlo.

Comentar que en la linea de compilación, en el momento de aclarar que es lo que se puede modificar, se te ha escapado: "-some-string-aqui-el-nombre-del-kernel"

Yo he toqueteado bastante el kernel para ver si el ordenador arrancaba más rápido y según bootchart no he notado demasiada diferencia. Pero eso si, yo no veo ningún riesgo al quitar más opciones de la cuenta. Lo único perder el rato que te has pasado eligiendo opciones y la parte buena aprender algo más.

Una opción que minimiza este riesgo de perder tiempo, es el usar la ayuda ("?") en cada una de las partes del kernel en las que dudes si desactivar o no. Aunque en inglés, está muy bien explicado y a veces esta ayuda te comenta que puedes desactivar opciones sin riesgo. Supongo que ese riesgo se refiere a un "kernel panic". Pero como mantenemos nuestro kernel anterior,digo yo que mucho pánico no hay que tener.

Y por último para saber exactamente de que hardware disponemos, es de gran ayuda usar el comando:

$ lshw

Nos devuelve una lista detallada de todo nuestro hardware, lo copiamos en un archivo de texto y usando la opción de buscar, nos cercioramos de que no disponemos de cierto hardware o de que no necesitamos cierto driver,...


Un saludo!

20:26  
Blogger Mitjalluna dice...

Muchas gracias por la apreciacion compañero, se me habia colado :D

lo de no toquetear demasiado es una forma de que las personas con menos experiencia tengan un poco de miramiento con las cosas que tocan, pienso que es preferible toquetear lo justo al principio e ir poco a poco desmelenandose que hacerlo todo polvo a las primeras de cambio y pasar completamente del tema

un saludo y muchas gracias compañero!!!

21:31  

Publicar un comentario

<< Home

Fundación Copyleft