Connecter un lecteur flash USB
Connecter un lecteur Flash USB
<cadre type=alert> Cette page est obsolète. Cette documentation est conservée par intérêt historique pour les personnes qui ont une ancienne distribution GNU/Linux. </cadre>
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 :
Pour accéder aux fichiers :
Avant de le déconnecter, il ne faut pas oublier de le démonter :
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 :
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 :
$ 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 :
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 :
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 :
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 :
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.
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 :
$ 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 :
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.
$ 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 :
$ 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 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
Attention, sur les nouveaux noyaux c'est usbfs :
mount -t usbfs 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.
Merci à mrcrabs (du phorum)
Sur une knoppix, il est possible de passer un parametre au boot:
Merci à JoDay du forum.
- Vous avez un appareil photo numérique, mais il ne fonctionne pas en tant que périphérique de stockage.
- 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: 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
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) :
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 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 :
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.
@ Retour à la rubrique Matériel
Copyright
Copyright © 25/10/2002, Laurent DUBETTIER-GRENIER
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/ |