Capitolo 7. Nomi del dispositivo di un utente definito

La directory /dev/ contiene i file virtuali che rappresentano i dispositivi. Ogni file virtuale rappresenta un dispositivo per il sistema, come ad esempio un dispositivo di memoria, un dispositivo USB, o una stampante. Questi file vengono chiamati device names.

I nomi del dispositivo per i dispositivi IDE, iniziano con hd, e i nomi per idispositivi SCSI iniziano con sd. Il prefisso è seguito da una lettera, iniziando con la lettera a, tale lettera rappresenta l'ordine del disco. Per esempio, /dev/hda è il primo disco fisso IDE, /dev/hdb è il secondo, /dev/hdc è il terzo e così via.

Se il nome del dispositivo è seguito da un numero, tale numero rappresenta il numero della partizione. Per esempio, /dev/hda1 rappresenta la prima partizione sul primo disco IDE.

Se il disco fisso viene spostato fisicamente in un'altra posizione nella macchina, viene rimosso, oppure non riesce ad inizializzarsi, alcuni dei nomi del dispositivo cambieranno, potenzialmente lasciando invalidi i riferimenti del nome del dispositivo. Per esempio, come mostrato in Figura 7-1, se un sistema possiede tre dischi fissi SCSI, e se il secondo disco SCSI viene rimosso, /dev/sdc diventa /dev/sdb, causando l'invalidità di qualsiasi riferimento per /dev/sdc, e per /dev/sdb, in quanto essa rappresenta una unità disco diversa.

Figura 7-1. Rimuovere un disco fisso

Ogni disco fisso possiede un identificatore unico ad esso associato chiamato UUID. Per risolvere il problema del cambio dei nomi del dispositivo, devlabel consente di abilitare i nomi del dispositivo di un utente definito, associati con questi UUID. Un collegamento simbolico viene creato dal nome del dispositivo per il nome effettivo del dispositivo. Se il suddetto nome cambia, il collegamento simbolico viene aggiornato, in modo tale da poter indicare la stessa unità disco, in base al proprio UUID. Così, entrambi i dispositivi di memoria SCSI e IDE, possono essere identificati dai loro nomi di utente definito.

Devlabel abilita anche un montaggio automatico di sispositivi del tipo hotplug, come ad esempio dischi fissi smontabili, e dispositivi USB come ad esempio schede di memoria per macchine fotografiche digitali. Se configurato per un montaggio automatico, dopo aver inserito il dispositivo, esso viene montato con il nome del dispositivo dell'utente definito.

7.1. Come configurare Devlabel

I nomi del dispositivo dell'utente definito, possono essere aggiunti in base al nome del dispositivo stesso, al nome della partizione, oppure dell'UUID dell'unità disco.

Usare la seguente sintassi per aggiungere un nome del dispositivo dell'utente definito per un dispositivo di memoria. Il dispositivo specificato può essere un intero dispositivo oppure una singola partizione su di un dispositivo.

devlabel add -d <device> -s <symlink>

Per esempio, per aggiungere il collegamento simbolico /dev/work per rappresentare la partizione /dev/hdb1, usare il seguente comando:

devlabel add -d /dev/hdb1 -s /dev/work

Se il comando ha avuto successo, verrà mostrato quanto segue:

Created symlink /dev/work -> /dev/hdb1
Added /dev/work to /etc/sysconfig/devlabel

Per aggiungere un nome ad un dispositivo in base ad un UUID, usare la seguente sintassi:

devlabel add -u <uuid> -s <symlink>

Per usare devlabel e riprendere l'UUID per un dispositivo (o per assicurarsi che il dispositivo ne abbia uno), usare il seguente comando:

devlabel printid -d <device>

I nomi del collegamento simbolico devono essere unici. Quando si effettua un tentativo di aggiunta di un collegamento simbolico, e lo stesso collegamento è già esistente, il file di configurazione non viene modificato, e sarà visualizzato quanto segue:

The file /dev/work already exists.
Failure. Could not create a symlink.

Per rimuovere un link simbolico dall'elenco devlabel, usare il seguente comando:

devlabel remove -s <symlink>

