Pendrive USB su linux

Remark 1.

Attenzione: Questo articolo è stato scritto più di $10$ anni fa. Viene mantenuto solo per memoria storica. I commenti sono stati chiusi.

La procedura qui descritta è stata sperimentata su Redhat Linux 7.3 con kernel 2.4.18-5 e potrebbe non avere alcun interesse sulle distribuzioni più recenti che hanno meccanismi di riconoscimento e mounting automatico delle periferiche di massa, ma la riporto ugualmente, al solo scopo di evidenziare i moduli necessari per utilizzare le famose “chiavette” anche in distribuzioni non recenti, le quali, ad ogni modo, potrebbero tornare molto utili per rivitalizzare PC ormai obsoleti dotati di processore pentium III che windows XP ha inesorabilmente mandato in cantina.

Caricamento dei moduli. I driver per la gestione delle porte USB sono UHCI o OHCI (che implementano l’ USB 1.1), il driver EHCI (per l’USB 2.0 non è presente in questa distribuzione). Uso il comando ‘modprobe’ per caricare i driver come moduli (una volta sperimentati come moduli i driver potrebbero essere conglobati nel kernel in modo statico ricompilandolo), in quanto permette di aggiustare automaticamente le dipendenze, contrariamente a ‘insmod’ che carica il modulo brutalmente senza fare altro. Bisogna includere anche altri elementi nel kernel:

  • usb-storage per la gestione delle periferiche USB
  • sd_mod lo SCSI Disk support, in quanto i dispositivi di memorizzazione di massa sulle USB sono gestiti come device SCSI.

Da notare che con il kernel 2.6 non è più necessario utilizzare lo strato di emulazione ide-scsi per averne accesso. Quindi i comandi da dare (come root) sono i seguenti:

  • modprobe uhci
  • modprobe sd_mod
  • modprobe usb-storage

a questo punto inseriamo la pendrive e notiamo che inizia a lampeggiare il led; come ulteriore verifica possiamo dare il comando ‘dmesg’ per vedere se è stata riconosciuta correttamente dal kernel, dmesg, ci rivela, tra l’altro, con quale device il dispositivo è stato mappato: ad esempio come “/dev/sda”. Nel mio caso la pendrive è stata mappata come “/dev/sda1” quindi per raggiungere il contenuto del dispositivo, do i comandi:

  • cd /mnt
  • mkdir pendrive
  • mount /dev/sda1 pendrive

Rimozione del dispositivo. Prima della rimozione della chiavetta è necessario forzare la scrittura dei dati, rimasti nei buffer, sui rispettivi device; a tal scopo si può usare il comando ‘sync’ anche se il successivo comando di umount, sarebbe sufficiente per chiudere i file: – umount pendrive Una piccola nota: chi è abituato a usare Windows XP avrà notato che la procedura di “rimozione sicura” su una pendrive USB fa spegnere il led. In Linux anche se è sufficiente eseguire l’umount per poter rimuovere la chiavetta, a seguito di tale operazione il led non si spegne; in effetti il kernel mantiene una comunicazione con il dispositivo mediante il modulo UHCI; la rimozione di questo modulo determina lo spegnimento del led.

Valentino

3 Commenti

  1. Kenny md

    Ciao, sono Kenny.
    Vorrei sapere come mai ogni volta che devo estrarre una chiavetta USB, Linux (ultima versione) mi scrive che “è impossibili smontare l’unità”, motivando tale affermazione con “cannot remove directory”.
    Solo una volta sono riuscito ad attivare correttamente tale procedura.

    Ciao e grazie!!

  2. nemorino60

    Il messaggio mi sembra strano! Bisogna vedere quale comando/operazione/azione hai usato per la rimozione del dispositivo. Ad ogni modo per effettuare l’operazione in modo sicuro è necessario assicurarsi che il dispositivo non sia impegnato (file aperti oppure operazioni in corso non concluse con successo) e alla peggio usare il comando “umount” con privilegi di superutente (root).

  3. Ciao!
    Dopo aver ricompilato il kernel ho un problema nel montare una penna usb. Deduco che manchi qualcosa nella configurazione, dato che con l’altro kernel standard (Debian) la penna viene montata senza problemi.
    Oltre a quei tre moduli che hai segnalato (e che ho compilato come statici e non moduli) ce ne sono altri?
    In realtà io ho trovato che c’è bisogno di compilare anche il modulo
    SCSI DISK (sd), però neanche dopo averlo compilato me la dà buona.

    C’è altro che ora non mi torna in mente?

I commenti sono chiusi.