Compilando kernel 2.6.20 en edgy

Imagen de Xoxe
0 puntos

Aprovechando que ya se ha lanzado la versión del nuevo kernel 2.6.20 pondré aquí los pasos para poder compilarlo en ubuntu, dado que puede resultar un poco extenso, haz click en leer más

Bien, hemos pasado un escalón más del querer conocer más nuestro sistema operativo, que ventajas tiene el usar un kernel precompilado (o el que te viene de serie) con un kernel que tu mismo puedas compilar? Mucha, un kernel precompilado te viene con mil chorradas que en realidad no usarás nunca dado que es un kernel genérico para que funcione con la mayoría de ordenadores, lo que queremos es un kernel para nuestro ordenador y no para la mayoría por lo que tomas el hardware y sistema que realmente estás usando con la consecuente velocidad que se gana y agilidad. ¿Pero si tengo un 2.6.6 para que quiero actualizar al 2.6.20? Los tiempos cambian, junto con el hardware y nuevas funciones y el kernel no puede ser menos por lo que con una nueva versión del mismo tendrás más compatibilidad con muchos más componentes o mejores en los ya existentes.

Vamos manos a la obra:

Para no tener que instalar uno por uno los componentes necesarios para proceder a compilar el kernel ahorraremos trabajo instalando los paquetes build-essential y kernel-package.

bash:$ sudo apt-get install build-essential kernel-package

Las fuentes más actuales las podremos conseguir en www.kernel.org que son las que nos interesan dado que si usamos los linux-image tendremos un kernel precompilado, o lo que es lo mismo, estaremos en las mismas pero también podremos conseguir las sources en los repositorios de Ubuntu aunque no suelen estar muy actualizadas (en el momento de este post van por la 2.6.17-50)

Si nos decidimos por las que hay en los repositorios de ubuntu por bagería de descargarlo de kernel.org solo bastará con poner:

bash:$ sudo apt-get install linux-source

Una vez descargado tendras las fuentes en /usr/src Si lo que queremos es que, dado que ya que nos hemos puesto a aprender y compilar el kernel, usamos el último kernel estable disponible y para ello lo descargamos de kernel.org y lo movemos a /usr/src

bash:$ sudo mv linux-2.6.20-default /usr/src

Lo que está en rojo lo editamos por la versión del kernel que hayamos decidido instalar.

Una vez hecho esto, nos vamos al /usr/src:

bash:$ cd /usr/src

En caso de existir ya un enlace simbólico enlazado a un kernel antiguo deberemos borrarlo (si no tienes ni idea de que hablo, pon el mismo comando por si acaso).

bash:/usr/src$ sudo rm -R linux

Bueno, una vez hecho esto descomprimiremos las sources para proceder a la compilación del kernel:

bash:/usr/src$ sudo tar jxvf linux-2.6.20.tar.bz2

Cuando lo hayamos descomprimido ya tendremos el directorio donde tenemos nuestras sources y a dicho directorio le crearemos un enlace simbólico (acceso directo si fuera windows para haceros una idea) para que a la hora de acceder a dicho directorio sea más facil entrar como /usr/src/linux y no como /usr/src/linux-2.6.20 y es tán facil como poner:

bash:/usr/src$ sudo ln -s linux-source-2.6.20 linux

Ya lo tenemos todo listo y preparado, ahora hay que decir que hay dos formas de compilar el kernel, el make menuconfig o make xconfig, el make menuconfig no hace falta tener las X (la pantalla gráfica) en marcha, con el make xconfig es necesario tener las X funcionando.

Tanto para una cosa como para la otra necesitaremos un paquete adicional que es el libncurses5-dev (con todas sus dependencias) para usar el makemenuconfig y en caso de usar las make xconfig necesitaremos las libqt3-dev.

bash:/usr/src$ sudo apt-get install libncurses5-dev

bash:/usr/src$ sudo apt-get install libqt3-dev

Se puede partir de una configuración conocida para ahorrar trabajo (en caso de haber usado un kernel precocinado o precompilado abstenerse) en caso de ya haber compilado un kernel manualmente con anterioridad y es ir a /boot y copiar el archivo config-2.6.17 a /usr/src/linux-2.6.20 renombrandolo a .config

bash:$ cd /usr/src/linux
bash:/usr/src/linux$ sudo cp /boot/config-2.6.20 .config

Como anteriormente dije, en caso de resultar otro kernel debereis modificar la versión del mismo :P

