compilar el kernel

Imagen de mama21mama

¿Linux? Sí, a mi gusto y estilo 10ª parte

Juas que largo va a acabar el manual... ah! Hola a todos, cuanto tiempo ha pasado pero es lo que tiene eso de estudiar en la universidad xDD soy un negado con C++ pero espero que el tiempo no castigue a este humilde servidor xDD... "Ave Burnhack, morituri te salutant" xD

Hoy yo y mi debian nos hemos levantado con buen pie, al principio no quería levantarse pero como el ordenador ya me conoce bien sabe lo que le conviene... Hoy voy a llevar el manual a otro nivel y quiero decir que esto puede que sea junto con modificar las particiones o toquetear con los archivos del GCC lo MÁS ARRIESGADO QUE PUEDES LLEGAR A HACER, POR FAVOR, NI SE OS OCURRA CONTINUAR A NO SER QUE SEA EXTRICTAMENTE NECESARIO HACERLE UNA ACTUALIZACIÓN AL KERNEL DE LINUX. Sí, habéis leído bien, este golpe la cosa va de más compilación (y que os esperabais? si habéis seguido el manual de cabo a rabo deberíais tener mazo de experiencia ya) pero este golpe la compilación es del kernel. En este ejercicio se ha utilizado:

Debian 4: Kernel: linux-image-2.6.18.6-486 (instalado por defecto)
linux-headers-2.6.18.6-486 (sin esto no se pueden instalar algunos drivers y en máquina virtual va del culo internet si no tienes esto puesto)
linux-image-2.6.27.4 (kernel a instalar)
GCC (v4.2.0)
g++
Requisitos mínimos:

- autoconf, automake, make, linux-headers-XXX, GCC, g++ (precisamente el colega Linus recomienda una versión específica de GCC para instalar el kernel, pero con que compile suficiente xD)

- libncurses5-dev, libqt3-dev (opcional), kernel-package (opcional pero nos ahorra tiempo en sistemas basados en debian)

NOTA: Normalmente las distribuciones actuales tienen actualizaciones para el kernel (como SuSE por Yast y Ubuntu por Synaptic etc, etc...), esto quiere decir que jugar con el kernel teniendo una distribución de esas instaladas es una tontería, TU YA DEBERÍAS DE TENER SOPORTE PARA TU KERNEL ACTUAL Y NO LE HACE FALTA QUE TE LO CARGUES EXPERIMENTANDO XDDDD, es decir, tu kernel se actualizará sólo cuando el fabricante saque los parches adecuados del kernel.

1º De dónde bajo yo el kernel Eternal_Sin?

Abre el google y pon kernel a ver qué sale xDDD, venga, nada os hecho un cable:

http://kernel.org

2º Porqué actualizar mi versión del kernel?

Normalmente, en casos en los que tu sistema GNU/Linux va bien lo mejor es que no lo toques ya que el kernel es la piedra angular de los sistemas basados en GNU/Linux. El kernel contiene todo lo necesario como para que al menos no desees tener Vista en el ordenador ya que asegura la estabilidad del sistema y se encarga de gestionar los módulos que se utilizan para cargar drivers o activar soporte para particiones NTFS. Que yo recuerde, ya en la 2.6.18 el soporte para NTFS estaba asegurado pero he decidido actualizar mi kernel por las ventajas de seguridad que ofrece, sino mirad:

http://www.kriptopolis.org/bug-kernel-linux

No toques en el kernel si almenos no tienes un nivel medio de conocimientos, puedes fastidiar a base de bien el sistema.

3º Descargado el kernel...

El kernel descargado deberéis guardarlo en /usr/src/ ya que es donde se suele guardar toda la información de los kernel instalados (si accedéis a la carpeta con KDE o Gnome veréis los kernel y headers de vuestro sistema y sus versiones, en modo texto también pero sin iconitos xD)

eternalsin@Deusexmach $ su
Password:
Deusexmach@Localhost $ cd /usr/src
Deusexmach@Localhost $ wget [enlace_del_kernel]

Si no lo habéis hecho así, id a donde tenéis el nuevo kernel y como root:

Deusexmach@Localhost $ cp linux-image-2.6.27.4.tar.gz /usr/src

Y cuando esté copiado el archivo id a la carpeta src.
Ahora vamos a descomprimir el archivo, depende del archivo el comando a utilizar será diferente (más que el comando lo será los parámetros):

tar -xvzf linux-image-2.6.27.4.tar.gz
tar -xvjf linux-image-2.6.27.4.tar.bz2

Cuando se acabe de descomprimir, encontraréis en vuestro directorio una nueva carpeta, acceded a ella.

