Càrrega dinàmica de mòduls al kernel de Linux

Slides:



Advertisements
Presentaciones similares
TFG – Àrea Enginyeria del programari
Advertisements

Campus Virtual.
Projecte Fi de Carrera Disseny i desenvolupament d’un esquema criptogràfic per gestionar de forma segura els historials mèdics dels pacients a través d’una.
ORIENTACIÓ I COORDENADES GEOGRÀFIQUES
Programa de Transició Escola Treball
L’Univers Com es defineix l’Univers?
Entrevistem a Joaquín Castel Mas
Ciències per al món contemporani
MÚLTIPLES I DIVISORS ESCOLA EL Cim- 6è de primària.
Us proposem no tocar el ratolí i gaudir-ne
Presentació de la base de dades
ESecretaria CB Montpedrós
L’ÚS DE LES LLIBRETES A LES SESSIONS DE FILOSOFIA 3/18
SCOPUSxxxxxxxxxxxxxxxx
Un exemple de Màquina Virtual: el programa VMware
1 u n i t a t La comunicació.
Plataforma de l’alumne
TREBALLEM EL SISTEMA SOLAR
Creació d’un mapa personalitzat
PROPIETATS PERIÒDIQUES DELS ELEMENTS
PubMed i el gestor de revistes del CRAI de la UB (servei SFX)
SETMANA DE LA PAU I LA SOLIDARITAT CLARET BARCELONA-2018
Disseny i implementació d’una base de dades relacional
L'ILLA DELS 5 FARS (FERRAN RAMÓN CORTÉS)
1. Aristòtil 1.4 El problema de l’ésser humà i del coneixement
Tutorial TIMERIME.
Itineraris curriculars simultanis Bellaterra, 20 de novembre 2015
Com enllaçar des de PubMed al gestor de
DIADA DE La pau i la no violència.
TREBALL DE FINAL DE CARRERA
NOVETATS ESPAI MARGALEF
Tutorials Campus Virtual Càrrega automàtica d’alumnes
MANTENIMENTS DE MATRÍCULA de Plans d’estudis de Doctorat
Publicar articles de recerca al
Què existeix i què no existeix.
DISC DUR Dispositiu encarregat d’emmagatzemar informació de forma permanent al nostre ordinador.
Hi havia una vegada un nen que es deia Tomàs que volia ser mag.
Memòria RAM Neus Blasco Amor 4rtB.
Tesis Doctorals en Xarxa
Formació per a responsables del programa Biblioteca escolar: PUNTEDU
Ruben Balada Tripiana Informática
Àrea d’Afers Acadèmics
Publicació de la recerca al Dipòsit Digital de la UB
Gestió electrònica del Dipòsit Legal
Jonathan Ceballos Rodriguez ( ) Zenón Perisé Alía ( )
Introducció a la Programació Orientada a Objectes
Explicació de l’enunciat
SCIENCE OF SYNTHESIS.
Treball de Recerca de Batxillerat
RETIRADA PLA DIRECTOR
LES XARXES LOCALS i els seus components.
Miquel Pratsevall Héctor del Corral
ESCOLA ANTONI TÀPIES- 5èB
Sistemes Operatius (S.O.) Onion: Mecanisme d'entrada al sistema
Al vostre gust amb el 8 Amb so ¯
INTERNET XARXA: Quan un conjunt d’ordinadors estan connectats entre si per comunicar-se i compartir informació. TIPUS DE XARXES: LAN: Xarxa d’àrea local,
REAXYS.
Threads en Java David Gañán Jiménez.
Xavi Fabregat 4tA Karim Atsailali 4tA
Dipòsit Digital de la Universitat de Barcelona
Jessica, Gerard, Laura P, Alex
Linux i Temps Real Alexei Lebedev.
Estudiant: Eva Muñoz Altimis
FUNCIONAMENT INTERN D’UN ORDINADOR
Sistema de descàrrega d’aplicacions per a mòbils intel·ligents
Exportar qualificacions a les actes
Estils i Plantilles Ms Word.
Presentació assignatura
TRETS DIFERENCIADORS 4t ESO
CICLES FORMATIUS.
Transcripción de la presentación:

Càrrega dinàmica de mòduls al kernel de Linux Esteve Llobera i Vila Edgar Gonzàlez i Pellicer

Què és un mòdul de Linux? Són fragments de codi precompilat que poden ser enllaçats dinàmicament dins el kernel de Linux en temps d’execució. KERNEL MÒDUL MÒDUL HD MÒDUL MÒDUL

Què és un mòdul de Linux? Els seus usos inclouen Controladors de dispositiu (drivers) Controladors de sistemes de fitxers Crides a sistema addicionals o no estàndard Implementació de protocols de xarxa Interpret de diversos formats d’executables Control de línies de terminal Té la mateixa filosofia que els sistemes extensibles!

Per què els mòduls de Linux? Linux és un sistema amb estructura monolítica i per tant cada vegada que necessitèssim adaptar el kernel hauriem de recompilar-lo. Solucions: carrega dinàmica de mòduls que ofereixin les funcionalitats desitjades. Ventatges addicionals: No cal apagar el sistema La memòria utilitzada pel nucli és més petita Contrapartida: Lleugera pèrdua d’eficiència.

