Forums

Skip to content

Advanced search
  • Quick links
    • Unanswered topics
    • Active topics
    • Search
  • FAQ
  • Login
  • Register
  • Board index International Gentoo Users Forum italiano (Italian) Risorse italiane (documentazione e tools)
  • Search

[HOWTO] Cosa é, e come funziona hotplug.

Forum riservato alla documentazione in italiano.

Moderator: ago

Post Reply
  • Print view
Advanced search
11 posts • Page 1 of 1
Author
Message
motaboy
Retired Dev
Retired Dev
User avatar
Posts: 1483
Joined: Mon Dec 15, 2003 2:38 pm

[HOWTO] Cosa é, e come funziona hotplug.

  • Quote

Post by motaboy » Thu Jul 08, 2004 2:03 pm

Cosa é, e come funziona hotplug.

Introduzione.

Ho deciso di scrivere questa mini documentazione per cercare di chiarire vari dubbi sul funzionamento di hotplug e su cosa É in realtá hotplug. Infatti solo oggi mi é capitato di leggere vari post in cui vi fosse un pó di confusione. E mi é sembrato bello cercare di fare un pó di chiarezza.

Ovviamente lo so che a molti non gliene frega niente dei dettagli (l'importante é che vada), peró se cé qualcuno curioso questo dovrebbe tornare utile.

Ma allora cosa é hotplug?

Hotplug non é un programma e basta, hotplug é tante cose.

Quando il kernel interroga i vari bus (PCI, USB, ISAPNP, FIREWIRE, INPUT, PCMCIA(in arrivo)) o quando crea interfacce di rete, trova block devices (harddisk, chiavi usb etc...), esso genera un evento.
Ossia chiama un programma denominato appunto "hotplug" (solitamento presente in /sbin/hotplug, ma settabile in /proc/sys/kernel/hotplug) passandogli varie variabili d'ambiente e come argomento il tipo di evento (usb, pci, isapnp, net, ieee1394, printer, disk, parport, input, ide, cpu, system ecc...).

Le variabili d'ambiente variano in base al tipo di evento.
Per esempio per un evento di tipo PCI esse sono:

Code: Select all

ACTION=%s [add or remove]
PCI_CLASS=%06X
PCI_ID=%04X:%04X
PCI_SLOT_NAME=%s
PCI_SUBSYS_ID=%04X:%04X

Cosa avviene una volta che il kernel ha invocato "hotplug"?

Questo programma, in una installazione standard non é altro che uno script di qualche riga che richiama gli script (o programmi) contenuti in /etc/hotplug.d
Qua ci sono varie directory, ognuna col nome del tipo di evento (come sempre pci, usb, block etc...). Vi é anche una directory chiamata "default" e invocata per qualsiasi evento.
Gli script, per essere invocati, devono avere estensione .hotplug.

Tutti gli script relativi all'evento (quelli in default sempre) vengono chiamati con le stesse variabili d'ambiente passate dal kernel ad hotplug.

Ora c'é da fare una precisazione.
Molti pensano che hotplug sia "il programma che carica i moduli delle periferiche trovate".
NIENTE DI PIÚ SBAGLIATO. Esso é solo una piccola parte di quello che puó fare hotplug.

Se per caso avete installato "udev" vedrete con in /etc/hotplug.d/default esiste anche un link chiamato udev.hotplug che punta ad "udevsend", infatti anche udev utilizza hotplug. Lo stesso lo fa "hal".

Come fa hotplug a caricare i moduli delle periferiche.

Se guardate in /etc/hotplug.d/default vedrete uno script chiamato default.hotplug. QUESTO é colui che si occupa di chiamare gli agenti (altri script) presenti in /etc/hotplug (NON /etc/hotplug.d). Sono essi che si occupano di caricare i moduli relativi a quell'evento (come funzionano lo spiego dopo).

MA QUESTO AVVIENE solo quando una periferica viene inserita a kernel giá completamente avviato (tipo quelle usb).

Ma molte periferiche vengono viste dal kernel mentre si sta avviando, quando esso non puó ancora accedere all'harddisk e quindi invocare hotplug (oltre al fatto che non sarebbe ancora configurato dagli script di init).

Allora come fanno a essere caricati i moduli?

Questa funzione viene detta "ColdPlug" per distinguerla dall'hotplug. In pratica il servizio in /etc/init.d/hotplug invoca tutti gli script con estensione ".rc" presenti in /etc/hotplug.
Questi script ".rc" guardano nel procfs (kernel 2.4) o nel sysfs (kernel 2.6) per ricavare le variabili di ambiente necessarie e chiamano gli script ".agent".


Come funzionano gli "agenti" ?

Un agente riceve in pratica le informazioni necessarie per discriminare una periferica (ogni periferica possiede uno o piú id che la identifica in modo abbastanza univoco, ovvviamente il metodo cambia da tipo a tipo, quelle con piú informazioni sono quelle usb).
Da queste informazioni esso deve ricavare il modulo associato a quella periferica.

Per fare ció esso va a vedere nei files presenti in /lib/module/`uname -r`/modules.XXXXmap (XXXX = pci, usb ...) .
Questi file vengono generati da depmod solitamente quando si da un "make modules_install", e comunque ogni volta che viene avviato il sistema viene lanciato depmod dagli script di init, quando dice "Calculating modules dependencies".

Se guardate questi file vedrete che ogni riga inizia col nome del modulo e in seguito ci sono vari numeri esadecimali, essi sono gli id di tutte le periferiche supportate da quel modulo.
Confrontando questi valori con quelli passati, l'agente riesce a determinare il modulo e a caricarlo (con modprobe).

I moduli, per esportare gli id, utilizzano al loro interno la macro MODULE_DEVICE_TABLE, a cui passano uno struttura dati (definita in un determinato modo) contenente gli id. Grazie a questo depmod riesce a generare i file con gli id.

Conclusione.

Ci sarebbero tante altre cose da dire, ma mi sembra giá troppo lungo, comunque per ogni dubbio chiedete e (se lo so) vi risponderó.
Spero comunque che vi ritorni utile.
Last edited by motaboy on Sun Jul 11, 2004 3:19 pm, edited 4 times in total.
...
Top
fedeliallalinea
Administrator
Administrator
User avatar
Posts: 31985
Joined: Sat Mar 08, 2003 11:15 pm
Location: here
Contact:
Contact fedeliallalinea
Website

  • Quote

Post by fedeliallalinea » Thu Jul 08, 2004 2:08 pm

Ottimo howto direttamente nei post utilissimi
Questions are guaranteed in life; Answers aren't.

"Those who would give up essential liberty to purchase a little temporary safety,
deserve neither liberty nor safety."
- Ben Franklin
https://www.news.admin.ch/it/nsb?id=103968
Top
motaboy
Retired Dev
Retired Dev
User avatar
Posts: 1483
Joined: Mon Dec 15, 2003 2:38 pm

  • Quote

Post by motaboy » Thu Jul 08, 2004 2:12 pm

Grassie! :oops: (emozione...) :oops:
...
Top
marco86
Guru
Guru
User avatar
Posts: 574
Joined: Fri Jun 04, 2004 2:26 pm
Location: /italy/torino/valli_di_Lanzo
Contact:
Contact marco86
Website

  • Quote

Post by marco86 » Thu Jul 08, 2004 2:27 pm

motaboy wrote: Infatti solo oggi mi é capitato di leggere vari post in cui vi fosse un pó di confusione. E mi é sembrato bello cercare di fare un pó di chiarezza.
Ovviamente lo so che a molti non gliene frega niente dei dettagli (l'importante é che vada), peró se cé qualcuno curioso questo dovrebbe tornare utile.
Suppongo che ti riferivi anvhe a me, adesso mi è più chiaro, bell'idea, grazie! Questo mini HOW-TO chiarirà sicuramente le idee a chi aveva le idee un pò confuse come me :oops:

P.S.sono io il genio che aveva detto...
Molti pensano che hotplug sia "il programma che carica i moduli delle periferiche trovate".
Adesso mi è chiaro, GRAZIE
Se il destino è contro di noi...bhe, peggio per lui....!!
Top
motaboy
Retired Dev
Retired Dev
User avatar
Posts: 1483
Joined: Mon Dec 15, 2003 2:38 pm

  • Quote

Post by motaboy » Thu Jul 08, 2004 2:36 pm

Non mi riferivo solamente a te ma anche a me stesso, prima che mi mettessi li a cercare di capire come funzionava.
Credo che la confusione sia dovuta ai nomi che sono sempre gli stessi (hotplug) ma utilizzati per varie cose.
Probabilmente una scelta un pó piú oculata dei nomi ne avrebbe creata di meno.

:lol: P.S. Tu avevi detto che hotplug fa lo scan dell'hardware :lol:
...
Top
randomaze
Bodhisattva
Bodhisattva
User avatar
Posts: 9985
Joined: Tue Oct 21, 2003 7:55 am
Contact:
Contact randomaze
Website

  • Quote

Post by randomaze » Thu Jul 08, 2004 2:47 pm

Molto interessante, grassie :-)
Ciao da me!
Top
theRealMorpheu5
l33t
l33t
User avatar
Posts: 841
Joined: Thu Feb 26, 2004 6:22 pm
Location: Vicenza, IT
Contact:
Contact theRealMorpheu5
Website

  • Quote

Post by theRealMorpheu5 » Thu Jul 08, 2004 3:12 pm

Dove cacchio è la faccina che applaude? :lol:
Top
Panda
Apprentice
Apprentice
User avatar
Posts: 223
Joined: Thu Jul 31, 2003 1:05 pm
Location: Cremona <=> Catania
Contact:
Contact Panda
Website

  • Quote

Post by Panda » Sat Jul 10, 2004 8:53 pm

Spettacolo! Mi tornera' utile per il mio OSDhotplug, appena finiti sti cacchio di esami :D
Top
FonderiaDigitale
Veteran
Veteran
User avatar
Posts: 1710
Joined: Thu Nov 06, 2003 4:28 am
Location: Rome, Italy
Contact:
Contact FonderiaDigitale
Website

  • Quote

Post by FonderiaDigitale » Sat Jul 10, 2004 9:26 pm

tu sei un grande.

EDIT: puoi aggiungere degli esempi pratici su come agganciare a usb.usermap degli script a device specifici (es. chiavette usb, fotocamere) e come sono strutturati gli script? (es. $REMOVER)
Come disse un amico, i sistemisti sono un po' come gli artigiani per l'informatica :)
Top
motaboy
Retired Dev
Retired Dev
User avatar
Posts: 1483
Joined: Mon Dec 15, 2003 2:38 pm

  • Quote

