Portages ] [ Debian GNU/Hurd ] [ Actualité ] [ Configuration ] [ CD Hurd ] [ Documentation ] [ Développement ] [ Contact ]

Debian GNU/Hurd

Dirk Ritter m'a envoyé le texte suivant, qui contient la sortie de l'option --help de chaque programme serveur du Hurd. Cela peut être un bon point de départ pour une documentation plus poussée des programmes serveur, particulièrement ceux employés par les utilisateurs, comme ext2fs, ufs, isofs, ftpfs, crash, etc.

Depuis, j'ai mis à jour le texte en utilisant des extraits de courriers électroniques provenant de la liste de diffusion du Hurd. Merci à Martin von Loewis.

Description préliminaire de l'interface utilisateur de GNU/Hurd

Actuellement, il n'y a presque rien, mais cela est toujours mieux que rien du tout, alors veuillez envoyer vos plaintes, corrections et ajouts à Dirk Ritter, <dirk@gnumatic.s.bawue.de>. Veuillez noter que mes compétences en programmation sont très limitées, alors vous ne devriez pas attendre de moi de comprendre effectivement quoi que ce soit au sujet du design et des implémentations des systèmes d'exploitation.

Index des serveurs et traducteurs du HURD :
Le serveur d'authentification "auth"
Le serveur d'arrêt inopiné "crash"
Le serveur d'exécution "exec"
Le serveur du système de fichiers ext2 "ext2fs"
Le traducteur fifo "fifo"
Le traducteur firmlink "firmlink"
Le traducteur du système de fichiers FTP "ftpfs"
Le serveur de retransmission "fwd"
Le serveur hostmux "hostmux"
Le serveur ifsock "ifsock"
Le serveur d'initialisation "init"
Le serveur du système de fichiers iso "isofs"
Le serveur magique "magic"
Le serveur new-fifo "new-fifo"
Le serveur NFS "nfs"
Le serveur null "null"
Le serveur pfinet "pfinet"
Le serveur pflocal "pflocal"
Le serveur de processus "proc"
Le traducteur de stockage "storeio"
Le traducteur de lien symbolique "symlink"
Le serveur de terminal "term"
Le serveur ufs "ufs"
Le serveur de usermux "usermux"

Le serveur d'authentification – "auth"

Échange les mots de passes de deux serveurs qui ne se font pas mutuellement confiance quand ils communiquent. Dans un sens, chaque serveur d'authentification établit un domaine de confiance (Martin von Loewis, 10 Oct 1996).

Une de ses fonctionnalités intéressantes est la possibilité pour un processus de prendre plusieurs identités à la fois, et aussi d'acquérir ou de perdre dynamiquement des identités.

Lancer "/hurd/auth --help" donne :

Usage: auth [OPTION...]

  -?, --help                 Give this help list
      --usage                Give a short usage message
  -V, --version              Print program version

Report bugs to bug-hurd@gnu.org.

Le serveur d'arrêt inopiné – "crash"

Le serveur d'arrêt inopiné s'active à chaque fois qu'une tâche reçoit un signal d'erreur fatale, par exemple parce qu'elle viole les limites de mémoires (erreur de segmentation). Le serveur d'arrêt inopiné possède trois modes de fonctionnement : en suspendant le groupe de processus (« pgrp ») de la tâche offensante, en le tuant ou en réalisant un fichier de vidage mémoire. Ce dernier moyen n'est pas encore implémenté. Pensez au serveur d'arrêt inopiné comme à un airbag.

Vous pouvez évidemment positionner le mode d'opération avec settrans, mais aussi avec fsysopts au moment de l'exécution. Cela est vrai pour le mode par défaut du système et nécessite habituellement les privilèges de superutilisateur. Un utilisateur peut choisir un mode par défaut différent avec la variable d'environnement CRASHSERVER. Vous positionnez cette variable à un inode auquel est attaché le serveur crash. Sur un système Debian GNU/Linux par défaut, ces trois opérations par défaut ont des traducteurs respectifs dans /servers/crash-*.

 These options specify the disposition of a crashing process:
  -s, --suspend              Suspend the process
  -k, --kill                 Kill the process
  -c, --core-file            Dump a core file
      --dump-core

