Publicado el 23 de Enero del 2020
981 visualizaciones desde el 23 de Enero del 2020
313,4 KB
43 paginas
Creado hace 16a (08/03/2009)
Cómo compilar el kernel Linux
Guillermo Vald és Lozano
Cómo compilar el kernel Linux– p. 1/43
Documento protegido por GFDL
Copyright (c) 2008 Guillermo Valdés Lozano.
e-mail: guillermo(en)movimientolibre.com
http://www.movimientolibre.com/
Se otorga permiso para copiar, distribuir y/o modificar este documento
bajo los términos de la Licencia de Documentación Libre de GNU,
Versión 1.2 o cualquier otra versión posterior publicada por la Free
Software Foundation; sin Secciones Invariantes ni Textos de Cubierta
Delantera ni Textos de Cubierta Trasera.
Una copia de la licencia está en
http://www.movimientolibre.com/licencias/gfdl.html
Cómo compilar el kernel Linux– p. 2/43
Introducción
• Linux es el núcleo o kernel del sistema
operativo libre denominado GNU/Linux
(también llamado Linux).
• Linux fue creado por Linus Torvalds en 1991.
• Linux está protegido por la licencia GPL y
está escrito en C.
Cómo compilar el kernel Linux– p. 3/43
¿Qué es el kernel?
• Cada computadora, lector de discos, disco
duro, tarjeta de video, etc. es diferente.
• El kernel es el programa que sabe que hacer
para que esos componentes ejecuten su
tarea como abrir un documento, borrarlo de
un disco o mostrar una imagen en pantalla.
• El kernel debe saber cómo hablar a esos
diferentes componentes materiales y
controlar las labores corrientes que hacemos
a diario con nuestras computadoras.
Cómo compilar el kernel Linux– p. 4/43
Algunas versiones de Linux
Fecha
septiembre de 1991
14 de marzo de 1994
marzo de 1995
25 de enero de 1999
4 de enero de 2001
17 de diciembre de 2003
Versi ón Líneas c ódigo
10,239
0.01
176,250
1.0.0
310,950
1.2.0
1,800,847
2.2.0
3,377,902
2.4.0
5,929,913
2.6.0
Cómo compilar el kernel Linux– p. 5/43
Kernel genérico vs personalizado
• Un kernel genérico es aquel capaz de
funcionar en muchos tipos de equipos y que
tiene los controladores de la mayoría de los
componentes que se pudiera encontar.
• Un kernel personalizado está optimizado al
100 % para nuestra máquina.
• Añadimos los módulos que necesitamos.
• Es más ligero, se carga más rapido.
• Reconoce nuevos componentes y puede
tener mejoras en su código.
Cómo compilar el kernel Linux– p. 6/43
Descargas en Debian
Instale estos paquetes y sus dependencias.
$ su
# apt-get install kernel-package
# apt-get install build-essential
# apt-get install linux-source-2.6.18
# apt-get install libncurses-dev
# apt-get install fakeroot
Desempacaque el archivo comprimido.
# cd /usr/src
# tar xjf /usr/src/linux-source-2.6.18.tar.bz2
Haga un enlace directo.
# ln -s linux-source-2.6.18 linux
Cómo compilar el kernel Linux– p. 7/43
Descargas en Gentoo
Sincronizamos el portage y buscamos sources.
$ su
# emerge --sync
# emerge -s sources
Se recomienda gentoo-sources.
# emerge -pu gentoo-sources
# rm /usr/src/linux
# emerge -u gentoo-sources
Las fuentes del kernel estarán en /usr/src/linux.
Cómo compilar el kernel Linux– p. 8/43
Tome nota de los componentes
Abra el gabinete y tome nota de los
componentes. Ejemplo:
• T. Madre Biostar P4TDP, Fury DDR 533
- El disco duro y el CD-ROM se conectan por cintas IDE.
- Tiene una ranura para tarjeta de video AGP.
- Chip VIA VT6202 0208CD.
- Chip de audio integrado C3DX CMI 8738/PCI-6ch-LX.
- Chip ATA 100.
- Tiene puertos USB por delante y por detrás.
• T. de Video AGP de 32 MB con etiqueta TAVCATG1293A
• T. de Audio Genius con chip C3DX CMI 8738/PCI-6ch-LX
• T. de Red con chip DM9102AF
Cómo compilar el kernel Linux– p. 9/43
Comando lspci
lspci lista los dispositivos PCI. Ejemplo:
$ lspci
00:00.0 Host bridge: Intel Corporation 82845 845 (Brookdale)
Chipset Host Bridge (rev 04)
00:01.0 PCI bridge: Intel Corporation 82845 845 (Brookdale)
Chipset AGP Bridge (rev 04)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev 05)
00:1f.0 ISA bridge: Intel Corporation 82801BA ISA Bridge (LPC) (rev 05)
00:1f.1 IDE interface: Intel Corporation 82801BA IDE U100 (rev 05)
00:1f.2 USB Controller: Intel Corporation 82801BA/BAM USB (Hub #1) (rev 05)
00:1f.3 SMBus: Intel Corporation 82801BA/BAM SMBus (rev 05)
00:1f.4 USB Controller: Intel Corporation 82801BA/BAM USB (Hub #2) (rev 05)
01:00.0 VGA compatible controller: Silicon Integrated Systems
[SiS] 300/305 PCI/AGP VGA Display Adapter (rev 90)
02:00.0 Multimedia audio controller: C-Media Electronics Inc CM8738 (rev 10)
02:04.0 Ethernet controller: Davicom Semiconductor, Inc. 21x4x
DEC-Tulip compatible 10/100 Ethernet (rev 31)
02:05.0 USB Controller: VIA Technologies, Inc. VT82xxxxx
UHCI USB 1.1 Controller (rev 50)
02:05.1 USB Controller: VIA Technologies, Inc. VT82xxxxx
UHCI USB 1.1 Controller (rev 50)
02:05.2 USB Controller: VIA Technologies, Inc. USB 2.0 (rev 51)
Cómo compilar el kernel Linux– p. 10/43
Observar los módulos cargados
lsmod muestra los módulos cargados.
# lsmod
M ódulo
Descripci ón
sis
partport_pc
gameport
floppy
snd_cmipci
i2c_i801
psmouse
Controlador de la tarjeta de video SIS
Puerto paralelo
Hay un puerto de juegos/midi
Controlador del lector de floppys
Controlador de la tarjeta de sonido Genius
Tiene que ver con un chip intel
Mouse por el puerto PS/2
intel_agp
usbhid, ehci_hcd, uhci_hcd
Ranura AGP de la tarjeta madre
Tienen que ver con el USB
ide_cd, ide_disk
dmfe
Controladores del CD-ROM y del disco duro
Controlador de la tarjeta de red Tulip/Davicom
Cómo compilar el kernel Linux– p. 11/43
Bitácora del kernel
dmesg muestra la bitácora del kernel.
# dmesg | more
Fragmento de la salida de dmesg, ejemplo:
hda: IC35L120AVV207-0, ATA DISK drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
Probing IDE interface ide1...
hdc: HL-DT-ST GCE-8520B, ATAPI CD/DVD-ROM drive
hdd: HL-DT-ST DVDRAM GSA-H10A, ATAPI CD/DVD-ROM drive
ide1 at 0x170-0x177,0x376 on irq 15
hda: max request size: 512KiB
hda: 241254720 sectors (123522 MB) w/1821KiB Cache,
CHS=16383/255/63, UDMA(100)
hda: cache flushes supported
hda: hda1 hda2 hda3 hda4 < hda5 hda6 hda7 hda8 hda9 hda10 >
hdc: ATAPI 40X CD-ROM CD-R/RW drive, 2048kB Cache, UDMA(33)
Uniform CD-ROM driver Revision: 3.20
hdd: ATAPI 48X DVD-ROM DVD-R-RAM CD-R/RW drive,
2048kB Cache, UDMA(33)
Cómo compilar el kernel Linux– p. 12/43
Procesador
# cat /proc/cpuinfo
: 0
processor
: GenuineIntel
vendor_id
: 15
cpu family
: 1
model
: Intel(R) Pentium(R) 4 CPU 1.70GHz
model name
: 2
stepping
: 1700.335
cpu MHz
: 256 KB
cache size
: no
fdiv_bug
: no
hlt_bug
: no
f00f_bug
: no
coma_bug
fpu
: yes
fpu_exception : yes
cpuid level
wp
flags
mtrr pge mca cmov pat pse36 clflush dts acpi
mmx fxsr sse sse2 ss ht tm up
bogomips
: 3404.16
: 2
: yes
: fpu vme de pse tsc msr pae mce cx8 apic sep
Cómo compilar el kernel Linux– p. 13/43
Interfaz de configuración
Vaya al directorio de las fuentes.
# cd /usr/src/linux
Puede iniciar con la configuración por defecto.
# make defconfig
Interfaz basada en ncurses (recomendada):
# make menuconfig
Intefaz basada en GTK:
# make gconfig
Intefaz basada en QT:
# make xconfig
Cómo compilar el kernel Linux– p. 14/43
Interfaz de configuración bajo ncurses
Forma de usuarla:
• Use las flechas para navegar.
• Estando sobre una opción presione Y para incluirla
dentro del kernel, N para excluirla o M para que sea un
módulo.
• Las opciones marcadas con [*] serán incluídas en el
kernel, las marcadas con <M> serán compiladas como
módulos y las vacías no serán compiladas.
• Presione ? para mostrar la ayuda de la opción
iluminada.
• Presione ESC para bajar una rama o para salir si está
en el menú raíz.
• Al salir le preguntará si quiere guardar los cambios.
Cómo compilar el kernel Linux– p. 15/43
Kernel monolítico vs kernel modular
Desde un punto de vista extremista:
• Un kernel monolítico tiene todas las opciones
marcadas con Y.
• Un kernel modular es aquel con la mayoría de las
opciones marcadas con M.
Use un kernel monolítico si el hardware no
cambia. En cambio un kernel modular puede:
• Tener un tamaño menor que si fuera monolítico.
• Puede cargar a voluntad o automáticamente los
módulos que necesite.
• Pero NO marque como módulos los controladores
indispensables para el arranque.
Cómo compilar el kernel Linux– p. 16/43
Cambios de versión
Tener la versión más reciente del kernel le
brinda:
• Código mejorado y bugs solicionados.
• Soporte de nuevo hardware
• Posiblemente mejor desempeño.
El constante crecimiento y mejora del kernel
Linux ocasiona que:
• El menú de configuración cambie de una versión a
otra.
• Ocurre el aviso y luego el retiro de código
(DEPRECATED).
Cómo compilar el kernel Linux– p. 17/43
Configuraciones básicas
Para que aparezcan las opciones de tipo
experimental:
Code maturity level options
--->
[*] Prompt for development and/or incomplete code/drivers
Para que cuando conecte un dispositivo externo
el módulo se cargue por sí sólo:
Loadable module support
--->
[*] Enable loadable module support
[*]
[*]
[*]
Forced module unloading
Automatic kernel module loading
Module unloading
Cómo compilar el kernel Linux– p. 18/43
Configuraciones básicas
Seleccione la familia del procesador:
--->
Processor type and features
Processor family (Pentium-4/Celeron(P4-based)/Pentium-4
Si tiene un procesador Intel con capacidad
HyperThreading (HT), o bien, con dos o más
procesadores, debe activar:
Processor type and features
--->
[*] Symmetric multi-processing support
Cómo compilar el kernel Linux– p. 19/43
Configuraciones básicas
Si tiene particiones formateadas en Ext2 y Ext3:
--->
Ext3 extended attributes
File systems
<*> Second extended fs support
[*]
Ext2 extended attributes
<*> Ext3 journalling file system support
[*]
Para que los administradores de archivos
muestren los cambios sin necesidad de
refrescar:
File systems
[*] Inotify file change notification support
[*]
Pseudo filesystems
Inotify support for userspace
--->
--->
--- /proc file system support
[*]
[*] Virtual memory file system support (former shm fs)
/proc/kcore support
Cómo compilar el kernel Linux– p. 20/43
Configuraciones básicas
Para pertenecer a
Comentarios de: Como compilar el kernel Linux (0)
No hay comentarios