Introduction
Debian GNU-Hurd, est une variante du système d’exploitation Debian, sa particularité est de ne pas être bâti autour d’un noyau Linux mais d’un micro noyau Mach et d’une collection de serveurs, appelée Hurd. Les débuts de Hurd datent des années 90, l’objectif était de fournir un noyau à l’ensemble des programmes du système GNU. Pour plus d’informations sur le projet Hurd, je vous invite à consulter Wikipedia ou le site de la FSF.
In short: just say no to drugs and maybe you won’t end up like the Hurd people.
Debian GNU-Hurd évolue constamment, ce tutoriel peut donc ne pas être tout à fait à jour. J’essayerai cependant de le mettre à jour régulièrement.
Prérequis pour GNU-Hurd
Avant de commencer cette fabuleuse péripétie qu’est GNU/Hurd, quelques compétences sont requises. Toutes les manipulations s’effectuent en ligne de commande, il sera donc nécessaire d’y être à l’aise. Vous devrez aussi connaître un minimum Debian GNU/Linux ou toute autre distribution basée sur Debian.
L’installation peut se faire directement sur une machine physique ou via une machine virtuelle. Si vous faites l’installation sur une machine virtuelle depuis un système d’exploitation ne disposant pas nativement d’un client ssh, je vous conseil d’en installer un (exemple : putty). Ainsi vous pourrez profiter du clavier de votre choix et faire des copier-coller depuis votre système hôte. Si vous en avez la possibilité, faites régulièrement des sauvegardes. Il est possible que lors de grosses mises à jour, le système devienne inutilisable.
Dans ce tutoriel je n’entrerai pas dans les détails de configuration des logiciels. L’objectif est de montrer les logiciels qui fonctionnent ou ne fonctionnent pas. Dans certains cas nous verrons les différences par rapport à GNU/Linux ainsi que des astuces pour les faire fonctionner.
Hurd est réputé pour être très instable, pensez à effectuer des sauvegardes régulières de votre machine virtuelle. Faites toujours très attention avant de modifier les différentes configurations et vous obtiendrez un système pouvant rivaliser avec une distribution GNU/Linux 😉
Vous pouvez trouver l’image iso sur le site de Samuel Thibault ou sur les miroirs Debian.
Le tutoriel se base sur l’image « debian-sid-hurd-i386-NETINST-1.iso » du 20 avril 2018.
Depuis que ce tutoriel est mis à jour, le système s’est révélé de plus en plus stable mais avec de temps en temps des impossibilités de continuer. Les temps de redemarage ont aussi été considérablement réduits, passant de plusieurs minutes à quelques secondes.
Préparation pour l’installation
L’installation de Debian GNU-Hurd peut se faire soit sur une machine physique, soit sur une machine virtuelle. Lors de la configuration des machines virtuelles, les options non spécifiées sont à laisser par défaut. Suivant la version de GNU-Hurd que vous utilisez, votre disque Sata ne sera pas reconnu, en cas de doute configurez votre machine virtuelle avec un contrôleur Pata (IDE). Les disques SCSI ne sont pas supportés.
Machine physique
De façon général les pilotes disponibles sur GNU-Hurd sont assez restreints. Il sera donc difficile de trouver une machine compatible.
Matériel nécessaire
- Au moins 768mo de ram
- Disque dur de 5go ou plus
- Carte réseau
- Lecteur de disques
VirtualBox
Créer une machine virtuelle de type Debian 32 bits avec 768mo de ram et au moins 5go de disque dur.
En cas de problème avec le disque dur, ouvrir la configuration de la VM puis aller dans le menu stockage. Retirer le contrôleur SATA. Ajouter au contrôleur IDE le disque dur créé lors de l’étape précédente.
Dans le menu Réseau, changer l’accès par Nat par un accès par pont. Cela permettra de voir la machine virtuelle sur le réseau. Ne pas oublier de choisir l’interface physique sur laquelle effectuer le pont. J’ai eu quelques problèmes avec la carte émulée par défaut et j’ai dû repasser sur une carte 10/100Mb.
VMware ESXi
Créer une nouvelle machine virtuelle de type custom. Prendre Debian GNU/Linux 32 bit comme système d’exploitation. Mettre au moins 768mo de mémoire vive. Créer un disque d’au moins 5go.
Installation de Debian GNU/Hurd
Nous partirons depuis une configuration vierge, notre premier objectif final étant d’avoir un système minimal mais utilisable. Ensuite nous verrons pour quelques logiciels en vue de faire une station de développement, un serveur web ou un ordinateur familial.
Pour ce guide j’ai configuré une machine virtuelle sur VirtualBox avec 768mo de ram et 20go de disque dur.
- Prérequis
- Installation
- Première connexion
- Configuration des disques
- Installation des mises à jour
- Configuration des utilisateurs
- Outils système
- Nettoyage de l’installation
Prérequis
- Machine physique ou virtuelle
- CD de debian HURD http://people.debian.org/~sthibault/hurd-i386/installer/cdimage/
- Clavier/Souris
- Accès Internet
- Live CD GNU/Linux supportant l’ext4 (facultatif)
Installation
Insérer le CD (ou monter l’image disque), régler le bios pour démarrer dessus. Appuyer sur [entrée] lorsqu’un menu se présente pour choisir l’installation « pseudo-graphique »
Le CD met un peu de temps pour charger, choisir la langue, le pays puis la disposition du clavier. L’installateur vous demandera de définir le nom de la machine et le domaine (généralement le domaine sera vide). Ensuite vous pourrez définir le mot de passe root puis de créer votre compte utilisateur.
Nous nous retrouvons désormais à l’étape du partitionnement, j’ai choisi manuel et j’ai mis :
- 20go pour la racine /, en ext2 avec le flag « bootable »
- 512mo en swap
Il s’agit d’un système de test, je ne vois donc pas l’intérêt de perdre de la place et de faire plusieurs partitions. Le seul système de fichier proposé est l’ext2, nous verrons plus tard pour utiliser de l’ext4.
Le système va ensuite vérifier qu’il dispose bien de tous les paquets nécessaires pour s’installer et que les dépendances sont bien satisfaites. Les paquets manquants seront téléchargés. Choisissez d’utiliser un miroir sur le réseau. Configurez le dépôt le plus proche de chez vous.
L’installateur va vous proposer d’installer des logiciels supplémentaires, je conseille de ne pas cocher de cases supplémentaires afin de mieux connaître le fonctionnement du système. Laissez SSH s’installer automatiquement, cela vous permettra de configurer le système à distance une fois l’installation terminée (touche espace pour sélectionner).
Grub va ensuite s’installer. Si celui-ci ne s’installe pas, ne vous inquiétez pas. Il vous suffira de télécharger une iso de grub pour votre premier démarrage. Si GNU-Hurd est votre seul système d’exploitation sur cet ordinateur, choisissez d’installer grub sur le secteur d’amorçage.
Retirez votre CD puis redémarrer l’ordinateur, cette étape peut prendre du temps.
Première connexion
Le système démarre rapidement et configure automatiquement l’interface réseau.
Taper le login puis le mot de passe. Pour éditer les fichiers de configuration, nano et vi sont déjà installés.
Configurer l’interface réseau si le dhcp n’a pas fonctionné (attention, tout sur la même ligne)
settrans -fgap /servers/socket/2 /hurd/pfinet -i votreinterface -a votreip -g passerelle -m masque
Example :
settrans -fgap /servers/socket/2 /hurd/pfinet -i eth0 -a 192.168.1.5 -g 192.168.1.1 -m 255.255.255.0
Éditez le fichier /etc/resolv.conf et ajouter :
nameserver vos dns
Dans le doute il est possible d’utiliser ceux de cloudflare : 1.1.1.1
nameserver 1.1.1.1
Installation des mises à jour
Il est possible que vous ayez un problème de Path, dans ce cas là ajoutez dans le fichier /root/.bashrc
export PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin
Éditez le fichier /etc/apt/sources.list.
deb http://ftp.ports.debian.org/debian-ports unstable main
deb http://ftp.ports.debian.org/debian-ports unreleased main
Si vous avez besoins des sources, vous pouvez les ajouter
deb-src http://ftp.debian.org/debian unstable main contrib non-free
deb-src http://mirrors.kernel.org/debian unstable main contrib non-free
deb-src http://ftp.debian-ports.org/debian unreleased main
Dans certaines versions il nous manquera le paquet dirmngr pour la gestion des signatures.
apt update apt install dirmngr -y apt-key adv --keyserver keys.gnupg.net --recv-keys 06AED62430CB581C
Puis lancez la mise à jour :
apt update && apt upgrade -y
Les mises à jours s’installent.
Outils système
Vous pouvez installer les paquets suivants en tapant :
apt install lepaquet
- apt-listbugs : lors de l’installation d’un paquet, si des bugs ont été répertoriés vous serez prévenu
- bash-completion : auto-complétion pour le shell
- htop : permet de voir les processus en cours et leur utilisation des ressources système
- localepurge : une fois les locales configurées, il vous permettra de nettoyer les documentations
- screen : Gestion de plusieurs terminaux dans une seule fenêtre
Nettoyage de l’installation
Nous allons supprimer les .deb des paquets désormais installés.
apt autoclean -y && apt autoremove -y
Puis si localepurge est installé
localepurge
Trucs et astuces
Que faire si une application est plantée
Changez de console avec [Ctrl] + [Alt] + [F1-6] et tapez :
ps kill + le nom du processus que vous voulez tuer
LSB tags
Des fois vous verrez une erreur du genre
insserv: warning: script 'clavier' missing LSB tags and overrides
Éditez le fichier correspondant dans /etc/init.d et vérifier l’antête qui doit ressembler à ça :
#!/bin/sh (ne pas modifier si differente) ### BEGIN INIT INFO # Provides: # Required-Start: # Required-Stop: # Default-Start: # Default-Stop: # Short-Description: # Description: ### END INIT INFO
Je vous conseil de les remplir, sinon d’autres erreurs apparaitront.
De l’ext2 à l’ext4
Le système de fichier ext4 augmente les performances disques par rapport à ses prédécesseurs que sont l’ext2 et l’ex3. Malheureusement nous ne pouvons faire le changement depuis notre système. Nous utiliserons donc un live CD GNU/Linux.
N’oubliez pas de remplacer « ext2 » par « ext4 » dans votre fstab. Nous commencerons par convertir la partition en ext3 puis nous passerons à l’ext4.
tune2fs -j /dev/partition tune2fs -O dir_index,uninit_bg /dev/partition e2fsck -pf /dev/partition
Exemple :
tune2fs -j /dev/sda1 tune2fs -O dir_index,uninit_bg /dev/sda1 e2fsck -pf /dev/sda1
Les interfaces réseaux
ifquery --list inetutils-ifconfig -a