4º Compilar

Como los chicos de kernel son buena gente xD ya viene un archivo de configuración para compilar el kernel inmediatamente. Puedes hacer lo siguiente:

- Eliminarlo con make mrproper (esto eliminará el archivo de configuración y tendréis que hacer uno nuevo)

- Mantenerlo y sobre ese archivo crear vuestra propia configuración. Para ello tenéis 3 opciones:

1º make config (hay que ser muy experimentado para elegir esta opción, si eres nuevo no lo cojas)

2º make menuconfig (podrás construir tu kernel con un pequeño menú que hará las delicias incluso del más novato, muy recomendado)

3º make xconfig (como su nombre indica, deberás tener un servidor X en ejecución además de tener instalado libqt3-dev)

Personalmente, la opción 2 es más que suficiente y lo bastante buena como para aprobechar todo lo aprovechable del kernel. Las cosas en el programa de configuración van así:

* Build-in: Las opciones marcadas con esto hará que esa opción se ejecute al iniciar el kernel (recordad que antes de que cargue Linux debe de cargar el Kernel)

[M] Module: Las opciones marcadas con M serán los módulos. Están incluídos en el kernel pero se ejecutan más adelante, después de la carga del kernel. Un buen ejemplo son los controladores de las tarjetas gráficas o los drivers de ALSA.
[ ]: Simplemente vacío, esta opción no se utilizará ni con soporte nativo ni como módulo

ATENCIÓN: Dependiendo de cómo establecisteis las particiones (las mías todas en ext3 con particiones /home y /boot independientes) debéis de cargar dichas opciones CON LA OPCIÓN BUILD-IN y no como módulo. Por ejemplo:

Partición /dev/hda2 Punto de montaje: / (partición raíz) Tipo:ReiserFS Driver: Módulo

Os aseguro que eso sí que no carga ni en mil años, nunca excluyais de Build-In aquellos sistemas de ficheros que pertenecen a particiones que necesitan montarse SÍ o SÍ para arrancar el sistema.

Ahora ejecutamos:

make-kpkg clean

make-kpkg --initrd kernel_image kernel_headers 

La entrada --initrd es para que cree una imagen en boot, tal que el gestor de arranque reconozca el nuevo kernel y te dé la opción de arrancar.

Esto es para los que hayan instalado el kernel-package. Esta herramienta en lugar de un archivo .bz independiente os creará dos archivos .deb: El kernel y los headers para poder instalar módulos aparte. Los que no tengan kernel-package pueden utilizar o bien "make dep, make clean, make bzImage y make modules" o bien "make && make modules_install. Si haces esto último lee lo de configurar los módulos.

Configurar los Módulos

Debes listar los módulos que quiera cargar automáticamente en /etc/modules.autoload.d/kernel-2.6 y así poder agregar opciones extras a los módulos si lo desea.

Para ver todos los módulos disponibles, ejecutad el comando find. No olvide sustituir "" por la versión del kernel que acabaís de compilar:

# find /lib/modules/2.6.27.4/ -type f -iname '*.o' -or -iname '*.ko'

Por ejemplo, para cargar automáticamente el módulo 3c59x.ko, editad el archivo kernel-2.6 y escriba el nombre del módulo ahí.

# nano -w /etc/modules.autoload.d/kernel-2.6

3c59x

5º Instalando el Kernel

Como esto es debian, por ahora no haré hincapié en el método relatado anteriormente para compilarlo manualmente, eso para luego (sorry, por ahora debian y basados, ya miraré luego cuando tenga tiempo xD)

Si has seguido la instalación con make-kpkg, una carpeta más arriba de la que estás (si estás en /usr/src/linux-kernel-2.6.27.4 pues me estoy refiriendo a /usr/src) tendréis dos paquetes con el formato .deb uno con el nombre kernel-image-[versión].Custom_[arquitectura].deb y otro con el nombre kernel-headers-[versión].Custom_[arquitectura].deb. Hay que instalarlo con dpkg -i, por ejemplo (y en mi caso):

dpkg -i kernel-image-2.6.27.4.10.00.Custom_486.deb

dpkg -i kernel-headers-2.6.27.4.10.00.Custom_486.deb

Enhorabuena! ya tienes tu propio kernel instalado, reinicia y pruébalo.

Bueno, pues esto está tomando un camino muy bonito, aquí ya comenzamos a jugar en linux como auténticos Linux Users, sentíos orgullosos, yo lo estoy de vosotros por seguirme ya tan lejos xDD

Un saludo

Fuente

Otra guia

Sin votos aún
Distribuir contenido