Page 1 sur 1

Commande mknod

Publié : 23 mar 2019, 16:24
par obelix1502
Bonjour,

Qui connaissait cette commande mknod ?
J'ai dû m'en servir pour reconstruire mon VPN dans le dossier /dev/net/.
Le man mknod en dit ceci :

man mknod (Commandes) - Créer des fichiers spéciaux.
NOM

mknod - Créer des fichiers spéciaux.
SYNOPSIS

mknod [options] nom {bc} numéro_majeur numéro_mineur

mknod [ options ] nom p Options GNU (forme courte) : [-m mode] [--mode=mode] [--help] [--version]
DESCRIPTION

mknod crée une FIFO, un fichier spécial en mode caractère, ou un fichier spécial en mode bloc, avec le nom indiqué.

Un fichier spécial est un ensemble de trois valeurs (une booléenne, et deux entiers) enregistré dans un système de fichiers. La valeur booléenne indique s'il s'agit d'un fichier caractères ou blocs, et les deux entiers correspondent aux numéros majeur et mineur.

Ainsi un fichier spécial ne prend quasiment pas de place sur le disque, et est utilisé pour dialoguer avec le système d'exploitation, pas pour enregistrer des données. Généralement les fichiers spéciaux concernent des périphériques matériels (disques, bandes, ttys, imprimantes) ou des services fournis par le système d'exploitation (/dev/null, /dev/random).

Les fichiers en mode bloc sont des périphériques comme des disques (où les données sont accessibles à travers un numéro de bloc, et où il est intéressant d'avoir une mémoire cache par bloc). Tous les autres périphériques sont en mode caractère. Autrefois la distinction se faisait autrement, les entrées/sorties en mode bloc étaient bufferisées, pas les autres.

La commande mknod permet de créer ce type fichiers.

Les arguments fournis à la suite du nom indiquent le type de fichier à créer :

p
    pour une FIFO 
b
    pour un fichier spécial en mode bloc (avec buffer) 
c
    pour un fichier spécial en mode caractère (sans buffer) 

La version GNU de mknod dispose de l'option u ("unbuffered") synonyme de c.

Lorsque l'on crée un fichier spécial bloc ou caractère, les numéros majeur et mineur correspondant au périphérique doivent être précisés après le type de fichier, en décimal, en octal commençant par 0, ou (version GNU seulement) en hexadécimal précédé de 0x. Par défaut le mode de création est 0666 ('a+rw') moins les bits se trouvant dans le umask.
OPTIONS

-m, --mode mode
    Indique les autorisations d'accès au fichier, mode étant fourni sous forme symbolique, comme pour chmod(1), les permissions par défaut étant utilisées comme valeur de départ. 

OPTIONS STANDARDS GNU

--help
    Afficher un message d'aide sur la sortie standard, et se terminer normalement. 
--version
    Afficher un numéro de version sur la sortie standard, et se terminer normalement. 
-- 
    Terminer la liste des options. 

CONFORMITÉ

POSIX ne décrit pas cette commande, considérée comme non portable, et recommande d'utiliser plutôt mkfifo(1) pour créer des FIFOs. SVID dispose d'une commande /etc/mknod ayant la même syntaxe mais sans l'option mode.
NOTES

Sur un système Linux (1.3.22 ou plus récent) le fichier /usr/src/linux/Documentation/devices.tex contient une liste des noms de périphériques, avec le type, et les numéros majeurs et mineurs.

Cette page décrit la version de mknod trouvée dans le paquet fileutils-4.0. D'autres versions peuvent diverger légèrement.
VOIR AUSSI

chmod(1), mkfifo(1), mknod(2). 
Traduit avec DeepL Translatot

Personnellement, je ne connaissais pas du tout.

À quelles autres fonctions peut-elle aussi servir ? :gsourire: :gsourire:

Re: Commande mknod

Publié : 23 mar 2019, 18:31
par stephane
c'est très particulier la creation avec un numero mineur - majeur
c'est pour tout peripherique pour associer ensuite un driver

coté linux on renomme chaque mineur - majeur par un nom car les chiffres sont loin d'être parlants en terme de peripheriques

Re: Commande mknod

Publié : 23 mar 2019, 19:23
par Smurf
Salut,

Cette commande est très rarement utilisée maintenant, la plupart de nos périphériques sont bien gérés avec udev, ce qui n'était pas le cas il y a 20-25 ans. Quand un périphérique n'était pas reconnu automatiquement par le système, il fallait créer son devnode (fichier faisant le lien entre le périphérique et le système dans /dev), pour celà on utilisait un script, MAKEDEV, qui faisait appel à mknod. Je n'ai utilisé ce script qu'une fois à mes débuts sous Linux, il faut dire qu'à l'époque, les installateurs des distros étaient franchement légers en ce qui concerne la reconnaissance du matériel.

edit : voir le paragraphe "Un peu d’histoire" ici, pour comprendre l'évolution de la gestion des périphériques.