FUNIX

Mettez un manchot dans votre PC



Création des fichiers spéciaux

Les fichiers spéciaux

Introduction

HP-UX communique avec les périphériques comme les disques durs, les modems, les imprimantes par l'intermédiaire de fichiers d'interface appelés fichiers spéciaux (device files ou special file). On accède à un périphérique comme on accède à un fichier. Ces fichies sont un peu particulier, ils ne contiennent pas de données à proprement dite, mais ils spécifient comment on doit on faire pour communiquer avec le périphérique en question.

Les fichiers spéciaux sont créés avec les commandes insf, mksf, et mknod ils sont stockés sous le répertoire /dev. Normalement avec ses nouvelles fonctionnalités "plug and play", HP-UX10.20 crée pour vous les fichiers nécessaires pour accéder aux périphériques connectés au système. Par contre ils ne sont pas supprimés si le périphérique n'est plus présent.

Vous trouvez deux types de fichiers de fichiers spéciaux, fichiers en mode bloc ou caractère.

Un fichier spécial en mode bloc transfère les données vers le périphérique en utilisant les buffers du système, ce qui permet d'accélérer les transferts. Ce sont des périphériques comme les disques durs, les CD-ROM, les disques magnéto optiques.

Un fichier en mode caractère transfère les données vers le périphérique sous forme de flux, c'est à dire un caractère à la fois sans utiliser de buffer. Ce sont les périphériques comme les imprimantes, l'écran ou les bandes DAT. On les appelle aussi les raw devices. A noter qu'un périphérique qui peut être accédé avec un fichier spécial en mode bloc comme un disque dur, peut aussi être accédé par un fichier en mode caractère mais rarement le contraire.

Grosso modo tous les périphériques qu'on peut mounter sont accessibles à la fois par un fichier en mode bloc et un fichier spécial en mode caractère, ce qu'on ne peut pas monter sont accessibles par un fichier spécial en mode caractère.

[Retour haut de la page]

Le répertoire /dev

Les fichiers spéciaux sont regroupés sous le répertoire /dev. On y trouve des sous répertoires qui représentent chacun un type particulier de périphériques:
/dev ttyxpy terminaux
pty pseudo terminaux esclave
ptym pseudo terminaux maître
rmt lecteur DAT en mode caractère
rdsk disque dur en mode caractère
dsk disque dur en mode bloc
vgn lovln volume logique en mode bloc
rvoln volume logique en mode caractère
rac magnéto optique en mode caractère
ac magnéto optique en mode bloc

Convention de nommage

Principe

On peut aussi bien appeler un fichier spécial toto, mais aussi respecter la convention de nommage qui est:

c(numéro d'instance de la carte d'interface)t(adresse de la cible)d(information dépendant du périphérique)(autres)

Prenons comme exemple le disque système SCSI à l'adresse 6 du bus.

Pour trouver le numéro d'instance tapez /usr/sbin/ioscan -f vous verrez un listing du style (je l'ai tronqué volontairement):

Class I H/W Path Driver S/W State H/W Type Description
bc 0   root CLAIMED BUS_NEXUS  
graphics 0 1 graph3 CLAIMED INTERFACE Graphics
ba 0 2 bus_adapter CLAIMED BUS_NEXUS Core I/O Adapter
ext_bus 0 2/0/1 c700 CLAIMED INTERFACE Built-in SCSI
target 0 2/0/1.6 tgt CLAIMED DEVICE  
disk 0 2/0/1.6.0 sdisk CLAIMED DEVICE IBM
target 1 2/0/1.3 tgt CLAIMED DEVICE  
tape 0 2/0/1.3.0 stape CLAIMED DEVIVE HP

Le numéro d'instance correspond à la colonne I, il correspond au numéro d'instance du controleur, c'est 0 dans le cas présent. L'adresse de la cible correspond à l'adresse qui lui a été attribuée sur le bus SCSI, c'est donc 6. L'information après le d correspond à un type particulier de périphérique, pour un bus SCSI classique c'est 0. Le fichier spécial se nommera donc c0t6d0.

Si vous avez un juke box composé de plusieurs disques SCSI, le juke box a lui même une certaine adresse sur le bus SCSI disons 4 et les disques SCSI sont référencées par un numéro de LUN (Logical Unit Number). Ainsi le fichier spécial du disque SCSI de LUN4 du jukebox aura comme fichier spécial, c0t4d4.

Nommage des fichiers spéciaux des disques durs

On les nomme de cette façon: /dev/(r)dsk/c C t T d D (s S)

C correspond au numéro du controleur sur lequel est connecté le disque.

T correspond au numéro SCSI du disque

D est utile pour les périphériques qui ont plusieurs disques pour la même adresse SCSI, si ce n'est pas le cas c'est 0.

S numéro de section du disque, par compatibilité avec l'ancien système HP-UX9.X et les notions de partionnement SDS.

Nommage des volumes logiques

Les volumes logiques (logical volume) appartiennent à un group de volumes (volume group). On les nomme /dev/vgn/(r)lvolm, n correspond au numéro du volume group et m au numéro du logical volume.

Nommage des DAT (DDS)

On les nomme /dev/rmt/cCtTdD[options] avec :

