Connecter un lecteur flash USB

De Lea Linux
Aller à la navigation Aller à la recherche

Connecter un lecteur Flash USB

Connecter un lecteur Flash USB
par Laurent DUBETTIER-GRENIER, Maston28 et Fred.
Connecter un lecteur flash USB (palmkey, diskonkey...) ou une clé usb sous Linux, mais aussi certains appareils photos numériques...

Introduction

Les lecteurs Flash USB deviennent de plus en plus populaires : faciles à utiliser et disposant d'une grande capacité de stockage, ils remplaceront avantageusement une pile de disquettes... Les lecteurs les plus récents sont conformes à la norme USB 2.0 (jusqu'à 40 fois plus rapide que USB 1.1 pour le taux de transfert) et disposent de capacités de stockage allant jusqu'à 512 Mo (note : la capacité ne cesse d'augmenter. En 2006 on en est à 4 Go), mais les prix sont alors très élevés... Personnellement, j'utilise un Palm Key de 64 Mo en norme USB 1.1, produit par Allwell... Cet article a pour objectif d'expliquer la configuration permettant d'accéder à ce lecteur sous Linux. Je suppose que cela sera aussi utile aux possesseurs de lecteurs Flash USB de marques différentes ainsi qu'aux possesseurs d'appareils photo numériques comme le Sony Cyber-shot DSC P71.

Cet article n'est que la traduction incomplète de l'excellent article de Matt Butcher, visible à cette adresse. Dans cet article en anglais, il décrit, en plus de la partie traduite ci-dessous, le moyen de créer un système de fichiers crypté sur un lecteur Flash USB.

Pour profiter de cet article, vous devez disposer :

  • d'un lecteur Flash USB (palmkey, diskonkey ou similaire)
  • d'un système Linux avec un noyau 2.4.x.

Procédure simplifiée

Dernière minute (Mandrake 9.0) :

Avec la dernière distribution de [http:/www.mandrakesoft.com Mandrakesoft], Linux Mandrake 9.0 (noyau 2.4.19-16mdk), c'est extrêmement simple ! Il suffit de connecter le lecteur Flash USB, et de le monter en tapant :

$ mount /mnt/removable

Pour accéder aux fichiers :

$ cd /mnt/removable

Avant de le déconnecter, il ne faut pas oublier de le démonter :

$ umount /mnt/removable

