Sophie

Sophie

distrib > Mandriva > 9.0 > i586 > by-pkgid > 0d5cd12c82d627a82c59047e1ba7b8a9 > files > 1178

howto-html-fr-9.0-0.2mdk.noarch.rpm

<HTML>
<HEAD>
<TITLE>Les probl&egrave;mes courants</TITLE>
</HEAD>
<BODY>
<H1>2. <A NAME="s2"></A>Les probl&egrave;mes courants</H1>
<P>
<A HREF="SCSI-HOWTO.html#toc2">Contenu de cette section</A></P>

<P>Ce chapitre recense un certain nombre de probl&egrave;mes habituellement rencontr&eacute;s. S'il n'y  a rien ici qui r&eacute;ponde &agrave; vos questions, consultez &eacute;galement les chapitres relatifs aux cartes d'interface et aux p&eacute;riph&eacute;riques.</P>
<P></P>
<A NAME="Flakiness"></A> <H2>2.1 <A NAME="ss2.1"></A> Dysfonctionnement g&eacute;n&eacute;ralis&eacute; </H2>

<P>Si vous rencontrez des erreurs al&eacute;atoires, il y a fort &agrave; parier que la cause en est un c&acirc;ble d&eacute;fectueux ou une mauvaise terminaison.</P>
<P>Certaines cartes, comme celles architectur&eacute;es autour du r&eacute;cent composant NCR, effectuent un filtrage num&eacute;rique et une n&eacute;gociation active de signal et sont par le fait moins sensibles aux probl&egrave;mes de connectique.</P>
<P>D'autres cartes, comme par exemple les Adaptec 154xC, 154xCF et 274x, sont <B>extr&ecirc;mement</B> sensibles et peuvent ne plus fonctionner avec certains cordons qui ne perturberaient pas d'autres cartes.</P>
<P>Je le r&eacute;p&egrave;te donc : certaines cartes sont <B>tr&egrave;s</B> sensibles aux probl&egrave;mes de mauvais c&acirc;bles et de terminaison, aussi est-il important de v&eacute;rifier ces deux points avant toute chose lorsque des probl&egrave;mes apparaissent.</P>
<P>Pour diminuer les risques potentiels, vous devez utiliser des c&acirc;bles qui :
<OL>
<LI> se pr&eacute;valent d'une compatibilit&eacute; SCSI-II,</LI>
<LI> ont une imp&eacute;dance caract&eacute;ristique de 132 ohms,</LI>
<LI> proviennent tous d'une m&ecirc;me source, afin d'&eacute;viter les &eacute;carts d'imp&eacute;dance,</LI>
<LI> sont propos&eacute;es par un vendeur r&eacute;put&eacute; (tel qu'Amphenol).</LI>
</OL>
</P>
<P>Un l&eacute;ger courant pour la terminaison doit &ecirc;tre fourni par chaque &eacute;quipement pr&eacute;sent sur le bus SCSI, via une diode pour pr&eacute;venir tout retour de tension. De cette mani&egrave;re, une tension suffisante est disponible en bout de cha&icirc;ne, l&agrave; o&ugrave; le bus en a besoin. Pour pr&eacute;venir tout endommagement d&ucirc; &agrave; un court-circuit, TERMPWR doit &ecirc;tre contr&ocirc;l&eacute; au travers d'un fusible ou de tout autre dispositif de limitation du courant.</P>
<P>Si plusieurs &eacute;quipements, des c&acirc;bles externes ou un FAST SCSI 2 sont utilis&eacute;s, une terminaison -- active ou forc&eacute;e -- parfaite doit &ecirc;tre mise &agrave; chaque extr&eacute;mit&eacute; du bus.</P>
<P>Reportez-vous &agrave; la FAQ Comp.Periphs.Scsi (disponible sur tsx-11 dans <CODE>/pub/linux/ALPHA/scsi</CODE>) pour plus de renseignements sur les terminaisons actives.</P>
<P></P>

<H2>2.2 <A NAME="ss2.2"></A> La ligne de commande du noyau</H2>

<P>D'autres parties du document feront plus tard r&eacute;f&eacute;rence &agrave; la "ligne de commande du noyau".</P>
<P>La ligne de commande du noyau est un ensemble d'options que vous pouvez sp&eacute;cifier, soit apr&egrave;s le nom de l'image &agrave; l'invite de LILO (<CODE>LILO : </CODE>), soit dans un champ "append" du fichier de configuration de LILO (LILO 0.14 et sup&eacute;rieurs utilisent le fichier <CODE>/etc/lilo.conf</CODE>, les versions pr&eacute;c&eacute;dentes <CODE>/usr/lilo/config</CODE>).</P>
<P>D&eacute;marrez votre syst&egrave;me avec LILO et appuyez sur une des touches ALT, CTRL ou SHIFT, au moment o&ugrave; il affiche le prompt. LILO devrait r&eacute;pondre par :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
:
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>A cet instant, vous pouvez s&eacute;lectionner l'image du noyau sur lequel continuer le d&eacute;marrage (en tapant son label) ou avoir la liste des images, en apppuyant sur ?. Par exemple :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
:?

ramdisk floppy disquedur
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Pour d&eacute;marrer (booter) le noyau avec la ligne de commande que vous avez choisie entrez simplement le nom du noyau, suivi d'une liste d'options. Chaque option est s&eacute;par&eacute;e de la pr&eacute;c&eacute;dente par un espace. L'appui sur ENTREE valide la ligne et continue le processus de d&eacute;marrage.</P>
<P>Les options sont de la forme :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
variable=liste_de_valeurs
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Ici, <CODE><B>liste_de_valeurs</B></CODE> peut &ecirc;tre une simple valeur ou une liste de valeurs d&eacute;limit&eacute;es par des virgules, sans espaces. Exception faite de la sp&eacute;cification du p&eacute;riph&eacute;rique de boot, chaque valeur doit &ecirc;tre num&eacute;rique et peut &ecirc;tre fournie en d&eacute;cimal ou en h&eacute;xad&eacute;cimal.</P>
<P>Par exemple, pour d&eacute;marrer Linux avec une carte compatible Adaptec 1520 non reconnue au d&eacute;marrage, vous pourriez entrer :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
:floppy aha152x=0x340,11,7,1
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Si vous ne tenez pas &agrave; taper cette commande &agrave; chaque d&eacute;marrage du syst&egrave;me, il est &eacute;galement possible d'utiliser l'option "append" dans le fichier de configuration de LILO (LILO 0.13 et plus).</P>
<P>Cela donnera une ligne du genre :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
append=&quot;aha152x=0x340,11,7,1&quot;
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P></P>

<H2>2.3 <A NAME="ss2.3"></A> Un p&eacute;riph&eacute;rique appara&icirc;t &agrave; toutes les adresses SCSI</H2>

<P>Si c'est le cas, vous avez certainement s&eacute;lectionn&eacute; comme adresse pour ce p&eacute;riph&eacute;rique la m&ecirc;me adresse que le contr&ocirc;leur (traditionnellement l'adresse 7, bien que quelques cartes soient configur&eacute;es autrement, comme certaines Future Domain fix&eacute;es &agrave; 6 par exemple).</P>
<P>Changez la configuration des cavaliers.</P>
<P></P>

