[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

relectures du hurd



Bonjour,
merci à Jérome et Martine pour les relectures.
Cordialement.

#use wml::debian::template title="Debian GNU/Hurd --- Documentation" NOHEADER="yes"
#use wml::debian::translation-check translation="1.3"

#include "$(ENGLISHDIR)/ports/hurd/menu.inc"

<h1>Debian GNU-Hurd</h1>
<h2>Traducteurs</h2>
<ul>
<li><a href="#concept" name="TOC_concept">Concept</a></li>
<li><a href="#examples" name="TOC_examples">Exemples</a></li>
<li><a href="#actpas" name="TOC_actpas">Traducteurs passifs, traducteurs actifs</a></li>
<li><a href="#manage" name="TOC_manage">Gestion des traducteurs</a></li>
</ul>


<h3><a href="#TOC_concept" name="concept">Concept</a></h3>
<p>
Avant d'étudier en détail les traducteurs, voyons le fonctionnement d'un
système de fichiers traditionnel. Un système de fichiers est une zone
de données organisée en un arbre hiérarchique de répertoires
et de fichiers. Ces répertoires et fichiers sont désignés par une
chaîne de caractères spéciale, le <em>chemin</em>. D'autres données que
de simples fichiers ou répertoires peuvent être présents dans cet arbre:</p>
<ul><li>des liens symboliques, qui permettent de référencer un fichier depuis
d'autres endroits de l'arbre,</li>
<li>des liens physiques, qui désignent un même fichier unique depuis
plusieurs emplacements,</li>
<li>des fichiers spéciaux de périphériques, qui permettent de
communiquer avec les pilotes de périphériques du noyau,</li>
<li>des points de montage, qui permettent d'inclure d'autres systèmes
de fichiers dans l'arborescence,</li>
<li>ainsi que d'autres objets obscurs comme les fifos ou les sockets.</li></ul>
<p>
Malgré les grandes différences qui existent entre ces objets,
ils partagent certaines propriétés générales, par exemple,
ils ont tous un propriétaire et un groupe qui leur est
associé, ainsi que des droits d'accès (permissions).
Ces informations sont conservées dans des inodes. Voilà encore une
propriété partagée: chacun de ces objets a exactement un inode qui lui
est associé (à l'exception des liens physiques qui sont plusieurs à
partager le même inode). Quelques fois, l'inode contient un peu plus
d'informations. Par exemple, il peut contenir la destination d'un lien
symbolique.</p>
<p>
Cependant, ces ressemblances ne sont généralement pas exploitées dans
les implémentations, malgré une interface de programmation commune.
Tous les inodes peuvent être accédés par des appels POSIX standards,
par exemple <code>read()</code> et <code>write()</code>. Mais pour
ajouter un nouveau type d'objet (par exemple un nouveau type de lien)
sur un noyau unix monolithique classique, il faut modifier le code
de chaque système de fichiers séparément.</p>
<p>
Avec Hurd, les choses sont différentes.
Bien sûr, lorsqu'un système de fichiers particulier (comme ext2fs)
ajoute à un objet standard (comme le lien symbolique) une propriété
particulière (comme le lien rapide), Hurd l'implémente dans un serveur
de système de fichiers spécifique. Mais sa grande force est de posséder
une interface générique permettant d'ajouter de telles fonctionnalités
sans modifier le code existant.</p>
<p>
L'astuce consiste à permettre à un programme de s'insérer entre le contenu
effectif du fichier et l'utilisateur qui accède à ce fichier.
Un tel programme s'appelle un traducteur, parcequ'il est capable
de traiter et transformer des requêtes de plein de façons différentes.
En d'autres termes, un traducteur est un serveur Hurd qui implémente
l'interface de base des système de fichiers.</p>
<p>
Les traducteurs ont des propriétés très intéressantes. Vu du noyau, ce
ne sont que des processus comme les autres, qui
peuvent être lancés par n'importe quel utilisateur. Vous n'avez pas besoin
des privilèges de root pour installer ou modifier un traducteur, il
suffit des droits d'accès à l'inode auquel est rattaché ce traducteur.
De nombreux traducteurs n'ont pas besoin d'un fichier concret pour
fonctionner, ils fournissent des informations par leurs propres moyens.
C'est pourquoi les informations sur les traducteurs sont associées
aux inodes.</p>
<p>
Un traducteur a pour responsabilité de répondre à toutes les requêtes
de système de fichiers qui agissent sur l'inode auquel il est rattaché.
Comme il n'est pas limité aux objets habituels (lien, fichier spécial
de périphérique, etc), il est libre de retourner tout ce qui peut avoir
un sens. On pourrait imaginer un traducteur qui se comporte comme un
répertoire lorsqu'on y accède par <code>cd</code> ou <code>ls</code> et
en même temps comme un fichier lorsqu'on y accède par <code>cat</code>.</p>