Ahora ya, nos vamos a las sources (cd /usr/src/linux) y empezamos lo que es el mundillo de la compilación donde vereis que si teneis paciencia y un cierto tiempo libre es más facil de lo que se piensa. Usamos el sudo make oldconfig menuconfig o un sudo make oldconfig xconfig segun lo que nos convenga (personalmente prefiero siempre el make oldconfig menuconfig) y esto es peliagudo dado que debemos conocer nuestra máquina para no dejarnos algun modulo por el camino por lo que en caso de duda que sea más poner dos cosas que no ninguna, por ejemplo. Cuidado, que en este paso hacer algo mal significa compilar el kernel para nada, recordad (tengo una tarjeta gráfica que es XXXX pero hay dos módulos y no se cual de los dos es, Instala los dos).

Para construir el paquete o .deb para instalar nuestro nuevo kernel usaremos la función make-kpkg. Esta orden sustituye a las clásicas ordenes de antaño de make dep, make clean, make bzImage y make modules, por lo que ahorramos trabajo y tiempo con la make-kpkg. Y hacemos los siguientes comandos:

bash:/usr/src/linux$ sudo make-kpkg clean
bash:/usr/src/linux$ sudo make-kpkg –append-to-version=.XXXX –initrd kernel_image

Las XXXX representa una secuencia alfanumérica en la que podreis poner lo que deseeis, personalmente lo uso para poner la fecha de compilación por lo que mi kernel ahora mismo es este:

Linux xoxe 2.6.20.100207 #1 SMP Sat Feb 10 16:07:05 CET 2007 i686 GNU/Linux

Por favor, abstenerse de poner cosas como i386, i686, k6, k7, spark, o cualquier otra simbología de construcción y arquitectura, por lo demás podeis poner lo que querais.

Si usais por ejemplo la fecha de compilación quedaría algo como esto:

bash:/usr/src/linux$ sudo make-kpkg –append-to-version=.100207 –initrd kernel_image

Posiblemente cuando pongamos ese comando nos pueda salir una advertencia avisando de que si se comete un error se puede poner en peligro la configuración o el sistema, aunque si seguis bien los pasos que expongo, omitis esa advertencia porque saldrá bien y bien.. ahora toca esperar dado que la compilación dura su tiempo por lo que es un buen momento para tomarse un café, sacar al perro o seguir usando tu pc como de costumbre mientras trabaja.

Si todo ha ido correctamente se habrá generado en /usr/src un archivo llamado: kernel-image-2.6.20.100207_10.00.Custom_i386.deb que instalaremos como un paquete normal.

sudo dpkg -i kernel-image-2.6.20.100207_10.00.Custom_i386.deb

Esto no solo lo instalará sino que encima te ahorra los pasos de actualizar el initrd y el grub dado que lo hará todo solo, solo nos quedará borrar si queremos, aquel enlace simbólico que habíamos creado con bash:/usr/src$ sudo rm -R linux, reiniciar y gozar de nuestro nuevo kernel actualizado y personalizado. :P

 

Fuente: Elendil.es

Imagen de Warcer
+1
0
-1

The Ubuntu Counter Project - user number # 12922

Lo voy a compilar a ver que tal.

Gracias por la guia!.

Saludos! 

+1
0
-1

Arch Linux User

Imagen de Warcer
+1
0
-1

The Ubuntu Counter Project - user number # 12922

Bueno ya "compile" el Kernel y parece que todo salio bien pues al bootearlo me pone muchos FATAL: ...
pero no logre ver que dice pues se quita muy rapido pero aun asi el Kernel funciona sin problemas.

Una duda, no sabes en donde encontrar un guia detallada de los modulos?, es decir, que hace cada
modulo y cual es recomendable activar y cual no porque al parecer ese fue uno de mis errores ya que
me base en los modulos de un Kernel antiguo.

El Kernel que compile fue el 2.6.20.4 

+1
0
-1

Arch Linux User

Imagen de slap
+1
0
-1

Te muevo al foro apropiado.

______________________________
Equipo de moderadores del Foro
Normas del foro

+1
0
-1

Saludos.

0000 start out (+FD),A
           ld  BC, +7FFF
           jp 03CB, RAM-CHECK

http://www.injiniero.es

Imagen de marcosel10
+1
0
-1

Estoy tratando de compilar el kernel 2.6.12. Lo descomprimi en /usr/src/ y al poner el comando make menuconfig me tira los sig. errores:

.....

scripts/basic/fixdep.c:369: error ?sterr? no se declaro aqui (primer uso en la funcion)

scripts/basic/fixdep.c:371: aviso declaracion implicita incompatible de la funcion interna  ?exit?