<H2>2.4 <A NAME="ss2.4"></A> Le m&ecirc;me p&eacute;riph&eacute;rique est reconnu &agrave; chaque unit&eacute; logique</H2>

<P>Ce p&eacute;riph&eacute;rique a certainement un firmware bugg&eacute;.</P>
<P>Une solution temporaire consiste &agrave; utiliser la ligne de commande suivante :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
max_scsi_luns=1
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Si cela marche, vous pouvez ajouter votre p&eacute;riph&eacute;rique &agrave; la liste des p&eacute;riph&eacute;riques bugg&eacute;s, dans les sources du noyau. La variable en question s'appelle <CODE><B>blacklist</B></CODE> et se trouve dans le fichier <CODE>drivers/scsi/scsi.c</CODE>. Envoyez ensuite le patch &agrave; Linus Torvalds <CODE>&lt;Linus.Torvalds@cs.Helsinki.FI&gt;</CODE>.</P>
<P></P>

<H2>2.5 <A NAME="ss2.5"></A> Vous avez des 'sense errors' alors que vous savez que votre mat&eacute;riel n'a pas d'erreurs</H2>

<P>Cela est parfois d&ucirc; &agrave; un mauvais cordon ou &agrave; une terminaison mal adapt&eacute;e.</P>
<P>R&eacute;f&eacute;rez-vous au chapitre 
<A HREF="#Flakiness">Dysfonctionnement g&eacute;n&eacute;ralis&eacute;</A>
.</P>
<P></P>

