version 1.0
Copyright © 2003 Baptiste SIMON <baptiste.simon @ e-glop.net>
Copyright © 2003 Code Lutin [ http://www.codelutin.com/ ]
20031027
Abstract
Ce tutoriel (Howto) vous apprendra comment utiliser le lecteur USB tout-en-un de cartes mémoires de type SD (SecureDigital(tm)) ou CF (CompactFlash(tm)).
Table of Contents
Pour faire ce tutoriel, j'ai utilisé le matériel suivant (ne surtout pas prendre ca comme de la publicité, mais comme des informations utiles) :
Carte mère Abit KG7
Lecteur USB1.1 3"5 (interne) "6 en 1" de marque "Elite" [1], basé sur le chipset UCR-61S2B
Dès les premiers pas, j'ai rencontré un petit problème : le cablage de la fiche USB interne a été fait à l'envers par rapport au montage standard de ma carte mère... Donc résultat, il m'a fallu prendre la prise à l'envers et la laisser dépasser de l'emplacement prévu à cet effet. A partir de ce moment là, le lecteur a été reconnu sur le bus USB (attention, sans cette manipulation, vous pourrez endommager des composants critiques).
Télécharger les sources d'un noyau Linux (le dernier de préférence) d'un numéro de version supérieur ou égal à 2.4.22 ou 2.6.0-test2 sur kernel.org. Décompactez les dans '/usr/src', faites un lien symbolique nommé /usr/src/linux pointant sur le répertoire où se trouve les sources de votre noyau et
# cd /usr/src/linux # make menuconfig
Configurez votre noyau... n'oubliez pas les parties USB (CONFIG_USB, CONFIG_USB_EHCI_HCD ou CONFIG_USB_UHCI ou CONFIG_USB_OHCI), USB Mass Storage (CONFIG_USB_STORAGE), SCSI générique (CONFIG_SCSI & CONFIG_CHR_DEV_SG), Disques SCSI (CONFIG_BLK_DEV_SD), entrées SCSI multiples (CONFIG_SCSI_MULTI_LUN)... Préférez les modules à la compilation en dure tant que vous ne serez pas 100% surs de ce que vous faites, ca permet de faire des tests sans avoir à rebooter pour réinitialiser ces portions de codes du noyau.
Ensuite, lancez la compilation de ce noyau
# make dep && make clean bzImage modules modules_install (pour le 2.4.x) # make (pour le 2.6.x) && make modules_install
Pour mettre le noyau dans un état permettant l'utilisation de vos cartes mémoires, il vous faut charger les modules décris plus haut (si vous avez compilé vos options kernel en modules, sinon, oubliez cette étape)
# modprobe scsi_mod # modprobe sg # modprobe usb-uhci # modprobe usb-storage
Maintenant, votre système doit initialiser votre lecteur de cartes mémoire.
Vous pouvez maintenant, si ce n'est déjà fait, brancher votre lecteur sur le bus USB physique (préférez d'insérer les cartes mémoires avant une telle opération). Nous allons ensuite vérifier sa présence logique en testant (sans oublier de monter usbfs sur /proc/bus/usb, vérifiez cela avec la commande 'mount', et s'il n'est pas monté, faites : 'mount -t usbfs none /proc/bus/usb') votre bus USB
$ cat /proc/bus/usb/devices T: Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2 B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0 D: Ver= 1.00 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=0000 ProdID=0000 Rev= 0.00 S: Product=USB UHCI Root Hub S: SerialNumber=cc00 C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=255ms T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2 B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0 D: Ver= 1.00 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=0000 ProdID=0000 Rev= 0.00 S: Product=USB UHCI Root Hub S: SerialNumber=c800 C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=255ms T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 3 Spd=12 MxCh= 0 D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=07cc ProdID=0200 Rev= 0.12 S: Manufacturer=----- Ltd. S: Product=SPRING-Rev1.1 S: SerialNumber=102016213230 C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA I: If#= 0 Alt= 0 #EPs= 3 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage E: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms E: Ad=83(I) Atr=03(Int.) MxPS= 8 Ivl=10ms $
Si vous trouvez quelque chose de la sorte, votre lecteur USB est bien connecté à votre bus USB, physiquement et logiquement.
Pour confirmer le fonctionnement initial de votre système pour ce genre de matériel, vérifiez les points suivants
$ ls -l /dev/scsi/host*/bus0/target0/lun* (dans le cas de l'utilisation de devfs) /dev/scsi/host0/bus0/target0/lun0: total 0 brw-rw---- 1 root disk 8, 0 Jan 1 1970 disc crw------- 1 root root 21, 0 Jan 1 1970 generic /dev/scsi/host0/bus0/target0/lun1: total 0 brw-rw---- 1 root disk 8, 16 Jan 1 1970 disc crw------- 1 root root 21, 1 Jan 1 1970 generic /dev/scsi/host0/bus0/target0/lun2: total 0 brw-rw---- 1 root disk 8, 32 Jan 1 1970 disc crw------- 1 root root 21, 2 Jan 1 1970 generic /dev/scsi/host0/bus0/target0/lun3: total 0 brw-rw---- 1 root disk 8, 48 Jan 1 1970 disc crw------- 1 root root 21, 3 Jan 1 1970 generic $ sg_map # Note: the devfs pseudo file system is present /dev/sg0 /dev/sg1 /dev/sdb (if you have a card plugged in) /dev/sg2 /dev/sg3
Si vous obtenez des choses semblables aux exemples plus haut, votre matériel a bien été initialisé. Vous pouvez en apprendre encore plus avec la commande 'dmesg', surtout si vous avez compilé vos drivers usb-storage (voire SCSI) avec l'option "debug".
Nous allons maintenant tester l'utilisation de votre nouveau périphérique. Pour cela, notre premier essai sera de monter une carte mémoire. Veillez à bien avoir branché votre lecteur avec une carte insérée au préalable. Ici nous avons inséré une carte SD. Notre système la reconnait (cf. plus haut, avec la commande 'sg_map') en tant que '/dev/sdb'. Nous allons donc la prendre en tant que telle :c).
Première étape exemple, le premier montage de la carte
$ mkdir /mnt/sdcard $ mount /dev/sdb1 /mnt/sdcard
Seconde étape, la copie d'un fichier exemple sur la carte
$ cd /mnt/sdcard $ cp /etc/resolv.conf .
Si tout s'est bien passé, vous etes prets à automatiser tout cela...
Pour se simplifier la vie, je vous propose deux étapes : L'utilisation de fstab pour qu'un simple "mount" fasse l'affaire, et l'utilisation d'automount, que je vous laisserais approfondir, car cela nous ferait sortir du sujet central de ce document.
Pour automatiser le montage de vos cartes mémoires, renseignez (en adaptant cela à votre cas particulier) le fichier '/etc/fstab'. Ainsi, vous pourrez, par une simple commande, monter ou démonter, en tant qu'utilisateur normal, vos média amovibles. Les lignes qui suivent vous offre un aperçu de ce que l'on peut faire
/dev/sda1 /mnt/cfcard vfat defaults,noauto,user 0 0 /dev/sdb1 /mnt/sdcard vfat defaults,noauto,user 0 0
Ainsi, pour monter puis démonter votre carte mémoire SD, tappez simplement
$ mount /mnt/sdcard $ umount /mnt/sdcard
Pour aller encore plus loin dans l'automatisation de l'utilisation de votre lecteur de cartes mémoire, vous pouvez aller jusqu'à utiliser automount. Cet outil permet de gérer le montage / démontage de vos périphérique de la manière la plus transparente possible, l'idée étant d'insérer la carte et de la trouver directement montée dans '/mnt/sdcard' par exemple, sans aucune intervention.
Ne l'ayant moi-meme jamais testé, je vous laisse à l'excellent HOWTO de TLDP sur le sujet...
Utiliser un lecteur USB de cartes mémoire, des clés USB, etc... n'est pas plus compliqué avec un noyau Linux qu'un noyau Windows(tm). Ce présent tutoriel peut sembler difficile à aborder, mais cela vient du fait que j'ai choisi volontairement de faire le plus complet possible. Cependant, en soi, comme partout, nous n'avons qu'installé les drivers nécessaires, et pluggué le lecteur sur le bus USB. Avec l'utilisation d'automount ou de supermount, ce processus est encore plus facile à suivre. Normalement, tous ces outils sont normalement pré-installés et pré-configurés sur les distribution grand public de type RedHat(tm), Mandrake(tm), SuSE(tm) ou knoppix.
Veillez tout de meme à vérifier la compatibilité de votre matériel avec le noyau Linux... il peut arriver parfois de tomber encore sur de mauvaises (et parfois étranges) surprises.
Pour toute remarque, question ou contribution supplémentaire, vous trouverez mon mail dans la partie réservée à l'auteur, n'hésitez pas... Ce document est Libre et s'utilise en tant que tel :c)
Baptiste SIMON <baptiste.simon@e-glop.net>
Administrateur système GNU/Linux
Ancien responsable de l'administration systèmes chez Code Lutin
Toujours à la recherche d'aventures, dans le cadre de son emploi en cours ;c)
Ce document a été rédigé au format RST avec KWrite puis converti aux formats DN-XML et Docbook avec dn2dbk.xsl.
Les différentes versions ci-dessous ont été réalisées avec les feuilles XSLT officielles de docbook [2] et les outils du paquet xmlto de la Debian GNU/Linux.
Retrouvez toutes ces version ici :
Ce document issu de www.e-glop.net est soumis à la licence GNU FDL. Permission vous est donnée de distribuer, modifier des copies de ce document (traduction, modifications, adaptation, etc...) tant que vous respectez la licence sus-citée.