<HTML> <HEAD> <TITLE>Que faut-il pour l'utiliser ?</TITLE> </HEAD> <BODY> <H1>4. <A NAME="s4"></A>Que faut-il pour l'utiliser ?</H1> <P> <A HREF="SCSI-Programming-HOWTO.html#toc4">Contenu de cette section</A></P> <P></P> <H2>4.1 <A NAME="ss4.1"></A> Configuration du noyau</H2> <P>Il vous faut évidemment un adapteur SCSI reconnu. De plus, votre noyau doit être compilé avec le support du pilote générique, en plus de celui pour votre adapteur. La configuration du noyau Linux (par <CODE>make config</CODE> sous <CODE>/usr/src/linux</CODE>) doit ressembler à :</P> <P> <BLOCKQUOTE><CODE> <PRE> ... * * SCSI support * SCSI support? (CONFIG_SCSI) [n] y * * SCSI support type (disk, tape, CDrom) * ... Scsi generic support (CONFIG_CHR_DEV_SG) [n] y * * SCSI low-level drivers * ... </PRE> </CODE></BLOCKQUOTE> </P> <P>Si le noyau est modulable, vous pouvez tout aussi bien utiliser les modules.</P> <P></P> <H2>4.2 <A NAME="ss4.2"></A> Fichiers spéciaux</H2> <P>Le pilote générique utilise ses propres fichiers spéciaux. Ils peuvent être créés par le script <CODE>MAKEDEV</CODE>, que l'on trouve habituellement dans le répertoire <CODE>/dev</CODE>. La commande <CODE>MAKEDEV sg</CODE> crée les fichiers suivants :</P> <P> <BLOCKQUOTE><CODE> <PRE> crw------- 1 root system 21, 0 Aug 20 20:09 /dev/sga crw------- 1 root system 21, 1 Aug 20 20:09 /dev/sgb crw------- 1 root system 21, 2 Aug 20 20:09 /dev/sgc crw------- 1 root system 21, 3 Aug 20 20:09 /dev/sgd crw------- 1 root system 21, 4 Aug 20 20:09 /dev/sge crw------- 1 root system 21, 5 Aug 20 20:09 /dev/sgf crw------- 1 root system 21, 6 Aug 20 20:09 /dev/sgg crw------- 1 root system 21, 7 Aug 20 20:09 /dev/sgh | | numeros majeur, mineur </PRE> </CODE></BLOCKQUOTE> </P> <P>Notez que ces fichiers sont des fichiers en mode caractère pour permettre les accès directs. Sur certains systèmes, ces fichiers peuvent s'appeler <CODE>/dev/{sg0,sg1,...}</CODE>, en fonction de votre installation. Vous devrez donc adapter les exemples qui suivant en conséquence.</P> <P></P> <H2>4.3 <A NAME="ss4.3"></A> Organisation des périphériques</H2> <P>Les fichiers spéciaux sont affectés dynamiquement aux ID/LUN (LUN : Unité logique) du bus SCSI. Les périphériques sont consécutivement alloués selon les unités logiques de chaque périphérique détecté lors de la scrutation du bus, les plus petits LUN/ID/BUS étant alloués en premier. Le noyau commence par le premier contrôleur SCSI et continue sans interruption avec tous les autres adapteurs. Cette étape est actuellement réalisée lors de l'initialisation du pilote SCSI.</P> <P>Par exemple, si vous avez trois périphériques SCSI configurés avec les ID 1, 3 et 5 sur le premier bus SCSI (chacun avec une seule unité logique), l'affectation sera la suivante :</P> <P> <BLOCKQUOTE><CODE> <PRE> /dev/sga -> SCSI id 1 /dev/sgb -> SCSI id 3 /dev/sgc -> SCSI id 5 </PRE> </CODE></BLOCKQUOTE> </P> <P>Si vous ajoutez maintenant un nouveau périphérique d'identificateur 4, l'organisation après la prochaine scrutation du bus sera :</P> <P> <BLOCKQUOTE><CODE> <PRE> /dev/sga -> SCSI id 1 /dev/sgb -> SCSI id 3 /dev/sgc -> SCSI id 4 /dev/sgd -> SCSI id 5 </PRE> </CODE></BLOCKQUOTE> </P> <P>Notez le changement pour l'identificateur 5 - le périphérique correspondant n'est plus affecté à <CODE>/dev/sgc</CODE>, mais à <CODE>/dev/sgd</CODE>.</P> <P>Les noyaux plus récents permettent de changer cet ordre.</P> <P></P> <H3>Insertion et retrait dynamiques de périphériques SCSI</H3> <P>Dans les noyaux récents avec un système de fichier <CODE>/proc</CODE> monté, il est possible de retirer et d'ajouter un périphérique libre (non-busy) à la volée.</P> <P>Pour enlever un périphérique SCSI : <BLOCKQUOTE><CODE> <PRE> echo "scsi remove-single-device a b c d" > /proc/scsi/scsi </PRE> </CODE></BLOCKQUOTE> </P> <P>De la même manière, ajouter un périphérique SCSI se fera par :</P> <P> <BLOCKQUOTE><CODE> <PRE> echo "scsi add-single-device a b c d" > /proc/scsi/scsi </PRE> </CODE></BLOCKQUOTE> </P> <P>Ici, a, b, c et d sont définis de la façon suivante :</P> <P> <BLOCKQUOTE><CODE> <PRE> a == identificateur de l'adapteur (le premier a l'id 0) b == canal SCSI sur l'adapteur (le premier a le numero 0) c == ID d == LUN (la premiere ayant le numero 0) </PRE> </CODE></BLOCKQUOTE> </P> <P>Ainsi, si nous désirons intervertir l'affectation des fichiers <CODE>/dev/sgc</CODE> et <CODE>/dev/sgd</CODE> de l'exemple précédent, nous pouvons faire :</P> <P> <BLOCKQUOTE><CODE> <PRE> echo "scsi remove-single-device 0 0 4 0" > /proc/scsi/scsi echo "scsi remove-single-device 0 0 5 0" > /proc/scsi/scsi echo "scsi add-single-device 0 0 5 0" > /proc/scsi/scsi echo "scsi add-single-device 0 0 4 0" > /proc/scsi/scsi </PRE> </CODE></BLOCKQUOTE> </P> <P>puisque les périphériques génériques sont alloués dans leur ordre d'insertion.</P> <P>Si vous voulez ajouter de nouveaux périphériques sur le bus SCSI, gardez à l'esprit qu'un nombre limité d'entrées supplémentaires a été attribué. La mémoire a été allouée au démarrage, et il n'y a de place que pour 2 entrées supplémentaires.</P> <P></P> <HR> <P> Chapitre <A HREF="SCSI-Programming-HOWTO-5.html">suivant</A>, Chapitre <A HREF="SCSI-Programming-HOWTO-3.html">Précédent</A> <P> Table des matières de <A HREF="SCSI-Programming-HOWTO.html#toc4">ce chapitre</A>, <A HREF="SCSI-Programming-HOWTO.html#toc">Table des matières</A> générale</P> <P> <A HREF="SCSI-Programming-HOWTO.html">Début</A> du document, <A HREF="#0"> Début de ce chapitre</A></P> </BODY> </HTML>