Linux - Compilazione del nodo (Kernel) Linux -Compilação do núcleo (Kernel)) Linux - Kompilierung des Kerns (Kernel) Linux - Compilation du noyau (Kernel) Linux - Compiling the kernel

Recopilación del núcleo

En este artículo, se explica cómo recopilar el núcleo (o kernel) en Linux.
Las siguientes explicaciones se basan en la versión 2.4.20 del núcleo, es decir, la versión más reciente del núcleo en el momento en que se escribió este artículo (marzo de 2003). Las fuentes de la versión más reciente se pueden descargar desde http://www.kernel.org.

Las fuentes "pesan" entre 25 y 30 MB.

Cómo descomprimir las fuentes

Una vez que se obtuvieron las fuentes, encontrará un archivo denominado tar.bz2 o tar.gz, según el caso. Cópielo en el directorio /usr/src/ de su equipo con Linux, pero no los descomprima inmediatamente.
En el directorio mencionado anteriormente, introduzca el siguiente comando:

castor@linuxbox:/usr/src$ ls -al total 8 drwxrwsr-x 2 root src 4096 Feb 8 2002 . drwxr-xr-x 13 root root 4096 May 1 1980 .. lrwxrwxrwx 1 root src 12 Feb 25 15:39 linux -> linux-2.4.18 drwxr-sr-x 2 root src 4096 Feb 25 15:38 linux-2.4.18 -rw-r--r-- 1 root root 27421046 Feb 25 15:37 linux-2.4.20.tar.bz2 castor@linuxbox:/usr/src$

El resultado puede ser diferente en su equipo. Lo primero que se debe hacer es reemplazar el vínculo simbólico linux con el comando rm linux.
Después, se debe descomprimir el tarball que anteriormente se había recuperado. Asegúrese de tener espacio suficiente, ya que las fuentes descomprimidas son de aproximadamente ¡200 MB!
A continuación, se debe crear un vínculo simbólico linux que vaya al nuevo directorio. Según el caso, el directorio en el que las fuentes descomprimidas se ubicarán ya se ha denominado linux. Por lo tanto, se recomienda cambiarle el nombre con el comando mv linux linux-2.4.20.

root@linuxbox:/usr/src# rm linux rm: remove `linux'? y root@linuxbox:/usr/src# tar -xjf linux-2.4.20.tar.bz2 root@linuxbox:/usr/src# ln -s linux-2.4.20 linux root@linuxbox:/usr/src# ls -hal total 27M drwxrwsr-x 4 root src 4.0k Feb 25 15:49 . drwxr-xr-x 13 root root 4.0k May 1 1980 .. lrwxrwxrwx 1 root src 12 Feb 25 15:49 linux -> linux-2.4.20 drwxr-sr-x 2 root src 4.0k Feb 15 15:38 linux-2.4.18 drwxr-xr-x 14 root src 4.0k Nov 29 00:53 linux-2.4.20 -rw-r--r-- 1 root src 26M Feb 25 15:37 linux-2.4.20.tar.bz2 root@linuxbox:/usr/src#

Particularidades del núcleo de Linux: Los módulos

El núcleo de Linux es "modular". Esto significa que algunas opciones, definidas como "módulos", se cargan en el momento en que el núcleo lo requiera. Este procedimiento permite ahorrar memoria, en detrimento de la velocidad de carga. Por ejemplo, cuando se imprime una página cada seis meses, no es útil mantener las plantillas de impresión (puerto paralelo, impresora, etc.) permanente en la memoria. Sólo se cargarán cuando el usuario solicite imprimir.

Por lo tanto, antes de comenzar la configuración del núcleo Kernel es importante familiarizarse con el uso que se requiere del equipo con Linux.

Cómo configurar opciones

Existen tres comandos para configurar las fuentes: make config, make menuconfig y make xconfig.

Los primeros dos están en modo texto, el tercero requiere un sistema X-window La elección es suya: las tres opciones son completamente equivalentes. Sólo la primera opción es algo más restrictiva ya que requiere una revisión completa de las opciones.

Por mi parte, yo prefiero make menuconfig.

root@linuxbox:/usr/src/linux# make menuconfig ( cd include ; ln -sf asm-i386 asm) make -C scripts/lxdialog all make[1]: Entering directory `/usr/src/linux-2.4.20/scripts/lxdialog' gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -DLOCALE -DCURSES_LOC="<ncurses.h>" -c -o checklist.o checklist.c gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -DLOCALE -DCURSES_LOC="<ncurses.h>" -c -o menubox.o menubox.c gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -DLOCALE -DCURSES_LOC="<ncurses.h>" -c -o textbox.o textbox.c gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -DLOCALE -DCURSES_LOC="<ncurses.h>" -c -o yesno.o yesno.c gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -DLOCALE -DCURSES_LOC="<ncurses.h>" -c -o inputbox.o inputbox.c gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -DLOCALE -DCURSES_LOC="<ncurses.h>" -c -o util.o util.c gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -DLOCALE -DCURSES_LOC="<ncurses.h>" -c -o lxdialog.o lxdialog.c gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -DLOCALE -DCURSES_LOC="<ncurses.h>" -c -o msgbox.o msgbox.c gcc -o lxdialog checklist.o menubox.o textbox.o yesno.o inputbox.o util.o lxdialog.o msgbox.o -lncurses ...

