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: , ,

Fundación Copyleft