<h3><a href="#TOC_examples" name="examples">Exemples</a></h3>
<h4>Point de montage</h4>
<p>
Un point de montage peut être vu comme un inode avec un traducteur
spécial qui lui est rattaché. Son utilité est de traduire les opérations
de système de fichiers sur le point de montage en opérations sur
d'autres données, par exemple une autre partition.</p>
<p>
C'est en effet ainsi que les systèmes de fichiers sont implémentés sur
Hurd. Un système de fichiers est un traducteur. Ce traducteur prend en
argument un périphérique de stockage, et effectue de façon transparente
toutes les opérations de système de fichiers.</p>

<h4>Fichier spécial de périphérique</h4>
<p>
Il existe de très nombreuses sortes de fichiers de périphérique, et dans un
système avec un noyau monolithique, ils sont tous gérés par le noyau
lui-même. Dans Hurd, tous les fichiers de périphérique sont gérés par des
traducteurs. Un même traducteur peut gérer de nombreux fichiers de
périphériques similaires, par exemple toutes les partitions de disques durs.
Ainsi, le nombre réel de traducteurs nécessaires est réduit. En revanche,
chaque fois qu'un fichier de périphérique est utilisé, un nouveau
thread est lancé dans le traducteur. Comme Hurd est hautement multi-thread,
cette opération n'est pas coûteuse du tout.</p>
<p>
Lorsqu'il doit accéder à du matériel, un traducteur se met à communiquer avec
le noyau pour transférer des données. Mais si aucun accès au matériel n'est
nécessaire, le noyau n'est plus du tout concerné. Par exemple,
<code>/dev/zero</code> ne nécessite aucun accès matériel, donc il est
entièrement implémenté dans l'espace utilisateur.</p>

<h4>Lien symbolique</h4>
<p>
Un lien symbolique peut être vu comme un traducteur. L'accès à un lien
symbolique lancerait le traducteur, qui ferait suivre les requêtes vers
le système de fichiers contenant le fichier vers lequel le lien pointe.</p>
<p>
Cependant, pour de meilleures performances, les systèmes de fichiers qui
ont un support natif des liens symboliques peuvent en tirer avantage
et les implémenter différemment. En interne, l'accès à un lien symbolique
ne lance pas un nouveau thread de traducteur, mais pour l'utilisateur
tout se passe comme si un traducteur passif était présent (voyez plus bas
pour une explication sur les traducteurs passifs).</p>
<p>
Comme Hurd fournit un traducteur de lien symbolique, tout serveur de
système de fichiers qui supporte les traducteurs supporte automatiquement les
liens symboliques (et les firmlinks, et les fichiers de périphériques, etc) !
Cela signifie que vous pouvez faire tourner une nouveau type de système de
fichiers très rapidement, et ajouter le support natif des liens symbolique
et d'autres fonctionnalités plus tard.</p>

<h3><a href="#TOC_actpas" name="actpas">Traducteur passif, traducteur actif</a></h3>
<p>
Il y a deux types de traducteurs, les traducteurs passifs, et les traducteurs
actifs. Ce sont réellement deux choses différentes, qu'il ne faut pas
mélanger, mais ces deux types des traducteurs sont en étroite relation.
</p>

