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.
/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 |
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.
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.
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.
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.
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".
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.
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.
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.
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.
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.
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.
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] |