Le serveur d'exécution – "exec"

Le serveur d'exécution gère la création d'une nouvelle image de processus à partir du fichier image.

En fait ce serveur est capable de créer une image de processus exécutable à partir de n'importe quel fichier d'image reconnu par la bibliothèque BFD (cela inclut a.out, ELF et bien d'autres). Les exécutables gzippés sont aussi reconnu (ce qui est utile pour les disquettes d'amorçage).

Lancer "/hurd/exec --help" donne :

Usage: exec [OPTION...]
Hurd standard exec server

  -?, --help                 Give this help list
      --usage                Give a short usage message
  -V, --version              Print program version

Report bugs to bug-hurd@gnu.org.

Le serveur du système de fichiers ext2 – "ext2fs"

Ce serveur s'occupe des systèmes de fichiers de type ext2. Il fait la même chose que ext2fs.static, sauf que ext2fs.static est un exécutable lié statiquement.

Lancer "/hurd/ext2fs --help" donne :

Usage: ext2fs [OPTION...] DEVICE...

If neither --interleave or --layer is specified, multiple DEVICEs are
concatenated.

  -E, --no-exec              Don't permit any execution of files on this
                             filesystem
  -I, --interleave=BLOCKS    Interleave in runs of length BLOCKS
  -L, --layer                Layer multiple devices for redundancy
  -n, --no-sync              Don't automatically sync data to disk
  -r, --readonly             Never write to disk or allow opens for writing
  -s, --sync[=INTERVAL]      If INTERVAL is supplied, sync all data not
                             actually written to disk every INTERVAL seconds,
                             otherwise operate in synchronous mode (the default
                             is to sync every 30 seconds)
  -S, --no-suid              Don't permit set-uid or set-gid execution
  -T, --store-type=TYPE      Each DEVICE names a store of type TYPE
  -w, --writable             Use normal read/write behavior

 Boot options:
      --bootflags=FLAGS
  -C, --directory=DIRECTORY
      --device-master-port=PORT
      --exec-server-task=PORT
      --host-priv-port=PORT

  -?, --help                 Give this help list
      --usage                Give a short usage message
  -V, --version              Print program version

Mandatory or optional arguments to long options are also mandatory or optional
for any corresponding short options.

If neither --interleave or --layer is specified, multiple DEVICEs are
concatenated.

Report bugs to bug-hurd@gnu.org.

Le serveur fifo – "fifo"

Le traducteur fifo implémentant les files nommées.

Lancer "/hurd/fifo --help" donne :


Usage: fifo [OPTION...]
Translator for fifos

  -d, --dgram                Reads reflect write record boundaries
  -m, --multiple-readers     Allow multiple simultaneous readers
  -n, --noblock              Don't block on open
  -?, --help                 Give this help list
      --usage                Give a short usage message
  -V, --version              Print program version

Report bugs to bug-hurd@gnu.org.

Le serveur firmlink – "firmlink"

Un traducteur pour firmlinks.

Lancer "/hurd/firmlink --help" donne :

Usage: firmlink [OPTION...] TARGET
A translator for firmlinks

  -?, --help                 Give this help list
      --usage                Give a short usage message
  -V, --version              Print program version

A firmlink is sort of half-way between a symbolic link and a hard link;

Like a symbolic link, it is `by name', and contains no actual reference to the
target.  However, the lookup returns a node which will redirect parent lookups
so that attempts to find the cwd that go through the link will reflect the link
name, not the target name.  The target referenced by the firmlink is looked up
in the namespace of the translator, not the client.

Report bugs to bug-hurd@gnu.org.

Le serveur du système de fichiers FTP – "ftpfs"

Un serveur pour serveurs de fichiers FTP.

Lancer "/hurd/ftpfs --help" donne :

Usage: ftpfs [OPTION...] REMOTE_FS [SERVER]
Hurd ftp filesystem translator

  -D, --debug[=FILE]         Print debug output to FILE

 Parameters:
      --bulk-stat-period=SECS   Period for detecting bulk stats (default 10)
      --bulk-stat-threshold=SECS   Number of stats within the bulk-stat-period
                             that trigger a bulk stat (default 5)
      --name-timeout=SECS    Time directory names are cached (default 300)
      --node-cache-size=ENTRIES   Number of recently used filesystem nodes that
                             are cached (default 50)
      --stat-timeout=SECS    Time stat information is cached (default 120)

  -?, --help                 Give this help list
      --usage                Give a short usage message

Mandatory or optional arguments to long options are also mandatory or optional
for any corresponding short options.

If SERVER is not specified, an attempt is made to extract it from REMOTE_FS,
using `SERVER:FS' notation.  SERVER can be a hostname, in which case anonymous
ftp is used, or may include a user and password like `USER:PASSWORD@HOST' (the
`:PASSWORD' part is optional).

