Título: Compilacion de Linux Kernel Publicado por: ..sR. aDiKtO.. en 2 Septiembre 2002, 21:49 pm .===============================
-- Autor: Wendell -- Desidents Espanña www.desidents.org -- Fuente: http://www.jsnv.org/textos/lin_004.html .================================. |===========~ INDICE ~=========== |================================ |=~ 1 - Introduccion | |=~ 2 - Requisitos para compilar el kernel | |=~ 3 - Obtencion del fuente | |=~ 4 - Manos a la obra | |=~ 5 - Arranque con el nuevo kernel | |=~ 6 - Parchear una version inferior del kernel para actualizarlo | ====================~ INDICE ~============ |=======~ 1 INTRODUCCION ~=============== En GNU/Linux tenemos la posibilidad de poder compilar el nucleo de nuestro sistema para poder adaptarlo a nuestras necesidades, es el encargado de que el software y el hardware de tu ordenador puedan trabajar conjuntamente, las distribuciones actuales de Linux suelen traer un kernel precompilado que incluye las configuraciones mas comunes. Algunos se preguntaran: ¿esrealmente necesario actualizarme al ultimo kernel cada vez que este ten gauna nueva version? Bien, las ultimas versiones del kernel suelen traercorreciones de progr- amacion, nuevos soportes para distintas funciones etc.Si todas estas nuev- as caracteristicas que se han añadido no la vamos autilizar, pues real- mente no necesitariamos compilar un kernel nuevo, aunque siempre es bueno actualizarse cuando el kernel que poseemos ya se estaquedando un poco desfasado. Al compilar un nuevo nucleo definimos en granmedida su comporta- miento,podemos dar soporte a distintos tipo de filesystems, hardware, protoc- olos de red, SCSI etc. |=======~ 2- REQUISITOS PARA COMPILAR EL KERNEL ========== Para compilar el nucleo es necesario tener previamente algunas herramientas instaladas y configuradas, algunas son bastantes obvias, como el compilador gcc,el compilador de lenguaje C "entre otros" de GNU, el kernel esta escrito en C en su mayoria, si no recuerdo mal, el 99% es C, y 1% esamblador. Aqui pongo un pequeño listado de las herramientas necesarias para la compilacion GCC make ncurses ncurses-dev bin86 libc6 libc6-dev binutils. Si os faltase alguno de estos requisitos deberiais buscarlos en http://www.freshmeat.net , http://www.rpmfind.net o en http://www.google.com .No hace falta decir que para compilar el kernel tenemos que estar como super usuario (root). |=======~ 3- OBTENCION DEL FUENTE ============ Para poder bajarnos el kernel de Linux solo debemos ir a su pagina oficial: http://www.kernel.org aqui encontraremos un servidor de ficheros al que sepuede acceder mediante http, ftp y rsync, el camino mas corto es descargandodirectamente el fichero que sale al lado de: The latest stable version of theLinux kernel is: 2.*.* . En la realizacion de este articulo, la ultimaversion es la 2.4.17, siem- pre es una buena idea leer un poco sobre los bugs del kernel que nos quer- emos descargar y decidir si es recomendable o nocompilarlo. Nosotros va- mos a poner de ejemplo la version 2.4.17, asi que nosdirigimos hacia: http://www.kernel.org/pub/linux/kernel/v2.4/ una vez que lapagina este cargada nos daremos cuenta de que aqui se encue- ntran todos losnucleos 2 .4.* , aqui encontraremos los distintos ficheros con distintasextensiones. linux-2.4.17.tar.bz2 --- 22.7 Mblinux-2.4.17.tar.gz ---- 28.4 Mb Ahora nos tenemos que bajar cualquiera de los ficheros, es mejor que os bajeis el tar.bz2, puesto que ocupa 6 Megas menos . Los diferentes numeros del nucleo indican la version del kernel, el primero es el general 2.*.*, el segundo segun sea par o impar indica si es estable o si esta en desarollo 2.4.* , y el tercer y ultimo numero indica la revision en la que se encuentra, 2.4.17.. |=======~ 4- MANOS A LA OBRA ================ Bien, una vez que se hayan bajado los 22.1 Mb en nuestro disco duro, procederemos a descomprimirlo y a destarearlo en /usr/src/ con el siguiente comando: ---------------------------------------------------------------------------| En el caso de haber bajado: linux-2.4.17.tar.bz2 || # tar xyf linux-2.4.17.tar.bz2 |--------------------------------------------------------------------------| En el caso de haber bajado: linux-2.4.17.tar.gz || # tar -xzvf linux-2.4.17.tar.bz2 |--------------------------------------------------------------------------| Con esto se habra creado una carpeta nueva llamada linux, pues bien, nos metemos dentro y estaremos situados en /usr/src/linux/. Ahora debemos elegir el metodo por el cual vamos a compilar el nuevo kernel, en total hay tres, los tres son igualmente validos y suele ser cuestion de gusto cual manejar, estos tres metodos son: make config, make menuconfig y make xconfig. Ahora vamos a analizar estos tres metodos: ---------------1- make config----------------------------------------------- Este en el metodo mas complejo que podemos escoger, solo es recomendable para usuarios experimentados, ya que se basa todo en metodo texto, sin colores, ni menus, tambien hay que seguir un orden muy estricto, y se hecha en falta ayudas en el proceso. ---------------2- make menuconfig------------------------------------------- Este metodo es mucho mas recomendable que el anterior, no es en modo grafico, pero se maneja de forma similar desde el teclado, con la barra espaciadora marcamos y desmarcamos las opciones a compilar, y con los cursores nos movemos. Tambien permite cargar opciones ya guardadas para retocarlas o hacer la misma compilacion. Dispone de menus de ayuda, cosa que no poseia make config. ----------------3- make xconfig---------------------------------------------- Este es el metodo mas recomendable para los usuarios novatos o inexpertos en el tema de compilacion del kernel. Este metodo es 100% grafico solo permite usar raton, igual que el anterior este permite cargar y guardar configuraciones, posee tambien menus de ayuda. ***************************************************************************** Bien, una vez que tengais claro que opcion os gusta mas, solo debeis poner en el terminal el make de esta misma, y seguidamente teneis que escoger las opc- iones que quereis compilar.Una vez que hayais escogido todas esas opciones de compilacion, pasamos a la compilacion en si. 1- En el terminal ejecutaremos: make dep Este comando crea las dependencias necesarias para poder compilar el kernel correctamente 2- Ahora ejecutamos make clean Esto borra lo posibles binarios existentes para poder crear los nuevos de forma limpia y ordenadada 3- Y por ultimo make bzImage Este es el ultimo comando para compilar el kernel, una imagen se creara en: /usr/src/linux/arch/i386/boot/ , esta imagen se llama bzImage, que mas tarde servira para poder arrancar el equipo con el nuevo kernel compilado, esto se puede hacer de dos maneras: la primera es editando el lilo y la seguna es cear un disco de inicioBien, como podreis comprobar hemos tecleado estos tres comandos por separado, cuando uno terminaba pues ejecutabamos el siguiente, pues bien, esto se puede todo de golpe, y se hace con el siguiente comando: make dep && make clean && make bzImage La duracion de la compilacion del nucleo puede variar mucho dependiendo de la velocidad de tu ordenador, puede tardar desde 10m, 20m, 40m ....Ahora solo queda instalar los modulos, que se realizan con el siguiente comando: make modules && make modules_install , Este comando instala los modulos en /lib/modules/version_kernel |=======~ 5- ARRANQUE CON EL NUEVO KERNEL ~============= Hay dos formas de poder usar linux con el nuevo kernel, una de ellas es edi- tando el lilo, y la otra es creando un disko de arranque, para los despista- dos que no sepan lo que es el lilo, pues sencillamente es un gestor de arra- nque muy versatil que permite iniciar un sistema operativo (SO) cargan- do el sector de arranque de una partición del disco duro. -------------------------*** arrancar con lilo ***------------------------- Bien primero veamo como arrancar usando el lilo, lo primero que debemos de hacer es copiar la imagen del kernel nuevo en /boot , esto se hace con el siguiente comando: cp /usr/src/linux/arch/i386/boot/bzImage /boot Seguidamente no dirigimos /boot y cambiamos el nombre del bzImage por: vmlinuz-2.4.17 , el cambio de nombre se realiza de esta manera siguiente mv bzImage vmlinuz-2.4.17 Ahora debemos copiar tambien el System.map que se encuentra en /usr/src/linuxa /boot , esto lo hacemos con este comando: cp /usr/src/linux/System.map /boot/ Si te pregunta si deseas sobreescribir le dices que si, antes de hacer este ultimo comando seria recomendable copiar el antiguo el System.map en cualqu- ier directorio por razones de preaucatividad. Bien ya tenemos la imagen del kernel2.4.17 y la System.map en /boot, ahora abrimos el archivo de configur- acion del lilo, este se encuentra en: /etc/lilo.conf , una vez abierto deb- emos editarlo para añadir una nueva entrada para el nuevo kernel, normalmen- te con solo añadir las siguientes lineas ya valdria: image=/boot/vmlinuz-2.4.17 label=linux_2.4.17 root=/dev/hde6 ----------------------------------------------------------------------------- read-only-------------------------------------------------------------------- *nota: como podeis comprobar /dev/hde6 es la particion donde esta || instalado linux en mi maquina, si no sabeis en que particion esta|| ||instalada la vuestra, solo debeis poner en el terminal: df , y en || ||la linea en el cual salga el directorio raiz / es la particion en || ||la que esta vuestro linux, si la vuestra no es hde6 pues la || ||deberiais cambiar por la que salga.En mi caso es || || Filesystem Size Used Avail Use% Mounted on || /dev/hde6 4.7G 1.1G 3.4G 24% / |--------------------------------------------------------------------- Ahora deberiamos guardar el lilo.conf con la nueva entrada, y en el terminal pondriamos: lilo Y como resultado nos tendria que dar algo como esto: Added linux *Added linux_2.4.17Si tuviesemos mas sistemas operativos, pues saldran Added y el nombre de SO. Bien, ahora reiniciamos el sistema, y cuando nos saldriese el lilo deberiamos ver una entrada con el siguiente nombre: linux_2.4.17 , pues le damos para arrancar y todo deberia salir bien, si quieres que el nuevo kernel sea el que se inicie por defecto solo debes sustituir la linea: default=* por default=linux_2.4.17 Y volveriamos a poner lilo en el terminal -------------------------------- *** arrancar con un diskete ***-------------------------------- lo primero es que debemos de tener es un diskete formateado, para formatear un disekete en Linux se hace con de este el siguiente comando: fdformat /dev/fd0 Despues nos vamos a: /usr/src/linux/ y ejecutamos el siguiente comando: mkbootdisk Ahora sigues estos sencillos pasos, lo configuras y reinicias booteando desde el diskete. ||---------------------------------------------------------------|| ||*nota: para comprobar si estas en el kernel 2.4.17 solo debes || || ejecutar este comando: uname -r , os deberia salir: 2.4.17 , || ||con uname -a obtendras mas informacion sobre el sistema |----------------------------------------------------------------- |=======~ 6- PARCHEAR UNA VERSION INFERIOR DEL KERNEL PARA ACTUALIZARLO ==== El parche para el kernel de Linux es un archivo que contiene informacion sobre las lineas de codigo que han cambiado desde la penultima version del nucleo, por ejemplo, si tienes la version del kernel 2.4.16 y quieres actualizarte a la 2.4.17 pues solo deberias bajarte el parche: patch-2.4.17.bz2 , que solo ocupa 388 kb en vez de los 22.7 Mb del nucleo nuevo, esto supone un ahorro considerable de tiempo para usuarios que no disponemos de conexiones rapidas. Supongamos que tienes el kernel 2.4.14, y quieres disponer de la Ve rsion 2.4.17 sin tener que bajarte el nucleo entero, pues entonces tendrias que bajarte los parches patch-2.4.15.bz2, patch-2.4.16.bz2 ,patch-2.4.17.bz2. Con estos dosejemplos creo que todo ha quedado mas claro, ahora pasemos a la accion.Una vez que este bajado el parche lo copias a /usr/src con el siguie- nte comando: cp patch-XX.YY.ZZ.gz /usr/src/ Ahora descomprimes el fichero con: bunzip patch-XX.YY.ZZ.bz2 Aplica el parche con: patch -s -p0 < patch-XX.YY.ZZ A continuacion entras en /usr/src/linux y ejecutas make clean make xconfig make dep make bzImage Ahora te toca leer desde: | arranque con el nuevo kernel | , que esta un poco mas arriba. Título: Re:Copilacion de Linux Kernel Publicado por: AbeToRiuS en 3 Septiembre 2002, 07:19 am Adikto, he movido este post a esta sección que creo que es mas adecuada.
Título: Re:Compilacion de Linux Kernel Publicado por: ..sR. aDiKtO.. en 3 Septiembre 2002, 11:47 am Yo la keria poner en esta sección pero no tengo pribilegios, me parece de pm AbeToRiuS k la hayas movido.
Título: Re: Compilacion de Linux Kernel Publicado por: ice en 1 Mayo 2004, 17:09 pm bueno io voy a decir algo tal ves les sirva a alguno... yo soy un tipo vago jejeje asi que tambien los pasos para compilar el kernel pueden ser asi: make menuconfig (se ponen a seleccionar lo que necesiten, no pongan cosas de mas porque es al pedo) despues escribimos asi: make dep; make clean; make bzImage; make modules; make modules_install; make bzlilo y listo con esas lineas con los ; (punto y coma) hacen que se vayan ejecutando los comandos en el orden que los escribieron y asi con el make bzlilo no tendran que tocar el lilo.conf ni ninguna otra cosa porque se setea solo :)
Título: Re: Compilacion de Linux Kernel Publicado por: kfault en 27 Noviembre 2005, 21:47 pm Una pregunta, que tengo que hacer si en vez de tener Lilo tengo Grub? Me refiero por la sección de "Arranque con el nuevo kernel".
Gracias. |