C instance du controleur qui pilote le lecteur de DAT.

T adresse sur le controleur du lecteur de DAT

D correspond à la densité ou le format utilisé pour écrire sur la bande, laissez à 0 si vous utilisez les options suivantes:

BEST Haute densité avec compression
NOMOD Maintien la densité qu'il y avait à la lecture de la bande
DDSn suisvant le format DDS (DDS1 ou DDS2)
n Pas de rembobinage en fin de bande sinon rembobinage automatique
b mode Berkeley utilisé par défaut mode AT&T
w envoie l'état de l'opération (échec ou succés) uniquement après le terme de l'opération

Par défaut le système crée un fichier /dev/rmt/0m qui pointe en fait vers le fichier /dev/rmt/c0t3d0BEST (si vous avez un lecteur de bande à l'adresse 3). Par défaut c'est lui qui est appelé quand vous faites un tar.

ATTENTION: Si vous faites une bande destinée à être lue sur un système Solaris ou Linux, faites le en mode Berkeley.

[Retour haut de la page]

Visualiser les fichiers spéciaux

La commande lssf

Vous pouvez lister les fichiers spéciaux avec la commande /usr/sbin/lssf, par exemple en faisant /usr/sbin/lssf /dev/rdsk/c0t6d0 vous obtiendrez:

disc3 card instance 0 SCSI target 6 SCSI LUN 0

Ou alors /usr/sbin/lssf /dev/rmt/c0t3d0BESTn donne:

tape2 card instance 0 SCSI target 3 SCSI LUN 0 at&t no rewind best density available at address 2.0.3/dev/rmt/c0t3d0BEST

Nota:Pour cette commande vous devez utiliser le fichier spécial en mode caractère, y compris pour les périphériques "mountables".

La commande ls -l

En faisant ls -l sous /dev vous obtiendrez une sortie à peu près similaire à celle ci:

droits d'accès nombre de lien
sur le fichier
proprio groupe major
number
minor
number
date et heure
de dernière
modification
Nom du fichier
spécial
crw-rw-rw- 2 bin bin 212 0x010040 Dec 12 12:11 /dev/rmt/0mn
crw-r------ 1 bin bin 214 0x002000 Dec 12 12:11 /dev/rdsk/c0t2d0
brw-rw-rw 1 bin bin 26 0x002000 Dec 12 12:11 /dev/dsk/c0t2d0

Vous reconnaissez si un fichier spécial est en mode bloc ou caractère par la lettre c ou b qui existe devant les droits d'accès. Un fichier spécial est caractérisé par un major et un minor number.

Le major number pointe vers le driver du périphérique qui doit être inclu dans le noyau HP-UX.

Le minor number est la représentation compacte de l'adresse du périphérique.

Pour connaître les drivers et leur numéro

Tapez lsdev vous obtenez:

Character Block Driver Class
64 64 lv lvm
175 27 disc2 disk
177 28 disc3 disk
212 -1 tape0 tape

Le driver d'un logical volume s'appelle lv, il a comme major number 64 en mode caractère et en mode bloc. Le driver d'un lecteur de DAT s'appelle tape0, il a comme major number 212 en mode caractère, un lecteur de DAT ne peut être accédé en mode bloc, d'où le -1.

Vous pouvez jetter un coup d'oeil dans le fichier /usr/conf/master.d vous avez la liste exhaustive des major number et des drivers susceptibles d'être reconnus par le système.

[Retour haut de la page]

Comment les fichiers spéciaux sont-il créés

Par plug and play

Au boot le système va scruter le matériel et créer les fichiers spéciaux qui correspond aux nouveaux périphériques qui se trouvent sur le système.

Comme nous avons vu auparavant au boot le processus init lit le fichier /etc/inittab qui lance le script /sbin/ioinitrc, qui lui même lance ioinit qui lance insf qui va créer les fichiers spéciaux des nouveaux périphériques. Le fichier /etc/ioconfig, qui résume les périphériques connectés et les fichiers spéciaux correspondants, est alors remis à jour.

Normalement tout ce fait par autoconfiguration, vous n'avez pas à créer des fichiers spéciaux à la main.

Création par mksf

Vous devez d'abord vérifier que le driver est bien dans le noyau (avec SAM c'est le moyen le plus rapide et le plus simple). Pour créer le fichier spécial d'un lecteur de DAT, tapez mkfs -d tape2 -I 0 -b DDS1, faire un man pour plus de détail.

Création avec insf

Pour créer tous les fichiers spéciaux d'un lecteur de DAT (même s'il y en a pas), tapez insf -e -C tape.

Création avec mknod

Pour créer un fichier spécial, la syntaxe est la suivante)

mknod (b pour bloc, c pour caractère) major number minor number nom du fichier spécial soit:

mknod b 26 0x002000 /dev/dsk/c0t2d0 pour un disque dur à l'adresse 2 du bus SCSI, pour connaître le major number faîtes lsdev ou aller voir dans /usr/conf/master.d.

Création avec SAM

Vous pouvez toujours créer vos fichier spéciaux avec SAM, mais c'est nettement moins rigolo...

 

[Retour page d'accueil FUNIX]
[Retour haut de la page]