On Fri, 11 Jan 2002 [EMAIL PROTECTED] wrote:

[ message mal post�, je laisse l'auteur poster l'original, mais vu que
j'ai d�j� �crit la r�ponse cela serait dommage de la laisser tomber
]

> Dans le r�pertoire /dev/ , on trouve d'innonmbrables noms ne
> correspondant � rien, parce qu'ils d�signent un mat�riel non pr�sent sur
> la machine. Des noms pour je ne sais combien de disques durs, avec je ne

Juste. (d�tail technique: il ne s'agit pas vraiment/seulement de noms,
mais de points d'entr�es de pilotes, li�s au syst�me de fichier sous un
device-special-file. Ce qui importe comme dans tous les UNIX pas
super-modernes ce sont les num�ros MAJOR et MINOR, cf la sortie de ls -l
ainsi que /usr/src/linux/Documentation/devices.txt. Les noms sont des
conventions. mv /dev/sda /dev/truc_scsi_premier_disque change cette
convention). 

A cela j'ajoute qu'il faut distinguer:

   1 le support mat�riel compil� dans le kernel / disponible en module

        On peut avoir compil� le support IDE disque sans avoir celui-ci
        install� physiquement dans la machine (p.ex. une machine SCSI
        seulement)

        On peut avoir install� un p�riph�rique sans avoir configur�
        son support (recompilation du kernel, activation du module
        concern� automatiquement ou manuellement).

           Exemple: Red Hat 7.2, si le disque o� Linux est install� n'est
                    pas SCSI mais qu'il existe une carte SCSI dans le
                    syst�me et que Red Hat peut la d�tecter
                    automatiquement, ne va pas charger le module noyau
                    carte correspondant (ni les gestionnaires
                    disques/tape/CD), mais configurer celui-ci via
                    kmod (/etc/modules.conf ou /etc/conf.modules). Au
                    premier acc�s � un p�riph�rique existant ou non dans
                    /dev, le bus SCSI sera scann� par l'insertion du
                    pilote mat�riel, et seul � ce moment /proc/scsi/scsi
                    sera � jour.

                    [ comportement tout � fait logique d'ailleurs.
                      Seule critique: scanner le bus provoque en g�n�ral
                      un SCSI RESET, certaines configurations (p.ex.
                      compression tape) peuvent dispara�tre
                      si le module est aussi d�charg� automatiquement.
                      C'est une des raisons qui me fait pr�f�rer le
                      chargement en dur dans /etc/modules comme peut
                      le faire la Debian. L'autre �tant que p.ex.
                      en 2.2.x, `st' avait parfois des probl�mes �
                      allouer ses buffers DMA longtemps apr�s le
                      d�marrage. Autrement, on peut quand m�me saluer
                      le fait que la Red Hat d�tecte cette carte.
                    ]

   2 les p�riph�riques install�s dans la machine physiquement

        On peut dans certains cas d�tecter un p�riph�rique sans avoir
        de support du tout pour. Ils apparaissent en g�n�ral dans un
        bus syst�me (PCI, PCMCIA, etc).

        P.ex: /sbin/lspci # ou cat /proc/pci

        cf le message sur cardctl pour PCMCIA p.ex.

   3 les p�riph�riques d�tect�s ET configur�s

        Ceux-ci apparaissent en g�n�ral dans les logs syst�mes, et
        dans des fichiers de `ressources' (cat /proc/interrupts, etc).

> sais combien de partitions, etc. Pourquoi pas? Le probl�me, c'est de
> savoir quels sont les noms "actifs", je veux dire: les noms
> correspondant � un �l�ment existant sur la machine, et reconnu par le

C'est l�gitime. Mais en vertu de ce qui pr�c�de, cette requ�te m�lange
all�grement les trois cat�gories d�finies. Il faut comprendre que dans
certains cas il n'est m�me pas possible de d�terminer si une carte X est
install�e (ISA sans PnP p.ex.) sans le pilote d�termin�, et/ou une
configuration correcte du mat�riel. Les machines modernes PC utilisent des
bus � autoconfiguration -- comme ceux que l'on trouvait d�s 1985 sur des
machines genre Amiga -- voire des bus � autoconfiguration magouill�e (ISA
PNP) plut�t que des adresses fixes, etc, et donc ce genre de probl�mes se
pose de moins en moins. 

La seule chose que l'on peut regretter c'est que la cat�gorie 3 ne
provoque pas automatiquement une mise � jour de /dev. Mais cela
emp�cherait bien s�r le chargement et la d�tection de mat�riel � la
demande (cf exemple Red Hat ci-dessus) si les p�riph�riques non cat�gorie
3 n'�taient pas dans /dev. 

> syst�me. Existe-t-il une commande permettant de savoir quels sont les
> noms "attribu�s"? 

- La commande dmesg donne nombre d'informations int�ressantes quant au
  pilotes et p�riph�riques d�tect�s (cat�gorie 3, parfois cat�gorie 1 
  non 3 avec une erreur)

- lsmod donne les modules du kernel charg�s, qui sur des kernels
  modulaires donne une bonne information sur la cat�gorie 3.

- certains fichiers dans /proc, comme /proc/interrupts donne les noms de
  pilotes associ�s � des interruptions (cat�gorie 3 toujours)

- il y a aussi /proc/scsi/scsi, /proc/pci/... etc, qui donnent
  des informations sur la cat�gorie 2, pas forc�ment cat�gorie 3.

- fdisk -l /dev/sda # donne les partitions d�finies

On a parl� � de nombreuses reprises de ce qui pr�c�de, lors du diagnostic
de probl�mes / comment savoir comment est acc�d� un p�riph�rique.

Une alternative int�ressante � l'ancien mod�le /dev UNIX est le devfs, le
device file-system, une sp�cificit� Linux, o� les entr�es sont g�n�r�es
dynamiquement en fonction des p�riph�riques effectivement disponibles
(enfin c'est l'impression que cela donne -- pas encore essay�). 

devfs est disponible comme patch � 2.2.x et comme option de compilation de
2.4.x: � ma connaissance aucune distribution ne propose ce syst�me par
d�faut pour le moment.

Les modifications de droits d'acc�s sont alors perdus (configur�s selon
une table fixe, encore que l'on peut aussi les restaurer si n�cessaire �
l'aide d'un daemon en user-space). 

