Difference between revisions of "Udev (Italiano)"
(→Le regole di udev: corretta la sintassi del comando) |
m (→UDisks Shell Functions: updated) |
||
Line 45: | Line 45: | ||
* [https://bbs.archlinux.org/viewtopic.php?id=109307 udisks_functions] - Scritto per Bash. | * [https://bbs.archlinux.org/viewtopic.php?id=109307 udisks_functions] - Scritto per Bash. | ||
+ | |||
+ | * [https://bbs.archlinux.org/viewtopic.php?id=117674 bashmount] - bashmount [http://aur.archlinux.org/packages.php?ID=48524 (AUR)] è uno script bash strutturato a menù, con un semplice file di configurazione che lo rende semplice da configurare ed iplementare. | ||
+ | |||
=== Mount automatico delle periferiche USB === | === Mount automatico delle periferiche USB === | ||
{{Nota| Nelle seguenti regole, le opzioni per il comando mount sono definite con {{Codeline|<nowiki>ENV{mount_options}="relatime"</nowiki>}}, consultare {{Codeline|man mount}}(ed eventualmente {{Codeline|man ntfs-3g}}) per tutte le possibili opzioni, leggere [[Maximizing Performance#Mount options]] per informazioni relative alle performance.}} | {{Nota| Nelle seguenti regole, le opzioni per il comando mount sono definite con {{Codeline|<nowiki>ENV{mount_options}="relatime"</nowiki>}}, consultare {{Codeline|man mount}}(ed eventualmente {{Codeline|man ntfs-3g}}) per tutte le possibili opzioni, leggere [[Maximizing Performance#Mount options]] per informazioni relative alle performance.}} |
Revision as of 19:16, 4 May 2011
Contents
- 1 Introduzione
- 2 Il caricamento automatico dei moduli
- 3 Le regole di udev
- 4 Tips & Tricks
- 4.1 UDisks
- 4.2 Mount automatico delle periferiche USB
- 4.2.1 Mount in Template:Filename; usando l'etichetta della partizione se presente
- 4.2.2 Mount in /media; usando l'etichetta della partizione se presente; con supporto alla cifratura LUKS
- 4.2.3 Mount in Template:Filename; usando l'etichetta della partizione se presente; consentire agli utenti lo smontaggio
- 4.2.4 Mount in Template:Filename; creando un link simbolico in Template:Filename
- 4.2.5 Mount in Template:Filename solo se la partizione ha una etichetta
- 4.2.6 Mount in Template:Filename; usando l'etichetta della partizione se presente; usando ntfs-3g
- 4.2.7 Mount delle SD card
- 4.2.8 Mount dei CD
- 4.2.9 Accedere a Firmware Programmers ed a USB Virtual Comm Devices
- 4.3 Velocizzare udev
- 4.4 Eseguire all’inserimento di un USB
- 4.5 Mount dei supporti di memoria esterni come utente non privilegiato
- 5 Risoluzione dei problemi
- 5.1 Disabilitare il caricamento automatico dei moduli ed uso all'avvio del parametro load_modules
- 5.2 Inserire i moduli in blacklist
- 5.3 udevd fallisce all’avvio
- 5.4 Problemi noti relativi all'hardware
- 5.5 Problemi noti relativi al caricamento automatico dei moduli
- 5.6 Problemi noti legati all'uso di Kernel personalizzati
- 6 Risorse
Introduzione
"udev" è il device manager per la versione 2.6 del kernel Linux. Principalmnte, si occupa di creare i file relativi alle periferiche in Template:Filename. Esso è il successore di devfs ed hotplug, si occupa infatti dell'intera cartella Template:Filename ed delle eventuali modifiche, come l'inserimento o la rimozione di periferiche, avrà il compito di gestire le operazioni in userspace ed eventualmente caricherà i firmware relativi alle periferiche.
udev sostituisce in tutte le loro funzioni sia Template:Codeline che Template:Codeline.
udev carica i moduli del kernel simultaneamente, ciò può quindi comportare una maggiore velocità di avvio del sistema. Comunque uno svantaggio è che non sempre i moduli vengono caricati nel solito ordine ad ogni avvio, questo può causare problemi ad alcune schede audio o di rete(se sono presenti due o più di queste schede). Vedere più avanti per maggiori informazioni riguardo a questo problema.
Il caricamento automatico dei moduli
udev non caricherà nessun modulo se non è abilitata l'opzione Template:Codeline in Template:Filename. Se viene disabilitato il caricamento automatico dei moduli, sarà necessario inserire i moduli che si intende, o che si necessita di caricare, all'interno dell'array Template:Codeline in Template:Filename, è possibile ottenre un elenco dei moduli con il comando Template:Codeline.
Le regole di udev
Le regole di udev si trovano in Template:Filename, questi file avranno l'estensione Template:Filename.
Per maggiori informazioni su come scrivere regole per udev consultare il sito(in inglese).
Per ottenere una lista dei possibili attributi di una periferica utilizzabili dalle regole di udev:
# udevadm info -a -p $(udevadm info -q path -n [nome periferica])
Sostituendo [nome periferica] con la periferica del sistema, come '/dev/sda' oppure '/dev/ttyUSB0'.
Per riavviare udev una volta che sono state effettuate modifiche alle regole, eseguire il seguente comando. Le periferiche rimovibili, come le periferiche USB, probabilmente dovranno essere rimosse e reinserite perché le nuove regole abbiano effetto.
# udevadm control --reload-rules
Tips & Tricks
UDisks
Installare UDisks:
pacman -S udisks
d tutte le periferiche verranno montate automaticamente in GNOME e KDE SC 4.6. Non sarà necessario utilizzare regole aggiuntive per questo metodo. In aggiunta, se si utilizza HAL solamente per il mount automatico delle periferiche, a questo punto sarà possibile rimuoverlo.
UDisks Wrapper
Un UDisks wrapper ha il vantaggio di essere molto facile da installare e non necessita(oppure solo in minima parte) di configurazioni. Il wrapper monterà automaticamente CD, DVD e le periferiche di archiviazione rimovibili.
- devmon - (disponibile su AUR) Si tratta di un script Bash, privo di configurazione, esso permette di effettuare l'automount di periferiche CD/DVD e di dischi esterni. Permette anche di eseguire applicazioni o comandi dopo il mount, di ignorare specifiche periferiche o specifiche etichette dei volumi, e di effettuare l'umount delle periferiche rimovibili.
- udiskie - Scritto in Python. Permette il mount automatico e lo smontaggio con ogni utente.
- udisksevt - Scritto in Haskell. Permette il mount automatico ad ogni utente. Ideato per essere integrato con traydevice.
- udisksvm è uno script Bash che usa udisks e traydevice per effettuare l'automount delle periferiche rimovibili, e ne consente il controllo tramite una interfaccia grafica, mediante l'uso di una icona nell'area di notifica utilizzando i click del mouse per smontare, rimontare o espellere le periferiche.
UDisks Shell Functions
Mentre UDisks include dei semplici metodi di mount(ed umount) delle periferiche anche da linea di comando, può essere fastidioso eseguire i comandi ogni volta. Queste funzioni della shell garantiranno un uso più veloce e facile.
- udisks_functions - Scritto per Bash.
- bashmount - bashmount (AUR) è uno script bash strutturato a menù, con un semplice file di configurazione che lo rende semplice da configurare ed iplementare.
Mount automatico delle periferiche USB
Mount in Template:Filename; usando l'etichetta della partizione se presente
La seguente regola imposta il mount automatico delle partizioni/periferiche identificate come Template:Filename (pendrive USB, hard disk esterni ed in alcuni casi SD card). Se esiste una etichetta, allora il mount sarà effettuato in Template:Filename, altrimenti in Template:Filename (esempio: /media/usbhd-sdb1): Template:File
Mount in /media; usando l'etichetta della partizione se presente; con supporto alla cifratura LUKS
Come nella regola precedente, ma in questo caso nella periferica risiede una partizione con un filesystem criptato con LUKS, verrà aperto una finestra di Template:Codeline dove si dovrà inserire la passphrase(supponendo che xterm sia già installato). Consultare anche questo post sul forum internazionale.
Mount in Template:Filename; usando l'etichetta della partizione se presente; consentire agli utenti lo smontaggio
Questa è una variante della regola precedente. Utilizza Template:Codeline (che dovrà essere già installato) anziché Template:Codeline, consentendo agli utenti senza privilegi di root di smontare le periferiche montate da udev. Sarà necessario specificare nel comando Template:Codeline della regola il nome utente(nell'esempio 'tomk'), rendendo questa regola non adatta a sistemi multi utente. Il supporto a LUKS è stato rimosso dal seguente esempio ma può essere reinserito come nel precedente esempio. Template:File
Mount in Template:Filename; creando un link simbolico in Template:Filename
La seguente regola non utilizza l'etichetta per la creazione del punto di mount; invece effettua il mount delle periferiche come usbhd-sdXY in Template:Filename (esempio: /mnt/usbhd-sdb1) e crea un link simbolico in Template:Filename. Template:File
Mount in Template:Filename solo se la partizione ha una etichetta
Mount in Template:Filename; usando l'etichetta della partizione se presente; usando ntfs-3g
Ecco un altro esempio, in questo caso viene usato Template:Codeline per accedere in lettura e scrittua sui filesystem NTFS:
Mount delle SD card
Le regole sopra possono essere usate anche per il mount automatico delle schede SD, basterà sostituire Template:Codeline con Template:Codeline: Template:File
Mount dei CD
Per effettuare l’auto mount dei cd basterà avere installato e configurato uno dei UDisks wrapper.
Accedere a Firmware Programmers ed a USB Virtual Comm Devices
La seguente regola consente a normali utenti (appartenenti al gruppo "users") la possibilità di accedere ad USBtinyISP programmatori per microcontrollori AVR ed a generici (SiLabs CP2102) adattatori da USB a UART. Modificare i permessi secondo le esigenze. Verificato il 11-02-2010.
Velocizzare udev
L’incremento delle prestazioni può essere realizzato bypassando la procedura di blacklisting nello script Template:Filename. Consultare la guida per velocizzare udev per maggiori informazioni.
Eseguire all’inserimento di un USB
Consultare la guida riguardante l'esecuzione di programmi all'inserimento di una pennina USB, oppure il il sito dello script wrapper devmon.
Mount dei supporti di memoria esterni come utente non privilegiato
Se si vuole effettuare il mount di periferiche esterne in KDE oppure in GNOME (ma anche in altri Desktop Environment) come utente non privilegiato(senza necessità di inserire la password per elevare i privilegi), sarà necessario modificare Template:Filename (ricordarsi di fare un backup prima di modificare il file) e cambiare la linea <allow_active>auth_admin_keep</allow_active> nella sezione <action id="org.freedesktop.udisks.filesystem-mount-system-internal"> in <allow_active>yes</allow_active>.
Risoluzione dei problemi
Disabilitare il caricamento automatico dei moduli ed uso all'avvio del parametro load_modules
Se viene passato il parametro Template:Codeline nella riga di boot del kernel, udev salterà la fase di caricamento dei moduli. Questo parametro può essere utile ad esempio quando qualche modulo causa dei problemi. Supponendo che udev carichi un modulo malfatto che provochi un blocco del sistema, o che possa compromettere il sistema, allora si può aggirare il caricamento automatico dei moduli, e successivamente inserire il modulo(o i moduli) in blacklist.
Inserire i moduli in blacklist
In rari casi, Udev può sbagliarsi e caricare il modulo sbagliato. Per prevenire ciò il modulo in questione può essere inserito in una blacklist.Consultare blacklisting per maggiori informazioni. Una volta inserito nella blacklist udev non caricherà questo modulo, ne durante la fase di avvio ne in caso di inserimento di periferiche hotplug(durante l'inserimento di una pennina USB).
udevd fallisce all’avvio
Dopo un passaggio ad LDAP oppure dopo un aggiornamento di un sistema LDAP-backend può accadere che Template:Codeline non si avvii correttamente, lo si nota alla comparsa del messaggio Template:Codeline. Questo solitamente è causato da Template:Codeline che cerca di ottenere un nome da LDAP ma non ci riesce, perché la rete non è ancora attiva. La soluzione consiste nell’assicurarsi che tutti i nomi dei gruppi del sistema siano presenti localmente.
Ottenere l’elenco dei gruppi a cui fa riferimento udev, all’interno delle sue regole, e l’elenco dei gruppi attualmente presenti nel sistema:
# fgrep -r GROUP /etc/udev/rules.d/ /lib/udev/rules.d | perl -nle '/GROUP\s*=\s*"(.*?)"/ && print $1;' | sort | uniq > udev_groups # cut -f1 -d: /etc/gshadow /etc/group | sort | uniq > present_groups
Per vedere le differenze, effettuare un Template:Codeline affiancato(side-by-side):
# diff -y present_groups udev_groups ... network < nobody < ntp < optical optical power | pcscd rfkill < root root scanner scanner smmsp < storage storage ...
In questo caso, il gruppo Template:Codeline per qualche ragione non è presente nel sistema. Aggiungere quindi i gruppi mancanti:
# groupadd pcscd
Assicurarsi anche che le risorse siano bloccate prima di riabilitare LDAP. Nel File Template:Filename dovrebbe essere presente questa riga:
group: files ldap
Problemi noti relativi all'hardware
Le periferiche BusLogic smettono di funzionare e quindi causano un blocco durante la fase di avvio.
Questo è un bug del kernel e non è stato ancora risolto.
Lo slot PCMCIA e lettori di card non sono gestite come supporti rimovibili
Per accedere ad esse con il comando Template:Codeline, tramite hal aggiungere le periferiche al file Template:Filename
Problemi noti relativi al caricamento automatico dei moduli
Moduli per lo scaling della frequenza della CPU
L'attuale meccanismo di identificazione del modulo per lo scaling della frequenza non è adeguato, quindi per adesso è stato rimosso dal processo di caricamento automatico dei moduli. Per utilizzare lo scaling della frequenza della CPU, sarà necessario caricare il modulo appropriato esplicitamente all'interno dell'array Template:Codeline in Template:Filename.
Problemi con l'audio o alcuni moduli non vengono caricati automaticamente
Alcuni utenti hanno segnalato questo problema relativo a vecchie configurazioni presenti in Template:Filename. Si consiglia di ripulire il file e riprovare.
Ordinamento delle periferiche, schede di rete/audio che cambiano ordine ad ogni avvio
Dato che udev carica i moduli asincronamente, questi vengono inizializzati in ordine differente. Questo può causare il cambiamento casuale del loro nome. Ad esempio con due schede di rete, può capitare che il loro ordine venga invertito da Template:Codeline ad Template:Codeline.
Arch Linux fornisce il vantaggio di poter specificare l'ordine di caricamento dei moduli elencandoli nell'array Template:Codeline in Template:Filename. I moduli contenuti in questo array vengono caricati prima che udev avvii il processo di caricamento automatico, si ottiene quindi il controllo dell'ordine di caricamento.
# Il modulo 8139too sarà sempre caricato prima di e100 MODULES=(8139too e100)
Un altro metodo per ordinare le schede di rete è quello di usare una regola che imposti staticamente il nome ad ogni interfaccia di rete. Creare il seguente file per associare al MAC adresss di ogni scheda di rete un determinato nome di interfaccia: Template:File
Un paio di cose da notare:
- Per ottenere il MAC adress di ogni scheda, usare il seguente comando: Template:Codeline
- Assicurarsi di usare caratteri minuscoli per i MAC adress in questa regola. Non funzionerà se si usano caratteri maiuscoli.
- Alcuni utenti hanno problemi a chiamare le interfacce secondo la vecchia nomenclatura: eth0, eth1 ecc. Provare con nomi come "lan" o "wlan" se si ha questo problema.
Non dimenticare di aggiornare il proprio Template:Filename ed ogni altra configurazione che utilizzi la vecchia nomenclatura! .
Un ulteriore metodo per impostare i nomi alle interfacce di rete viene descritto nella pagina del wiki relativa alla configurazione della rete
http://wiki.archlinux.org/index.php/Configuring_Network
http://wiki.archlinux.org/index.php/Configuring_Network#Interface_names_varying
Problemi noti legati all'uso di Kernel personalizzati
Udev non si avvia
Assicurarsi che il kernel in uso sia ad una versione uguale o successiva alla 2.6.15. Le versioni precedenti non di dispongono degli uevent necessari ad udev per il caricamento automatico dei moduli.
CD/DVD collegamenti simbolici e permessi non funzionano
Se si utilizza un kernel alla versione 2.6.15, sarà necessario applicare la patch relativa agli uevent da ABS che consente di accedere a determinati uevent presenti nella versione 2.6.16). Sarà necessario sincronizzare l'albero di ABS con il comando Template:Codeline, la patch sarà nella cartella Template:Filename.