En este momento, nos encontramos en la interfaz de configuración.
Consta de varios menús, cada uno de los cuales puede contener submenús, etc.

Se recomienda especialmente leer la ayuda en línea para cada opción.
La información que se brinda a continuación puede variar según la versión del núcleo y las opciones que se eligieron anteriormente.

  • Code maturity level options: Sólo es útil para los desarrolladores.
  • Loadable module support: Indispensable. Permite el uso de las funcionalidades modulares del núcleo. Responda SÍ a todas las opciones.
  • Processor type and features: Conjunto de opciones relacionadas con el procesador. La primera línea contiene su tipo de procesador. Existe una compatibilidad directa. Es decir, cuando se introduce "Pentium-Classic", funcionarán todos los procesadores del tipo Pentium y superiores. Se recomienda especificar el tipo que más se asemeja a su procesador.
  • Machine Check Exception: Le permite al procesador alertar al núcleo si surge algún problema. Responda SÍ Responda .
  • Toshiba Laptop support and Dell laptop support: Responda en caso de contar con un equipo portátil Toshiba o Dell.
  • /dev/cpu/microcode - Intel IA32 CPU microcode support /dev/cpu/*/msr - Model-specific register support /dev/cpu/*/cpuid - CPU information support 
    Estas tres opciones se pueden utilizar sin riesgo alguno y pueden optimizar la administración del procesador.
  • High Memory Support: Administración de más de 1 GB de RAM. A menos que su equipo posea más de 960 MB de RAM, deje "off".
  • Math emulation: Emulación del coprocesador. Sólo sirve para 386 o 486SX.
  • MTRR (Memory Type Range Register) support: Útil excepto para 386, 486 y Pentium primera generación (antes de PII).
  • Symmetric multi-processing support: Útil para los equipos con procesadores múltiples. Eliminar en equipos con un monoprocesador.
  • Local APIC support on uniprocessors (NEW): Permite el uso de interrupciones "virtuales" generadas por el procesador. Cuando no esté seguro, responda . IO-APIC support on uniprocessors: Igual, pero para E/S (entrada/salida). Cuando no esté seguro, responda
    .
  • Unsynced TSC support: Administración de TSC no sincronizado. Cuando no esté seguro, responda NO.
  • Configuración general
  • Networking support: Soporte de red. Responda ya que algunos programas utilizan esta función incluso en un equipo independiente.
  • PCI support: Soporte del BUS PCI. Responda ya que tiene un 99% de posibilidades de poseer al menos una tarjeta en este bus, excepto en el caso de equipos muy antiguos.
  • PCI access mode: Tipo de acceso al bus PCI. Las opciones son "BIOS", "direct" o "any". Al elegir "any", el núcleo tendrá acceso con cualquiera de los dos métodos (opción recomendada).
  • ISA bus support: Soporte para el bus ISA. No sirve para equipos modernos. Cuando no esté seguro, responda .
  • PCI device name database: Base de datos de los nombres de los periféricos PCI. Para los sistemas integrados que requieran un núcleo muy reducido, sólo responda NO.
  • EISA support: Soporte para el bus EISA. Es el mismo que el del bus ISA.
  • MCA support: Soporte del BUS MCA (Microcanal). Únicamente para IBM PS/2.
  • Support for hot-pluggable devices: Soporte para periféricos de conexión directa (PCMCIA, USB, etc.).
  • PCMCIA/CardBus support: Soporte para tarjetas PCMCIA. De ser necesario, actívelo.
  • PCI Hotplug Support: Soporte para los periféricos de conexión directa del puerto PCI. Igual
  • System V IPC: Comunicación interproceso, bibliotecas utilizadas por algunos programas. Responda SÍ Responda .
  • BSD Process Accounting: Permite el acceso a información de proceso en el nivel del usuario. Puede ser útil para procesos de control, por ejemplo. Responda .
  • Sysctl support: Permite la modificación de algunos indicadores "sobre la marcha". Responda .
  • Kernel core (/proc/kcore) format: Tipo de binario generado (ELF/A.OUT). Deje el valor ELF.
  • Kernel support for xxxx binaries: Los diferentes tipos de binarios que el núcleo podrá ejecutar. Configúrelos en incluido o en módulo, según prefiera.
  • Power Management support: Administración de APM y ACPI. Primero debe responder y después debe elegir el tipo de soporte (las opciones dependen de su tipo de procesador).
  • Ignore USER SUSPEND (NEW): En el caso de las máquinas con BIOS APM, se recomienda elegir NO. En algunos equipos portátiles, una BIOS con errores le obligará a tener que responder .
  • Enable PM at boot time (NEW): Sólo elija NO si su equipo se paraliza al iniciar el sistema.
  • Make CPU Idle calls when idle (NEW): En algunos equipos, permite que el procesador sea más lento cuando el sistema está inactivo. es una buena opción.
  • Enable console blanking using APM (NEW): Permite apagar la pantalla durante sesiones en las consolas.
  • RTC stores time in GMT (NEW): Si utiliza otro sistema operativo en el mismo equipo, responda NO. De lo contrario, se recomienda elegir .
  • Allow interrupts during APM BIOS calls (NEW): Sólo elija en caso de que su linuxbox se paralice cuando se la deja en espera.
  • Use real mode APM BIOS call to power off (NEW): Elija en el caso de que su equipo se paralice en lugar de apagarse.
    Memory Technology Devices (MTD): No active esta opción a menos que utilice dispositivos periféricos como memorias FLASH. Esto permite que el núcleo las identifique correctamente.
  • Parallel port support: Brinda soporte para el puerto paralelo.
  • PC-style hardware (NEW): Opción para todos los PC.
  • Support foreign hardware (NEW): Permite activar el soporte para periféricos "exóticos".
  • IEEE 1284 transfer modes (NEW): Administración de modos sofisticados de transferencia (EPP y ECP).
  • Plug and Play configuration: Brinda soporte para dispositivos "plug and play". Consiste en un soporte para los periféricos Plug and Play y un soporte ISA Plug and Play. La primera opción es posible sólo si se activó la primera.
  • Block devices: Esta sección es importante. Los "dispositivos de bloqueo" o dispositivos periféricos en modo de bloqueo incluyen la mayoría de los dispositivos de almacenamiento, como discos duros y otros disquetes. Los datos se almacenan por bloques cuyos tamaños pueden variar según el soporte. Sin embargo, para un medio en particular, es fijo.
  • Normal floppy disk support: Soporte para la unidad del disquete.
  • XT hard disk support: Soporte para discos duros antiguos de 8 bits.
  • Loopback device support: Soporte para el dispositivo de bucle de retorno. Por ejemplo, este dispositivo es útil para "montar" una imagen ISO9660 antes de grabarla para verificarla.
  • Network block device support: Permite usar dispositivos de red como si fueran locales.
  • RAM disk support: Permite crear un RAMdisk, que es un disco RAM virtual, con un tamaño predeterminado de disco RAM. Es principalmente útil para equipos que no poseen un dispositivo de almacenamiento (cliente ligero(thin client))
  • Per partition statistics in /proc/partitions: Permite almacenar estadísticas en sus particiones. Sólo sirve para optimizar su sistema. Las otras opciones son específicas para cada tipo de hardware. Para obtener más información, consulte la ayuda en línea.
  • Multi-device support (RAID and LVM): Soporte para RAID y LVM (Administración de Volúmenes Lógicos). Se puede seleccionar cada opción por separado (RAID Lineaire, RAID-0 [división de datos en bloques], RAID-1 [duplicación de datos], RAID-4/RAID-5). Es inútil activarla, a menos que esté completamente seguro de que su hardware usa RAID. ################################### FIN DE VISUALIZACIÓN CORRECTA #################################
  • Networking Options: Llegamos a la sección de preferencia de GNU/Linux, es decir, la red. En esta sección, se podrán incluir un número de herramientas más o menos útiles.
  • Packet Socket: Esta opción le permite a algunos programas comunicarse directamente con los diferentes dispositivos de red instalados en el sistema. Por ejemplo, la utilidad TCPDump requiere esta opción.
  • Packet socket: mmapped IO: Esta opción le permite a Packet Socket utilizar un método mucho más rápido de entrada/salida. Esta opción no es fundamental.
  • Netlink device emulation: Esta opción sólo existe por razones de retrocompatibilidad con versiones anteriores de programas que deben utilizar algunos dispositivos periféricos muy específicos. En un futuro medianamente cercano esta opción no existirá más. Se recomienda activarla, aunque sólo sea en modo de módulo.
  • Network packet filtering: Esta opción es muy importante. Reemplaza a la opción anterior ipchains de núcleos 2.2 y previos. De todas las funciones que se utilizan con la utilidad de iptables, ésta es la función principal de filtrado del paquete Linux. Esta opción se debe activar sin dudarlo.
  • Network packet filtering debugging: A su vez, esta opción sólo le sirve a personas que desean involucrarse con el desarrollo del módulo NetFilter.
  • Socket Filtering: Permite filtrar cualquier tipo de socket, excepto los sockets TCP. Esta opción se debe activar obligatoriamente para poder usar la opción de filtrado ppp. En todos los demás casos, se recomienda elegir NO.
  • Unix domain sockets: Esta opción activa el soporte para los sockets, que se utilizan para realizar la conexión de red. Una gran cantidad de programas los utilizan, incluso si su equipo es independiente. Posiblemente se puedan recopilar como un módulo, aunque este procedimiento no se recomienda en lo absoluto. Responda SÍ Responda SÍ.
  • TCP/IP networking: Soporte para el protocolo TCP/IP. Responda SÍ aunque su equipo sea completamente independiente.