......

make[1]:*** [scripts/basic/fixdep] Error 1 

 Porque me tira este error ?

+1
0
-1
Imagen de el_chamo_ve
+1
0
-1

cuando aplico "sudo make-kpkg –append-to-version=.XXXX –initrd kernel_image"  cambiando XXXXX por 110704 me dice que no reconoce el target -append-to-version...

 

si aplico "sudo make-kpkg buildpackage" me salto un paso? esta malo algo?

 

Se acabaron los tiempos de guerra... Demos tiempo a los tiempos de Paz

+1
0
-1

Se acabaron los tiempos de guerra... Demos tiempo a los tiempos de Paz

Imagen de jhcarande
+1
0
-1

Es cierto, pero es que debido al formato del foro esta escrito "mal"

 

sudo make-kpkg "- -"append-to-version=.XXXX "- -"initrd kernel_image

osea dos guiones justo antes del append y otros dos guiones justo antes del initrd pero dos guiones junticos (si te das cuenta en el foro aparece este guión mas grande que los otros, es por eso)

Espero haberme explicado.

Un abrazo ;-)

 Edito: Evidentemente sin las comillas ;-)

+1
0
-1
Imagen de el_chamo_ve
+1
0
-1

No lo he probado pero me otra pagina web me dijo lo mismo pero ese guion se veia mas grande y pues  me di cuenta... gracias por la aclaratoria... voy a tratar de volver a compilar un kernel... (como me habia actualizado a feisty ya tengo el kernel 2.6.20.xx pero voy a tratar de hacer uno para mi) gracias por estas clases j3j3.

 

Se acabaron los tiempos de guerra... Demos tiempo a los tiempos de Paz

+1
0
-1

Se acabaron los tiempos de guerra... Demos tiempo a los tiempos de Paz

Imagen de Moltrev
+1
0
-1

Yo uso ubuntu 8.10, mi problema era que no podía instalar mi webcam genius GF112, voy a probar con esto de la actualización del kernel. La version a la que voy a actualizar es 2.6.28.7 hasta ahora todo bien (creo) solamente que en este comando:

bash:/usr/src/linux$ sudo make-kpkg --append-to-version=.100207 --initrd kernel_image

del tutorial, me aparecen muchas preguntas que requieren un Y/n/m, asi que a todas les di "Y" supongo que pregunta por los drivers que deseo instalar, ya que aparecen muchos nombres de marcas, ahora bien, tambien aparecen otras preguntas que requieres un N/m, a estas les he puesto "m" a todas o casi todas, según tengo entendido son modulos, no soy muy sabio en estas cosas por eso espero que todo salga bien, termino de instalar el kernel y despues les aviso que tal.

Nunca detenerse...

+1
0
-1

Nunca detenerse...

Imagen de furtaxi
+1
0
-1

como algo variable, y veo que ya le diste un color rojo, pero, por más claridad, te diría que hicieras lo mismo con todas las referencias posteriores.

Y, por ejemplo, que se haga un ls, para ver cúal es el que se ha bajado, y que es ése el que hay que poner en todas las instrucciones.

Animado por tu post, me he puesto a ello, pero va lentillo, ya te contaré. Le he activado el soporte para ext4, a ver si luego puedo utilizarlo.

Mi WEB 100 % GNU/Linux: www.vigovideo.es
El que busca encuentra. El que no, se pierde. Arriba a la derecha, un precioso buscador.

+1
0
-1

Mi web : www.vigovideo.es
Buscar es más rápido que esperar una respuesta.

Imagen de Moltrev
+1
0
-1

Lleva mucho tiempo... y eso que aun no lo comienzo a instalar... creo que apenas esta creando el archivo

kernel-image-2.6.20.240209_10.00.Custom_i386.deb

Y todavía falta la instalacion... Creo que mejor formateo mi sistema y le pongo la version anterior de ubuntu que si me reconocia mi webcam. Finalmente no he instalado mucho aqui.

Nunca detenerse...

+1
0
-1

Nunca detenerse...

Imagen de furtaxi
+1
0
-1

Me imagino que por mi culpa, algo desactivé, que no detectaba el hardware... me quedé con la gráfica a 800x600, y sin sonido ni USB...
En fin, reinstalado, y probaré otra vez, con más cuidado.

Mi WEB 100 % GNU/Linux: www.vigovideo.es
El que busca encuentra. El que no, se pierde. Arriba a la derecha, un precioso buscador.

+1
0
-1

Mi web : www.vigovideo.es
Buscar es más rápido que esperar una respuesta.