<h4>Traducteur actif</h4>
<p>
Un traducteur actif est un processus de traducteur qui tourne, comme
expliqué plus haut. Vous pouvez ajouter ou retirer un traducteur actif
en utilisant la commande
<a href="reference-manual/hurd_7.html#SEC49"><code>settrans -a</code></a>.
L'option <code>-a</code> est nécessaire pour indiquer à
<code>settrans</code> que vous désirez agir sur un traducteur actif.</p>
<p>
La commande <code>settrans</code> prend trois catégories d'arguments.
Premièrement, les options propres à la commande
<code>settrans</code> elle-même, comme <code>-a</code> pour modifier
le traducteur actif. Ensuite, vous précisez l'inode à modifier.
Rappelez-vous qu'un traducteur est toujours rattaché à un inode dans
une hiérarchie de répertoires. Vous ne pouvez modifier qu'un seul inode
à la fois. Si vous n'indiquez pas plus d'arguments, <code>settrans</code>
essayera d'enlever le traducteur existant. L'énergie qu'il y mettra
dépend des options spécifiées (si le traducteur est en cours
d'utilisation, vous aurez un message d'erreur "device or resource busy"
à moins de forcer sa suppression).</p>
<p>
Mais si vous précisez d'autres arguments, ils seront interprétés comme
une ligne de commande de lancement du traducteur. Cela signifie que
l'argument qui suit est le nom de l'exécutable du traducteur et que
les suivants sont ses options, et non celles de la commande
<code>settrans</code>.</p>
<p>
Par exemple, pour monter une partition ext2fs, il suffit de lancer
<code>settrans -a -c /mnt /hurd/ext2fs /dev/hd2s5</code>. L'option
<code>-c</code> créera le point de montage s'il n'existe pas déjà.
Notez que ce point de montage n'est pas nécessairement un répertoire.
Pour démonter cette partition, il suffit de faire
<code>settrans -a /mnt</code>.</p>

<h4>Traducteur passif</h4>
<p>
Un traducteur passif est positionné ou modifié par la même syntaxe
que pour un traducteur actif (il suffit de retirer le <code>-a</code>),
donc tout ce qui a été dit précédemment est applicable aux traducteurs
passifs. Cependant, il y a une différence: les traducteurs passifs ne
sont pas lancés immédiatement.</p>
<p>
Cela correspond finalement au sens que vous voulez donner à un traducteur.
Vous ne voulez pas que la partition soit montée à moins d'accéder réellement
à cette partition. Vous ne voulez pas lancer le réseau tant qu'il n'y a
pas de trafic, etc.</p>
<p>
Au lieu de cela, au premier accès au traducteur passif, un traducteur
actif est lancé à partir de la ligne de commande stockée dans l'inode.
Ce mécanisme est un peu similaire à l'automounter de Linux. La différence,
c'est qu'il ne s'agit d'un petit plus à mettre en place manuellement,
mais d'une partie intégrante du système. La mise en place de traducteurs
passifs repousse donc le lancement de ces traducteurs au moment où
ils seront réellement nécessaires. Par ailleurs, si un traducteur
actif meurt pour une quelconque raison, il est relancé au premier
accès qui suit à l'inode.</p>
<p>
Il y a une autre différence: les traducteurs actifs peuvent mourir ou
se perdre. Dès qu'un traducteur est tué (par exemple, parceque la machine
est réamorcée), il est perdu pour toujours. Les traducteur passifs
sont conservés dans les inodes pendant les réamorçages jusqu'à ce que
vous les modifiez par le programme <code>settrans</code>, ou que
vous effaciez les inodes auxquels ils sont attachés. Cela signifie
que vous n'avez pas de fichier de configuration à tenir à jour pour
vos points de montage.</p>
<p>
Un dernier point: même si vous avez mis en place un traducteur passif,
vous pouvez toujours lancer un traducteur actif différent.
Ce n'est que dans le cas où aucun traducteur n'est actif au moment où
l'inode est utilisé qu'un traducteur est lancé automatiquement par le
traducteur passif.</p>

<h3><a href="#TOC_manage" name="manage">Gestion des traducteurs</a></h3>
<p>
Comme indiqué plus haut, vous pouvez utiliser
<a href="reference-manual/hurd_7.html#SEC49"><code>settrans</code></a>
pour lancer ou modifier les traducteurs passifs et actifs. Il existe de
nombreuses options pour changer le comportement de <code>settrans</code>
en cas d'erreur, ou pour conditionner son action.
Voici quelques utilisations classiques:</p>
<ul><li><code>settrans -c /mnt /hurd/ext2fs /dev/hd2s5</code> monte une
partition, et le traducteur restera permanent pendant les redémarrages.</li>
<li><code>settrans -a /mnt /hurd/ext2fs ~/dummy.fs</code> monte un
système de fichiers dans un fichier de données, et le montage
disparaîtra si le traducteur meurt.
<li><code>settrans -fg /nfs-data</code> force un traducteur à disparaître.</li>
</ul>
<p>
Vous pouvez utiliser la commande
<a href="hurd-doc-utils#showtrans"><code>showtrans</code></a>
pour voir si un traducteur est attaché à un inode. Cette commande n'affichera
cependant que le traducteur passif.</p>
<p>
Vous pouvez changer les options d'un traducteur actif (de système de
fichiers), avec la commande <code>fsysopts</code> sans le relancer.
C'est vraiment pratique. Par exemple, vous pouvez faire l'équivalent
d'un "remontage de partition en lecture seule" sous Linux en lançant
simplement <code>fsysopts /point_de_montage --readonly</code>.
Le traducteur actif changera son comportement dans la mesure du possible.
<code>fsysopts /point_de_montage</code> sans autre paramètre affiche
l'état courant du traducteur.</p>