Història i evolució Van aparèixer a la versió 1.2 del kernel (1995) A partir de llavors es van anar extraient del kernel tots els fragments que poguessin ser modularitzats. Aquesta feina no es va acabar fins l’any 2000. vFat audio eth Kernel IPX ELF ...

Estructures que els suporten La llista de mòduls del kernel presenta aquest format:

Estructures que els suporten El primer element de la llista de mòduls és un pseudo-mòdul encarregat de mantenir la taula de símbols exportats pel kernel base. A partir d’aquest s’enllacen tots els altres mòduls en ordre d’inserció.

Operacions amb els mòduls Inserció d’un mòdul: El mòdul es troba compilat a disc en un fitxer objecte. El programa carregador ubica el codi del mòdul en memòria del kernel substituint les referències externes del mòdul, per les adreces dels corresponents símbols del kernel. S’actualitza la taula de símbols del kernel amb els nous símbols oferts pel mòdul. Es crida a la rutina init_module() del mòdul. Aquesta crida haurà de registrar els serveis oferts pel mòdul mitjançant rutines internes del kernel. Cal recordar que el mòdul forma part del kernel.

Operacions amb els mòduls Extirpació d’un mòdul: Cal verificar que el mòdul a extirpar no sigui utilitzat per cap altre mòdul. Ho podem comprovar a la taula de referències del mòdul. Es desregistren tots els símbols que exportava el mòdul de la taula de símbols del kernel. Es crida a la rutina cleanup() del mòdul que desenregistrarà els serveis que oferia al kernel. S’eliminen les referencies als mòduls de què depenia. S'allibera la memòria de sistema que utilitzava.

Eines estàndard per la gestió de mòduls Linux ofereix un paquet anomenat modutils per a la gestió dels mòduls. Aquest paquet inclou: lsmod: llista tots els mòduls carregats actualment al sistema. depmod: genera l’arbre de dependències de tots els mòduls seleccionats a l’última compilació del kernel. modprobe: agrega un nou mòdul al kernel comprovant les seves dependències. insmod: agrega un nou mòdul al kernel sense comprovar dependències. rmmod: descarrega un mòdul del kernel. I d’altres: ksyms, modinfo, etc.

Càrrega automàtica de mòduls: kerneld A la versió 1.3 del kernel Bjorn Ekwall va introduir el Kernel Daemon (kerneld), al paquet modutils. Kerneld és un procés d’usuari que en iniciar-se obre un canal de missatges IPC amb el kernel. Els missatges tenen l’estructura: struct kerneld_msg { long mtype; long id; char text[1]; };

Càrrega automàtica de mòduls: kerneld Quan el kernel necessita un mòdul, envia un missatge al kerneld, que executa el modprobe per carregar el mòdul. La petició conté informació sobre el dispositiu o element que necessita el mòdul per ser controlat. Aquesta informació és passada per paràmetre al modprobe El modprobe sap quin fitxer objecte anar a buscar amb l’ajuda del fitxer /etc/modules.conf Finalment envia un missatge de resposta al kernel tant si s’ha produït un error com si no.

Càrrega automàtica de mòduls: kerneld Canal IPC fork+exec kernel petició modprobe Modul.o HD

Descàrrega automàtica de mòduls: kerneld Per a gestionar la descàrrega automàtica de mòduls, el kerneld va demanant al kernel cada cert temps que revisi la seva llista de mòduls a la cerca de mòduls no usats. Amb aquesta fi, el kernel guarda dos flags a cada mòdul: AUTOCLEAN i VISITED. El flag VISITED s’activa quan un mòdul és usat. Quan el kernel revisa tots els mòduls AUTOCLEAN, elimina els no visitats. A la resta, els reseteja el flag.

Descàrrega automàtica de mòduls: kerneld % kerneld Canal IPC kernel avís Modul.o

Càrrega i descàrrega automàtiques: kmod D’ençà la versió 2.1.90 del kernel, kerneld ha quedat obsolet, essent substituït pel kmod. kmod ja no és un procés d’usuari, sinó un thread del kernel. En tots dos casos es crida modprobe per carregar mòduls kmod no té en compte la descàrrega de mòduls. Per fer-ho és necessària la intervenció del crond, i que sigui ell qui executi periòdicament la comanda: rmmod --all Perquè s’ha substituit el kerneld pel kmod? Kerneld utilitzava el sistema de missatges IPC de SysV que ha passat a ser un mòdul a partir de les versions 2.2

Càrrega i descàrrega automàtiques: kmod % kernel cron kmod modprobe modul rmmod --all modul.o HD

Fitxers relacionats amb mòduls /etc/modules.conf (/etc/conf.modules) /lib/modules/X.Y.Z/ /proc/ksyms /proc/sys/kernel/modprobe /usr/src/linux/kernel/module.c /usr/src/linux/kernel/kmod.c

Bibliografia Linux Documentation Project: Linux Head Quarters: The Linux Kernel Guide: http://www.linuxdoc.org/LDP/tlk/modules/modules.html Module-HOWTO: http://www.linuxdoc.org/HOWTO/Module-HOWTO/index.html Kernel Daemon Mini-HOWTO: http://www.linuxdoc.org/HOWTO/mini/Kerneld/index.html Linux Head Quarters: http://www.linuxhq.com/kernel/2.4/doc/kmod.txt.html Pàgines del man.