Curso de Introducción y Uso del Linux
|
|
Artículo realizado por
Pedro A. Carrasco.
Capítulo 3.
Instalación y compilación del núcleo
Tras los dos capítulos anteriores empezamos ahora con el nucleo o kernel,
el núcleo es la capa intermedia de software directamente ligada con el hardware
de nuestra máquina, por lo tanto es el que implementa las funciones o llamadas
para acceder a él. Tradicionalmente nos han acostumbrado a núcleos ya compilados,
como el de MS-DOS o W95-NT; pero con Linux y siguiendo con la libre distribución
de todo, incluidas las fuentes, tenemos estas últimas disponibles, por lo que podremos
compilar el núcleo a nuestra medida (por si alguien se lo pregunta, una compilación es el mecanismo
que se encarga de "traducir" los ficheros fuente, en formato texto, a ficheros binarios que
entienda el procesador).
Antes de asustarnos por eso de la compilación vamos a ver antes las ventajas que tiene el compilar
el núcleo:
Tendremos sólo los dispositivos que utilicemos, ni más ni menos.
Podemos utilizar los llamados modulos, los cuales se cargan sólo cuando se necesitan,
con el ahorro de memoria que supone.
Si algo no marcha bien y entendemos de C y programación, podemos intentar arreglarlo.
Al final tendremos un sistema a medida, con los dispositivos que necesitemos, incluso
con errores de hardware solucionados gracias al núcleo de Linux, como el f0-0f bug.
Si añadimos un nuevo dispositivo, nos conectamos a Internet, etc, sólo tenemos que recompilar
el kernel indicándole los nuevos parámetros.
Existen muchas más razones y podría ser discutido largo y tendido, pero, no es el tema de este curso,
por el momento veremos los procedimientos generales para realizar la instalación de las fuentes del núcleo:
Conseguir las fuentes del núcleo, para ello podemos instalar los paquetes necesarios de nuestra distribución,
en kernel-sources generalmente, o ir a Internet a buscar la última versión, en estos momentos la 2.0.34 de las estables
(si el segundo número es par es una versión estable, si no es de desarrollo). Podemos buscar en
ftp.rediris.es.
Una vez tenemos el fichero comprimido de las fuentes (suele llamarse linux-2.0.34.tar.gz por ejemplo), lo copiamos
a /usr/src como usuario root, hacemos una copia de seguridad del directorio de las fuentes anteriores,
si lo hubiese, con mv linux linux.old y lo descomprimimos con tar xvzf linux-2.0.34.tar.gz.
Nos creará un árbol de directorios bajo el directorio linuxcon todas las fuentes del núcleo, ahora no voy a analizarlo ya que sería reinventar la rueda, hay documentos específicos que hablan de ello.
Entramos dentro del directorio linux.
Bien, ya tenemos las fuentes descomprimidas en /usr/src/linux, ahora viene el proceso de configuración y compilación.
Lo primero es saber qué dispositivos tenemos, el disco duro, la tarjeta de sonido con sus parámetros, discos SCSI
(la unidad ZIP de Iomega en puerto paralelo se toma como un disco SCSI), CD-ROM (si es ATAPI o de alguna marca no compatible
con ATAPI), a fin de cuentas cuanta más información tengamos del Harware instalado en nuestro ordenador, mejor.
Para configurar el núcleo, estando en /usr/src/linux y como usuario root, tecleamos:
localhost # make config
o si queremos la configuración con menús:
localhost # make menuconfig
y si estamos dentro del entorno X-Window
localhost # make xconfig
Aquí explicaré la configuración por menús, esta requiere las n-curses instaladas, lo que suele venir por
defecto en todas las distribuciones.
Bien, empecemos, una vez que nos aparece el menú en pantalla podemos ir moviéndonos
con las flechas y con [INTRO] entramos en el menú seleccionado, dentro del menú, con Select
seleccionamos la opción resaltada, con la tecla M la seleccionamos como módulo si se puede (en vez de [ ]
aparece < >), y con las flechas de izquierda derecha nos movemos por Select, Exit y Help,
este último como siempre es importante si no sabemos qué hace una opción determinada.
Ya estamos dentro de la pantalla principal y vemos los menús, ahora empezaré explicando uno por uno:
- Code maturity level options:
Aquí seleccionamos Prompt for development and/or incomplete
code/drivers, esta opción nos permitirá seleccionar drivers o elementos que están aún
en desarrollo, pero que en algunos casos funcionan bien.
Loadable module support:Dentro de este menú están las opciones de modulos cargables, seleccionaremos
Enable loadable module support para activar el soporte de módulos, la opción
Set version information on all symbols for modules la seleccionaremos si no queremos mezclar módulos de versiones
anteriores con los de la versión actual, personalmente yo no la selecciono, luego seleccionaremos
Kernel daemon support (e.g. autoload of modules) para permitir que el núcleo cargue los módulos en demanda, o sea,
sólo cuando los necesita.
General setup:Este apartado define como su nombre indica la configuración general, consta de:
Kernel math emulation : Lo seleccionaremos siempre que nuestro ordenador no tenga coprocesador matemático (486SX o
inferiores)
Networking support : Soporte de red, lo seleccionaremos aunque no estemos conectados a ninguna red, es necesario para
aplicaciones como X-Window.
Limit memory to low 16Mb: Esta opción es para placas madres que experimentaban errores con cantidades de memoria
superiores a 16Mb, raramente ocurre por lo tanto lo normal es no seleccionarla.
PCI bios support: Si tienes bus PCI seleccionala, si no, no la selecciones.
PCI bridge optimization (experimental): Optimización del puente PCI, este apartado es experimental, pero parece
que es bastante estable, si has seleccionado la opción anterior seleccionala, si experimentases errores con el bus
PCI deseleccionala y recompila el núcleo.
System V IPC: Comunicación entre procesos, seleccionala, ya que si no muchos programas no te funcionarán.
Kernel support for a.out binaries
Kernel support for ELF binaries
Kernel support for JAVA binaries : Es el formato de ficheros ejecutables que soportará el núcleo,
las dos primeras hay que seleccionarlas (nunca como módulos), y la de JAVA
depende de cada uno, yo la tengo como módulo(con la tecla M).
Compile kernel as ELF - if your GCC is ELF-GCC: Si tienes una distribución muy antigua de Linux, quizás no puedas
seleccionar esta opción, si tu distribución tiene como máximo 2 años seleccionala.
(Pentium) Processor type: Aquí seleccionas el tipo de procesador que tienes.
Floppy, IDE, and other block devices:En este apartado seleccionamos los dispositivos de almacenamiento, diskettes,
CD-ROM etc, está compuesto por:
Normal floppy disk support: Soporte para diskettes normales, puedes seleccionarlo como módulo o no.
Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support: Si tienes dispositivos IDE selecciona esta opción, si tienes
poca memoria en el ordenador puedes dejarla y seleccionar Use old disk-only driver on primary interface.
Include IDE/ATAPI CDROM support
Include IDE/ATAPI TAPE support
Include IDE/ATAPI FLOPPY support (new): Con estas opciones seleccionamos los dispositivos IDE/ATAPI que tengamos,
tanto el CD-ROM como unidades de cinta y de diskette(incluida la LS-120 y la ATAPI-ZIP).
SCSI emulation support: Normalmente está deseleccionada, si tienes unidades no soportadas como ATAPI PC-CD seleccionala.
Support removable IDE interfaces (PCMCIA): Para tarjetas PCMCIA, normalmente en portátiles.
CMD640 chipset bugfix/support: En la mayoría de placas para 486 y Pentium se utiliza este chipset, seleccionando esta
opción resolvemos un error de la placa. Normalmente es conveniente seleccionarla.
CMD640 enhanced support: Si tienes este chipset, seleccionala.
RZ1000 chipset bugfix/support: Igual que CMD640.
Intel 82371 PIIX (Triton I/II) DMA support: Si utilizas un disco IDE y tienes la placa Tritón I o II selecciona esta opción.
Other IDE chipset support: Si tienes otros chipset IDE selecciona esta opción, también es necesaria para acceder al
tercer y cuarto dispositivo en algunos sistemas. Al seleccionarla saldrá una lista con los dispositivos soportados.
Loopback device support: Permite montar un fichero como un sistema de ficheros, es útil para chequear un sistema de
archivos ISO9660 (el de CD-ROM), para montar sistemas de archivos encriptados también, puedes seleccionarla como módulo.
Multiple devices driver support: Permite combinar varias particiones de disco duro en un dispositivo lógico.
RAM disk support: Soporte para disco RAM, normalmente no es necesario a no ser que se monte el sistema de ficheros
en diskette.
XT harddisk support: Controlador de disco de los antiguos XT si es tu caso seleccionalo.
Networking options:Opciones de red, en principio deja las opciones por defecto.
SCSI support:Soporte para dispositivos SCSI, aquí elegimos los dispositivos SCSI si los tenemos, si tenemos
la unidad IOMEGA ZIP en puerto paralelo seleccionaremos como modulo el soporte de SCSI y el de disco SCSI, luego en
SCSI low level drivers elegimos el driver de IOMEGA ZIP, si tenemos disco duro SCSI lo elegimos (no es conveniente
hacerlo como módulo) y en Low level drivers elegimos el correspondiente a nuestro dispositivo.
Network device support:
Dispositivo de red, normalmente dejamos las opciones que hay por defecto, aunque podemos
elegir el soporte para conectar dos ordenadores por el puerto serie o paralelo, y el soporte para ppp si queremos conectarnos
a Internet. También tenemos las opciones de soporte para Ethernet, Conexión por radio, Token Ring etc.
ISDN subsystem: Si te conectas por RDSI tendrás que configurar este apartado.
CD-ROM drivers (not for SCSI or IDEATAPI drives):/ Drivers de CD-ROM que no son ni SCSI ni IDE/ATAPI, como por ejemplo
los CD-ROM de Philips.
Filesystems:Sistemas de ficheros soportados por el núcleo, tendremos que elegir como mínimo ext2fs, proc y ISO9660 si
tenemos CD-ROM, este último lo podemos seleccionar como módulo, los dos anteriores no, luego podemos elegir FAT y VFAT si
tenemos una partición de DOS o W95 (actualmente hay un parche para FAT32), o queremos leer diskettes en formato DOS, NFS si
queremos montar sistemas de ficheros en red.
Character devices:Dispositivos de carácter, como la impresora, el puerto serie, tarjetas digitalizadoras etc, si
tenemos la unidad ZIP en puerto paralelo, la impresora habrá que configurarla como modulo y la unidad ZIP también.
Sound:Configuramos nuestra tarjeta de sonido si la tenemos, como existen muchas tarjetas y configuraciones
este apartado no lo profundizo ya que es bastante intuitivo.
Kernel hacking:Si vamos a desarrollar partes para el kernel podemos activar esta opción, en el caso normal de que
no lo vallamos a hacer lo dejaremos sin desactivar.
Load an Alternate Configuration File y Save Configuration to an Alternate File:Sirven para cargar
o guardar la configuración del núcleo de un fichero alternativo.
Llegados a este punto ya tendremos configurado el núcleo, con el botón Exit nos preguntará si
queremos guardar la configuración, seleccionamos que sí. Tras esto nos instará a que creemos las dependencias
y limpiemos el árbol de directorios. Para ello hacemos:
localhost # make dep ; make clean
Una vez que termina este proceso y si no ha habido errores hacemos
localhost # make zlilo
o
localhost # make zimage
En el primer caso nos creará la imagen y nos la instalará en su sitio, reiniciando
el lilo para que tenga en cuenta los cambios, en el segundo lo tendremos que hacer
nosotros a mano.
En este tercer capítulo se explica la instalación de un nuevo núcleo o la instalación del
que disponemos pero adaptándolo a nuestra máquina, los apartados de la compilación los he
sacado de la versión 2.0.33 del núcleo, aunque los cambios a versiones posteriores o anteriores
son fáciles si comprendemos el proceso de configuración. Tras tener instalado nuestro nuevo
núcleo si ponemos o quitamos algún dispositivo simplemente tenemos que configurarlo correctamente
en el núcleo y recompilar. Si ocurriese algún error puedes leerte el documento Kernel-Howto que está
también traducido por el grupo
LuCAS. Espero que
este capítulo haya servido para que comprendas mejor los entresijos del núcleo, para todos aquellos
que quieran profundizar en la estructura y programación del núcleo y de Linux les remito al artículo
aparecido en el número dos de Linux Actual sobre el núcleo y al libro Programación en Linux 2.0
de la editorial Eyrolles. Sin más me despido hasta el próximo artículo que tratará de la conexión
a la red de redes Internet por medio de Infovía (o infobirria como empieza a llamarse).