<h4>Exemples</h4>
<p>
Je vous recommande de commencer par lire la commande <code>/bin/mount</code>,
c'est juste un petit script. Comme la mise en place de traducteurs
de systèmes de fichiers est similaire au montage de partitions, vous
pourrez ainsi facilement maîtriser ce concept. Faites une image
d'un système de fichiers avec <code>dd if=/dev/zero of=dummy.fs bs=1024k
count=8; mke2fs dummy.fs</code> et montez-la avec <code>settrans -c dummy
/hurd/ext2fs `pwd`/dummy.fs</code>. Notez que le traducteur n'est pas
encore lancé, il n'y a pas de nouveau processus <code>ext2fs</code>
qui tourne (verifiez avec <code>ps Aux</code>). Vérifiez que tout est
correct en utilisant <code>showtrans</code>.</p>
<p>
Maintenant, tapez <code>ls dummy</code>, vous remarquerez un court
délai pendant que le traducteur démarre. Après cela, il n'y aura plus
de délais pour accéder à dummy. Sous Linux, on aurait dit que vous
avez automonté un système de fichiers <code>loop</code>. Vérifiez
avec <code>ps Aux</code> qu'il y a un processus <code>ext2fs dummy</code>
qui tourne. Maintenant, mettez quelques fichiers dans ce nouveau
répertoire. Essayez de passer ce système de fichier en lecture seule
avec <code>fsysopts</code>. Notez que de nouvelles tentatives d'écriture
échouent maintenant. Essayez de tuer le traducteur actif avec
<code>settrans -g</code>.</p>
<p>
Vous devriez commencer à comprendre ce qui se passe. Maintenant, rappelez-vous,
ce n'est qu'un seul serveur, le serveur Hurd ext2fs. Il existe de nombreux
autres serveurs dans le répertoire <code>/hurd</code>. Certains sont
pour des systèmes de fichiers. Certains sont nécessaires pour
des fonctionnalités des systèmes de fichiers, comme les liens.
Certains sont nécessaires pour les fichiers de périphériques. Certains
sont nécessaires pour le réseau. Imaginez que vous montez un serveur
FTP avec <code>settrans</code> et que vous téléchargez des fichiers
en utilisant simplement la commande <code>cp</code> standard. Ou bien
que vous éditez votre site web avec la commande
<code>emacs /ftp/homepage.my.server.org/index.html</code> !</p>

#use wml::debian::template title="Debian GNU/Hurd --- Documentation" NOHEADER="yes"
#use wml::debian::translation-check translation="1.10"

#include "$(ENGLISHDIR)/ports/hurd/menu.inc"

<h1>
Debian GNU/Hurd</h1>
<h2>
Foire Aux Questions (FAQ)</h2>

<p>
Notez que cette FAQ n'est pas seulement destinée à ne contenir que des 
questions fréquemment posées, mais plus généralement tout sujet intéressant 
abordé dans les listes de discussion Hurd. Mon intention est d'utiliser ce
document comme fourre-tout en attendant que chaque information ait sa
propre place.

<h3>
Général</h3>
<p>
<b>
Question</b>:
Hurd est-il en cours de développement, ou bien est-ce un projet mort ?
</p>
<p>
<b>
Réponse</b>: Hurd est en développement très actif ces derniers temps.
Nous corrigeons des bogues pour atteindre une meilleure stabilité, et
pour porter la plupart des paquets standards. Nous ajoutons également
de nouvelles fonctionnalités, mais rien de majeur.
Nous aimerions avoir plus de développeurs à bord. Il y a de nombreuses
fonctionnalités très intéressantes à implémenter, et vous aurez
rarement l'occasion de concevoir et de mettre en place des éléments
d'un système d'exploitation aussi exitant!