Je n'ai pour l'instant aucune exp�rience de devfs. Je ne sais pas, en
particulier, dans quelle mesure devfs emp�che le chargement � la demande
de modules (genre: mount /dev/scd0 /mnt -> chargement modules SCSI,
bas-niveau chip, sr).

Un avantage certain de devfs est un nommage plus UNIX des disques
physiques: au lieu de p.ex. /dev/sdb (deuxi�me disque SCSI) on aura alors
/dev/bus/scsi/0/0/3/0, si p.ex. ce deuxi�me disque SCSI se trouve sur le
SCSI ID 3. Faire ainsi peut sembler plus compliqu�: c'est cependant la
seule m�thode pour �viter des changements de noms de disques physiques en
cas d'insertion de p�riph�riques avec ID plus petite. Maintenant que les
`labels' se g�n�ralisent sur les partitions, cela est moins important,
mais les labels se trouvent au niveau du syst�me de fichier, pas des block
devices ou des p�riph�riques non disques: cela reste important p.ex.  pour
l'acc�s g�n�rique aux p�riph�riques SCSI (/dev/sgX), qu'on utilise pour le
gravage de CD, ou la configuration/interrogation bas niveau de
p�riph�riques disques ou cassettes: p.ex. savoir le nombre d'erreurs
corrig�es en DDS/DAT, ou encore l'acc�s direct raw-device. 

[ je ne connais pas en d�tail le nommage de devfs, ce qui pr�c�de est
l'id�e g�n�rale ]

Tout �a pour dire qu'un ls /dev, pour le moment, ne donne pas d'indication
sur le mat�riel support� par le kernel, le mat�riel pr�sent dans le
syst�me, ni une intersection entre ces deux.

--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question. Ouais, pour se d�sabonner aussi.

Répondre à