Mettre en place un lecteur USB de cartes memoires Baptiste SIMON (aka BeTa) Code Lutin [ [1]http://www.codelutin.com/ ] version 1.0 Copyright (c) 2003 Baptiste SIMON Copyright (c) 2003 Code Lutin [ http://www.codelutin.com/ ] 20031027 Ce tutoriel (Howto) vous apprendra comment utiliser le lecteur USB tout-en-un de cartes memoires de type SD (SecureDigital(tm)) ou CF (CompactFlash(tm)). --------------------------------------------------------------------------- Table of Contents 1. [2]Premiers pas... le materiel 2. [3]Parametrer votre noyau Linux 2.1. [4]Methode from scratch 2.2. [5]Methode from distro (non teste) 3. [6]Premier montage de votre carte memoire (SD) 3.1. [7]Le noyau 3.2. [8]Le bus USB 3.3. [9]L'interfacage avec le systeme (les drivers) 3.4. [10]Utilisation 4. [11]Se faciliter la vie 4.1. [12]/etc/fstab 4.2. [13]automount / supermount 5. [14]Conclusion 6. [15]Annexes 6.1. [16]L'auteur 6.2. [17]Aperc,u des divers formats de ce document 6.3. [18]Licence de publication 1. Premiers pas... le materiel Pour faire ce tutoriel, j'ai utilise le materiel suivant (ne surtout pas prendre ca comme de la publicite, mais comme des informations utiles) : * Carte mere Abit KG7 * Lecteur USB1.1 3"5 (interne) "6 en 1" de marque "Elite" [19][1], base sur le chipset UCR-61S2B Des les premiers pas, j'ai rencontre un petit probleme : le cablage de la fiche USB interne a ete fait `a l'envers par rapport au montage standard de ma carte mere... Donc resultat, il m'a fallu prendre la prise `a l'envers et la laisser depasser de l'emplacement prevu `a cet effet. A partir de ce moment l`a, le lecteur a ete reconnu sur le bus USB (attention, sans cette manipulation, vous pourrez endommager des composants critiques). --------------------------------------------------------------------------- 2. Parametrer votre noyau Linux 2.1. Methode from scratch Telecharger les sources d'un noyau Linux (le dernier de preference) d'un numero de version superieur ou egal `a 2.4.22 ou 2.6.0-test2 sur [20]kernel.org. Decompactez les dans '/usr/src', faites un lien symbolique nomme /usr/src/linux pointant sur le repertoire ou 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 generique (CONFIG_SCSI & CONFIG_CHR_DEV_SG), Disques SCSI (CONFIG_BLK_DEV_SD), entrees SCSI multiples (CONFIG_SCSI_MULTI_LUN)... Preferez les modules `a 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 `a rebooter pour reinitialiser 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 --------------------------------------------------------------------------- 2.2. Methode from distro (non teste) A vous de voir comment s'annonce le noyau de votre distribution en fonction de ce qui a ete dit plus haut. --------------------------------------------------------------------------- 3. Premier montage de votre carte memoire (SD) 3.1. Le noyau Pour mettre le noyau dans un etat permettant l'utilisation de vos cartes memoires, il vous faut charger les modules decris plus haut (si vous avez compile vos options kernel en modules, sinon, oubliez cette etape) # modprobe scsi_mod # modprobe sg # modprobe usb-uhci # modprobe usb-storage Maintenant, votre systeme doit initialiser votre lecteur de cartes memoire. --------------------------------------------------------------------------- 3.2. Le bus USB Vous pouvez maintenant, si ce n'est dej`a fait, brancher votre lecteur sur le bus USB physique (preferez d'inserer les cartes memoires avant une telle operation). Nous allons ensuite verifier sa presence logique en testant (sans oublier de monter usbfs sur /proc/bus/usb, verifiez cela avec la commande 'mount', et s'il n'est pas monte, 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 connecte `a votre bus USB, physiquement et logiquement. --------------------------------------------------------------------------- 3.3. L'interfacage avec le systeme (les drivers) Pour confirmer le fonctionnement initial de votre systeme pour ce genre de materiel, verifiez 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 materiel a bien ete initialise. Vous pouvez en apprendre encore plus avec la commande 'dmesg', surtout si vous avez compile vos drivers usb-storage (voire SCSI) avec l'option "debug". --------------------------------------------------------------------------- 3.4. Utilisation Nous allons maintenant tester l'utilisation de votre nouveau peripherique. Pour cela, notre premier essai sera de monter une carte memoire. Veillez `a bien avoir branche votre lecteur avec une carte inseree au prealable. Ici nous avons insere une carte SD. Notre systeme 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). Premiere etape exemple, le premier montage de la carte $ mkdir /mnt/sdcard $ mount /dev/sdb1 /mnt/sdcard Seconde etape, la copie d'un fichier exemple sur la carte $ cd /mnt/sdcard $ cp /etc/resolv.conf . Si tout s'est bien passe, vous etes prets `a automatiser tout cela... --------------------------------------------------------------------------- 4. Se faciliter la vie Pour se simplifier la vie, je vous propose deux etapes : 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. --------------------------------------------------------------------------- 4.1. /etc/fstab Pour automatiser le montage de vos cartes memoires, renseignez (en adaptant cela `a votre cas particulier) le fichier '/etc/fstab'. Ainsi, vous pourrez, par une simple commande, monter ou demonter, en tant qu'utilisateur normal, vos media amovibles. Les lignes qui suivent vous offre un aperc,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 demonter votre carte memoire SD, tappez simplement $ mount /mnt/sdcard $ umount /mnt/sdcard --------------------------------------------------------------------------- 4.2. automount / supermount Pour aller encore plus loin dans l'automatisation de l'utilisation de votre lecteur de cartes memoire, vous pouvez aller jusqu'`a utiliser automount. Cet outil permet de gerer le montage / demontage de vos peripherique de la maniere la plus transparente possible, l'idee etant d'inserer la carte et de la trouver directement montee dans '/mnt/sdcard' par exemple, sans aucune intervention. Ne l'ayant moi-meme jamais teste, je vous laisse `a [21]l'excellent HOWTO de TLDP sur le sujet... --------------------------------------------------------------------------- 5. Conclusion Utiliser un lecteur USB de cartes memoire, des cles USB, etc... n'est pas plus complique avec un noyau Linux qu'un noyau Windows(tm). Ce present tutoriel peut sembler difficile `a 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'installe les drivers necessaires, et pluggue le lecteur sur le bus USB. Avec l'utilisation d'automount ou de supermount, ce processus est encore plus facile `a suivre. Normalement, tous ces outils sont normalement pre-installes et pre-configures sur les distribution grand public de type RedHat(tm), Mandrake(tm), SuSE(tm) ou knoppix. Veillez tout de meme `a verifier la compatibilite de votre materiel avec le noyau Linux... il peut arriver parfois de tomber encore sur de mauvaises (et parfois etranges) surprises. Pour toute remarque, question ou contribution supplementaire, vous trouverez mon mail dans la partie reservee `a l'auteur, n'hesitez pas... Ce document est Libre et s'utilise en tant que tel :c) --------------------------------------------------------------------------- 6. Annexes 6.1. L'auteur [22]Baptiste SIMON <[23]baptiste.simon@e-glop.net> Administrateur systeme GNU/Linux Ancien responsable de l'administration systemes chez [24]Code Lutin Toujours `a la recherche d'aventures, dans le cadre de son emploi en cours ;c) --------------------------------------------------------------------------- 6.2. Aperc,u des divers formats de ce document Ce document a ete redige au format [25]RST avec KWrite puis converti aux formats DN-XML et Docbook avec [26]dn2dbk.xsl. Les differentes versions ci-dessous ont ete realisees avec les feuilles XSLT officielles de docbook [27][2] et les outils du paquet [28]xmlto de la Debian GNU/Linux. Retrouvez toutes ces version ici : * [29]XHTML * [30]HTML * [31]PDF * [32]postcript * [33]Texte brut * [34]RTF * [35]reStructuredText * [36]DocBook - XML * [37]DN-XML * [38]XSL-FO --------------------------------------------------------------------------- 6.3. Licence de publication Ce document issu de [39]www.e-glop.net est soumis `a la licence [40]GNU FDL. Permission vous est donnee de distribuer, modifier des copies de ce document (traduction, modifications, adaptation, etc...) tant que vous respectez la licence sus-citee. Notes [41][1] [42]http://www.ecs.com.tw [43][2] paquet [44]docbook-xsl sur Debian GNU/Linux References Visible links 1. http://www.codelutin.com/ 2. file:///tmp/html-Qc6kCg#premiers-pas-le-mat-riel 3. file:///tmp/html-Qc6kCg#param-trer-votre-noyau-linux 4. file:///tmp/html-Qc6kCg#m-thode-from-scratch 5. file:///tmp/html-Qc6kCg#m-thode-from-distro-non-test 6. file:///tmp/html-Qc6kCg#premier-montage-de-votre-carte-m-moire-sd 7. file:///tmp/html-Qc6kCg#le-noyau 8. file:///tmp/html-Qc6kCg#le-bus-usb 9. file:///tmp/html-Qc6kCg#l-interfacage-avec-le-syst-me-les-drivers 10. file:///tmp/html-Qc6kCg#utilisation 11. file:///tmp/html-Qc6kCg#se-faciliter-la-vie 12. file:///tmp/html-Qc6kCg#etc-fstab 13. file:///tmp/html-Qc6kCg#automount-supermount 14. file:///tmp/html-Qc6kCg#conclusion 15. file:///tmp/html-Qc6kCg#annexes 16. file:///tmp/html-Qc6kCg#l-auteur 17. file:///tmp/html-Qc6kCg#aper-u-des-divers-formats-de-ce-document 18. file:///tmp/html-Qc6kCg#licence-de-publication 19. file:///tmp/html-Qc6kCg#FTN.id2 20. http://kernel.org/ 21. http://tldp.org/HOWTO/Automount.html 22. http://www.e-glop.net/ 23. mailto:baptiste.simon@e-glop.net 24. http://www.codelutin.com/ 25. http://docutils.sourceforge.net/ 26. http://membres.lycos.fr/ebellot/dn2dbk/ 27. file:///tmp/html-Qc6kCg#FTN.id4 28. http://cyberelk.net/tim/xmlto/ 29. http://www.e-glop.net/howtos/usbstorage-sdcard.xhtml 30. http://www.e-glop.net/howtos/usbstorage-sdcard.html 31. http://www.e-glop.net/howtos/usbstorage-sdcard.pdf 32. http://www.e-glop.net/howtos/usbstorage-sdcard.ps 33. http://www.e-glop.net/howtos/usbstorage-sdcard.txt 34. http://www.e-glop.net/howtos/usbtorage-sdcard.rtf 35. http://www.e-glop.net/howtos/usbstorage-sdcard.rst 36. http://www.e-glop.net/howtos/usbstorage-sdcard.db-xml 37. http://www.e-glop.net/howtos/usbstorage-sdcard.dn-xml 38. http://www.e-glop.net/howtos/usbstorage-sdcard.fo 39. http://www.e-glop.net/ 40. http://www.gnu.org/copyleft/fdl.html 41. file:///tmp/html-Qc6kCg#id2 42. http://www.ecs.com.tw/products/peripherals.htm?submenu_id=17&function_id=14 43. file:///tmp/html-Qc6kCg#id4 44. http://www.docbook.org/wiki/moin.cgi/DocBookXslStylesheets