Configuration de Debian GNU/Hurd
Ce document vise à fournir un jeu d'instructions facile et relativement peu fastidieux sur la façon de configurer Debian GNU/Hurd avec un minimum d'efforts.
Il est basé sur le Guide d'installation du Hurd
de Neal H. Walfield.
Merci beaucoup à Neal pour sa contribution.
Vue d'ensemble
GNU est de nature similaire à n'importe quel système de type Unix : après
s'être identifié, un interpréteur de commandes et le système de fichiers
virtuel (VFS) Unix familier sont présentés à l'utilisateur. Malgré les
tentatives de GNU d'être conforme à POSIX, ce n'est pas Unix
(GNU is
Not Unix). GNU/Hurd est basé sur plusieurs concepts Unix et les étend soit
en ajoutant de nouvelles fonctionnalités, soit en réparant ce qui a été perçu
comme des failles dans la conception originelle. La différence la plus
remarquable est l'existence des traducteurs, programmes de l'espace utilisateur
qui interagissent avec le VFS. Ces systèmes de fichiers n'ont besoin d'accéder
qu'au périphérique de stockage et au point de montage. Une autre
différence réside dans le fait que les processus, plutôt que d'avoir l'identité
d'un utilisateur unique donné au moment de la création, peuvent avoir des
identités disjointes du processus, c'est-à-dire qu'ils peuvent être ajoutés
avec la permission appropriée par une autorité, ou être détruits.
Être familiarisé avec l'environnement Unix (et en particulier l'espace utilisateur GNU, que l'on trouve dans des variantes populaires telles que GNU/Linux) est un impératif pour se sentir à l'aise avec GNU. Avoir de l'expérience avec les outils Debian sera un atout inestimable pour la configuration et la maintenance d'une machine sous GNU/Hurd.
Ce guide s'efforce de rendre l'installation de GNU/Hurd aussi facile que possible. S'il s'y trouve des erreurs, ce sont probablement des erreurs de l'auteur. Veuillez les lui rapporter, ainsi que d'autres suggestions ou critiques ; toutes seront acceptées avec plaisir.
Installation
Vous pouvez simplement utiliser l'installateur Debian, en utilisant les images de CD préparées. Les étapes suivantes seront ensuite nécessaires pour une configuration correcte.
Configuration
Le réseau
La méthode Debian n'est pas encore gérée : /etc/network/interfaces est ignoré, ifup et ifdown ne fonctionnent pas. Seule la méthode Hurd est gérée pour le moment.
Si le réseau n'a pas l'air de fonctionner, utilisez ceci pour obtenir des renseignements de débogage du pilote DDE :
# settrans -fgap /dev/netdde /hurd/netdde |
puis tuez tous les processus devnode et pfinet pour leur
permettre de redémarrer avec le netdde plus récent.
Si ça ne fonctionne toujours pas, veuillez envoyer la sortie du settrans netdde
précédent, ainsi que la sortie de lspci et lspci -n.
Pour configurer le réseau, le traducteur pfinet doit être configuré.
Cela peut se faire en utilisant dhclient
du paquet isc-dhcp-client, mais son
démarrage n'est pas encore automatique, il faut donc le démarrer
soi-même, par exemple avec dhclient /dev/eth0.
Vous pouvez aussi exécuter la commande inetutils-ifconfig
du paquet inetutils-tools et ping est
disponible dans le paquet inetutils-ping.
Enfin, vous pouvez aussi exécuter la commande settrans
pour attacher (et enregistrer pour de bon) un traducteur à un nœud
de système de fichiers donné. Quand les programmes accéderont au nœud, par
exemple en envoyant un RPC, le système d'exploitation lancera de manière
transparente le serveur afin de prendre en charge la requête.
# settrans -fgap /servers/socket/2 /hurd/pfinet -i /dev/eth0 -a a.b.c.d -g e.f.g.h -m i.j.k.l |
Ici, settrans reçoit plusieurs options. Les deux premières,
fg, forcent tous les traducteurs existants à disparaître. Les deux
suivantes, ap, créent les traducteurs actifs et passifs. En
rendant un traducteur actif, nous verrons immédiatement tous les messages
d'erreur sur stderr. Ce dernier sauvegarde le traducteur et ses
paramètres dans le nœud de façon à pouvoir le relancer plus tard de manière
transparente (c'est-à-dire en ayant des paramètres persistants même après un
réamorçage). Les options sont suivies d'un nœud auquel le traducteur sera
attaché, puis du programme (c'est-à-dire le traducteur) à lancer et de tous les
paramètres à lui passer. L'option -i est l'interface sur laquelle
pfinet écoutera, -a est l'adresse IP, -g
la passerelle et -m le masque de sous-réseau.
Veillez à ajouter des serveurs de nom de domaines à votre fichier /etc/resolv.conf :
nameserver 192.168.1.1 |
Pour tester la configuration, veuillez taper ping -c2 gateway. Le
-c est important pour limiter le nombre de pings ;
rappelez-vous, CONTROL-C ne fonctionne pas en mode utilisateur
unique.
Il est possible d'obtenir de l'aide sur settrans en lui passant l'option
--help. Il en va de même concernant un traducteur donné en
l'invoquant depuis la ligne de commande avec ce même paramètre, par
exemple :
# /hurd/pfinet --help |
Comme la sortie peut être importante, pensez à la traiter à travers un visionneur
de texte tel que less.
Pour configurer aussi la prise en charge d'IPv6, la même configuration doit être enregistrée à la fois sur /servers/socket/2 et /servers/socket/26, se référençant l'un l'autre pour qu'il n'y en ait qu'un seul de vraiment démarré, lié aux deux nœuds :
# settrans -fgap /servers/socket/2 /hurd/pfinet -6 /servers/socket/26 -i /dev/eth0 -a a.b.c.d -g e.f.g.h -m i.j.k.l # settrans -fgap /servers/socket/26 /hurd/pfinet -4 /servers/socket/2 -i /dev/eth0 -a a.b.c.d -g e.f.g.h -m i.j.k.l |
Le serveur pfinet active l'autoconfiguration IPv6 par défaut. L'état actuel peut être obtenu avec fsysopts /servers/socket/26. Vous pouvez aussi configurer les adresses vous-même, en utilisant par exemple -A 2001:123:123::42/64 -G 2001:123:123::1.
La configuration de pfinet peut aussi être modifiée à la volée (sans enregistrement sur le disque) en utilisant fsysopts :
# fsysopts /servers/socket/2 /hurd/pfinet --interface=/dev/eth0 --address=10.3.0.1 --netmask=255.255.0.0 --gateway=10.3.0.128 # fsysopts /server/socket/2 -a 10.3.0.2 -m 255.255.0.0 -g 10.3.0.128 |
Disposition du clavier
La disposition du clavier peut être configurée à l'aide
du paquet standard keyboard-configuration.
Assurez-vous qu'il est installé, puis exécutez
dpkg-reconfigure keyboard-configuration.
Seule la disposition est prise en charge, pas (encore) les variantes.
L'effet ne sera pas immédiat, car la console doit
être redémarrée pour prendre en compte ce paramètre.
Un redémarrage devrait suffire par exemple.
Autres systèmes de fichiers
Ensuite, veuillez éditer /etc/fstab en y ajoutant tous les systèmes de
fichiers supplémentaires ainsi que l'espace d'échange. Il est très
important que l'espace d'échange soit utilisé ; le Hurd sera plus
stable. Notez que le Hurd peut partager une partition d'échange de
manière transparente avec Linux, mais pourra sans problème paginer sur quelque
périphérique que ce soit, y compris une partition brute comme votre partition
home. Par défaut, nano et vi
sont les seuls éditeurs de texte installés par
la distribution de base.
Voici un exemple de fichier /etc/fstab :
# <file system> <mount point> <type> <options> <dump> <pass> /dev/hd0s1 / ext2 rw 0 1 /dev/hd0s2 /home ext2 rw 0 2 /dev/hd0s3 none swap sw 0 0 |
Si une entrée de périphérique /dev manque,
n'oubliez pas de la créer avec la commande
MAKEDEV :
# cd /dev # ./MAKEDEV hd0s1 hd0s2 hd0s3 |
Vous pouvez aussi monter un système de fichiers
vous-même avec settrans :
# settrans /mnt /hurd/ext2fs /dev/hd0s5 |
L'idée derrière cette commande est que vous configurez le traducteur
/hurd/ext2fs /dev/hd0s5 sur le nœud /mnt.
/hurd/ext2fs sera exécuté et commencera à lire et écrire sur
/dev/hd0s5 et montrer son contenu dans /mnt.
De plus amples renseignements sont disponibles dans la documentation sur les traducteurs.
Pour monter un système de fichiers NFS, le traducteur /hurd/nfs est
utilisé. Quand il n'est pas lancé par le superutilisateur, le traducteur se
connecte au serveur en utilisant un port au-dessus de 1023. Par défaut,
GNU/Linux rejettera cela. Pour dire à GNU/Linux d'accepter les connexions
provenant d'un port non réservé, veuillez ajouter l'option
insecure à la ligne d'export. Voici un exemple de fichier
/etc/exports supposant que l'adresse IP du client est
192.168.1.2 :
/home 192.168.1.2(rw,insecure) |
Pour monter ceci sur une machine GNU et en supposant que l'adresse IP du serveur NFS est 192.168.1.1 :
# settrans -cgap /mount/point /hurd/nfs 192.168.1.1:/home |
Amusez-vous avec Debian GNU/Hurd
Et maintenant, quelles sont les choses sympathiques à faire avec le Hurd ?
Montage d'images de disque
Accéder au contenu d'une image de CD est un peu fastidieux avec les systèmes de la norme Unix quand on n'est pas superutilisateur. Sur GNU/Hurd, il suffit de :
settrans ~/mnt /hurd/iso9660fs CD_image.iso |
Et c'est tout à fait sûr : le traducteur iso9660fs est
exécuté sous l'identité du l'utilisateur, et non du superutilisateur.
Vous pouvez même mettre en place votre propre traducteur
pour n'importe quel type de système de fichier.
Oui, ça ressemble à FUSE, mais sans le kludge.
FTP transparent
La commande suivante configure un répertoire ftp transparent :
settrans -c /ftp: /hurd/hostmux /hurd/ftpfs / |
Maintenant, cd vers, par exemple,
/ftp://ftp.gnu.org/, et exécutez-y ls.
Oui, vous pouvez, depuis chez vous, exécuter simplement
tar xf ftp://ftp.gnu.org/pub/gnu/gcc/gcc-4.6.0/gcc-4.6.0.tar.bz2 !
Sous-Hurd
Un sous-Hurd est un sous-système complet. Ça ressemble beaucoup à un conteneur de virtualisation au premier abord. La différence c'est qu'il n'est pas du tout nécessaire d'être superutilisateur pour en exécuter un.
gdb ext2fs, pfinet, etc.
Oui, vous pouvez exécuter gdb par exemple sur l'implémentation
ext2fs, le pfinet, la pile TCP/IP, etc.
Et plein d'autres choses !
Parmi le travail en cours, mboxfs, tarfs,
xmlfs, gopherfs, etc. sont au programme.
Derniers mots
Ce qui suit n'est qu'une succession de choses vite faites au moment de l'installation, assurez-vous aussi de lire la documentation pour le système installé : la documentation Debian GNU/Hurd, mais aussi le site web amont.
Installer plus de paquets
Plusieurs manières existent pour ajouter des paquets. Télécharger et utiliser
dpkg -i fonctionne mais est très peu pratique. La méthode la plus
simple est d'utiliser apt-get. Veuillez éditer
/etc/apt/sources.list et ajouter l'une des entrées non officielles
à partir de
http://www.debian-ports.org/mirrors et installer
le paquet debian-ports-archive-keyring :
deb http://ftp.debian-ports.org/debian unreleased main |
http://ftp.debian-ports.org/ et ses miroirs contiennent des paquets qui ont été modifiés ou des corrections qui n'ont pas encore été intégrées en amont ou dans Debian.
Et la distribution unstable
à partir de l'un des miroirs de Debian (voir la
liste complète http://www.debian.org/mirror/list) contenant cette
architecture (si apt indique qu'il s'agit d'un Miroir
de l'archive Debian corrompu
, essayez-en un autre :
deb http://ftp.fr.debian.org/debian unstable main |
Si lors de la première utilisation d'apt-get, dpkg
se plaint de programmes manquants, devenez superutilisateur dans une invite
de commande (c'est-à-dire su -, pas seulement su).
Si GNU/Mach ne reconnaît pas la carte réseau ou si vous utilisez un modem, le seul moyen de mettre à jour sera de télécharger les paquets, de les transférer ensuite sur le système GNU. Le moyen le plus facile de faire cela est d'utiliser apt en mode déconnecté. Veuillez vous référer à /usr/share/doc/apt-doc/offline.text.gz pour des instructions détaillées.
La console Hurd
Outre la console Mach rencontrée pendant l'installation, GNU/Hurd possède une puissante console en espace utilisateur qui fournit des terminaux virtuels. Si vous avez installé en mode pseudographique, elle devrait être automatiquement démarrée à l'amorçage, sinon vous pouvez le faire vous-même avec la commande suivante :
# console -d vga -d pc_mouse --repeat=mouse -d pc_kbd --repeat=kbd -d generic_speaker -c /dev/vcs |
Le démarrage automatique de la console est activé à partir de /etc/default/hurd-console.
Dans la console Hurd, vous pouvez passer d'un terminal virtuel à un autre via Alt + F1, Alt + F2 et ainsi de suite. Ctrl + Alt + Retour arrière détache la console Hurd et vous ramène à la console Mach, depuis laquelle vous pouvez vous rattacher à nouveau avec la commande ci-dessus.
X.Org
X.Org a été porté. Toutes les cartes vidéo qu'il gère sans nécessiter de module ou de drm du noyau devraient fonctionner.
Vous devez déjà être en train d'exécuter la console Hurd et avoir
configuré les répétiteurs comme indiqué dans la section précédente.
Par exemple, vérifiez que echo $TERM affiche
hurd et vérifiez que /dev/cons/kbd
et /dev/cons/mouse existent.
Vous devez exécuter dpkg-reconfigure x11-common pour permettre aux utilisateurs de démarrer Xorg, parce que l'enveloppe de X ne connait rien sur les consoles Hurd et Mach.
Vous devrez aussi créer un fichier /etc/X11/xorg.conf pour activer le raccourci Ctrl + Alt + Retour arrière :
Section "InputDevice" Identifier "Generic Keyboard" Driver "kbd" Option "XkbOptions" "terminate:ctrl_alt_bksp" EndSection |
Vous aurez besoin de plusieurs paquets de X. Vous pouvez commencer par
xorg et un gestionnaire de fenêtres : rxvt, twm,
fvwm ou wmaker.
X.Org devrait fonctionner sans configuration directement après l'installation. Vous risquez néanmoins de devoir utiliser le pilote VESA dans certains cas.
Enfin, exécutez startx.
Le mot de la fin
Le System V
rc n'est pas encore utilisé.
Pour éteindre la machine,
utilisez simplement halt ou reboot.