Report bugs to bug-hurd@gnu.org.

Le serveur de retransmission – "fwd"

Quand il reçoit un accès, le traducteur fwd retransmet les requêtes à un autre serveur. Il est utilisé dans les serveurs fifo et symlink. L'idée est telle que vous n'ayez pas besoin de trente-six millions de serveurs pour réaliser des opérations aussi triviales ; fwd est utilisé pour coordonner un serveur qui doit commodément traiter avec plusieurs nœuds différents.

Lancer "/hurd/fwd --help" donne :

Usage: /hurd/fwd SERVER [TRANS_NAME [TRANS_ARG...]]

Le serveur hostmux – "hostmux"

Je n'ai aucune idée de ce à quoi ce serveur sert.

(un serveur pour les résolutions de nom d'hôte ?)

Lancer "/hurd/hostmux --help" donne :

Usage: hostmux [OPTION...] TRANSLATOR [ARG...]
A translator for invoking host-specific translators

  -H, --host-pattern=PAT     The string to replace in the translator
                             specification with the hostname; if empty, or
                             doesn't occur, the hostname is appended as
                             additional argument instead (default `${host}')
  -?, --help                 Give this help list
      --usage                Give a short usage message

Mandatory or optional arguments to long options are also mandatory or optional
for any corresponding short options.

This translator appears like a directory in which hostnames can be looked up,
and will start TRANSLATOR to service each resulting node.

Report bugs to bug-hurd@gnu.org.

Le serveur ifsock – "ifsock"

ifsock ne traite que les nœuds S_IFSOCK de système de fichiers pour les systèmes de fichiers filesystem qui ne le font pas eux-mêmes, en agissant comme un point d'accroche sur lequel accrocher les adresses de socket de domaine Unix. pfinet et pflocal implémentes l'API socket (Thomas Bushnell, 10 octobre 1996).

Lancer "/hurd/ifsock --help" donne :

/hurd/ifsock: Must be started as a translator

Le serveur d'initialisation – "init"

Un serveur pour les procédures d'amorçage du système et les configurations pour le moment de l'exécution.

Lancer "/hurd/init --help" donne :

Usage: init [OPTION...]
Start and maintain hurd core servers and system run state

  -d, --debug
  -f, --fake-boot            This hurd hasn't been booted on the raw machine
  -n, --init-name
  -q, --query                Ask for the names of servers to start
  -s, --single-user          Startup system in single-user mode
  -?, --help                 Give this help list
      --usage                Give a short usage message
  -V, --version              Print program version

Report bugs to bug-hurd@gnu.org.

Le serveur du système de fichiers iso – "isofs"

Un serveur pour les systèmes de fichiers de type ISO, utilisés communément sur les CD.

Lancer "/hurd/isofs --help" donne :

Usage: isofs [OPTION...] DEVICE...

If neither --interleave or --layer is specified, multiple DEVICEs are
concatenated.

  -E, --no-exec              Don't permit any execution of files on this
                             filesystem
  -I, --interleave=BLOCKS    Interleave in runs of length BLOCKS
  -L, --layer                Layer multiple devices for redundancy
  -n, --no-sync              Don't automatically sync data to disk
  -r, --readonly             Never write to disk or allow opens for writing
  -s, --sync[=INTERVAL]      If INTERVAL is supplied, sync all data not
                             actually written to disk every INTERVAL seconds,
                             otherwise operate in synchronous mode (the default
                             is to sync every 30 seconds)
  -S, --no-suid              Don't permit set-uid or set-gid execution
  -T, --store-type=TYPE      Each DEVICE names a store of type TYPE
  -w, --writable             Use normal read/write behavior

 Boot options:
      --bootflags=FLAGS
  -C, --directory=DIRECTORY
      --device-master-port=PORT
      --exec-server-task=PORT
      --host-priv-port=PORT

  -?, --help                 Give this help list
      --usage                Give a short usage message
  -V, --version              Print program version

Mandatory or optional arguments to long options are also mandatory or optional
for any corresponding short options.

If neither --interleave or --layer is specified, multiple DEVICEs are
concatenated.

Report bugs to bug-hurd@gnu.org.

Le serveur magique – "magic"

Un traducteur qui renvoie le résultat de nouvel essai magique MAGIC.

Les utilisateurs finaux normaux n'auront probablement pas besoin d'en savoir beaucoup à son propos, puisqu'il est utilisé, par exemple, pour faciliter les entrées et sorties du terminal. Les développeurs pourront tirer profit des éléments d'informations qu'a donnés Thomas Bushnell :

La clé est ici de savoir ce qu'est un "résultat de nouvel essai magique" ("magic retry result"). La chose à faire est de regarder le RPC dir_lookup qui est documenté dans <hurd/fs.defs> et <hurd/hurd_types.defs>.
Les résultats de consultation de Magic sont basiquement obtenus dans les cas où la consultation a besoin d'informations qui font partie de l'état d'appel du processus, et non de la procédure normale de consultation de nom. Ces états ("punt to caller's state") doivent chacun être spécialement implémentés dans la bibliothèque C (voir libc/hurd/hurdlookup.c), et couvrir les cas connus, afin de proposer les fonctionnalités fournies par bien d'autres systèmes.

Il a aussi gentiment expliqué un comportement particulier qui embrouille l'utilisateur final moyen quand ils le rencontrent pour la première fois :

L'incapacité de faire "ls /dev/fd" est due au fait que le traducteur ne connaît pas les descripteurs de fichiers qui sont ouverts. Il ne peut alors pas vous dire lesquels existent. Mais son comportement est parfaitement identique sur les autres systèmes.

Lancer "/hurd/magic --help" donne :

Usage: magic [OPTION...] MAGIC
A translator that returns the magic retry result MAGIC

  -?, --help                 Give this help list
      --usage                Give a short usage message
  -V, --version              Print program version

Report bugs to bug-hurd@gnu.org.

Le serveur new-fifo – "new-fifo"

Serveur alternatif pour files nommées.

Lancer "/hurd/new-fifo --help" donne :

Usage: new-fifo [OPTION...]

  -d, --dgram                Reflect write record boundaries
  -n, --noblock              Don't block on open
  -r, --multiple-readers     Allow multiple simultaneous readers
  -s, --server               Operate in server mode
  -S, --standalone           Don't attempt to use a fifo server
  -U, --use-server=NAME      Attempt use server NAME
  -?, --help                 Give this help list
      --usage                Give a short usage message

Mandatory or optional arguments to long options are also mandatory or optional
for any corresponding short options.

Report bugs to bug-hurd@gnu.org.

Le serveur de systèmes de fichiers en réseau – "nfs"

Gestion de systèmes de fichiers en réseau pour le systèmes de fichiers en réseau de SUN (NFS).

Lancer "/hurd/nfs --help" donne :

Usage: nfs [OPTION...] REMOTE_FS [HOST]
Hurd nfs translator

  -h, --hard                 Retry file systems requests until they succeed
  -s, --soft[=RETRIES]       File system requests will eventually fail, after
                             RETRIES tries if specified, otherwise 3
  -R, --read-size=BYTES, --rsize=BYTES
                             Max packet size for reads (default 8192)
  -W, --write-size=BYTES, --wsize=BYTES
                             Max packet size for writes (default 8192)

 Timeouts:
      --cache-timeout=SEC    Timeout for cached file data (default 3)
      --init-transmit-timeout=SEC
      --max-transmit-timeout=SEC
      --name-cache-neg-timeout=SEC
                             Timeout for negative directory cache entries
                             (default 3)
      --name-cache-timeout=SEC   Timeout for positive directory cache entries
                             (default 3)
      --stat-timeout=SEC     Timeout for cached stat information (default 3)

 Server specification:
      --default-mount-port=PORT   Port for mount server, if none can be found
                             automatically
      --default-nfs-port=PORT   Port for nfs operations, if none can be found
                             automatically
      --mount-port=PORT      Port for mount server
      --mount-program=ID[.VERS]
      --nfs-port=PORT        Port for nfs operations
      --nfs-program=ID[.VERS]
      --pmap-port=SVC|PORT

  -?, --help                 Give this help list
      --usage                Give a short usage message

Mandatory or optional arguments to long options are also mandatory or optional
for any corresponding short options.

If HOST is not specified, an attempt is made to extract it from REMOTE_FS,
using either the `HOST:FS' or `FS@HOST' notations.

Report bugs to bug-hurd@gnu.org.

Le lavabo de la cuisine – "null"

Un serveur à beaucoup d'espace libre et plein de zéros. Implémente /dev/null et /dev/zero.

Lancer "/hurd/null --help" donne :

Usage: null [OPTION...]
Endless sink and null source

  -?, --help                 Give this help list
      --usage                Give a short usage message
  -V, --version              Print program version

Report bugs to bug-hurd@gnu.org.

Le serveur TCP/IP – "pfinet"

Un serveur pour TCP/IP, qui implémente la famille de protocoles PF_INET (IPv4). Le serveur qui implémentera la famille de protocoles IPv6 sera appelé pfinet6, dans le schéma actuel.

Mettre cela en place n'est pas dur du tout. C'est toujours placé dans /servers/socket/2, parce que c'est là que la glibc le cherchera. Soyez donc sûr de l'installer ainsi : settrans /servers/socket/2 /hurd/pfinet -6 /servers/socket/26 --interface=eth0 OPTIONS et settrans /servers/socket/26 /hurd/pfinet -4 /servers/socket/2 --interface=eth0 OPTIONS, où OPTIONS indique les adresse IP, masque de sous-réseau et passerelle (s'il en est). Seule une interface réseau est actuellement supportée. Plus tard, vous pourrez aussi ajouter d'autres interfaces comme eth1 et ainsi de suite avec la même commande.

Si vous n'avez pas de carte réseau, vous devriez au moins installer l'interface de bouclage (« loopback »), afin que l'hôte local (« localhost ») fonctionne (important pour le système d'impression et autres choses utiles). Faites-le avec la commande susmentionnée, mais ne spécifiez aucune interface ni OPTIONS. Un simple settrans /servers/socket/1 /hurd/pfinet suffira.

Lancer "/hurd/pfinet --help" donne :

Swansea University Computer Society TCP/IP for NET3.019
IP Protocols: ICMP, UDP, TCP
Usage: pfinet [OPTION...]
Interface-specific options before the first interface specification apply to
the first following interface; otherwise they apply to the previously specified
interface.

  -i, --interface=DEVICE     Network interface to use

 These apply to a given interface:
  -a, --address=ADDRESS      Set the network address
  -g, --gateway=ADDRESS      Set the default gateway
  -m, --netmask=MASK         Set the netmask
  -s, --shutdown             Shut it down

  -?, --help                 Give this help list
      --usage                Give a short usage message

Mandatory or optional arguments to long options are also mandatory or optional
for any corresponding short options.

Report bugs to bug-hurd@gnu.org.

Le serveur pflocal – "pflocal"

Implémente les sockets de domaine UNIX. Nécessaire pour les files, par exemple.

Lancer "/hurd/pflocal --help" donne :

Usage: /hurd/pflocal

Le serveur de processus – "proc"

Le serveur de processus assigne les PID et les structures de processus aux tâches, et gère tout ce qui se trouve au niveau processus comme wait, des choses comme fork, la gestion de la bibliothèque C.

Lancer "/hurd/proc --help" donne :

Usage: proc [OPTION...]
Hurd process server

  -?, --help                 Give this help list
      --usage                Give a short usage message
  -V, --version              Print program version

Report bugs to bug-hurd@gnu.org.

Le traducteur de stockage – "storeio"

Un traducteur pour périphériques de stockages.

Lancer "/hurd/storeio --help" donne :

Usage: storeio [OPTION...] DEVICE...
Translator for devices and other stores

  -I, --interleave=BLOCKS    Interleave in runs of length BLOCKS
  -L, --layer                Layer multiple devices for redundancy
  -n, --rdev=ID              The stat rdev number for this node; may be either
                             a single integer, or of the form MAJOR,MINOR
  -r, --readonly             Disallow writing
  -T, --store-type=TYPE      Each DEVICE names a store of type TYPE
  -w, --writable             Allow writing
  -?, --help                 Give this help list
      --usage                Give a short usage message
  -V, --version              Print program version

Mandatory or optional arguments to long options are also mandatory or optional
for any corresponding short options.

If neither --interleave or --layer is specified, multiple DEVICEs are
concatenated.

Report bugs to bug-hurd@gnu.org.

Le serveur de lien symbolique – "symlink"

Un serveur de liens symboliques pour les systèmes de fichiers qui ne les gèrent pas eux-mêmes.

Lancer "/hurd/symlink --help" donne :

?
(Il n'y a aucune sortie ? Comme c'est étrange...)

Le serveur terminal – "term"

Implémente un terminal POSIX.

Lancer "/hurd/term --help" donne :

Usage: term ttyname type arg

Le serveur ufs – "ufs"

Un serveur pour les systèmes de fichiers ufs-type. Il fait la même chose qu'ufs.static, sauf qu'ufs.static est un exécutable lié statiquement.

Lancer "/hurd/ufs --help" donne :

Usage: ufs [OPTION...] DEVICE...

If neither --interleave or --layer is specified, multiple DEVICEs are
concatenated.

  -C, --compat=FMT           FMT may be GNU, 4.4, or 4.2, and determines which
                             filesystem extensions are written onto the disk
                             (default is GNU)
  -E, --no-exec              Don't permit any execution of files on this
                             filesystem
  -I, --interleave=BLOCKS    Interleave in runs of length BLOCKS
  -L, --layer                Layer multiple devices for redundancy
  -n, --no-sync              Don't automatically sync data to disk
  -r, --readonly             Never write to disk or allow opens for writing
  -s, --sync[=INTERVAL]      If INTERVAL is supplied, sync all data not
                             actually written to disk every INTERVAL seconds,
                             otherwise operate in synchronous mode (the default
                             is to sync every 30 seconds)
  -S, --no-suid              Don't permit set-uid or set-gid execution
  -T, --store-type=TYPE      Each DEVICE names a store of type TYPE
  -w, --writable             Use normal read/write behavior

 Boot options:
      --bootflags=FLAGS
      --device-master-port=PORT
      --directory=DIRECTORY
      --exec-server-task=PORT
      --host-priv-port=PORT

  -?, --help                 Give this help list
      --usage                Give a short usage message
  -V, --version              Print program version

Mandatory or optional arguments to long options are also mandatory or optional
for any corresponding short options.

If neither --interleave or --layer is specified, multiple DEVICEs are
concatenated.

Report bugs to bug-hurd@gnu.org.

Le traducteur usermux – "usermux"

Un traducteur pour invoquer des traducteurs spécifiques à l'utilisateur.

Lancer "/hurd/usermux --help" donne :

Usage: usermux [OPTION...] [TRANSLATOR [ARG...]]
A translator for invoking user-specific translators

  -C, --clear-patterns       Reset all patterns to empty; this option may then
                             be followed by options to set specific patterns
      --home-pattern=PAT     The string to replace in the translator
                             specification with the user's home directory
                             (default `${home}')
      --uid-pattern=PAT      The string to replace in the translator
                             specification with the uid (default `${uid}')
      --user-pattern=PAT     The string to replace in the translator
                             specification with the user name (default
                             `${user}')
  -?, --help                 Give this help list
      --usage                Give a short usage message

This translator appears like a directory in which user names can be looked up,
and will start TRANSLATOR to service each resulting node.  If no pattern occurs
in the translator specification, the users's home directory is appended to it
instead; TRANSLATOR defaults to /hurd/symlink.

Report bugs to bug-hurd@gnu.org.