<p>
<b>
Question</b>: Est-ce que ça tourne ?
<p>
<b>
Réponse</b>: Oui.

<p>
<b>
Question</b>: Qu'est ce que le Hurd ?
<p>
<b>
Réponse</b>: Hurd signifie Hird of Unix Replacing Daemons (« Hird des démons 
de remplacement d'Unix ») alors que Hird signifie Hurd of Interfaces 
Representing Depth (« Hurd des couches de remplacement d'interfaces »).
<p>
Hurd est une série de serveurs fonctionnants sur un micronoyau et fournissants 
un environnement compatible Unix.


<h3>
L'installation</h3>

<p>
<b>
Question</b>: Quel type de matériel est supporté par Hurd ?
<p>
<b>
Réponse</b>: Veuillez lire le <a
href="http://www.urbanophile.com/arenn/hacking/hurd/hurd-hardware.html";>guide 
de compatibilité matérielle</a> pour la réponse à votre question.

<p>
<b>
Question</b>:
Quel type de partition dois-je utiliser pour ma partition GNU/Hurd ?
<p>
<b>Réponse</b>: Choisissez un système de fichier ext2. L'autre solution est
 d'utiliser ufs, dans le style BSD. Le numéro de type de partition pour 
ext2fs est 0x83 (le même que pour Linux), <em>et pas</em> 0x63 (GNU Hurd).
Thomas explique pourquoi 0x63 n'est pas le bon choix:
<blockquote>
Un jour, nous créerons peut-être un nouveau format de système de fichier,
qui s'appellera probablement le système de fichier GNU Hurd, et pourrait
bien utiliser ce code de partition. Mais de toute façon, il est toujours
erroné d'utiliser ce code pour une partition ext2fs, comme le fait
remarquer Roland.
</blockquote>

<p>
<b>
Question</b>: Quel est le nom et le numéro de ma partition ?</p>
<p>
<b>Réponse</b>: Je savais que vous poseriez cette question. Si je devais 
réduire cette FAQ à une seule question, je choisirais celle-ci. C'est plutôt 
simple, mais vous devez savoir qu'il y a en réalité trois convention de nomage.
<p>
Toutes les conventions de nommage utilisent <code>hd</code> pour IDE et
<code>sd</code> pour les disques SCSI. C'est tout pour les points
communs. Maintenant les différences.
<p>
Pour commencer, le numéro du disque. Si c'est un disque SCSI, vous
devez trouver son numéro dans la chaîne SCSI. Si c'est un disque IDE,
vous devez trouver sur quel contrôleur il est, et s'il est maître ou
esclave. Avec Linux, le disque maître du contrôleur primaire a la
lettre "a", et le disque esclave la lettre "b". Le maître et l'esclave
du contrôleur secondaire ont respectivement les lettres "c" et "d".
Hurd utilise la notation BSD, et les nomme "0", "1", "2" et "3" au
lieu de "a", "b", "c" et "d". Vous avez donc <code>/dev/hdc</code> sous
Linux, mais <code>/dev/hd2</code> sous Hurd. C'est clair ? Bien. GRUB
fait encore différemment! GRUB fait comme le BIOS, il énumère tous les
disques installés sur lesquels il peut amorcer le système en commençant
à 0 et par incrément de 1. Donc "hd(0,?)" est une partition sur le premier
disque sur lequel il peut amorcer le système, indépendamment de sa
situation de maître ou esclave ou autre. Le deuxième disque qu'il trouve
est "hd(1,?)", etc. Heureusement, le BIOS fait sa recherche dans l'ordre
bien précis contrôleur primaire maître/esclave, contrôleur secondaire
maître/esclave.
<p>
Maintenant, le numéro de partition. Le numéro de partition (pour les
partitions primaires, comme sous DOS) est le même sous Linux et sous Hurd,
excepté que Hurd utilise la notation BSD avec un séparateur "s" (NDT:
du mot anglais "slice", tranche). On a donc <code>/dev/hdc3</code> sous
Linux, mais <code>/dev/hd2s3</code> sous Hurd. Si vous travaillez sous BSD,
vous connaissez donc déjà le nom Hurd de cette partition. GRUB, une fois de
plus, fait les choses différemment: il commence à compter à partir de "0",
donc <code>/dev/hd0s3</code> est <code>hd(0,2)</code> pour GRUB, <em>pas</em> <code>hd(0,3)</code>!

<p>
<b>
Question</b>:
Comment puis-je ajouter une partition de pagination ?
<p>
<b>
Réponse</b>:
Il suffit d'ajouter cette partition de pagination dans
<code>/etc/fstab</code>, comme vous le feriez sous Linux. Vous pouvez paginer
sur une partition de pagination Linux, et Hurd respectera sa signature
(dans ses deux versions). Mais Hurd sera ravi de paginer sur tout autre
espace disque et écrasera tout ce qu'il y trouvera, donc
faites attention !
<p>
Si vous préférez paginer sur un fichier, ou être certain qu'il vérifie
la signature de pagination Linux avant d'écraser les données qui s'y
trouvent, vous devez modifier <code>/boot/servers.boot</code>. La syntaxe 
est le nom de fichier spécial de la partition, suivi éventuellement du 
nom du fichier de pagination sur un ext2fs, suivi d'un espace et au choix
<code>$(add-raw-paging-file)</code>, <code>$(add-linux-paging-file)</code>, 
<code>$(add-paging-file)</code>. Le premier fonctionne avec n'importe quel
fichier ou partition, et ne respecte aucune signature. Le deuxième fait
une vérification de sécurité, et ne fonctionne que si une signature de
pagination linux est trouvée. Le troisième recherche une signature de
pagination (et la respecte le cas échéant), mais passe en pagination
brute s'il n'en trouve pas. C'est le fonctionnement par défaut des
entrées de <code>/etc/fstab</code>.

<p>
<b>
Question</b>:
J'obtiens l'erreur <code>Operation not permitted</code> à l'installation !
<p>
<b>
Réponse</b>: Vous avez oublié d'indiquer que le propriétaire du système 
de fichiers de la partition Hurd est <code>hurd</code>. Hurd utilise des 
informations supplémentaires dans les inodes pour positionner les traducteurs,
donc la partition doit être marquée comme « appartenant à hurd ».
Vous pouvez le faire à la création de la partition avec <code>mke2fs -o hurd
/dev/XXX</code> ou bien plus tard avec le script <code>e2os</code>.

<p>
<b>
Question</b>: Quelle est la signification de cette erreur ?
<pre>
/hurd/ext2fs.static: cannot vm_map whole disk: (os/kern) no space available
</pre>
<p>
<b>
Réponse</b>: Cela signifie que votre partition fait plus de 1Go. De telles 
partitions ne sont pas encore supportées, désolé.

<p>
<b>
Question</b>: Après la fin de <code>native-install</code>, j'étais obligé 
d'écrire ccoommmmee cceeccii. En particulier, j'ai dû taper
<code>rreebboooott</code> pour réamorcer le système.
<p>
<b>
Réponse</b>: C'est rigolo, hein ? Malencontreusement, deux serveurs 
<code>term</code>sont lancés et se partagent les entrées clavier. Après un 
réamorçage, le problème disparait. Il n'y a pas encore de solution connue 
maisnous gardons un oeil sur ce problème. Si <code>tar</code> supportait
les traducteurs, nous n'aurions pas ce problème.

<p>
<b>
Question</b>:
Pourquoi <code>/usr</code> est-il un lien symbolique sur <code>.</code> ?
<p>
<b>
Réponse</b>: La distinction entre <code>/</code> et <code>/usr</code> a une
justification historique, du temps où les systèmes Unix étaient amorcés
à partir de deux bandes, une petite bande root et un plus grosse bande
usr. Ajourd'hui, il est toujours pratique d'avoir des partitions séparées
pour ces deux espaces. Hurd se débarasse de ces rebus historiques, parce que
nous pensons avoir trouvé une solution plus souple, les systèmes de fichiers
cachés. Malheureusement les systèmes de fichiers cachés ne sont pas encore 
implémentés.

<p>
<b>
Question</b>: Comment puis-je configurer ma carte réseau ? Elle a été 
autodetectée par GNU Mach.
<p>
<b>
Réponse</b>: Configurez le serveur <a href="hurd-doc-server">
<code>pfinet</code></a>.
N'oubliez pas non plus de configurer <code>/etc/resolv.conf</code>,
<code>/etc/hosts</code>, etc.
<p>
Vous n'avez bien sûr besoin de le faire que si la routine d'installation 
ne le fait pas à votre place.

<p>
<b>
Question</b>: Les pipes ne marchent pas!
<p>
<b>
Réponse</b>: <code>settrans -fgc /servers/socket/1 /hurd/pflocal</code> 
devrait améliorer les choses.

<p>
<b>
Question</b>: Lorsque l'APM du BIOS stoppe mes disques durs, Hurd n'arrive 
pas à les relancer !
<p>
<b>
Réponse</b>:
L'APM n'est pas supporté dans la version actuelle de GNU Mach, désolé.
Désactivez l'APM dans la configuration de votre BIOS.

<p>
<b>
Question</b>:
Et X ?
<p>
<b>
Réponse</b>: Il fonctionne ! Les paquets sont disponibles sur tout mirroir 
ftp Debian. XFree86 4.0.2 est disponible, de même que quelques serveurs v3. 
Les instructions sur la manière d'utiliser les paquets sont sur les archives 
de la liste de diffusion (les liens seront fournis plus tard).

<p>
<b>
Question</b>: Mes clients X11 ne marchent pas !
<p>
<b>
Réponse</b>: Essayez <code>export LD_LIBRARY_PATH=/usr/X11R6</code>. C'est 
un problème de résolution de liens. Hurd utilise <code>RPATH</code>, tandis 
que Debian l'évite. 

<h3>
Utilisation de Hurd</h3>

<p>
<b>
Question</b>:
Qu'est-ce qu'un traducteur ?
<p>
<b>
Réponse</b>: Il existe un <a href="hurd-doc-translator">texte sur les 
traducteurs</a> disponible. Lisez-le et vous pourrez poser les questions 
qui vous restent manquent sur la liste de diffusion.

<p>
<b>
Question</b>: 
Pourquoi puis-je faire un <code>read()</code> sur un répertoire ?
<p>
<b>
Réponse</b>: Il est important de comprendre qu'il n'y a rien de spécial sur 
les répertoires avec Hurd, c'est un fichier comme un autre. Cela fait partie 
du concept de traducteur où ce dernier peut apparaître comme un répertoire 
que comme un fichier.

<p><b>Question</b>: Comment puis-je passer des option à 
<code>serverboot</code> depuis la ligne de commande de GRUB ?
<p>
<b>
Réponse</b>:
Il suffit de les passer au noyau, qui fera suivre à <code>serverboot</code>.

<p>
<b>
Question</b>:
Puis-je utiliser la version Linux de <code>e2fsck</code> sur ma partition
Hurd ?
<p>
<b>
Réponse</b>: Oui, depuis <code>e2fsprogs-1.05</code>. Vérifiez au préalable 
la version avec <code>e2fsck -V</code>.

<p>
<b>
Question</b>: <code>ps aux</code> ne me donne pas le résultat que j'attends.
<p>
<b>
Réponse</b>: Essayez <code>ps Aux</code>.

<p>
<b>
Question</b>: Que sont ces pids 2 et 4 étranges ?
<p>
<b>
Réponse</b>: 2 est le noyau, 3 est la pagination par défaut. 4 est le 
système de fichiers racine.

<p>
<b>
Question</b>: Où se trouve ...
<p>
<b>
Réponse</b>:
<ul><li><code>fdisk</code>, <code>dmesg</code> ne sont pas encore portés.</li>
<li>A la place de <code>free</code>, utilisez <code>vmstat</code> et
<code>vminfo</code>.
</ul>

<p>
<b>
Question</b>: Y-a-t'il un système de fichiers <code>/proc</code> ?
<p>
<b>
Réponse</b>: Non. Peut-être qu'il y aura une émulation un jour pour les 
programmes qui en ont besoin. Pour ce qui est du <code>/proc</code> vide,
c'est juste un relicat d'un paquet Debian GNU/Linux (<code>base-files</code>).
Vous pouvez rechercher les périphériques présents avec l'utilitaire 
<a href="hurd-doc-utils#devprobe">devprobe</a>.

<p>
<b>
Question</b>: Quel est ce shell de connexion ?
<p>
<b>
Réponse</b>: Hurd utilise le concept d'utilisateur anonyme. 
Cela signifie que l'utilisateur n'a pas de uid. Ce concept provient du fait 
que Hurd supporte les ensembles d'uid et l'un des cas possible est l'ensemble 
vide. Au lieu de simplement refuser l'accès dans de tels cas, le système de 
fichiers Hurd offre un jeu de permissions supplémentaires (rwx) qui est 
utilisé pour déterminer les privilèges (par défaut, cela tombe alors dans les 
jeux de permissions des « autres » utilisateurs).
<p>
Le shell de connexion de Hurd est un shell fonctionnant avec des uids et gids 
vides. Pour restreindre l'accès à vos fichiers, changez le quatrième jeu 
de permissions ou changez le shell de connexion de l'utilisateur « connecté » 
dans le fichier de mots de passes à <code>/bin/loginpr</code> qui implémente 
l'invite de connexion standard.

<h3>
Lorsque quelque chose casse</h3>

<p>
<b>
Question</b>: Qu'est-ce qu'un <code>default pager</code>, 
<code>paging</code>, ou une <code>pager request</code> ?
<p>
<b>
Réponse</b>: Le gestionnaire de pagination (default pager) gère l'allocation 
de mémoire virtuelle. S'il ne peut pas allouer une nouvelle page par manque 
de mémoire, des choses terribles peuvent arriver. Lorsque vous obtenez
ce type d'erreur, soit vous avez besoin de plus de mémoire, soit vous
avez découvert une fuite de mémoire. Ajoutez toujours une partition de 
pagination.

<p>
<b>
Question</b>: Que signifie <code>Gratuitous error</code> ?
<p>
<b>
Réponse</b>: Cela vient de <code>strerror(EGRATUITOUS)</code>. D'après la 
documentation de glibc, c'est un code d'erreur qui ne sert pas <code>:)</code>.
Ce n'est pas tout à fait vrai. En fait, cette erreur peut arriver losqu'une
anomalie grave s'est produite. Les explications de Thomas:
<blockquote>
Plus précisément, <code>EGRATUITOUS</code> signifie officellement qu'un 
serveur a répondu d'un façon impossible, ou qui ne respectait pas le 
protocole. Il y a des cas dans Hurd où <code>EGRATUITOUS</code> est retourné 
alors qu'un autre code serait plus approprié.
</blockquote>
<p>
Si vous pouvez reproduire ce message, faites un rapport de bug. Mais
<em>ne faites pas</em> de rapport de bug à propos de l'accès à
<code>/dev/fd</code>, nous connaissons ce cas.

<p>
<b>
Question</b>: Pourquoi <code>df</code> ne fonctionne-t-il pas ?
<p>
<b>
Réponse</b>: <code>df</code> essaye d'obtenir une liste de tous les systèmes 
de fichiers montés. Une telle liste centralisée n'existe pas sous Hurd. Vous 
pouvez lancer <code>df /</code> pour obtenir l'espace disponible sur le 
système de fichiers racine ou sur d'autres systèmes de fichiers (vous aurez 
au moins besoin de <code>fileutils 4.0-2.1</code> pour cette fonctionalité).

