InicioÚltima actualización: 16 de diciembre, 2008
A veces es necesario compilar el núcleo de Linux para incluir nuevos
soportes o dispositivos de nuevo hardware, aplicar un parche al núcleo o
simplemente para tener una versión más reciente. Aquí explicaremos cómo
compilar un núcleo de una manera fácil. Lo difícil no está en compilar
sino en escoger los soportes y dispositivos correctos. Pero, ¿quien
mejor que tu conoce tu computador?
La versión estable del núcleo es la número 2.6, aunque la versión 2.4
sigue siendo bastante usada, especialmente en computadores viejos. Aquí
vamos a abordar la compilación e instalación del núcleo versión 2.6.
Vamos a abordar dos maneras de instalar la fuente del núcleo.
Instala el paquete linux-source-2.6.18 con,
# apt-get install linux-source-2.6.18
El archivo comprimido de la fuente del núcleo
(linux-source-2.6.18.tar.bz2) se instala en el directorio /usr/src.
En la página oficial del núcleo de Linux,
http://www.kernel.org/
puedes ver cual es la versión de la fuente más reciente. Sugerimos, sin
embargo, que uses ftp para descargarla,
ftp://ftp.kernel.org/pub/linux/kernel/v2.6
Descarga el archivo comprimido de la fuente, por ejemplo,
linux-2.6.20.tar.bz2 y muévelo al directorio /usr/src,
# mv linux-2.6.20.tar.bz2 /usr/src
Para descomprimir archivos .bz2 necesitas tener instalado el paquete
bzip2. Corre,
Anda al directorio /usr/src con
y descomprime el archivo con el comando,
# tar -jxvf linux-source-2.6.18.tar.bz2
La fuente del núcleo va a estar en el directorio,
/usr/src/linux-source-2.6.18
(o /usr/src/linux-[version] dependiendo de la fuente que escojas).
Anda a ese directorio,
# cd /usr/src/linux-source-2.6.18
Instala el paquete libncurses5-dev con,
# apt-get install libncurses5-dev
En el directorio de la fuente da el comando,
Anda menú por menú, sub-menú por sub-menú marcando todos los soportes y
dispositivos que necesita el computador. La fuente distribuida por
Debian viene con la configuración del núcleo de instalación.
En muchos casos tienes la opción de marcar soportes y dispositivos para
que sean compilados en el núcleo oprimiendo la tecla <y> ([*]) o
que sean compilados como módulos, oprimiendo la tecla <m> (<M>). Los
módulos son pedazos de códigos compilados tal que se puedan insertar o
remover, con el núcleo corriendo, con los comandos insmod o rmmod, o
la herramienta modconf. Habilita "Kernel module loader" en la
sección "Loadable module support" para que el núcleo pueda insertar
módulos automáticamente cuando los necesita. Si no estás bien seguro de
alguna opción es preferible compilar como módulo y probar una vez
corriendo el núcleo. Ve algunas sugerencias de configuración. Graba la configuración y sal de la utilidad.
Si estas trabajando en X, en un emulador de terminal, puedes configurar
el núcleo con una interfase gráfica.
Instala el paquete libqt3-mt-dev con,
# apt-get install libqt3-mt-dev
y luego corre,
Instala el paquete kernel-package con,
# apt-get install kernel-package
Anda al directorio de la fuente,
# cd /usr/src/linux-source-2.6.18
y da el comando,
y luego,
# make-kpkg --initrd --revision=custom.1.0 kernel_image
La compilación tarda unos 30-60 minutos, dependiendo de la rapidez del
computador. Una vez finalizada, se va a crear el paquete Debian
linux-image-2.6.18_custom.1.0_i386.deb en el directorio
/usr/src.
Anda al directorio /usr/src con 'cd /usr/src' e instala el paquete
con,
# dpkg -i linux-image-2.6.18_custom.1.0_i386.deb
Los encabezados (headers) del núcleo van a estar instalados en
/lib/modules/2.6.18/build, que en realidad es un enlace simbólico que
apunta a la fuente del núcleo en /usr/src/linux-source-2.6.18. Por
eso, no borres el directorio de la fuente.
Reinicia el computador con 'reboot' o 'shutdown -r now'.
Escoge arrancar con el núcleo nuevo (kernel 2.6.18). Si se produce un
error insuperable y el arranque se cuelga, reinicia el computador con el
núcleo de la instalación (kernel 2.6.18-4).
Para modificar el núcleo de arranque por omisión en la lista de
arranque de GRUB, edita el archivo /boot/grub/menu.lst y modifica el
instructuvo default con el número del núcleo según la lista, partiendo
de cero (0,1,2...). Generalmente, el núcleo nuevo es el tercero de la
lista,
default 2
Corre,
para hacer efectivo el cambio.
Si hubiese errores, o simplemente necesitas agregar o modificar algo,
vas a necesitar reconfigurar el núcleo ('make menuconfig [xconfig]') y
recompilarlo con un número de revisión mayor, por ejemplo,
--revision=custom.1.1
Antes de reinstalar el nuevo paquete Debian borra el directorio de los
módulos,
# rm -fr /lib/modules/2.6.18/
Debian mantiene un paquete con parches al núcleo,
linux-patch-debian-2.6.18. Instala el paquete con,
# apt-get install kernel-patch-debian-2.6.18
Edita /etc/kernel-pkg.conf y agrega la línea,
patch_the_kernel := yes
al final del archivo. En /usr/src/linux-source-2.6.18 limpia la
compilación con,
luego configura y compila con,
# make-kpkg --config=menuconfig --initrd --revision=custom.1.0 kernel_image
Si ya tienes en el computador la fuente de un núcleo original, puedes
actualizarlo aplicando un parche. Los parches contienen solamente los
cambios de una versión a otra y son por ende mucho más pequeños en
porte. Digamos que tienes la fuente del núcleo 2.6.20.1 en
/usr/src/linux-2.6.20.1 y deseas actualizar a la versión 2.6.20.2.
Descarga el parche patch-2.6.20.2.bz2 y colócalo en /usr/src. Anda
al directorio de la fuente (cd /usr/src/linux-2.6.20.1) y aplica el
parche con,
# bzip2 -dc ../patch-2.6.20.2.bz2 | patch -p1
Sube un nivel en la estructura de directorios ('cd ..') y renombra el
directorio,
# mv linux-2.6.20.1 linux-2.6.20.2
Puedes aplicar parches sucesivamente, pero cuidando siempre de aplicar
el parche de la versión siguiente y por ningún motivo saltarse uno.
 