Nota (voir la procédure détaillée ci-dessous pour plus d'information) :
Sur cette distribution linux, le fichier /etc/fstab contient la ligne suivante :

/dev/sda1 /mnt/removable auto user,iocharset=iso8859-15,kudzu,codepage=850,noauto,umask=0,exec 0 0

Les modules chargés par défaut (visibles en tapant lsmod) sont usbcore et usb-uhci. Il n'y a pas usb-storage, mais cela fonctionne quand même...

Si vous n'avez pas Mandrake Linux 9.0 :

(ou plus précisement le dernier noyau...)

En considérant que le lecteur Flash USB est le premier périphérique de stockage SCSI (je suppose ici que vous n'avez pas d'autres périphériques SCSI ou USB), il suffit de suivre les instructions suivantes :

$ mkdir /mnt/pk
$ mount -t msdos /dev/sda1 /mnt/pk
$ cd /mnt/pk

Le lecteur Flash USB, livré avec un système de fichier DOS, est alors lisible et inscriptible. Avant de le déconnecter, ne pas oublier de le démonter :

$ umount /mnt/pk

Procédure détaillée

Ce paragraphe décrit la configuration pas à pas d'un lecteur Flash USB. Cela permet, en cas de problème d'accès à votre lecteur Flash USB, de cerner plus précisement d'où vient le problème.

Préparer USB

Avant de brancher votre lecteur Flash USB, vous devez vous assurer que votre système possède le module noyau USB. Nous avons besoin de usb-uhci (ou usb-ohci) et du module de stockage usb-storagechargé. Utiliser lsmod pour vérifier qu'ils sont bien présents. Sinon, utiliser modprobe :

$ modprobe usb-uhci usb-storage

Nota : le driver usb-uhci est le driver pour un type de pont USB. Si cela ne fonctionne pas, c'est que vous avez un pont OHCI. Dans ce cas, il faut faire "modprobe usb-ohci".

En tapant de nouveau lsmod, vous devriez alors voir apparaître le noyau usb, les drivers usb-uhci ou usb-ohci, et usb-storage, entre autres.

Préparer le périphérique

Dès que les modules sont chargés, vous pouvez connecter le lecteur Flash USB. Attendre quelques secondes et changer de répertoire vers /proc/bus/usb. /proc/bus/usb est le répertoire regroupant les informations sur les périphériques usb. Le répertoire devrait contenir un fichier devices, un fichier drivers, et un répertoire pour le hub USB.

Le fichier drivers contient une liste des périphériques USB disponibles. Il devrait contenir une entrée vers usb-storage, le module que nous avons inséré auparavant. Le fichier le plus important est le fichier devices : il liste tous les périphériques usb connectés au système.

Nota : On obtient la même information, dans un format plus lisible, en tapant directement l'instruction "usbview" depuis un serveur X (interface graphique).

Vous devriez avoir une entrée pour votre Lecteur Flash USB dans une des lignes commençant par "T:". Sur mon système :

T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=3 Spd=12 MxCh=0

La plupart des périphériques contiennent des informations en clair (une chaîne de caratère) les décrivant. Elles sont présentes dans les lignes commençant par "S:". Quelques lecteurs Flash USB ne contiennent aucune information (mon palm key est dans ce cas...). L'information relative à la version de vos périphériques est présente après "P:". Pour mon palm key :

P: Vendor=0c76 ProdID=0003 Rev=1.0

Dès que vous avez une entrée dans ce fichier pour votre lecteur Flash USB, vous pouvez continuer. Si il n'y a pas d'entrée, contrôler la connexion physique de votre périphérique et assurez-vous que les modules nécessaires sont bien chargés dans le noyau.

Le driver usb-storage

Le travail du driver usb-storage est de lier les périphériques de stockage de masse USB à des périphériques SCSI. Ceci autorise les périphériques USB à être traités comme des périphériques de stockage amovibles. Si tout c'est bien passé, le Lecteur Flash USB doit être assigné à un périphérique SCSI. Dans /proc/scsi, vous devez voir un répertoire nommé usb-storage-0 ou similaire. Le numéro à la fin peut être différent, il dépend du nombre de périphériques de stockage USB présents sur votre système. Le fichier /proc/scsi/scsi contient des détails sur les périphériques sont répertoriés comme périphériques SCSI.

Attached devices :
Host: scsi0 channel: 00 Id: 00 Lun: 00
Vendor: USB Flash    Model: Disk
Type: Direct-Access   ANSI SCSI revision: 02

Si vous n'avez pas d'autres périphériques SCSI, la seule entrée de ce fichier est votre lecteur Flash USB.

Note : en l'absence d'identification du vendeur sur le périphérique lui-même (et aussi dans le fichier /proc/bus/usb/devices), le périphérique est juste déclaré comme générique.

La première ligne host informe sur la localisation du périphérique. Si c'est le premier périphérique SCSI, il sera déclaré comme /dev/sda1.

Monter le périphérique

À ce moment, nous avons identifié quel périphérique SCSI est lié au lecteur Flash USB. Il ne reste plus qu'à le monter :

$ mkdir /mnt/pk
$ mount  -t msdos /dev/sda1 /mnt/pk

On peut alors aller sur /mnt/pk et écrire ou lire le lecteur Flash USB. Quand une action d'écriture arrive sur le périphérique, la led rouge doit clignoter. Comme les données sont stockées dans une zone tampon avant d'être écrites, ne paniquez pas si la led ne clignote pas à chaque fois que vous évcrivez sur le lecteur Flash USB.

Attention : n'oubliez pas de démonter le système de fichiers avant de débrancher le lecteur Flash USB. Vous pouvez ajouter une entrée dans /etc/fstab pour faciliter le montage et le démontage du périphérique :

/dev/sda1 /mnt/pk msdos user,noauto 0 0

Avec l'entrée dans /etc/fstab, monter et démonter le périphérique est alors plus simple. L'indicateur "user" autorise une personne autre que root à monter et démonter le lecteur Flash USB.

$ mount /mnt/pk
$ umount /mnt/pk

Remplacer le systeme de fichiers DOS

Si vous n'êtes pas intéressé par partager vos données avec un système MS-DOS ou Windows, vous pouvez formater votre lecteur Flash USB avec un système de fichiers Linux. ReiserFS est journalisé et doit pouvoir être le système de fichiers de votre lecteur Flash USB. Les lignes suivantes décrivent l'installation d'un système de fichier extended2-fs.

Attention : avant d'écrire un nouveau système de fichiers sur votre lecteur Flash USB, vous devez démonter le lecteur.

Attention : les données présentes sur le lecteur Flash USB seront perdues.

Exemple :

$ umount /dev/sda1
$ mke2fs /dev/sda1

Ensuite, il faut changer la ligne de /etc/fstab pour que le système de fichiers soit ext2 au lieu de msdos.

Application aux disque-durs externes USB

par Maston28

Si vous Possédez un disque dur externe en usb, alors cette partie va vous intéresser ! Vous pouvez en effet utiliser un disque-dur externe sous linux en reprenant ce principe (qui s'applique aussi aux lecteurs ZIP). Sachez tout d'abord que pour un gros disque dur, il vaut mieux avoir compilé son noyau avec l'option USB Mass Storage. Vous devez tout d'abord charger les modules requis :

insmod usbcore
insmod uhci-usb
insmod usb-storage

Il faut ensuite monter les périphériques USB dans /proc/bus/usb :

mount -t usbdevfs none /proc/bus/usb

Nous allons maintenant monter le disque dur:

mkdir /mnt/externe && mount -t vfat /dev/sda /mnt/externe

Attention :Je suppose ici que votre disque dur est formaté en FAT32 (par défaut à l'achat...)

Attention :si le disque dur est partitionné, remplacez sda par sdax

Chasse aux troubles

par Fred, d'après les questions du forum.

Il existe plusieurs types de problèmes. Certains ayant une solution, d'autres pas :( .

  • Vous avez un lecteur de carte mémoire type 'n en 1' (4 en 1, 6 en 1) et ça ne semble pas fonctionner avec Linux alors que d'autres périphériques de stockage USB fonctionnent.
Essayer de recompiler votre noyau en activant l'option : Probe all LUNs on each scsi devices.
Merci à mrcrabs (du phorum)
Sur une knoppix, il est possible de passer un parametre au boot: max_scsi_luns=4 puisqu'en general il y'a 4 ports sur le lecteur.
Merci à JoDay du forum.
  • Vous avez un appareil photo numérique, mais il ne fonctionne pas en tant que périphérique de stockage.
Essayer gPhoto2 qui est spécialisé dans les appareils photos numériques (même non supportés par usb-storage), voir la liste des appareils supportés.
  • Votre périphérique semble reconnu mais vous fait des erreurs du type (à lire dans /var/log/messages) :
Jul 22 22:10:04 localhost kernel: usb-uhci.c: interrupt, status 2, frame# 1374
Jul 22 22:10:04 localhost kernel: Device 08:00 not ready.
Jul 22 22:10:04 localhost kernel: I/O error: dev 08:00, sector 0
Jul 22 22:10:04 localhost kernel: FAT: unable to read boot sector
Cela peut être du à une protection de la clé (protection par mot de passe, c'est semble-t-il le cas du TravelDisk USB 2.O de PQI). Tentez alors de faire formater votre clé usb par un systéme d'exploitation reconnaissant votre clé en supprimant cette protection (par exemple Windows) chez vous, ou chez un amis, un revendeur.
Merci à rami aubourg (du forum).
  • Lorsque vous branchez votre périphérique, il semble reconnu mais /dev/sdx n'apparait (cas ou vous utilisez devfs) pas ou ne fonctionne pas. D'ailleur tout semble normal quand vous regardez le log des messages (en tapant dmesg) :
hub.c: new USB device 00:14.3-1.3, assigned address 6
usb.c: USB device 6 (vend/prod 0x58f/0x9360) is not claimed by any active driver.
Initializing USB Mass Storage driver...
usb.c: registered new driver usb-storage
scsi2 : SCSI emulation for USB Mass Storage devices

Vérifiez que vous avez bien compilez (en module ou en 'dur') votre kernel avec les options :

    • SCSI support
    • SCSI generic support
    • SCSI disk support

Si c'est le cas, et que vous avez compiler ces options en modules, après le chargement d'usb-storage, essayer de charger ces trois modules :

modprobe scsi_mod
modprobe sd_mod
modprobe sg

Merci à Mr_youd (du forum).

  • Votre périphérique est vu par le driver usb (uhci, ohci, etc.) mais pas par usb-storage (par exemple en cas de firmware buggué - mon appareil photo est dans ce cas).

Essayer la procédure suivante, en tant que root :

modprobe usb-storage
rmmod usb-storage
sleep 2s
modprobe usb-storage

Avec mon appareil photo 'buggué', /dev/sda1 apparait apres le second modprobe. Pourquoi ? Mystère ! Surement un problème de 'timing'.

  • En désespoir de cause, peut-être votre périphérique n'est-il tout simplement pas reconnu, vérifiez dans cette liste.
Cette page est issue de la documentation 'pré-wiki' de Léa et a été convertie avec HTML::WikiConverter. Elle fut créée par Laurent DUBETTIER-GRENIER le 25/10/2002.

Copyright

Copyright © 25/10/2002, Laurent DUBETTIER-GRENIER

Creative Commons License
Creative Commons Attribution iconCreative Commons Share Alike iconCreative Commons Noncommercial
Ce document est publié sous licence Creative Commons
Attribution, Partage à l'identique, Contexte non commercial 2.0 :
http://creativecommons.org/licenses/by-nc-sa/2.0/fr/