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:
luego viene el siguiente:
y finalmente estos cuatro pasos:
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:
ahora ya estamos preparados para cambiar los parametros pertinentes en el .config del kernel que vamos a compilar escribiendo el siguiente comando:
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:
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:
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:
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:
ahora tan solo nos queda añadir el nuevo kernel al grub:
y reiniciamos con nuestro flamante nuevo kernel compilado por nosotros mismos ;)
toda la informacion ha sido sacada de http://linuxtweaking.blogspot.com
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
2 Comentarios:
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!
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!!!
Publicar un comentario
<< Home