|
|
Riga 1: |
Riga 1: |
| == Disclaimer ==
| | [[immagine:Hp-compaq-nx6110.jpg|frame|right|HP Compaq nx6110]] |
| | Il portatile HP Compaq NX 6110 viene certificato da HP come compatibile al 100% con GNU/Linux. HP distribuisce opzionalmente (almeno ufficialmente, io non ne ho trovati disponibili) questi portatili senza alcun sistema operativo ed ha lavorato con Ubuntu per utilizzare hardware pienamente funzionante anche con GNU/Linux. |
|
| |
|
| Questa guida guida si prefigge di raccogliere informazioni riguardo udev, la sua configurazione e il suo utilizzo dal punto di vista dell'utente su sistemi Debian GNU/Linux.
| | ''Guida segnalata su [http://tuxmobil.org/hp_compaq.html TuxMobil] e [http://www.linux-on-laptops.com/hp.html Linux On Laptops]'' |
|
| |
|
| Molte delle informazioni sono tratte (e tradotte) da <tt>/usr/share/doc/udev/</tt>. Si prega di correggere o segnalare ogni possibile (e probabile) inesattezza.
| | =Hardware= |
| | * Processore: Intel(R) Pentium(R) M processor 1.50GHz |
| | * Memoria RAM: 512Mb |
| | * Scheda Video: Intel 915GM |
| | * Scheda Audio: Intel AC'97 (modem) |
| | * Scheda Ethernet: Broadcom BCM 4401 100 Base TX |
| | * Scheda Wireless: Intel PRO/Wireless LAN 2200 BG mini PCI |
|
| |
|
| == Il sottosistema hotplug == | | =Output di lspci= |
| | <pre>Host bridge: Intel Corporation Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller (rev 03) |
| | VGA compatible controller: Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller (rev 03) |
| | Display controller: Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller (rev 03) |
| | USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 (rev 03) |
| | USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2 (rev 03) |
| | USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3 (rev 03) |
| | USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4 (rev 03) |
| | USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCIController (rev 03) |
| | PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev d3) |
| | Multimedia audio controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller (rev 03) |
| | Modem: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Modem Controller (rev 03) |
| | ISA bridge: Intel Corporation 82801FBM (ICH6M) LPC Interface Bridge (rev 03) |
| | IDE interface: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) IDE Controller (rev 03) |
| | Network controller: Intel Corporation PRO/Wireless 2200BG (rev 05) |
| | CardBus bridge: Texas Instruments PCIxx21/x515 Cardbus Controller |
| | FireWire (IEEE 1394): Texas Instruments OHCI Compliant IEEE 1394 Host Controller |
| | Ethernet controller: Broadcom Corporation BCM4401-B0 100Base-TX (rev 02)</pre> |
|
| |
|
| Il sottosistema hotplug (dall'inglese: connessione a caldo, cio� a PC acceso) � un servizio del kernel che provvede a notificare in user space l'avvenuta connessione di un nuovo dispositivo.
| | =Configurazione= |
| Nell'evoluzione del kernel Linux questo servizio ha subito diverse modificazioni, nel tentativo di migliorare ogni volta in termini di prestazioni e flessibilit�.
| | ==Kernel vanilla 2.6.12 - 2.6.13== |
| | Metto a disposizione degli interessati il file di configurazione per i kernel [[Kernel config per HP Compaq NX 6110| 2.6.12 e 2.6.13]] (dovrebbe funzionare anche con altre versioni comunque). Andate al link, copiate il testo e incollatelo in un file sul vostro PC e quindi spostatelo nella directory dove risiedono i sorgenti del kernel che volete compilare (normalmente /usr/src/linux/) rinominandolo in ''.config''. |
| | {{box|Nota Bene: Filesystems|Il kernel � configurato per fornire supporto ai filesystems ext2 e reiserFS (oltre a VFAT, NTFSrw e NCPFS). Se la vostra installazione prevede l' uso di altri filesystems, '''� necessario''' abilitarli prima di ricompilare il kernel.}} |
|
| |
|
| Nei kernel 2.4 l'interfaccia tra i driver e i programmi era fornita assieme a tutte le configurazioni del kernel stesso tramite il filesystem virtuale <tt>/proc</tt>, e i file di dispositivo erano creati staticamente: nella directory <tt>/dev</tt> erano presenti tutti i possibili device file.
| | ==Processore, frequency scaling e ACPI== |
| Nel tentativo di migliorare il sistema venne implementato devfs, un altro filesystem virtuale, che si occupava solo dell'interazione programmi-driver, separando cos� la gestione di questi da quella del kernel.
| | Il kernel cos� configurato supporta le tecnologie di scaling per la frequenza della CPU. Dato che il supporto � compilato come modulo, � necessario che esso venga caricato prima di poter essere disponibile (modulo '''speedstep-centrino'''. Offre inoltre il supporto per il demone '''cpufreqd'''. Per installare questo demone � sufficiente: |
| | <pre># apt-get install cpufreqd</pre> |
| | E' abilitato anche il supporto per l' ACPI (battery, button, fan, ecc...) |
| | ==Server grafico (Xfree86 e Xorg) e accelerazione 3D== |
| | Il supporto alla scheda grafica ed all' accelerazione 3D sono compilati nel kernel di cui sopra. |
| | Il file [[Configurazione di Xorg per HP Compaq NX 6110 | xorg.conf]] rappresenta la configurazione per Xorg e prevede l' abilitazione per il DRI (accelerazione 3D) e l' uso simultaneo del touchpad e del mouse. |
| | Il file di configurazione � perfettamente funzionante anche per Xfree86 (� sufficiente rinominarlo) |
|
| |
|
| A partire dal kernel 2.6 devfs � stato progressivamente abbandonato e sostituito dal sysfs, ancora un filesystem virtuale, che adotta una nuova e unificata interfaccia verso i driver e che risulta migliore di tutte le implementazioni passate.
| | ==Scheda Audio e ALSA== |
| | La scheda audio funziona perfettamente con ALSA. |
| | Tutto quello che dobbiamo fare consiste in: |
| | <pre># apt-get install alsa-base alsa-utils |
| | # alsaconf</pre> |
| | Scegliamo la nostra scheda da quelle disponibili ed il gioco � fatto. |
|
| |
|
| Qualsiasi sia l'interfaccia che il kernel mette a disposizione, � necessario in user space un programma che si occupi di ricevere le notifiche di hotplug e compiere le azioni necessarie per l'utilizzo delle periferiche notificate (caricare moduli, eseguire script ed, eventualmente, creare file di dispositivo in <tt>/dev</tt>).
| | ==Modem== |
| | Il modem � uno SmartLink, supportato da GNU/Linux senza eccessivi patemi. Assicuriamoci che il modulo '''snd_intel8x0m''' venga caricato dal kernel e procediamo a scaricare il software necessario. |
|
| |
|
| Prima di udev il programma che svolgeva questo compito era stato chiamato, con poca fantasia, hotplug.
| | Debian mette a disposizione il pacchetto ''slmodem'', che fornisce le utilities e il demone necessari al controllo del modem. Installiamolo con il comando: |
| Hotplug � tutt'ora in grado di svolgere il suo compito, ma ha alcune limitazioni che si sta tentando di superare:
| | <pre># apt-get install sl-modem-daemon</pre> |
|
| |
|
| *� uno script bash, quindi � lento. Notare che la cosa � ininfluente per gli utenti comuni, a meno che non si connettano decine di periferiche al minuto ;-)
| | ==Scheda Ethernet Broadcom BCM 4401== |
| *sempre a causa della sua natura di script, occupa molto pi� spazio di un programma C, considerato anche che necessita dell'interprete /bin/sh. Anche che questo fattore non tocca direttamente un utente comune, ma � invece fondamentale per chi sta riorganizzando il processo di boot per implementare un sistema di hotplug dentro ad un nuovo tipo di initrd: l'initramfs.
| | Il supporto alla scheda ethernet � fornito nel kernel. Funziona anche con le immagini del kernel 2.6.8 installate da Debian per default. |
| *deve funzionare anche sui kernel 2.4, quindi non si appoggia al sysfs, perdendo in performance e funzionalit�.
| | ==Scheda wireless Intel PRO/Wireless LAN 2200 BG mini PCI== |
| *necessita di una directory /dev statica (nota che il devfs � ormai in disuso)
| | Per la configurazione di questa scheda, vi rimando alla guida [[Intel_PRO/Wireless_2200BG| Intel PRO Wireless 2200BG]]. |
|
| |
|
| == Cos'� udev ==
| | Per abilitare la bella luce blu che segnala il link wireless dobbiamo impostare il parametro "led" per il modulo ipw2200. |
|
| |
|
| Udev � un programma in user space in grado ricevere le notifiche del sottosistema hotplug dei kernel 2.6. A partire dalla versione 0.070 � in grado di fare tutto quello che faceva hotplug per i kernel 2.4, ma � molto pi� veloce e leggero (� scritto in C). In pi� udev � in grado di creare dinamicamente i device file (quelli in <tt>/dev</tt>) per ogni periferica che viene rilevata nel sistema.
| | Operiamo come segue: |
| | <pre># touch /etc/modprobe.d/ipw2200 |
| | # echo "options ipw2200 led=1" > /etc/modprobe.d/ipw2200</pre> |
|
| |
|
| Udev si appoggia unicamente al sysfs. Questo fatto ha il grande vantaggio di poter usufruire appieno della nuova e potente interfaccia di cui � stato dotato il kernel 2.6 (il sysfs, appunto) per la comunicazione tra i programmi in user space e i driver delle periferiche in kernel space, includendo nuove funzionalit� e migliore controllo sui driver stessi. L'unico svantaggio consiste nel fatto che non tutti i driver, al momento in cui si scrive, sono stati aggiornati per utilizzare il sysfs.
| | =Abilitare il reboot= |
| | La configurazione standard di Grub, non permette al sistema di riavviarsi. È quindi necessario aggiungere il paramentro ''reboot=b'' alla direttiva ''kernel'' nel nostro file menu.lst. |
|
| |
|
| Udev � un programma molto potente e flessibile che, occupandosi direttamente della creazione dei file di dispositivo (device file), permette un controllo molto accurato nella gestione degli stessi, dando la possibilit� all'amministratore di impostare in modo personalizzato tutti i loro attributi (nome, permessi, proprietario, ecc.)
| | ---- |
| Tramite delle regole (udev rules) si possono assegnare nomi fissi a determinati dispositivi (a prescindere, ad esempio, dalla porta usata per collegare la periferica). Inoltre � possibile richiamare un certo programma/script non appena un dispositivo viene riconosciuto dal sistema.
| | autore: [[Utente:Keltik|keltik]] 07:47, Set 17, 2005 (EDT) |
| | |
| Udev non si occupa tuttavia di caricare i moduli necessari al funzionamento del dispositivo, infatti questi <b>devono</b> essere gi� caricati per permettere ad udev di riconoscere la periferica e creare il corrispondente device file.
| |
| | |
| Sulla stable ('''sarge''') udev � presente nella versione 0.056 e viene usato in accoppiata con hotplug, che si occupa di caricare i driver delle periferiche.
| |
| | |
| In '''etch''' (attuale testing) e '''sid''' udev ha invece sostituito anche Hotplug.
| |
| | |
| Questa guida � dedicata alla versione di udev attualmente in etch.
| |
| | |
| == Il nuovo udev ==
| |
| | |
| Dalla versione 0.070 in poi udev ha sostituito completamente hotplug. I driver delle periferiche rilevate vengono caricati tutti automaticamente durante il boot. Per fare un esempio, se al boot vengono trovate delle porte usb, verr� automaticamente caricato il modulo <tt>usb-storage</tt> che permetter� (tra le altre cose) di usare eventuali chiavette usb.
| |
| | |
| Per usare questa versione di udev � necessario un kernel 2.6.12 o superiore con le opzioni hotplug (CONFIG_HOTPLUG) e tmpfs (CONFIG_TMPFS) attivate. Le opzioni CONFIG_PNP, CONFIG_ISAPNP, CONFIG_PNPBIOS e CONFIG_PNPACPI sono altamente raccomandate per consentire il caricamente automatico di importanti driver.
| |
| | |
| A partire dal kernel 2.6.15-rc1 � stata introdotta la nuova implementazione del driver model, la quale presenta nuove feature e una migliore organizzazione dei contenuti di sysfs. Per gestire correttamente i vari dispositivi � quindi obbligatorio dotarsi di una versione di udev pari o superiore alla 0.071.
| |
| | |
| Il pacchetto hotplug deve essere rimosso manualmente, anche se non dovrebbe creare problemi se restasse installato.
| |
| | |
| Si pu� disabilitare udev aggiungendo al boot il parametro del kernel <tt>UDEV_DISABLED=yes</tt> in grub o lilo. Alternativamente si pu� configurare in <tt>/etc/udev/udev.conf</tt> una directory diversa da <tt>/dev</tt> per la creazione dei device file.
| |
| | |
| == Come funziona udev ==
| |
| Quando un driver viene caricato, rende disponibili delle informazioni in <tt>/sys</tt> e udev viene eseguito per leggerle e creare il device file appropriato.
| |
| | |
| Quando si collega una nuova periferica viene generato un evento di hotplug che viene intercettato non pi� da <tt>/sbin/hotplug</tt> bens� da <tt>/sbin/udevsend</tt> (il gestore degli eventi hotplug � indicato in <tt>/proc/sys/kernel/hotplug</tt>).
| |
| | |
| Questo significa che:
| |
| * i moduli non possono essere caricati su richiesta quando un'applicazione cerca di aprire un suo dispositivo, perch� il dispositivo non c'� ancora!
| |
| | |
| * poich� i moduli non vengono caricati su richiesta, se per qualche motivo i driver non possono essere caricati automaticamente durante il boot, bisogner� aggiungerli ad /etc/modules (oppure usare modconf ;-)).
| |
| | |
| * alcuni moduli non sono dei driver di un dispositivo e non possono essere caricati automaticamente da udev, devono quindi essere elencati in /etc/modules anch'essi.
| |
| | |
| * alcuni driver non sono stati ancora portati su sysfs, e udev non sar� in grado di creare i loro device. Se si usa uno di questi driver � necessario creare il device dopo ogni boot.
| |
| | |
| In altre parole, su un tipico sistema si potrebbero dover caricare manualmente (usando /etc/modules) dei moduli come ppdev e tun.
| |
| == Da hotplug a udev ==
| |
| | |
| Nel passaggio da hotplug a udev i seguenti file di configurazione sono diventati obsoleti:
| |
| | |
| ; <tt>/etc/hotplug/*.rc</tt> e <tt>*.agent</tt>: i vecchi file di hotplug non vengono pi� usati. Le regole di udev in <tt>/etc/udev/rules.d/</tt> possono essere usate per disabilitare selettivamente il coldplugging.
| |
| | |
| ; <tt>/etc/hotplug/usb/*.usermap</tt>: devono essere sostituiti da regole udev.
| |
| | |
| ; <tt>/etc/hotplug/blacklist*</tt>: dovrebbero essere sostituite da direttive di configurazione di modprobe (ma per adesso modprobe processer� <tt>/etc/hotplug/blacklist.d/</tt>).
| |
| | |
| Inoltre dalla versione 0.072:
| |
| | |
| * tutti i file in <tt>/etc/udev/scripts/</tt> and <tt>/lib/hotplug/</tt> e alcuni file in <tt>/sbin/</tt> sono stati spostati in <tt>/lib/udev/</tt>. Non dimenticate di aggiornare le regole personalizzate, se ne avete create.
| |
| | |
| == La directory <tt>/etc/udev/rules.d/</tt> ==
| |
| | |
| I file vengono letti e processati in ordine alfabetico, e le direttive contenute nelle regole vengono applicate in ordine. Le uniche eccezioni sono gli attributi NAME, di cui viene considerato solo il primo.
| |
| | |
| Poich� l'ordine � importante, alcuni di questi file hanno un nome particolare, per far s� che vengano letti prima o dopo di altri, e devono essere opportunamente considerati quando si aggiungono regole personalizzate.
| |
| | |
| Fino ad ora sono stati definiti:
| |
| | |
| ; <tt>020_permissions.rules</tt>: imposta proprietario e permessi di default.
| |
| | |
| ; <tt>z50_run.rules</tt>: viene eseguito <tt>$REMOVE_CMD</tt>, e successivamente l'elaborazione dei device tty viene fermato con <tt>last_rule</tt>.
| |
| | |
| ; <tt>z70_hotplugd.rules</tt>: le opzioni di <tt>last_rule</tt> finiscono di processare gli eventi hotplug riguardanti "drivers" e "module" e vengono eseguiti i vecchi script in <tt>hotplug.d/</tt> e <tt>dev.d/</tt>.
| |
| | |
| L'uso di <tt>/etc/udev/rules.d/</tt> da parte di altri pacchetti � fortemente sconsigliato, eccetto quando si aggiungono solamente regole RUN.
| |
| | |
| == Link ==
| |
| | |
| Altri link di approfondimento:
| |
| * [http://www.debian-administration.org/articles/126 Card Readers and USB keys using udev]
| |
| * [http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html udev Homepage]
| |
| * [http://www.reactivated.net/udevrules.php Writing udev rules]
| |