<p>
<b>
Question</b>: Lorsque le système plante, GNU Mach se réamorce automatiquement. 
Mais c'est trop rapide, je n'ai pas le temps de recopier le message d'erreur.
<p>
<b>
Réponse</b>: Donnez l'option <code>-H</code> à init (ajoutez-la sur la ligne 
de commande d'amorçage), et init demandera à Mach d'entrer en déboguage noyau 
au lieu de se réamorcer. A l'invite du débogueur, vous pouvez taper
<code>db&gt; reboot</code> pour réamorcer le système.

<h3>Développement</h3>

<p>
<b>
Question</b>:
Où puis-je récupérer les sources?
<p>
<b>
Réponse</b>: Les sources de tous les paquets Debian sont disponible sur tous 
les <a href="../../distrib/ftplist">miroir FTP Debian</a>. Pour GNU Mach
et Hurd, il existe également un
<a href="http://www.gnu.org/software/devel";>accès CVS anonyme</a> disponible.

<p>
<b>
Question</b>: Par où dois-je commencer à lire les sources de Hurd ?
<p>
<b>
Réponse</b>: Commencez par les sources du serveur <code>auth</code>.

<p>
<b>
Question</b>: Existe-t-il des programmes d'exemple qui font usage des 
fonctionnalités propres à Hurd ?
<p>
<b>
Réponse</b>: Dans le répertoire <code>utils/</code> des sources de Hurd.

<p>
<b>
Question</b>: <code>ps</code> se bloque et j'ai besoin de vérifier sa sortie !
<p>
<b>
Réponse</b>: Arrêtez-le et démarrez-le avec <code>-M</code>.


Reply to: