Creare regola per Hard Disk esterno non riconosciuto

Da Linux@P2P Forum Italia.

Premessa

Vista la mia difficoltà nel far montare in automatico al momento dell inserimento del mio hard disk con Ubuntu ho voluto creare questa guida in italiano,più comprensibile,visto che in inglese c'è già. Sarebbe ottimale avere il filesystem in ext3 anche se non ci sono problemi con il fat. Avviare il sistema con Hard disk collegato e attivo(se alimentato a 220V).

Segnali009.png Convenzioni Segnali009.png
All'inizio di ogni comando troverete uno di questi due simboli: $ (dollaro) e # (cancelletto). La presenza di $ indica che il comando può essere eseguito anche come normale utente, mentre il simbolo # indica che il comando che lo segue deve essere eseguito con privilegi di amministratore (root). Da utenti normali è possibile divenire root in questo modo: da terminale, si digiti:
$ su

oppure, su Ubuntu e varianti:

$ sudo su

Verrà richiesta la password di amministratore (su Ubuntu e varianti quella dell'utente): per motivi di sicurezza e riservatezza non verrà mostrata durante la digitazione.

A questo punto (si noti # al posto di $, segno che ora si è root) sarà possibile lanciare il comando:

# comando

NOTA: per Ubuntu e varianti, nel caso si necessiti di eseguire solo pochi comandi, esiste un'alternativa: basta far precedere il comando da eseguire da "sudo", in questo modo:

$ sudo comando

Per altre indicazioni sulle convenzioni della linea di comando vedere "introduzione all'uso della shell"

Prerequisiti

Aprire un Terminale/Shell/Konsole e dgitare:

# fdisk -l

che restituirà un output simile a questo:

Disco /dev/sda: 60.0 GB, 60011642880 byte
255 heads, 63 sectors/track, 7296 cylinders
Units = cilindri of 16065 * 512 = 8225280 bytes
Disk identifier: 0xc5a69a2e

Dispositivo Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        6992    56163208+  83  Linux

/dev/sda2            6993        7296     2441880    5  Esteso
/dev/sda5            6993        7296     2441848+  82  Linux swap / Solaris 

Disco /dev/sdd: 250.0 GB, 250059350016 byte
255 heads, 63 sectors/track, 30401 cylinders
Units = cilindri of 16065 * 512 = 8225280 bytes
Disk identifier: 0xf765f176 
 
Dispositivo Boot      Start         End      Blocks   Id  System
/dev/sdd1               1       30401   244196001   83  Linux

e individuare il proprio dispositivo dall output ricevuto e annotarselo. nel caso che viene trattato qui si prende in considerazione il device:

Dispositivo Boot      Start         End      Blocks   Id  System
/dev/sdd1               1       30401   244196001   83  Linux

Ora dobbiamo verificare se il computer monta la periferica nel file /etc/fstab. Quindi sempre da terminale/Shell/Konsole digitare:

$ cat /etc/fstab

e controllare nell'output ricevuto se il vostro dispositivo è presente,

se il dispositivo viene rilevato dal file /etc/fstab (vedi comando precedente) NON seguite questa guida per ora ma lasciatela come ultima spiaggia,visto che ci sono altri motivi per cui il dispositivo non viene montato o non riuscite ad accedere sulla scrivania,uno di questi è avere un disco esterno con sistema operativo installato e non aver chiuso la sessione correttamente su di esso,comunque è consigliato fare domande nel forum prima di cimentarsi in questa guida che rimane come riferimento visto che la configurazione hardware varia da pc a pc e di conseguenza anche i problemi.

Configurazione di Udev

Se dal output del comando precedente non si è riuscito a rilevare il proprio dispositivo andiamo a controllare se colui che si occupa del rilevamento e montaggio dei dispositivi lo rileva quindi sempre da teminale/shell/Konsole digitare :

$ udevinfo -a -p $(udevinfo -q path -n /dev/sdd)

Nel caso tarttato si tratta di sdd cambiatelo con il vostro ma senza aggiungere il numero della partizione.

Ora non spaventatevi dalla pagina ed andate a trovare il vostro Disco che dovrebbe trovarsi in queste righe consecutive:

DRIVERS=="usb"
ATTRS{serial}=="numero seriale"
ATTRS{product}=="nome dell'hard disk"

A noi servono quelle due diciture e cioè il numero seriale e il nome dell'hard disk...anche se non c'è scritto il nome del vostro hard disk e potrebbe venire fuori tipo:

DRIVERS=="usb"
ATTRS{serial}=="009C0000000004EE"
ATTRS{product}=="USB 2.0 Mass Storage Device"

Da non confondere con questi che sono i driver della periferica usb:

DRIVERS=="usb"
ATTRS{serial}=="0000:00:1d.7"
ATTRS{product}=="EHCI Host Controller"

Ora copiatevi il numero seriale e il produttore che andremo ad inserire successivamente ed andiamo a creare una nuova regola tra le tante già di defoult visibili con questo comando:

$ ls -la /etc/udev/rules.d

per indirizzare il pc verso l'hard disk,quindi controllate che nella lista non ci sia la regola numero 10(altrimenti cambiatela con un'altra) e digitiamo sempre da terminale:

# gedit /etc/udev/rules.d/10-usbhd.rules

Ora creata la regola(altro non è che un txt),inserite questa riga:

KERNEL=="sd?1", SUBSYSTEMS="usb", ATTRS{model}=="il seriale", NAME="nome produttore", SYMLINK="usbdevices/nome produttore"

Da ora in poi chiamero il vostro hard disk "nome produttore" ovvio che voi dovrete cambiarlo col vostro vero. Cambiate il seriale e il nome produttore con i vostri copiati in precedenza,salvate il testo e date il restart :

# /etc/init.d/udev restart

Ora date i 2 comandi in sequenza:

$ ls -l /dev/nome produttore
brw-rw---- 1 root plugdev 8, 17 2008-03-01 11:10 /dev/nome produttore

E poi questo:

 ls -l /dev/usbdevices/
totale 0
lrwxrwxrwx 1 root root 10 2008-03-01 11:10 nome produttore -> ../nome produttore

Se non vi da nulla ricontrollate i passi precedenti con molta attenzione e se nelle prove che farete sbagliando create delle copie di regole allora conviene cancellarla con questo comando e rifarla come detto in precedenza.

# modprobe -r ehci_hcd

Se fin quì è andata bene continuiamo e montiamo il disco con i permessi:

# mkdir /media/nome produttore
# chown root:root /media/nome produttore
# chmod 755 /media/nome produttore

Ora torniamo in fstab e aggiungiamolo:

# gedit /etc/fstab

Ora se l'hard disk è in ext3 aggiungete questo:

/dev/nome produttore  /media/nome produttore ext3 defaults,user   0 1

Se è in fat32 :

/dev/nome produttore /media/nome produttore vfat defaults,utf8,umask=007,gid=46 0 1

Ora creiamo lo script per montarlo:

# gedit /usr/local/bin/mountnomeproduttore.sh

Inseriamo questo nel testo cambiando nomeproduttore con il vostro e salviamo:

#!/bin/bash

LOGFILE="/var/log/mountnomeproduttore.log"

echo "mountnomeproduttore.sh" > $LOGFILE
echo "  ACTION=${ACTION}" >> $LOGFILE
echo "  DEVICE=${DEVICE}" >> $LOGFILE
echo "  KERNEL=${KERNEL}" >> $LOGFILE
echo "  SUBSYSTEM=${SUBSYSTEM}" >> $LOGFILE

env | sort >> $LOGFILE

# mount -v ${DEVNAME} >> $LOGFILE
 mount -v /dev/nomeproduttore >> $LOGFILE

Diamo i permessi:

# chmod +x /usr/local/bin/mountnomeproduttore.sh

Poi questi 3 comandi distinti:

# /usr/local/bin/mountnomeproduttore.sh
$ cat /var/log/mountnomeproduttore.log
$ ls -l /media/nomeproduttore

Ora apriamo la regola con :

# gedit /etc/udev/rules.d/10-usbhd.rules

Ed alla fine della riga aggiungiuamo questo(occhio copiate anche la virgola e spazio prima di RUN):

, RUN+="/usr/local/bin/mountnomeproduttore.sh"

Salviamo e diamo il restart:

# /etc/init.d/udev restart
Strumenti personali
Namespace
Varianti
Azioni
Navigazione
CollectionTricks
Siti amici
Strumenti