Vous êtes sur la page 1sur 3

Compilando un Kernel a lo CentOS Compilar un kernel siempre puede ser una tarea larga y complicada si se desconoc en ciertas herramientas

que hacen de esta tarea en cambio algo fluido y hasta di vertido ;) En esta ocacin compilaremos un kernel en una distro CentOS la cual est basada en R edHat. No he tenido la oportunidad de probar en otras distros similares como Fed ora, pero creo que no debe haber mayor diferencia, con el tiempo ir publicando co mpilaciones rpidas de otras distros para sealar las diferencias entre ellas.

Para empezar descargo las fuentes del kernel de www.kernel.org, en este ejemplo usare la versin 2.6.27.53 wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.27.53.tar.bz2 Recordar que esto descargar el archivo en nuestra ubicacin actual. Por lo que se r ecomienda hacer esto desde /usr/src. Ahora lo descomprimimos: tar xvjf linux-2.6.27.53.tar.bz2 Un paso opcional es el aplicar posibles parches al kernel, las X significan la v ersion del parche y el comando --dry-run ejecuta el comando sin realizar cambios , si todo sale bien ejecutamos el siguiente: bzip2 -dc patch.X.X.bz2 | patch -p1 --dry-run bzip2 -dc patch.X.X.bz2 | patch -p1 gunzip -c patch.X.X.gz | patch -p1 --dry-run gunzip -c patch.X.X.gz | patch -p1 Verificamos tener las dependencias nescesarias, estas son: gcc, ncurses-devel, r pm-build. Vemos si tenemos instalado: rpm -qa gcc ncurses-devel rpm-build Si sale como resultado el nombre del paquete es que est instalado, si no sale nad a no est instalado. De ser este el caso, los instalamos com yum: yum install gcc ncurses-devel rpm-build Entramos al directorio que se descomprimi anteriormente las fuentes del kernel: cd linux.2.6.27.53 Ejecutamos un par de comandos que nos aseguran tener preparado todo para la comp ilacin: make clean && make mrproper Podemos copiar la configuracin actual de nuestro kernel si est funcionando correct amente, donde X.X.X es la numeracin del kernel: cp /boot/config-X.X.X ./.config Si no hacemos esto, el siguiente comando cargar la configuracin por defecto del ke rnel actual sobre el que est corriendo el sistema. Entonces ahora se ejecuta la a plicacin para configurar el kernel: make menuconfig Primero se carga el archivo .config con la opcin "Load an alternative configuracin file" si se guard el .config anteriormente. Recorrer los menus que se nos presentan puede llevarnos un buen tiempo, siempre podemos acceder a la ayuda del menu o de la opcin correspondiente (recomendado). Con la barra espaciadora activamos o desactivamos una opcin. Para un equipo de escritorio por ejemplo, generalmente podemos desactivar lo que es virtualizacin, tambin podemos seleccionar el tipo de procesador acorde a nuest ra mquina para optimizar sus funciones. Y si ya queremos ir mejorando las cosas, se puede desactivar todo tipo de hardware que no tenemos en nuestro equipo y que no vamos a usar en un futuro, por ejemplo drivers de video/sonido que no necesi

tamos, hardware de radiofrecuencia, etc. Una vez completada la configuracin se graba el .config con la ltima opcin del menu principal "Save configuration to an alternative file". Ahora viene la magia del programa rpm-build que se instal anteriormente, manualme nte compilar el kernel, primero que no nos genera un .rpm lo cual nos dificultara mucho la administracin si se mantienen actualizaciones locales del kernel por ej emplo, la segunda ventaja es que nos evita estar ejecutando los pasos de compila cin uno a uno, ya que debemos compilar el kernel, luego los mdulos e instalar cada uno de estos, entre otras cosas ms. Ejecutamos lo siguiente: make rpm Nada ms que eso, esto har todos los pasos necesarios y terminaremos con los rpms d e la fuente del kernel y del kernel como tal. Esto puede llevar varios minutos h asta horas dependiendo de la cantidad de opciones que hayamos elejido en la conf iguracin y de la capacidad de la mquina. Una vez finalizado se harn creado dos archivos: - kernel_VERSION.src.rpm dentro de /usr/src/redhat/SRPMS (fuentes) - kernel_VERSION.i386.rpm dentro de /usr/src/redhat/RPMS/i386 El primero como se indica, es el cdigo fuente del kernel, el segundo es el que no s interesa y su ubicacin variar si usamos una arquitectura diferente. Ahora se instala el rpm del kernel: cd /usr/src/redhat/RPMS/i386/ rpm -ivh --nodeps kernel_VERSION.i386.rpm Donde: -i install ; -v verbose ; -h signos de progreso ; --nodeps se recomienda para evitar conflictos con ciertas librerias. Como penltimo paso se crea la imagen de ram inicial initrd dentro de /boot: cd /boot mkinitrd initrd-VERSION.img VERSION Donde VERSION tiene que ser la misma numeracin del kernel que se compil, en este e jemplo sera 2.6.27.53 Solo queda aadir la entrada al grub del nuevo kernel. Para esto editamos el archi vo menu.lst del grub: vi /boot/grub/menu.lst Lo ms facil sera copiar la entrada actual y modificar su nombre de entrada y sus n ombres de archivos del kernel y del initrd. Es decir, supongamos que solo tenamos una entrada en el grub que es la que cre la instalacin: title CentOS (2.6.18-194.el5) root (hd0,0) kernel /vmlinuz-2.6.18-194.el5 ro root=/dev/dsk/root rhgb quiet initrd /initrd-2.6.18-194.el5.img Entonces, copiamos esta entrada y cambiamos la numeracin de VERSION acorde al ker nel que compilamos, lo que nos dejara: title CentOS (2.6.18-194.el5) root (hd0,0) kernel /vmlinuz-2.6.18-194.el5 ro root=/dev/dsk/root rhgb quiet initrd /initrd-2.6.18-194.el5.img title CentOS (2.6.27.53-custom1) root (hd0,0) kernel /vmlinuz-2.6.27.53-custom1 ro root=/dev/dsk/root rhgb quiet initrd /initrd-2.6.27.53-custom1.img

Guardamos los cambios con :wq (si lo abrimos con vi) Y listo! Reiniciamos la mquina y en el grub elegimos el nuevo kernel. Se lo puede comprobar con el comando: uname -r Y debera dar la version del kernel que compilamos. Eso es todo!! Saludos y como siempre, espero que sea de utilidad a alguien. No duden en comentar!!

Vous aimerez peut-être aussi