La entry viene rimossa dal file di configurazione, e il collegamento simbolico viene cancellato.

Per determinare lo stato dei collegamenti simbolici devlabel, usare il seguente comando:

devlabel status

Viene ritornato un output simile al seguente:

lrwxrwxrwx    1 root            9 Apr 29 13:20 /dev/work -> /dev/hdb1
lrwxrwxrwx    1 root            9 Apr 29 13:41 /dev/tcf -> /dev/hda1

7.1.1. Dispositivi hotplug

Un programma chiamato hotplug effettua delle azioni quando si verifica un evento, come quando ad esempio viene aggiunto o rimosso un hardware, e tale evento ha luogo durante l'esecuzione del sistema. Per esempio, se un disco fisso USB o se un reader di una scheda media USB viene collegato al sistema, hotplug lo notifica agli utenti registrando un messaggio nel file di registrazione del sistema (/var/log/messages) caricando i moduli corretti del kernel, in modo tale che il dispositivo possa funzionare.

Quando viene inserito un dispositivo PCI, USB, o IEEE 1394 (anche conosciuto come FireWire), gli script hotplug riavviano anche devlabel, in modo tale che il media di memoria smontabile, riceva un nome del dispositivo dell'utente definito (come /dev/usbcard), e facoltativamente è in grado di montare il dispositivo di memorizzazione.

Dopo aver inserito il reader della scheda USB nella porta USB del computer, digitare il seguente comando come utente root (dove /dev/sda1 è il nome del dispositivo per la scheda media e /dev/usbcard è il nome del dispositivo dell'utente definito da usare):

devlabel add -d /dev/sda1 -s /dev/usbcard --automount

Questo comando aggiunge una entry per il mount point a /etc/sysconfig/devlabel, e crea un collegamento simbolico da /dev/usbcard a /dev/sda1. L'opzione --automount per devlabel, specifica che il dispositivo dovrebbe essere automaticamente montato, quando viene riavviato devlabel, se è presente una entry in /etc/fstab, e se esiste un dispositivo (se viene trovato un dispositivo con lo stesso UUID).

updfstab è un programma che controlla la presenza di nuovi dispositivi su bus IDE e SCSI, e aggiunge delle entry a /etc/fstab, se le stesse entry non sono esistenti. Tale programma aggiunge delle entry anche su dispositivi USB, dato che essi si presentano come dispositivi SCSI. Consultate la pagina man updfstab, per maggiori informazioni.

Quando viene inserito un dispositivo USB, hotplug esegue il programma updfstab, il quale aggiunge una entry a /etc/fstab per il dispositivo storage (come ad esempio la scheda di memoria), se esistente. (Se viene inserito un reader senza una scheda, in tal caso nessuna entry viene aggiunta). La riga aggiunta contiene il nome del dispositivo (come /dev/sda1) e l'opzione kudzu. L'opzione kudzu indica Kudzu [1]che può rimuovere la riga se il dispositivo non è esistente. Dato che la riga viene richiesta da devlabel, l'opzione kudzu deve essere rimossa in modo tale che la riga rimanga nel file. Inoltre cambiare il nome del dispositivo in devlabel (ad esempio /dev/usbcard) e create il mount point (ad esempio /mnt/usbcard).

Dopo aver modificato la riga, essa dovrebbe essere simile a quanto segue:

/dev/usbcard   /mnt/usbcard   auto    noauto,owner 0 0

A causa di --automount, quando si riavvia devlabel, il media di memoria nel dispositivo reader della scheda USB viene montato in /mnt/usbcard. Il segreto è che quando il il reader della scheda USB viene collegato al computer, la scheda deve già essere presente nel reader. In caso contrario, devlabel non sarà in grado di trovare il dispositivo di memoria e conseguentemente non sarà in grado di montarlo in modo automatico.

Se il reader della scheda USB è già inserito senza la scheda, quando si inserisce la stessa scheda, eseguire il comando devlabel restart come utente root, in questo modo sarà possibile montare la scheda media.

Note

[1]

Kudzu è uno strumento di verifica hardware eseguito al momento dell'avvio del sistema, in modo da determinare quale hardware è stato aggiunto o rimosso dal sistema.