Guide de démarrage

Un article de HurdFr_Wiki.

Jump to: navigation, search

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).
http://glibersat.linux62.org/hurd/hurdfr/wiki/crosshurd-path.png


  • Vous aurez alors ensuite le choix des OS, choisissez gnu bien entendu ! ;-)
http://glibersat.linux62.org/hurd/hurdfr/wiki/crosshurd-oschoice.png


  • 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.
http://glibersat.linux62.org/hurd/hurdfr/wiki/crosshurd-archi.png


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 :
  1. La première fois en mode single user, et taper ./native-install
  2. La deuxième fois, même chose que l'étape un (il a besoin de redémarrer)
  3. 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.

http://glibersat.linux62.org/hurd/hurdfr/wiki/grub-main.png

Quand vous arriverez sur le menu de démarrage, pour éditer une entrée, il suffit de taper "e" :

http://glibersat.linux62.org/hurd/hurdfr/wiki/grub-editchoice.png

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é :

http://glibersat.linux62.org/hurd/hurdfr/wiki/grub-editline.png


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