A continuación presentamos una configuración básica para el núcleo
version 2.6.18, que debería funcionar en la mayoría de computadores
i386 y amd64.
- Sección "Code maturity level options":
- Marca "Prompt for development and/or incomplete code/drivers" para hacer accesible ciertos dispositivos en estado experimental.
- Sección "General setup":
- Marca "Support for paging of anonymous memory (swap)", "System V IPC", "POSIX Message Queues", "BSD Process Accounting", luego "BSD Process Accounting version 3 file format".
- Sección "Loadable module support":
- Marca "Enable loadable module support", luego "Module unloading", "Forced module unloading", "Module versioning support" y "Automatic kernel module loading".
- Sección "Block layer":
- Marca "Support for Large Block Devices" y "Support for Large Single Files".
- Sección "Processor type and features":
- Marca "Symmetric multi-processing support" si el computador tiene más de un CPU (multiple core, SMP).
- Subsección "Subarchitecture Type (PC-compatible)":
- Mueve el cursor hacia "PC-compatible" y oprime <Select>.
- Subsección "Processor family (Pentium-Pro)":
- Escoge el tipo de CPU del computador. Puedes obtener en nombre del CPU con 'cat /proc/cpuinfo' en la línea "model name".
-
- Marca "HPET Timer Support". Si marcaste SMP, marca "SMT (Hyperthreading) scheduler support" y "Multi-core scheduler support", de lo contrario, marca "Local APIC support on uniprocessors", luego "IO-APIC support on uniprocessors". Marca "Machine Check Exception", luego "Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium" (módulo) y "check for P4 thermal throttling interrupt". Marca "MTRR (Memory Type Range Register) support". Si marcaste SMP, marca "Enable kernel irq balancing". Marca "Use register arguments".
- Sección "Power management options (ACPI, APM)":
- Marca "Legacy Power Management API" y "Software Suspend".
- Subsección "ACPI (Advanced Configuration and Power Interface) Support":
- Marca "ACPI Support", luego "Sleep States" "AC Adapter" (módulo), "Battery" (módulo), "Button" (módulo), "Video" (módulo), "Fan" (módulo), "Dock" (módulo), "Processor" (módulo) y "Thermal Zone" (módulo).
- Subsección "CPU Frequency scaling":
- (Util para laptops) Marca "CPU Frequency scaling". En "Default CPUFreq governor" mueve el cursor hacia "performance" y oprime <Select>. Marca "'powersave' governor" (módulo), "'userspace' governor for userspace frequency scaling" (módulo), "'ondemand' cpufreq policy governor" (módulo), "'conservative' cpufreq governor" (módulo). Marca el controlador de dispositivo del CPU (módulo), por ejemplo, "Intel Enhanced SpeedStep" para procesadores Intel Pentium M Centrino.
- Sección "Bus options (PCI, PCMCIA, EISA, MCA, ISA)":
- Marca "PCI support". En "PCI access mode" mueve el cursor hacia "Any" y oprime <Select>. Marca "PCI Express support" y "Message Signaled Interrupts (MSI and MSI-X)".
- Subsección "PCCARD (PCMCIA/CardBus) support":
- Si tienes un bus PCMCIA (comunes en laptops), marca "PCCard (PCMCIA/CardBus) support" (módulo), luego "CardBus yenta-compatible bridge support" (módulo).
- Sección "Executable file formats":
- Marca "Kernel support for ELF binaries". Marca "Kernel support for a.out and ECOFF binaries" (módulo) y "Kernel support for MISC binaries" (módulo).
- Sección "Networking":
-
- Subsección "Networking options":
- Marca "Packet socket" (núcleo), "Unix domain sockets" (núcleo), y "TCP/IP networking", luego "IP: multicasting" y "The IPv6 protocol" (módulo). Marca "Network packet filtering (replaces ipchains)".
- Subsección "Network packet filtering (replaces ipchains)":
- Subsección "Core Netfilter Configuration":
- Marca "Netfilter Xtables support (required for ip_tables)" (módulo) y todos los soportes asociados (módulo).
- Subsección "IP: Netfilter Configuration":
- Marca "Connection tracking (required for masq/NAT)" (módulo) y todos los soportes asociados (módulo). Marca "IP tables support (required for filtering/masq/NAT)" (módulo) y todos los soportes asociados (módulo).
- Subsección "IPv6: Netfilter Configuration":
- Marca "IP6 tables support (required for filtering/masq/NAT)" (módulo) y todos los soportes asociados (módulo).
-
- Marca "IrDA (infrared) subsystem support" (módulo).
- Subsección "IrDA (infrared) subsystem support":
- Marca "IrLAN protocol" (módulo), "IrNET protocol" (módulo), "IrCOMM protocol" (módulo) y "Ultra (connectionless) protocol".
- Subsección "Infrared-port device drivers ":
- Marca "IrTTY (uses Linux serial driver)" (módulo), "IrPORT (IrDA serial driver)" (módulo) y "IrDA USB dongles" (módulo).
-
- Marca "Bluetooth subsystem support" (módulo).
- Subsección "Bluetooth subsystem support":
- Marca "L2CAP protocol support" (módulo), "SCO links support" (módulo), "RFCOMM protocol support" (módulo), luego "RFCOMM TTY support". Marca "BNEP protocol support" (módulo), luego "Multicast filter support" y "Protocol filter support". Marca "HIDP protocol support" (módulo).
- Subsección "Bluetooth device drivers":
- Marca "HCI USB driver" (módulo).
-
- Marca "Generic IEEE 802.11 Networking Stack" (módulo), luego "IEEE 802.11 WEP encryption (802.1x)" (módulo), "IEEE 802.11i CCMP support" (módulo), "IEEE 802.11i TKIP encryption" (módulo) y "Software MAC add-on to the IEEE 802.11 networking stack" (módulo).
- Sección "Device Drivers":
- Subección "Generic Driver Options":
- Marca "Select only drivers that don't need compile-time external firmware", "Prevent firmware from being built" y "Userspace firmware loading support" (módulo).
- Subección "Parallel port support":
- Marca "Parallel port support" (módulo), luego "PC-style hardware" (módulo), "Use FIFO/DMA if available" y "IEEE 1284 transfer modes".
- Subsección "Plug and Play configuration":
- Marca "Plug and Play support", luego "Plug and Play ACPI support".
- Subsección "Block devices":
- Marca "Loopback device support" (módulo), "RAM disk support" (núcleo), "Initial RAM filesystem and RAM disk (initramfs/initrd) support" y "Packet writing on CD/DVD media" (módulo).
- Subsección "ATA/ATAPI/MFM/RLL support":
- Marca "ATA/ATAPI/MFM/RLL support" (módulo), luego "Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support" (módulo). Marca "Include IDE/ATA-2 DISK support" (módulo), y "Include IDE/ATAPI CDROM support" (módulo). Marca "generic/default IDE chipset support" (módulo), luego "CMD640 chipset bugfix/support". Marca "PCI IDE chipset support", luego "Sharing PCI IDE interrupts support", "Generic PCI IDE Chipset Support" (módulo), "RZ1000 chipset bugfix/support" (módulo) y "Generic PCI bus-master DMA support", luego "Use PCI DMA by default when available". Aquí es importante marcar el chipset del puente PCI-IDE de la placa madre (módulo). Corre en un terminal el comando lspci y busca las palabras "PCI bridge:" o "ISA bridge:". La información que sigue normalmente identifica el chipset, por ejemplo, "Intel PIIXn chipsets support".
- Subsección "SCSI support":
- Marca "SCSI device support" (módulo), "legacy /proc/scsi/ support", "SCSI disk support" (módulo), "SCSI CDROM support" (módulo), luego "Enable vendor-specific extensions (for SCSI CDROM)". Marca "SCSI generic support" (módulo) y "Probe all LUNs on each SCSI device".
- Subsección "SCSI low-level drivers":
- Si tienes una tarjeta SCSI, corre en un terminal el comando lspci y busca las palabras "SCSI storage controller:". La información que sigue normalmente identifica el controlador SCSI (módulo), por ejemplo, "Adaptec AIC79xx U320 support". Si tienes bus SATA, marca "Serial ATA (SATA) support" (módulo). Corre en un terminal el comando lspci y busca las palabras "IDE interface:" y referencias a SATA. La información que sigue normalmente identifica el controlador SATA (módulo), por ejemplo, "Intel PIIX/ICH SATA support" para chipset Intel.
- Subsección "IEEE 1394 (FireWire) support":
- Si tienes un bus FireWire, marca "IEEE 1394 (FireWire) support" (módulo). Marca el dispositivo, comúnmente "OHCI-1394 support" (módulo). Marca "OHCI-1394 Video support" (módulo), "SBP-2 support (Harddisks etc.)" (módulo), "Ethernet over 1394" (módulo), "OHCI-DV I/O support" (módulo) y "Raw IEEE1394 I/O support" (módulo).
- Subsección "Network device support":
- Marca "Networking support".
- Subsección "Ethernet (10 or 100 Mbit)":
- Marca "Ethernet (10 or 100Mbit)", luego "Generic Media Independent Interface device support" (módulo). Si tienes una tarjeta Ethernet, corre en un terminal el comando lspci y busca las palabras "Ethernet controller:". La información que sigue normalmente identifica la tarjeta ethernet. Marca "EISA, VLB, PCI and on board controllers" y marca el dispositivo (módulo).
- Subsección "Ethernet (1000 Mbit)":
- Corre en un terminal el comando lspci y busca las palabras "Ethernet controller:". La información que sigue normalmente identifica la tarjeta Ethernet Gigabit. Marca el dispositivo (módulo).
- Subsección "Wireless LAN (non-hamradio)":
- Marca "Wireless LAN drivers (non-hamradio) & Wireless Extensions", luego "Wireless Extension API over RtNetlink ". Marca "Intel PRO/Wireless 2100 Network Connection " (módulo), luego "Enable promiscuous mode". Marca "Intel PRO/Wireless 2200BG and 2915ABG Network Connection" (módulo), luego "Enable promiscuous mode" y "Enable QoS support".
-
- Marca "PPP (point-to-point protocol) support" (módulo) y luego "PPP support for async serial ports" (módulo), "PPP deflate compression" (módulo), "PPP BSD-Compress compression" (módulo), "PPP MPPE compression (encryption)" (módulo), "PPP over Ethernet" (módulo).
- Subsección "Input device support":
- Marca "Provide legacy /dev/psaux device". Da las resoluciones horizontal y vertical de la pantalla. Marca "Event interface" (módulo). Marca "Mouse".
- Subsección "Mouse":
- Marca "PS/2 mouse" (módulo).
-
- Marca "Miscellaneous devices".
- Subsección "Miscellaneous devices":
- Marca "PC Speaker support" (módulo).
- Subsección "Character devices":
-
- Subsección "Serial drivers":
- Marca "8250/16550 and compatible serial support" (módulo).
-
- Marca "Legacy (BSD) PTY support", "Parallel printer support" (módulo), "Support for user-space parallel port device drivers" (módulo), "Hardware Random Number Generator Core support" y "Enhanced Real Time Clock Support" (módulo). Marca "/dev/agpgart (AGP Support)" (módulo) y luego el chipset de la tarjeta gráfica, si alguna le viene. Corre en un terminal el comando lspci y busca las palabras "VGA compatible controller:". La información que sigue puede identificar el chipset y la tarjeta. Marca "Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)" (módulo) y un dispositivo, si alguno viene (módulo).
- Subsección "I2C support":
- Marca "I2C support" (módulo).
- Subsección "Hardware Monitoring support":
- Marca "Hardware Monitoring support" (módulo).
- Subsección "Multimedia devices":
- Marca "Video For Linux" (módulo), luego "Enable Video For Linux API 1 compatible Layer".
- Subsección "Graphics support":
- Marca "Enable firmware EDID" y "Support for frame buffer devices" (núcleo), luego "VGA 16-color graphics support" (módulo), "VESA VGA graphics support" y algún soporte acorde con la tarjeta gráfica.
- Subsección "Console display driver support":
- Marca "Framebuffer Console support" (núcleo).
-
- Marca "Backlight & LCD device support".
- Subsección "Backlight & LCD device support":
- Marca "Lowlevel Backlight controls" (módulo) y "Lowlevel LCD controls" (módulo).
- Subsección "Sound":
- Marca "Sound card support" (módulo).
- Subsección "Advanced Linux Sound Architecture":
- Marca "Advanced Linux Sound Architecture" (módulo), luego "Sequencer support" (módulo), "OSS Mixer API" (módulo), "OSS PCM (digital audio) API" (módulo), luego "OSS PCM (digital audio) API - Include plugin system". Marca "OSS Sequencer API" y "RTC Timer support" (módulo), luego " Use RTC as default sequencer timer".
- Subsección "PCI devices":
- busca el dispositivo de la tarjeta de sonido. Corre en un terminal el comando lspci y busca las palabras "Multimedia audio controller:". La información que sigue puede identificar la tarjeta de sonido. Marca el dispositivo (módulo), por ejemplo "Intel/SiS/nVidia/AMD/ALi AC97 Controller".
- Subsección "USB support":
- Marca "Support for Host-side USB" (módulo). Marca "USB device filesystem". En "USB Host Controller Drivers" marca "EHCI HCD (USB 2.0) support" (módulo), luego "Full speed ISO transactions" y "Root Hub Transaction Translators". Marca "OHCI HCD support" (módulo) y "UHCI HCD (most Intel and VIA) support" (módulo). Marca "USB Mass Storage support" (módulo) y todos los soportes asociados (Flash Memory). Marca "USB Human Interface Device (full HID) support" (módulo), luego "HID input layer support" y "/dev/hiddev raw HID device support".
- Sección "File systems":
- Marca "Second extended fs support" (módulo), luego "Ext2 extended attributes" y "Ext2 POSIX Access Control Lists". Marca "Ext3 journalling file system support" (módulo), luego "Ext3 extended attributes" y "Ext3 POSIX Access Control Lists". Marca "Inotify file change notification support", luego "Inotify support for userspace". Marca "Kernel automounter version 4 support (also supports v3)" (módulo).
- Subsección "CD-ROM/DVD Filesystems":
- Marca "ISO 9660 CDROM file system support" (módulo), luego "Microsoft Joliet CDROM extensions" y "Transparent decompression extension". Marca "UDF file system support" (módulo).
- Subsección "DOS/FAT/NT Filesystems":
- Marca "MSDOS fs support" (módulo), "VFAT (Windows-95) fs support" (módulo) y "NTFS file system support" (módulo), luego "NTFS write support".
- Subsección "Pseudo filesystems":
- Marca "/proc/kcore support" y "Virtual memory file system support (former shm fs)" (núcleo).
- Subsección "Partition Types":
- Marca "Advanced partition selection", luego "PC BIOS (MSDOS partition tables) support".
- Subsección "Native Language Support":
- Marca "Base native language support" (módulo), "Codepage 437 (United States, Canada)" (módulo), "Codepage 850 (Europe)", "ASCII (United States)" (módulo), "NLS ISO 8859-1 (Latin 1; Western European Languages)" (módulo), "NLS ISO 8859-15 (Latin 9; Western European Languages with Euro)" (módulo) y "NLS UTF8" (módulo).
- Sección "Cryptographic options":
- Marca "MD5 digest algorithm " (módulo) y "AES cipher algorithms" (módulo)".
- Sección "Library routines":
- Marca "CRC-CCITT functions" (módulo).
This document was generated using AFT v5.096