Post by motaboy » Sun Jul 11, 2004 9:53 am

FonderiaDigitale wrote:tu sei un grande.

EDIT: puoi aggiungere degli esempi pratici su come agganciare a usb.usermap degli script a device specifici (es. chiavette usb, fotocamere) e come sono strutturati gli script? (es. $REMOVER)
Ooook. Se siete interessati posso aggiungere qualcosa. Comunque anche tu fonderia sei ben informato quindi se vuoi mettere qualcosa ben venga!

EDIT: Potrei prendere come esempio gli script installati da sane, per cercare di spiegarne l'utilitá.
...
Top
SilverXXX
l33t
l33t
User avatar
Posts: 885
Joined: Sat Sep 18, 2004 10:11 am

  • Quote

Post by SilverXXX » Wed Dec 15, 2004 7:36 pm

GRANDE! Stavo cercando di fare uno script per gli usb-storage, e mi stavo arenando inesorabilmente (anche perchè non ho trovato una guida chiara), ma adesso aspetto le tue aggiunte, che magari riesco a cavarci qualcosa.
about:mozilla
Top
Post Reply
  • Print view

11 posts • Page 1 of 1

Return to “Risorse italiane (documentazione e tools)”

Jump to
  • Assistance
  • ↳   News & Announcements
  • ↳   Frequently Asked Questions
  • ↳   Installing Gentoo
  • ↳   Multimedia
  • ↳   Desktop Environments
  • ↳   Networking & Security
  • ↳   Kernel & Hardware
  • ↳   Portage & Programming
  • ↳   Gamers & Players
  • ↳   Other Things Gentoo
  • ↳   Unsupported Software
  • Discussion & Documentation
  • ↳   Documentation, Tips & Tricks
  • ↳   Gentoo Chat
  • ↳   Gentoo Forums Feedback
  • ↳   Duplicate Threads
  • International Gentoo Users
  • ↳   中文 (Chinese)
  • ↳   Dutch
  • ↳   Finnish
  • ↳   French
  • ↳   Deutsches Forum (German)
  • ↳   Diskussionsforum
  • ↳   Deutsche Dokumentation
  • ↳   Greek
  • ↳   Forum italiano (Italian)
  • ↳   Forum di discussione italiano
  • ↳   Risorse italiane (documentazione e tools)
  • ↳   Polskie forum (Polish)
  • ↳   Instalacja i sprzęt
  • ↳   Polish OTW
  • ↳   Portuguese
  • ↳   Documentação, Ferramentas e Dicas
  • ↳   Russian
  • ↳   Scandinavian
  • ↳   Spanish
  • ↳   Other Languages
  • Architectures & Platforms
  • ↳   Gentoo on ARM
  • ↳   Gentoo on PPC
  • ↳   Gentoo on Sparc
  • ↳   Gentoo on Alternative Architectures
  • ↳   Gentoo on AMD64
  • ↳   Gentoo for Mac OS X (Portage for Mac OS X)
  • Board index
  • All times are UTC
  • Delete cookies

© 2001–2026 Gentoo Foundation, Inc.

Powered by phpBB® Forum Software © phpBB Limited

Privacy Policy

 

 

magic