Como he visto que son muchos los que "quieren dar el gran paso" y
compilar su propio kernel, voy a aportar mi granito de arena y postear
un muy breve tutorial de como hacerlo <span style="font-weight: bold;">en GNU/Linux Debian o en sistemas basados en él</span> (como UBUNTU).
Es un simple tutorial, NO INDICO COMO CONFIGURAR EL KERNEL ni PARA QUE
SIRVE CADA OPCIÓN; eso lo tendrán que leer / probar Uds. Este tutorial
es perfectible, así que todo aporte será bien recibido. Doy por sentado
que usan DEBIAN, que tienen instalados los paquetes necesarios, y que
su bootloader es GRUB...
Por último, los consejos de siempre: compilar el KERNEL no es para
expertos, pero si para cuidadosos. Un error puede hacernos perder
nuestro sistema... así que a poner cuidado...
<span style="font-weight: bold; color: rgb(255, 0, 0);"><span style="text-decoration: underline;">Primeros Pasos</span>:</span><br style="font-weight: bold; color: rgb(255, 0, 0);">
<span style="font-weight: bold; color: rgb(255, 0, 0);"></span>
<span style="font-weight: bold;">1.</span> Primero tenemos que bajar
las fuentes del kernel (kernel source), tanto desde
www.kernel.org,
como desde cualquier repositorio de Debian, con APT. En los CD's de las
USERS Linux suele venir la ultima versión tambien.
<span style="font-weight: bold;">2.</span> Las fuentes deben estar
descomprimidas en /usr/src/. Es bueno hacer un link simbólico llamado
'linux' que apunte a la carpeta donde están las fuentes. Por ejemplo:
<span style="font-weight: bold;"> # ln -s /usr/src/linux-2.6.13 /usr/src/linux</span><br style="font-weight: bold;">
<span style="font-weight: bold;">3.</span> Asegurarse de tener las librerías ncurses y el paquete 'kernel-package' instalados en el sistema.
<span style="font-weight: bold;">4.</span> Nos posicionames en la carpeta de las fuentes:
<span style="font-weight: bold;"># cd /usr/src/linux-2.6.14
</span> ó
<span style="font-weight: bold;"> # cd /usr/src/linux</span><br style="font-weight: bold;">
<span style="font-weight: bold; color: rgb(255, 0, 0); text-decoration: underline;">Configurando y compilando el Kernel:</span><br style="font-weight: bold; color: rgb(255, 0, 0); text-decoration: underline;">
<span style="font-weight: bold;">5.</span> Es hora de configurar el kernel, con cualquiera de estas posibilidades:
<span style="font-weight: bold;"># make config</span><br style="font-weight: bold;">
En modo texto, de a una pregunta por vez. NO RECOMENDABLE.
<span style="font-weight: bold;"> # make menuconfig</span><br style="font-weight: bold;">
En modo texto, pero con un menú con ncurses. RECOMENDABLE.
<span style="font-weight: bold;"> # make xconfig</span><br style="font-weight: bold;">
En modo gráfico. RECOMENDABLE.
Una vez que hemos configurado el kernel de acuerdo a las características de nuestro sistema, salimos y guardamos los cambios.
<span style="font-weight: bold;">6.</span> Ahora vamos a compilarlo, con las herramientas de Debian.
<span style="font-weight: bold;"> # make-kpkg revision=custom.VERSION kernel_image</span><br style="font-weight: bold;">
'VERSION' debe ser reemplazado por una cadena alfanumérica que nos
permita identificar el kernel que compilamos en el futuro. Por ejemplo:
K820051030.
Una vez que el programa compila el kernel, si todo sale bien, genera un paquete debian (.deb), para poder instalarlo. Ejemplo:
<span style="color: rgb(0, 0, 255);">'kernel-image-2.6.13_custom.K820051030_i386.deb'</span>
<span style="font-weight: bold; color: rgb(255, 0, 0); text-decoration: underline;">Instalando el Kernel:</span><br style="font-weight: bold; color: rgb(255, 0, 0); text-decoration: underline;">
<span style="font-weight: bold;">7.</span> Es hora de instalar el paquete 'kernel_image' que hemos creado:
<span style="font-weight: bold;"># dpkg -i /usr/src/kernel-image-2.6.13_custom.K820051030_i386.deb</span><br style="font-weight: bold;">
Esto instala nuestra nueva imagen de kernel y actualiza nuestro bootloader.
Si más adelante lo queremos desinstalar, booteamos desde otro kernel y los desinstalamos con APT, de esta forma:
<span style="font-weight: bold;"> # apt-get remove kernel-image-2.6.13</span><br style="font-weight: bold;">
<span style="font-weight: bold; color: rgb(255, 0, 0);"><span style="text-decoration: underline;">
Consideraciones Finales</span>:</span><br style="font-weight: bold; color: rgb(255, 0, 0);">
Las ventajas que nos proporciona esta forma de compilar e
instalar el núcleo son evidentes: una vez que hemos adaptado el kernel
a nuestras necesidades, es suficiente con guardar el paquete .deb, e
instalarlo cada vez que nos vemos en la necesidad de reinstalar todo
nuestro sistema, sin tener que configurar y compilar, ahorrándonos el
tiempo que eso insume.
Una buena idea es, luego de haber generado el paquete con
la imagen del núcleo, generar un paquete con las fuentes, así si luego
nos vemos en la necesidad de instalar un nuevo módulo (driver de un
modem, por ejemplo), ya contaremos con las fuentes exactas de nuestro
kernel. Ello se hace con el siguiente comando:
<span style="font-weight: bold;"> # make-kpkg kernel_source</span><br style="font-weight: bold;">
El paquete de las fuentes se creará en /usr/src/. Por ejemplo:
<span style="color: rgb(0, 0, 255);">'kernel-source-2.6.13_custom.K820051030_all.deb'</span>
De modo tal que guardando esos dos paquetes (image y
source), podremos actualizar nuestro núcleo con unos pocos comandos.
Para más ayuda, ver la página de manual del comando 'make-kpkg' y los
manuales oficiales de Debian.
Puede suceder que cuando iniciemos con nuestro nuevo kernel, nos salga un
error similar a este:
<span style="font-weight: bold; font-style: italic;">'Kernel panic: VFS: Unable to mount root fs'</span>
El problema es que no hemos compilado el kernel con el
soporte para nuestro sistema de archivos (ext2, ext3, etc.). En
la sección 'File Systems' del kernel nos aseguramos de marcar los
sistemas de ficheros que usamos en nuestro sistema como parte del
kernel <span style="font-weight: bold;">(*)</span>, no como módulos <span style="font-weight: bold;">(M)</span>.
Si tras seleccionar las opciones de los files systems y
recompilar el kernel el problema persiste, es porque nuestro
kernel necesita una <span style="font-weight: bold;">imagen de initrd</span> para bootear. Entonces, la creamos con el siguiente comando:
<span style="font-weight: bold;"> # mkinitrd -o /boot/initrd.img-2.6.13 /lib/modules/2.6.13</span><br style="font-weight: bold;">
y editamos nuestro /boot/grub/menu.lst para que la levante al inicio.
Ejemplo:
<span style="font-weight: bold;"> title Debian GNU/Linux, kernel 2.6.13 </span><br style="font-weight: bold;">
<span style="font-weight: bold;"> root (hd0,4)</span><br style="font-weight: bold;">
<span style="font-weight: bold;"> kernel /boot/vmlinuz-2.6.13 root=/dev/hda5 ro</span><br style="font-weight: bold;">
<span style="font-weight: bold; color: rgb(0, 0, 255);"> initrd /boot/initrd.img-2.6.13</span><br style="font-weight: bold;">
<span style="font-weight: bold;"> savedefault</span><br style="font-weight: bold;">
<span style="font-weight: bold;"> boot</span>
<span style="text-decoration: underline;">
</span>Bueno, hasta acá el tutorial. Espero que a alguien le sirva.
Cualquier duda y/o corrección de algún error será bienvenida. Suerte [img]smileys/smiley32.gif[/img].-<span style="text-decoration: underline;">
</span>