<H2>2.6 <A NAME="ss2.6"></A> Un noyau configur&eacute; avec support r&eacute;seau ne marche pas</H2>

<P>Les routines d'auto-d&eacute;tection pour la plupart des cartes r&eacute;seau ne sont pas passives. Il se peut qu'elles entrent en conflit avec certaines cartes SCSI et qu'elles en perturbent le bon fonctionnement.</P>
<P></P>

<H2>2.7 <A NAME="ss2.7"></A> Des p&eacute;riph&eacute;riques sont d&eacute;tect&eacute;s, mais il est impossible d'y acc&eacute;der</H2>

<P>Un p&eacute;riph&eacute;rique SCSI a &eacute;t&eacute; d&eacute;tect&eacute; par le noyau mais vous &ecirc;tes incapable d'y acc&eacute;der (les commandes <CODE>mkfs /dev/sdc</CODE>, <CODE>tar xvf /dev/st2</CODE> par exemple &eacute;chouent).</P>
<P>Vous n'avez pas de fichier sp&eacute;cial <CODE>/dev/xxx</CODE> pour votre p&eacute;riph&eacute;rique.</P>
<P>Sous Unix, les p&eacute;riph&eacute;riques sont en mode bloc ou en mode caract&egrave;re. Les p&eacute;riph&eacute;riques en mode bloc utilisent un m&eacute;canisme de cache, alors que les p&eacute;riph&eacute;riques en mode caract&egrave;re ne sont pas bufferis&eacute;s.
Un p&eacute;riph&eacute;rique est donc d&eacute;fini sous Unix par son mode (bloc ou caract&egrave;re), son num&eacute;ro majeur (ce num&eacute;ro correspond au pilote qui le g&egrave;re -- ainsi, le majeur mode bloc 8 correspond aux disques SCSI) et un num&eacute;ro mineur (ce mineur d&eacute;finit quelle unit&eacute; est acc&eacute;d&eacute;e via cette sp&eacute;cification de p&eacute;riph&eacute;rique -- ainsi, le p&eacute;riph&eacute;rique r&eacute;f&eacute;renc&eacute; par le majeur caract&egrave;re 4 et le mineur 0 est la premi&egrave;re console virtuelle, mineur 1 est la console suivante, etc.). Cependant, acc&eacute;der aux p&eacute;riph&eacute;riques par un espace de nommage s&eacute;par&eacute; romprait la tradition d'Unix/Linux ('tout est fichier' !). C'est pourquoi des fichiers sp&eacute;ciaux sont cr&eacute;&eacute;s sous <CODE>/dev</CODE>. Ces fichiers sp&eacute;ciaux vous permettront d'acc&eacute;der directement &agrave; votre troisi&egrave;me disque SCSI via <CODE>/dev/sdc</CODE>, au premier port s&eacute;rie via <CODE>/dev/ttyS0</CODE>, etc.</P>
<P>La meilleure m&eacute;thode pour cr&eacute;er un fichier sp&eacute;cial est d'utiliser le script <CODE>MAKEDEV</CODE> :</P>
<P><CODE>cd /dev</CODE></P>
<P>puis</P>
<P><CODE>MAKEDEV</CODE> (en tant que root) pour les p&eacute;riph&eacute;riques que vous voulez cr&eacute;er. Par exemple :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
 ./MAKEDEV sdc
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Les caract&egrave;res g&eacute;n&eacute;riques "devraient" marcher. Par exemple :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
 ./MAKEDEV sd\*
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>"devrait" cr&eacute;er les entr&eacute;es pour tous les disques SCSI (la commande pr&eacute;c&eacute;dente devrait avoir cr&eacute;&eacute; <CODE>/dev/sda</CODE> &agrave; <CODE>/dev/sdp</CODE>, avec 15 sous-partitions pour chaque disque).</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
 ./MAKEDEV sdc\*
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>"devrait" cr&eacute;er les entr&eacute;es pour <CODE>/dev/sdc</CODE> et ses 15 sous-partitions possibles (<CODE>/dev/sdc1</CODE>, <CODE>/dev/sdc2</CODE>, etc.).</P>
<P>J'ai dit "devrait" parce que c'est le comportement standard d'Unix -- le script MAKEDEV de votre installation pourrait ne pas se conformer &agrave; cette fa&ccedil;on de faire ou pourrait avoir restreint le nombre de fichiers sp&eacute;ciaux qu'il peut cr&eacute;er, auquel cas ce qui pr&eacute;c&egrave;de ne serait plus tout &agrave; fait vrai.</P>
<P>Si MAKEDEV ne fait pas le travail pour vous, vous allez devoir cr&eacute;er les fichiers sp&eacute;ciaux &agrave; la main gr&acirc;ce &agrave; la commande <CODE><B>mknod</B></CODE>.</P>
<P>Le mode (bloc ou caract&egrave;re), le majeur et le mineur sont pr&eacute;cis&eacute;s pour les divers p&eacute;riph&eacute;riques SCSI dans le chapitre 
<A HREF="SCSI-HOWTO-6.html#DevFiles">Fichiers sp&eacute;ciaux</A>
.</P>
<P>Notez les valeurs trouv&eacute;es dans ce chapitre et tapez (en tant que root) :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
mknod /dev/peripherique b|c majeur mineur
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>par exemple :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
mknod /dev/sdc b 8 32
mknod /dev/st0 c 9 0
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P></P>

