Par défaut, lesdits « fichiers spéciaux » dans /dev occupent réellement une entrée du catalogue (et un inode !), même s'ils ne référencent aucun contenu stocké sur le disque. Les noms hda, hdb etc ne sont que des mnémoniques pour que l'utilisateur s'y retrouve, même s'ils sont standardisés, mais ce qui fait l'efficacité du fichier spécial, ce sont ces deux numéros MAJOR et MINOR qui vont eux réellement dire au kernel à quelle routine on souhaite causer.
Le problème est qu'à terme cela bouffe beaucoup d'inodes, et que surtout, il faut tous les créer lorsque tu installes de nouveaux périphériques ou compile une nouvelle fonction dans le noyau. On utilise mknod pour faire cela.
Pour éviter ces inconvénients, les mainteneurs de ta distrib préférée te les créent tous une fois pour toutes dans /dev. Si derrière le périph ou la fonction n'existe pas, le noyau répondra simplement « No such device » lorsque tu essaieras de lire ou d'écrire dans ce fichier.
Mais quand même, dans un souci d'efficacité, est apparu dans le noyau un nouveau filesystem, devfs. Celui-ci fonctionne exactement de la même manière que /proc, c'est-à-dire qu'une fois ce volume monté sur un répertoire (en l'occurence /dev) tout ce que tu vois dedans est simulé par le kernel.
Le noyau émule donc les /fichiers /dev standard et, pas bête, il ne génère que ceux qu'il sait gérer. Voila pourquoi sur une distrib normale, tu vas voir apparaitre tous les hda*, et lorsque tu montes devfs, seuls les disques présents apparaissent.
Enfin, tu n'es pas sans savoir que lorsque tu fais mount, le volume concerné masque le contenu du répertoire sur lequel il est monté (sans l'écraser). Lorsque que tu le démontes, ce qu'il y a en dessous reparaît. Donc si ton devfs est monté sur un répertoire /dev déjà plein de fichiers spéciaux, il est très probable - et c'est heureux - que tu ne constates aucune différence de fonctionnement.
Maintenant le devfs, on aime ou on aime pas:
Avantages:
- Tu récupères tous les inodes inutilement accaparés sur ton disque.
- Tu n'as pas maintenir ton répertoire /dev à jour, le noyau le fait pour toi.
- La liste des /dev est infiniment plus claire.
- Tu sais immédiatement ce que le noyau sait gérer ou pas, et tu sais qu'un /dev présent pointe forcément sur une routine qui fonctionne.
- Lorsque tu charges un nouveau pilote, en utilisant un module (modprobe), le noyau peut lui assigner dynamiquement un couple de numéros MAJOR/MINOR. Autrement, il faut attendre que l'autorité qui s'occupe de l'affectation de ces numéros t'en attribue un, ce qui sera forcément très long et probablement très incertain car ces numéros sont en nombre limité.
Inconvénients:
- C'est pas forcément standard
- Il faut de toutes façons avoir un minimum de fichiers spéciaux « ordinaires » dans /dev pour permettre au système de s'initialiser correctement jusqu'à ce qu'il monte devfs
- Le contenu du répertoire est volatile, et donc disparait à chaque démontage/remontage, ce qui exclut la création de liens symboliques dans le répertoire /dev, telles que /dev/cdrom ou /dev/mouse qui permettent de pointer directement le périphérique concerné, spécialement s'il s'agit de périphs amovibles ou USB.
Personnellement, je préfère m'en passer et gérer le système moi-même. Au moins cela libère beaucoup de ressources, cela exclut d'avance beaucoup de pannes et de conflits potentiels, et cela me permet de n'apprendre que l'administration Unix standard, et pas le fonctionnement de tous les outils de maintenance propre à chaque distrib !
[^] # Re: gestion des périphériques
Posté par Obsidian . En réponse au message gestion des périphériques. Évalué à 5.
Le problème est qu'à terme cela bouffe beaucoup d'inodes, et que surtout, il faut tous les créer lorsque tu installes de nouveaux périphériques ou compile une nouvelle fonction dans le noyau. On utilise mknod pour faire cela.
Pour éviter ces inconvénients, les mainteneurs de ta distrib préférée te les créent tous une fois pour toutes dans /dev. Si derrière le périph ou la fonction n'existe pas, le noyau répondra simplement « No such device » lorsque tu essaieras de lire ou d'écrire dans ce fichier.
Mais quand même, dans un souci d'efficacité, est apparu dans le noyau un nouveau filesystem, devfs. Celui-ci fonctionne exactement de la même manière que /proc, c'est-à-dire qu'une fois ce volume monté sur un répertoire (en l'occurence /dev) tout ce que tu vois dedans est simulé par le kernel.
Le noyau émule donc les /fichiers /dev standard et, pas bête, il ne génère que ceux qu'il sait gérer. Voila pourquoi sur une distrib normale, tu vas voir apparaitre tous les hda*, et lorsque tu montes devfs, seuls les disques présents apparaissent.
Enfin, tu n'es pas sans savoir que lorsque tu fais mount, le volume concerné masque le contenu du répertoire sur lequel il est monté (sans l'écraser). Lorsque que tu le démontes, ce qu'il y a en dessous reparaît. Donc si ton devfs est monté sur un répertoire /dev déjà plein de fichiers spéciaux, il est très probable - et c'est heureux - que tu ne constates aucune différence de fonctionnement.
Maintenant le devfs, on aime ou on aime pas:
Avantages:
- Tu récupères tous les inodes inutilement accaparés sur ton disque.
- Tu n'as pas maintenir ton répertoire /dev à jour, le noyau le fait pour toi.
- La liste des /dev est infiniment plus claire.
- Tu sais immédiatement ce que le noyau sait gérer ou pas, et tu sais qu'un /dev présent pointe forcément sur une routine qui fonctionne.
- Lorsque tu charges un nouveau pilote, en utilisant un module (modprobe), le noyau peut lui assigner dynamiquement un couple de numéros MAJOR/MINOR. Autrement, il faut attendre que l'autorité qui s'occupe de l'affectation de ces numéros t'en attribue un, ce qui sera forcément très long et probablement très incertain car ces numéros sont en nombre limité.
Inconvénients:
- C'est pas forcément standard
- Il faut de toutes façons avoir un minimum de fichiers spéciaux « ordinaires » dans /dev pour permettre au système de s'initialiser correctement jusqu'à ce qu'il monte devfs
- Le contenu du répertoire est volatile, et donc disparait à chaque démontage/remontage, ce qui exclut la création de liens symboliques dans le répertoire /dev, telles que /dev/cdrom ou /dev/mouse qui permettent de pointer directement le périphérique concerné, spécialement s'il s'agit de périphs amovibles ou USB.
Personnellement, je préfère m'en passer et gérer le système moi-même. Au moins cela libère beaucoup de ressources, cela exclut d'avance beaucoup de pannes et de conflits potentiels, et cela me permet de n'apprendre que l'administration Unix standard, et pas le fonctionnement de tous les outils de maintenance propre à chaque distrib !
Voila, bon courage.