Guide de démarrage
Un article de HurdFr_Wiki.
Cet article est une ébauche. Cela signifie qu'il est n'est pas considéré par son auteur comme terminé.
Vous êtes libre de l'améliorer et de retirer cet avertissement si vous jugez que l'article est maintenant finalisé.
Le but de ce petit guide est d'aider les débutants à installer un système GNU/Hurd sur leur machine. Bien entendu, il ne couvre pas toutes les possibilités, ni tous les problèmes, mais essaiera d'être le plus complet possible.
Sommaire |
Avant de commencer
Convention de nommage des disques
Attention, vous aurez à manipuler deux conventions de nommage durant l'installation : celle de Grub et celle de GNU Mach (donc de GNU/Hurd). Il n'y a pas de correspondance systématique entre les deux conventions.
Grub numérote les disques en fonction de l'ordre du BIOS, avec les disques IDE d'abord et les disques SCSI ensuite. Ainsi, hd0 désigne le premier disque reconnu par le BIOS (en général le disque maître sur le controleur IDE primaire, mais il peut également s'agir du disque esclave s'il n'y a pas de maître, ou du premier disque SCSI s'il n'y a pas de disques IDE). Les partitions sont numérotées à partir de 0. Les disques sont donc nommés (hdX) (avec X à partir de 0) et les partitions (hdX,Y) (avec Y à partir de 0).
La numérotation des disques IDE pour GNU/Hurd est elle équivalente à celle de Linux. hda devient hd0, hdb hd1, etc. Pour rappel, hd0 correspond donc au disque maître sur le contrôleur IDE primaire, hd1 au disque esclave sur ce contrôleur, hd2 au disque maître sur le contrôleur IDE secondaire, etc. Pour les disques SCSI, la numérotation est absolue : le disque est nommé sdX où X est son identifiant SCSI. Les partitions sont nommées en rajoutant le suffixe sY (s pour slice, avec Y commençant à 1, comme avec Linux) au nom du disque : hd0s1 par exemple.
Installation sur une machine ayant un OS
Si votre machine dispose d'un OS, l'installation est un peu plus délicate, car il faudra aménager un disque avant de pouvoir installer GNU.
Si vous disposez d'un OS de type Unix, vous avez en revanche l'avantage de déjà disposer d'une partition d'échange.
Dans tous les cas, il faudra quand même avoir l'espace nécessaire pour installer GNU : passez au partitionnement.
Attention ! Veuillez à sauvegarder toutes vos données avant de continuer à lire. Je ne vous le souhaite pas, mais il est possible que les opérations tournent mal, spécialement lorsque l'on joue avec les tables de partitions. [Si vous lisez la ligne suivante, vous acceptez le contrat implicitement! ;)]
Partitionner
Pour installer GNU, il vous faudra au minimum une partition pour accueillir le système. Si vous avez de l'espace libre sur votre disque (non pris par une partition), sautez à l'étape "Vous avez une partition libre", sinon, continuez de lire.
Vous n'avez pas de partition libre
Nous allons donc devoir faire de la place afin de pouvoir réduire une de vos partitions.
Repérez la partition que vous souhaitez réduire, faites de la place en supprimant, déplaçant des fichiers. Pour pouvoir utiliser un GNU/Hurd agréablement, pensez à faire environ 2Go de place.
Une fois cela fait, démontez la partition, puis installez le logiciel GNU Parted.
Vous pouvez l'installer avec la commande suivante si vous utilisez une distribution de type Debian :
apt-get install parted
Notez qu'il existe des Interfaces Graphiques pour parted, comme QTParted, PartGui, ou encore Mandrake Control Center (pour les utilisateurs de Mandrake).
Une fois le redimensionnement effectué, je vous invite à redémarrer la machine et vérifier que tout s'est bien passé.
Dans le cas positif, continuez de lire. (Et oui, il n'y a jamais le mauvais cas dans les docs :p)
Vous avez une partition libre
Entrez donc dans fdisk en spécifiant votre disque
fdisk /dev/hda
Vous arriverez alors sur l'invite suivante :
Command (m for help):
Vous pouvez voir la liste des partitions en tapant "p".
Si la partition est déjà définie, supprimez la avec "d", puis recréez en une avec "n". Contrairement aux idées reçues, il ne faut PAS faire une partition de type Hurd, mais bien Linux.
Vous devriez ensuite avoir au minimum une partition cible et une partition swap dans la liste :
Disk /dev/hda: 64 heads, 63 sectors, 1023 cylinders Units = cylinders of 4032 * 512 bytes Device Boot Start End Blocks Id System /dev/hda1 * 1 914 1842592+ 83 Linux /dev/hda2 915 1950 ........ 83 Linux /dev/hda3 1951 2023 219744 82 Linux swap
(Dans cet exemple, les données sont fausses)
Formater
Le système de fichiers utilisé en ce moment par GNU/Hurd est de type ext2 avec quelques attributs en plus. L'ext3 est en développement.
Vérifiez que votre partition est bien démontée (à l'aide de la commande mount), puis formattez ainsi :
mkfs.ext2 -o hurd /dev/hda2
Vous utilisez une distribution de type Debian GNU/Linux
Si vous disposez d'un système de type Debian installé sur votre machine, l'installation sera des plus rapides.
Logiciels requis
Commencez par installer le logiciel crosshurd qui va vous permettre d'installer un GNU/Hurd sur une partition montée.
Avec les droits de superutilisateur, tapez la commande suivante :
apt-get install crosshurd
Ensuite, vu que les paquets crosshurd ne sont pas à suffisamment à jour, il faut d'abord modifier le fichier /etc/crosshurd/sources.list/gnu à l'aide de votre éditeur préféré et avec les droits de superutilisateur :
vim /etc/crosshurd/sources.list/gnu
Remplacez son contenu par les lignes suivantes :
# Normalement ajoute par defaut, necessaire a tout systeme GNU/Hurd. deb http://ftp.gnuab.org/debian unreleased main deb http://ftp.de.debian.org/debian unstable main # Paquets mis a disposition par HurdFR. deb http://packages.hurdfr.org/unstable/binary-hurd-i386/ ./ # Paquets en developpement par les membres d’HurdFR. deb http://packages.hurdfr.org/experimental/binary-hurd-i386/ ./ # Paquets de Michael Banck, un des principaux developpeurs Debian GNU/Hurd. # Paquets parfois tres experimentaux, a rajouter avec precaution. # deb http://people.debian.org/~mbanck/hurd ./
Le dernier est laissé commenté pour l'avoir a disposition plus tard.
Installation
Montez alors votre partition dans un point de montage :
mkdir /mnt/hurd mount /dev/hda2 /mnt/hurd
Puis, lancez la commande crosshurd :
crosshurd
- L'installateur va d'abord vous demander le point de montage de votre partition, indiquez lui celui qui vous avez précédemment choisi (/mnt/hurd dans notre cas).
- Vous aurez alors ensuite le choix des OS, choisissez gnu bien entendu ! ;-)
- Si vous avez une version un peu ancienne, il va ensuite vous demander si vous souhaitez faire un lien symbolique de /usr vers /, répondez oui.
- Laissez ensuite l'architecture par défaut si vous vous trouvez sur une machine Intel ou compatible. À ce jour, seul i386 est supporté. Cependant, si vous êtes sur une architecture de type powerpc par exemple, vous pouvez installer un GNU/Hurd pour un i386 depuis votre OS Powerpc : il suffit de mettre i386 à la place de powerpc.
Crosshurd va alors maintenant télécharger les listes de paquets logiciels, puis va pré-installer ces derniers dans la partition montée.
En cas d'erreur de crosshurd
Il se peut que les dépôts ne soient pas à jour et que l'installation par crosshurd échoue, avec des erreurs du style de :
E: Aucun paquet ne correspond au paquet libdb2
Dans ce cas, consultez d'abord les altertes signalées par HurdFR. Il est possible que le problème soit connu et la marche à suivre pour résoudre le problème y figurera surement.
Dans le cas contraire, vous pouvez essayer d'aller chercher sur http://snapshot.debian.net/ le dernier dépôt dans lequel le paquet en question était compilé pour le Hurd.
Par exemple, après une recherche pour libdb2, on se retrouve ici : http://snapshot.debian.net/archive/2005/08/01/debian/pool/main/d/db2/ où l'on voit les paquets libdb2_2.7.7.0-9_hurd-i386.deb, et libdb2-util_2.7.7.0-9_hurd-i386.deb.
Il nous faut donc ajouter le dépôt :
deb http://snapshot.debian.net/archive/2005/08/01/debian unstable main
à notre fichier /etc/crosshurd/sources.list/gnu comme ci-dessus et recommencer l'opération.
Si vous continuez d'avoir des erreurs, n'ajoutez pas un dépôt par paquet, mais prenez plutôt le plus vieux dépôt contenant tous vos paquets (normalement, ce n'est pas nécessaire).
L'installation s'est déroulée correctement
- Vous devrez alors redémarrer votre machines trois fois :
- La première fois en mode single user, et taper ./native-install
- La deuxième fois, même chose que l'étape un (il a besoin de redémarrer)
- La troisième fois, en mode multi users pour l'utiliser normalement
Attention : N'oubliez pas de passer par la section Grub pour paramétrer un chargeur de démarrage correctement afin de pouvoir démarrer sur votre nouvel OS !
Mise en place de GRUB
GRUB est le seul chargeur de démarrage couramment utilisé capable d'amorcer GNU. En effet, ce dernier a besoin du support du standard multiboot pour démarrer. De plus GRUB apporte de nombreux avantages, comme l'édition directe du fichier de configuration ou le support du réseau par exemple.
Conventions
GRUB utilise sa propre convention de nommage des disques.
Un disque est référencé par un symbole de type : hdx
- x est le numéro de disque, et commence à 0
Si vous disposez de disques SCSI et IDE, grub devrait considérer vos disques SCSI à la suite des disques IDE.
Une partition quant à elle est référencée ainsi : hdx,y
- y est le numéro de la partition et commence à 0. Il n'y a pas de saut s'il y a des partitions étendues.
Installation
Si GRUB est déjà installé chez vous, vous pouvez bien entendu sauter cette étape.
Commencez par créer le dossier des fichiers GRUB avec :
mkdir -p /boot/grub
Pour l'installer, tapez grub, suivi du device de votre OS. Par exemple :
grub /dev/hda
Vous devez ensuite lui indiquer un root, avec par exemple :
root (hd0,0)
puis, demandez l'installation sur ce disque avec :
setup (hd0)
Si l'installation se déroule mal, vérifiez que vous disposez des fichiers de type stagexxx. Si effectivement, il ne les trouve pas, copiez ces fichiers dans /boot/grub.
GRUB est maintenant installé. Vous pouvez configurer le fichier.
Fichier de configuration
Le fichier de GRUB se trouve dans /boot/grub et se nomme menu.lst. Contrairement à lilo par exemple, vous n'avez pas besoin de relancer grub à chaque modification de ce fichier. S'il n'existe pas, créez le.
Note : les utilisateurs de Debian GNU/Linux trouveront dans /usr/share/doc/grub/ un fichier de configuration qu'ils pourront recopier
emacs /boot/grub/menu.lst
ou (pour ceux qui le veulent vraiment ;-) :
vim /boot/grub/menu.lst
Selon vos systèmes d'exploitation, ajoutez alors les sections suivantes :
- Pour amorcer un système GNU/Linux
title GNU/Linux root (hd0,0) kernel /boot/vmlinuz-2.6.10 root=/dev/hda1 initrd /initrd.img
- Pour amorcer un système GNU/Hurd en mode multi-utilisateurs
title GNU/Hurd
root (hd0,0)
kernel /boot/gnumach.gz root=device:hd0s1
module /hurd/ext2fs.static --multiboot-command-line=${kernel-command-line} \
--host-priv-port=${host-port} --device-master-port=${device-port} \
--exec-server-task=${exec-task} -T typed ${root} $(task-create) $(task-resume)
module /lib/ld.so.1 /hurd/exec $(exec-task=task-create)
Attention : Notez la différences entre les parenthèses et les acollades !
- Pour amorcer un système GNU/Hurd en mode mono-utilisateur (maintenance)
title GNU/Hurd
root (hd0,0)
kernel /boot/gnumach.gz root=device:hd0s1 -s
module /hurd/ext2fs.static --multiboot-command-line=${kernel-command-line} \
--host-priv-port=${host-port} --device-master-port=${device-port} \
--exec-server-task=${exec-task} -T typed ${root} $(task-create) $(task-resume)
module /lib/ld.so.1 /hurd/exec $(exec-task=task-create)
Vous pouvez ajouter en haut du fichier de configuration différentes directives comme :
- default x
où x est le numéro du choix par défaut (commence à 0 pour la première entrée)
- timeout x
où x est le temps d'attente avant le boot du choix par défaut
Attention : N'oubliez pas d'ajuster les directives root= selon votre configuration. Vous pouvez vous reporter à la section de conventions du Hurd pour connaître comment deviner votre device.
Pour un exemple complet, consultez le fichier d'exemple du site institutionnel !
Si vous avez plus de 512 Mio de mémoire vive
Pour le moment, Mach ne gère pas plus de 768 Mio de mémoire vive, il faut donc le limiter, sinon il va crasher au démarrage (essayez... c'est pas dangereux). Il faut donc rajouter la ligne
uppermem 786432
Entre les lignes title et root sur chacune des entrées grub ci-dessus.
Astuces d'utilisation
Il est possible que vous vous trompiez en inscrivant le fichier de configuration. Pas de panique, GRUB permet l'édition du fichier de configuration au moment du boot.
Quand vous arriverez sur le menu de démarrage, pour éditer une entrée, il suffit de taper "e" :
Vous avez alors accès à plusieurs touches, comme "o", "d", "e" qui permettent de, resepectivement, ajouter une nouvelle ligne, supprimer la ligne sélectionnée ou éditer la ligne selectionnée.
Vous pouvez donc par exemple éditer une ligne, et corriger votre device root si vous vous êtes trompé :
Ainsi, vos chances de rester bloquer au niveau du bootloader sont faibles !
Et deux petits reboots
Pour préparer votre système à être opérationnel, vous allez devoir rebooter une première fois en mono-utilisateur.
Une fois que le système a redémarré en mode mono-utilisateur, tapez les commande suivantes :
export TERM=mach ./native-install
Ceci devrait être assez rapide. Une fois l'étape terminée, répétez le même processus une seconde fois. Cette deuxième fois sera plus longue, elle effectuera plus d'opérations.
Pendant la deuxième étape, n'hésitez pas à relancer 2 ou 3 fois native-install si vous obtenez des erreurs liées à dpkg, etc.
Maintenant que votre système est préparé, vous pouvez démarrer en multi-utilisateurs pour pouvor enfin utiliser votre nouveau système !
GNU a booté !
Maintenant que votre GNU a booté en multi-utilisateurs, voici les étapes à suivre pour configurer votre système.
Swap
Il est fortement conseillé d'activer le swap une fois le système démarré. Pour effectuer ceci, tapez la commande :
swapon /dev/hdXsY
Vous pouvez utiliser la partition swap de votre système GNU/Linux.
N'oubliez pas de l'ajouter dans votre fichier /etc/fstab si vous ne voulez pas retaper la commande à chaque démarrage.
Réseau
Pour configurer votre interface réseau, vous devez utiliser la commande settrans. En effet, c'est en lançant un translator que vous pouvez associer une interface à un pile réseau. Le translator en question est pfinet (rendez-vous à Translators pour plus d'informations).
L'interface se configure ainsi :
settrans -cgap /servers/socket/2 /hurd/pfinet -i eth0 -a $ADRESSE -m $NETMASK -g $PASSERELLE
Réglez ensuite vos DNS dans /etc/resolv.conf, comme par exemple :
nameserver 123.234.345.123 nameserver 234.231.234.124
Vous pouvez tester un ping, vous devriez avoir accès au réseau. Sinon, répétez les étapes précédentes, forcez l'annulation du translator sur /servers/socket/2 (à l'aide d'un goaway) et vérifiez vos câbles !
Serveur SSH
Pour installer ssh, il vous faut installer de quoi obtenir de l'entropie.
Vous avez alors trois alternatives :
- Installer le paquet reseed, qui va télécharger une séquence aléatoire sur Internet et remplir vos /dev/[u]random.
- Copier un binaire (/bin/bash classiquement) vers /dev/[u]random
- Installer un générateur de nombres pseudo-aléatoires. Vous pouvez trouver ceci sur le site de Kilobug (http://kilobug.free.fr/hurd/) sous la forme d'un translator.
Pour que les utilisateurs puissent se loguer, il faut désactiver la séparation des privilèges dans /etc/ssh/sshd_config :
UsePrivilegeSeparation no

