Como recompilar el kernel Linux en openSUSE
Cada distribucion posee algunas herramientas especificas para construir el kernel desde las fuentes. En este articulo voy a explicar como compilar Linux desde un sistema openSuSE. Se describe como construir un kernel personalizado a partir de las fuentes desde www.kernel.org (vanilla kernel) de manera de ser independiente del kernel proporcionado por la distribucion.
Antes que nada voy a decir que no es la unica manera de hacerlo, pero si es la que yo voy a usar y no aseguro que funcione para todos.
1 - Nota preliminar
La idea aca es contruir un paquete rpm con el kernel que pueda ser instalado en cualquier sistema openSUSE, lo cual es una gran ventaja comparada con el metodo “tradicional” en el que solo queda para el sistema en el que se compilo.
2 - Instalar los paquetes requeridos para compilar el kernel
Debemos instalar el paquete ncurses-devel el cual es requerido por el comando make menuconfig que utilizaremos mas tarde:
3 - Descargar las fuentes del kernel
Ahora hay que descargar las fuentes del kernel al directorio /usr/src. Asi que vamos a www.kernel.org y seleccionamos el kernel a instalar, por ejemplo linux-2.6.37.tar.gz
Una vez completada la descarga, desempaquetamos el codigo fuente y creamos un enlace simbolico a las fuentes:
4 - Configuracion y compilacion del kernel
Es una buena idea comenzar con la misma configuracion que tenemos en el kernel instalado actualmente, para esto ejecutaremos los siguientes comandos
con este ultimo tomamos la configuracion actual (modulos activos en el kernel actualmente instalado) para luego agregar o quitar los modulos que crea conveniente.
luego comenzaremos la configuracion con el comando:
aca hay que ir entre todas las opciones y es diferente para cada PC, asi que no voy a decir que cambiar, es deber de cada uno probar, una vez terminada la configuracion salimos guardando la configuracion e iniciamos la compilacion y creacion del paquete rpm con el comando:
una vez terminado de agregar y quitar los modulos con este ultimo comando nos dira cuantos modulos instalaremos y esta recompilacion.
generalmente alrededor de unos 50 / 80 modulos nos indicaria que esta bien. (2000 seria indicador de que algo esta mal)
Por ultimo el comando make rpm sera el encargado de generarnos el paquete RPM listo para ser instalado
con mi procesador, Intel Core 2 Quad y con 72 modulos activos, llevo unos 12 min la compilacion
5 - Instalacion del kernel
El paquete rpm creado podra encontrarse en /usr/src/packages/RPMS/X donde X corresponde con la arquitectura del sisstema usado para compilar, en mi caso es /usr/src/packages/RPMS/i386, para instalarlo ejecutamos los comandos:
Ahora hay que crear la imagen del kernel para poder iniciarlo, para esto utilizamos el comando:
Salida:
este comando genera la imagen correspondiente para todos los kernel instalados en el sistema
Una vez completado este paso solo resta crear la entrada en grub para poder iniciar el kernel recien compilado, para esto editamos el archivo /boot/grub/menu.lst y creamos una entrada similar a la siguiente
Fuente 1
Fuente 2: Experiencia Propia.
Cada distribucion posee algunas herramientas especificas para construir el kernel desde las fuentes. En este articulo voy a explicar como compilar Linux desde un sistema openSuSE. Se describe como construir un kernel personalizado a partir de las fuentes desde www.kernel.org (vanilla kernel) de manera de ser independiente del kernel proporcionado por la distribucion.
Antes que nada voy a decir que no es la unica manera de hacerlo, pero si es la que yo voy a usar y no aseguro que funcione para todos.
1 - Nota preliminar
La idea aca es contruir un paquete rpm con el kernel que pueda ser instalado en cualquier sistema openSUSE, lo cual es una gran ventaja comparada con el metodo “tradicional” en el que solo queda para el sistema en el que se compilo.
2 - Instalar los paquetes requeridos para compilar el kernel
Debemos instalar el paquete ncurses-devel el cual es requerido por el comando make menuconfig que utilizaremos mas tarde:
~ # zypper in ncurses-devel
3 - Descargar las fuentes del kernel
Ahora hay que descargar las fuentes del kernel al directorio /usr/src. Asi que vamos a www.kernel.org y seleccionamos el kernel a instalar, por ejemplo linux-2.6.37.tar.gz
~ # cd /usr/src
/usr/src # wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.37.tar.gz
Una vez completada la descarga, desempaquetamos el codigo fuente y creamos un enlace simbolico a las fuentes:
/usr/src # tar xvfj linux-2.6.37.tar.bz2
/usr/src # ln -s linux-2.6.37 linux
/usr/src # cd /usr/src/linux
4 - Configuracion y compilacion del kernel
Es una buena idea comenzar con la misma configuracion que tenemos en el kernel instalado actualmente, para esto ejecutaremos los siguientes comandos
/usr/src/linux # make mrproper
/usr/src/linux # ./scripts/kconfig/streamline_config.pl > config_new
/usr/src/linux # mv config_new .config
con este ultimo tomamos la configuracion actual (modulos activos en el kernel actualmente instalado) para luego agregar o quitar los modulos que crea conveniente.
luego comenzaremos la configuracion con el comando:
(para agregar o quitar modulos)/usr/src/linux # make gconfig
aca hay que ir entre todas las opciones y es diferente para cada PC, asi que no voy a decir que cambiar, es deber de cada uno probar, una vez terminada la configuracion salimos guardando la configuracion e iniciamos la compilacion y creacion del paquete rpm con el comando:
/usr/src/linux # cat .config | grep =m | wc -l
una vez terminado de agregar y quitar los modulos con este ultimo comando nos dira cuantos modulos instalaremos y esta recompilacion.
/usr/src/linux-2.6.37 # cat .config | grep =m | wc -l
50
generalmente alrededor de unos 50 / 80 modulos nos indicaria que esta bien. (2000 seria indicador de que algo esta mal)
Por ultimo el comando make rpm sera el encargado de generarnos el paquete RPM listo para ser instalado
/usr/src/linux # make rpm
con mi procesador, Intel Core 2 Quad y con 72 modulos activos, llevo unos 12 min la compilacion
5 - Instalacion del kernel
El paquete rpm creado podra encontrarse en /usr/src/packages/RPMS/X donde X corresponde con la arquitectura del sisstema usado para compilar, en mi caso es /usr/src/packages/RPMS/i386, para instalarlo ejecutamos los comandos:
/usr/src/linux # cd /usr/src/packages/RPMS/i386/
/usr/src/packages/RPMS/i386/ # rpm -ivh kernel-2.6.370.7desktop-1.i386.rpm
Ahora hay que crear la imagen del kernel para poder iniciarlo, para esto utilizamos el comando:
/usr/src/packages/RPMS/i386/ # mkinitrd
Salida:
/usr/src/packages/RPMS/i386 # mkinitrd
Kernel image: /boot/vmlinuz-2.6.34.7-0.7-desktop
Initrd image: /boot/initrd-2.6.34.7-0.7-desktop
Root device: /dev/disk/by-id/ata-SAMSUNG_HD322HJ_S17AJ90S226883-part6 (/dev/sda6) (mounted on / as ext4)
Resume device: /dev/disk/by-id/ata-SAMSUNG_HD322HJ_S17AJ90S226883-part5 (/dev/sda5)
Kernel Modules: thermal_sys thermal pata_amd ata_generic processor fan crc16 jbd2 ext4
Features: block usb resume.userspace resume.kernel
Bootsplash: openSUSE (1024x768)
42513 blocks
Kernel image: /boot/vmlinuz-2.6.37-0.7-desktop
Initrd image: /boot/initrd-2.6.37-0.7-desktop
Root device: /dev/disk/by-id/ata-SAMSUNG_HD322HJ_S17AJ90S226883-part6 (/dev/sda6) (mounted on / as ext4)
Resume device: /dev/disk/by-id/ata-SAMSUNG_HD322HJ_S17AJ90S226883-part5 (/dev/sda5)
Kernel Modules: thermal_sys thermal pata_amd ata_generic processor fan crc16 jbd2 ext4
Features: block usb resume.userspace resume.kernel
Bootsplash: openSUSE (1024x768)
58013 blocks
este comando genera la imagen correspondiente para todos los kernel instalados en el sistema
Una vez completado este paso solo resta crear la entrada en grub para poder iniciar el kernel recien compilado, para esto editamos el archivo /boot/grub/menu.lst y creamos una entrada similar a la siguiente
title Desktop -- openSUSE 11.3 - 2.6.7
root (hd0,0) kernel /boot/vmlinuz-2.6.37-0.7-desktop root=/dev/sda1 resume=/dev/sda2 splash=silent quiet showopts vga=0x317
initrd /boot/initrd-2.6.37-0.7-desktop
Fuente 1
Fuente 2: Experiencia Propia.