<A NAME="SCSISysLockups"></A> <H2>2.8 <A NAME="ss2.8"></A> Le SCSI se bloque </H2>

<P>Il peut y avoir de nombreuses raisons au blocage du bus. Eventuellement, reportez-vous au chapitre d&eacute;di&eacute; &agrave; votre carte pour plus de d&eacute;tails.</P>
<P>Certains cas de blocage semblent se produire lorsque plusieurs p&eacute;riph&eacute;riques sont en cours d'utilisation simultan&eacute;ment. Si cela vous arrive, essayez de contacter le fabricant des p&eacute;riph&eacute;riques et regardez s'il n'existe pas des mises &agrave; jour de firmware qui r&eacute;soudraient le probl&egrave;me. A l'occasion, essayez de changer de c&acirc;ble ou branchez les p&eacute;riph&eacute;riques sur une autre machine.</P>
<P>Il se peut &eacute;galement que ce soit d&ucirc; &agrave; des secteurs d&eacute;fectueux sur un des disques ou encore &agrave; une mauvaise gestion du DMA (Direct Memory Access) par la carte m&egrave;re (pour les cartes d'interface qui travaillent en DMA). En fait, tout un tas d'autres raisons peut expliquer un blocage du bus.</P>
<P>De temps en temps, comme nous venons de le signaler, des cas de blocage apparaissent lorsque plusieurs p&eacute;riph&eacute;riques sont utilis&eacute;s en m&ecirc;me temps sur le bus. Si votre contr&ocirc;leur est capable de traiter plusieurs requ&ecirc;tes en m&ecirc;me temps, essayer de r&eacute;duire la taille de la queue &agrave; 1 et regardez si la situation s'am&eacute;liore. Cela &eacute;tant, si vous utilisez des p&eacute;riph&eacute;riques lents (lecteurs de bandes ou lecteurs de CDROM peu rapides), r&eacute;duire ainsi la taille de la queue n'est certainement pas la meilleure solution.</P>
<P></P>

<A NAME="KernelConfig"></A> <H2>2.9 <A NAME="ss2.9"></A> Configurer et reg&eacute;n&eacute;rer le noyau </H2>

<P>Les pilotes SCSI non utilis&eacute;s consomment inutilement de pr&eacute;cieux octets et peuvent amener les syst&egrave;mes poss&eacute;dant peu de m&eacute;moire &agrave; en manquer (la m&eacute;moire du noyau est non paginable (swappable)). Pour cette raison, il est recommand&eacute; de g&eacute;n&eacute;rer un noyau ne comportant que le strict n&eacute;cessaire pour votre machine.</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
cd /usr/src/linux
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Si vous comptez utiliser une partition racine (root device) autre que la partition racine courante ou une r&eacute;solution autre que du VGA 80x25, voire si vous g&eacute;n&eacute;rez une disquette de d&eacute;marrage, &eacute;ditez le makefile et assurez-vous que les lignes</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
ROOT_DEV =
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>et</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
SVGA_MODE =
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>sont correctement positionn&eacute;es.</P>
<P>Si vous avez appliqu&eacute; des patches, assurez-vous que vous tous vos fichiers sont correctement recompil&eacute;s. Dans le doute, tapez :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
make mrproper
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Dans tous les cas, vous devrez configurer le noyau :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
make config
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>R&eacute;pondez aux questions. Apr&egrave;s avoir sauvegard&eacute; votre configuration, reg&eacute;n&eacute;rez les d&eacute;pendances et recompilez le noyau :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
make depend
make
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Une fois la g&eacute;n&eacute;ration du noyau termin&eacute;e, n'oubliez pas de relancer lilo (<CODE><B>/sbin/lilo</B></CODE>). Vous pouvez &eacute;galement construire une disquette de d&eacute;marrage :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
make zdisk
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P></P>

<A NAME="LunsNot0"></A> <H2>2.10 <A NAME="ss2.10"></A> Les unit&eacute;s logiques autres que la premi&egrave;re ne fonctionnent pas </H2>

<P>De nombreux p&eacute;riph&eacute;riques SCSI verrouillent compl&egrave;tement le bus ou r&eacute;agissent bizarrement lorsque vous tentez d'acc&eacute;der &agrave; une unit&eacute; logique (LUN) qui n'est pas l'unit&eacute; 0. C'est pourquoi les versions r&eacute;centes du noyau Linux n'essaient plus par d&eacute;faut de tester les unit&eacute;s logiques autres que 0.
Si cela vous g&ecirc;ne, vous pouvez positionner <CODE>max_scsi_luns</CODE> sur la ligne de commande du noyau ; vous pouvez aussi recompiler le noyau en positionnant l'option <CODE>CONFIG_SCSI_MULTI_LUN</CODE> au moment de la configuration.</P>
<P>Il est habituel de mettre</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
max_scsi_luns=8
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>sur la ligne de commande de LILO.</P>
<P>Si, malgr&eacute; tout, vos unit&eacute;s logiques ne sont toujours pas correctement d&eacute;tect&eacute;es (cela peut arriver avec de vieux contr&ocirc;leurs SCSI-&gt;MFM, RLL, ESDI ou SMD), essayez de supprimer le petit bout de code suivant de la fonction <CODE>scan_scsis()</CODE> du fichier <CODE>drivers/scsi/scsi.c</CODE> :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
/* Some scsi-1 peripherals do not handle lun != 0.
   I am assuming that scsi-2 peripherals do better */
if((scsi_result[2] &amp; 0x07) == 1 &amp;&amp;
   (scsi_result[3] &amp; 0x0f) == 0) break;
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P></P>

<HR>
<P>
Chapitre <A HREF="SCSI-HOWTO-3.html">suivant</A>,
Chapitre <A HREF="SCSI-HOWTO-1.html">Pr&eacute;c&eacute;dent</A>
<P>
Table des mati&egrave;res de <A HREF="SCSI-HOWTO.html#toc2">ce chapitre</A>,
 <A HREF="SCSI-HOWTO.html#toc">Table des mati&egrave;res</A> g&eacute;n&eacute;rale</P>
<P>
<A HREF="SCSI-HOWTO.html">D&eacute;but</A> du document,
 <A HREF="#0"> D&eacute;but de ce chapitre</A></P>
</BODY>
</HTML>