This FAQ is dedicated to Prof. Dr. Klaus Schilling.
-- "And I want it to be a multitasking, extensible System with cursor-addressable charactercell-only user interface, not more and not less. (of course I want to use the 'less' command, so don't mistake it as a pun)"
Index Home Index Buscador Parte II


iconKernel

  • Breve comparación entre kernels monolíticos, microkernels y exokernels.

    Los componentes básicos de un sistema operativo son:

    • Manejo de procesos: Creación, suspención, deleción de procesos e intercomunicación de procesos (IPC)
    • Manejo de memoria: asignación y re-asignación de la memoria física
    • Manejo de la memoria virtual: Mantener un mapeo de la memoria virtual a la memoria física, decidir el tamanio de la memoria que se va a destinar a los procesos
    • Manejo de I/O: definición de los controladores de dispositivos, ofreciendo una interfase uniforme a los dispositivos
    • Manejo del almacenamiento secundario: Asignación y deasignación de bloques y manejo de la recuperación de bloques
    • Manejo de archivos: nominación, directorios, creación, uso y deleción de archivos, protección: backups, cuentas.
    • Servicios de Network: soporte para protocolos de network.
    • Servicions de información.
    • Cuentas: quotas, usos y costos.
    • Seguridad y privacidad.

    La arquitectura más antigua usada en los sistemas operativos es la monolítica. Linux utiliza este tipo de arquitectura.

    Una arquitectura más moderna que la monolítica es la arquitectura micro kernel usada en MACH/HURD, Minix OSF y NT.

    Cómo se podrá observar en los gráficos, el principal atributo que distingue a los kernels monolíticos y micro-kernel es lo que sus respectivas arquitecturas implementan en en modo supervisor (kernel mode) de la CPU y lo que se implementa en el modo usuario (user mode) de la CPU. La arquitectura monolítica implementa todos los servicios del sistema operativo (controladores de dispositivos, memoria virtual, sistema de archivos, networking, etc) en el espacio dominado por el modo supervisor de la CPU. En cambio, la arquitectura micro-kernel hace una división entre los servicios del sistema operativo dividiéndolos en "higher-level" implementados en el espacio dominado por el modo usuario y "lower-level" implementados en el espacio dominado por el modo supervisor. En contraste, un tercer tipo de arquitectura denominada exo kernel, como su nombre lo indica, no implementa nada en el espacio dominado por el modo supervisor, este tipo de arquitectura es la que posee el kernel MIT Aegis.


  • El Sistema de archivo ext2 en linux y concepto de fragmentación

    Los bloques son la unidad básica de cualquier sistema de archivos. Hay 2 clases de bloques: "logical blocks" y "physical blocks", un bloque lógico es siempre más grande que uno físico (bloque lógico = bloque físico elevado a la 2 potencia). El bloque "zero" es conocido como el bloque de booteo. Cuando un archivo contiene un número NO entero de bloques; el espacio al final de bloque es desperdiciado. En promedio se pierde la mitad de un bloque por archivo. Para resolver este inconveniente, los sistemas de archivo usan fragmentos, de este modo, un archivo es un conjunto de bloques más una serie consecutivas de fragmentos. A su vez, los bloques están agrupados: el grupo superblock contiene los bloques a los cuales sólo el superusuario tiene acceso, contienen información fundamental sobre el tamanio y estado del sistema de archivos ext2 (existe una copia de estos bloques en caso de corrupción), el grupo block descriptor es el que le sigue inmediatamente al grupo superblock y contiene la siguiente información: blocks bitmap, usados durante la asignación y deasignación de bloques, inode bitmap, usados durante la asignación y deasignación de inodos y la tabla de inodos.


  • Módulos dinámicamente cargables (loadables modules)

    Un módulo dinámicamente cargable es una pieza de código que no está incluída directamente en el código base del kernel y puede ser insertada (usando el comando insmod) o removida (usando el comando rmmod) mientras que el sistema operativo está en funcionamiento.


  • 3.10 Problema con los módulos

    1- Durante el boot veo los siguientes mensajes can't locate module net-pf-3, can't locate module net-pf-4, etc: Esto significa que linux no encontro módulos para determindos protocolos de network como IPX (net-pf-4) appletalk (net-pf-5) Para solucionar este problemita edita /etc/conf.modules poniendo:

       alias net-pf-3 off # Desactiva el módulo ax25 
       alias net-pf-4 off # Desactiva el módulo ipx 
       alias net-pf-5 off # Desactiva el módulo appletalk 
    

    2- Acabo de upgradear el kernel de 2.0.XX a 2.2.X y ahora veo: can't locate module ppp-compress-2x. Edita /etc/conf.modules agregando:

    alias ppp-compress-21 bsd_comp 
    alias ppp-compress-24 ppp_deflate 
    alias ppp-compress-26 ppp_deflate 
    

  • 3.11 Cómo compilo un nuevo kernel? Obtene el nuevo kernel y descomprimilo en el directorio /usr/src haciendo gzip -dc kernel-2.2.5.tar.gz | tar xf - luego, cambia de directorio: cd /usr/src/linux para cambiar de directorio y segui estos pasos:
    1- make menuconfig  *usa ncurses, interface para consola*  
     
     2- make dep  *configura las dependencias del kernel*
     3- make clean   
     4- make zImage (o make bzImage si el kernel es demasiado grande) 
     5- Opcional para crear un disco de booteo: make zdisk (o bzdisk si el 
                                                kernel es demesiado grande) 
     6- Módulos: make modules  
    	     make modules_install  
    							
     7- Configuracion de lilo: Copia la imagen del nuevo kernel haciendo:
    
       cp /usr/src/linux/arch/i386/boot/zImage /vmlinuz-2.2.5 
       
       Si usaste make bzImage en lugar de make zImage hace: 
       
       cp /usr/src/linux/arch/i386/boot/bzImage /vmlinuz-2.2.5
       
       Edita /etc/lilo.conf cambiando la linea image = /vmlinuz por 
       
       image =/vmlinuz-2.2.5
    
     8- Testeando los modulos:
                              a- Tipea depmod -a
                              b- Tipea modprobe [nombre del modulo]
    			                            
    

  • Problemas despues de hacer un upgrade desde 2.0.3X a 2.2.X:

    1- Me dice "this kernel lacks for ppp support"! pero si yo tengo ppp support compilado en el kernel!: Eso pasa cuando no se lee el README/Changes 2.2.X necesita ppp-2.3.5 o versiones mas recientes para funcionar.

    2- No puedo "routear" mi loopback interface! route add -net 127.0.0.0 dev lo me dice: SIOCADDRT: Invalid argument. Los kernels 2.2.X necesitan que agregues el netmask cuando agregas una ruta lo correcto es hacer: route add -net 127.0.0.0 netmask 255.0.0.0 dev lo


  • Al configurar mi placa de red me dice..."Network unreachable" Si la placa de red esta correctamente tomada por el driver (en el kernel) probablemente tu tabla de ruteo sea incorrecta
  • 3.12 Como aplico un patch a mi kernel? Formato .gz: mv patchXX.gz /usr/src luego cd /usr/src luego gzip -cd patchXX.gz | patch -p0 Formato .bz2: mv patchXX.bz2 /usr/src luego cd /usr/src luego bzip2 -dc patchXX.bz2 | patch -p0 Luego de aplicar el patch recompila el kernel.
  • Acabo de hacer un patch para mi kernel como lo testeo? cd /usr/src; diff -u linux-2.2.5/drivers/net/driver_xyz.c linux/drivers/net/driver_xyz.c > tu_patch El comando diff lo que hace es comparar 2 archivos, imprescindible ver man diff
  • Durante el boot veo un error que dice: "APM not supported by the kernel" Qué es APM? Necesito compilar mi kernel con soporte para APM?

    APM ignifica "Advanced Power Management" es usado en las laptops para advertir cuándo la batería de la laptop se va a acabar, etc. Si no estás usando una laptop, obvio que no necesitás esta opción ;)


  • 3.13 GCC Internal compiler Error: si sigue sucediendo en el mismo archivo a pesar de rebootear, usando un kernel estable probablemente hayas decubierto un bug en gcc. Si este problema no se repite, sino que es aleatorio, malas noticias, puede ser signo de corrupcion de memoria.

Trademarks are owned by their owners.

Although the information given in this document is believed to be correct, the author will accept no liability for the content of this document. Use the tips and examples given herein at your own risk.

Copyright © 1998, 1999 by Brocoli & $erena. This document may be distributed only subject to the terms and conditions set forth in the LDP license.