System Rescue CD par PXE

Il peut arriver selon le besoin d’avoir à redémarrer sur un système de secours afin de réparer un système endommagé le plus souvent suite à une action malheureuse de l’utilisateur, les mises à jour sans lire les informations les concernant en font partie.

Pour cela, le plus simple reste encore de disposer d’une image d’un système tel que Gparted ou encore mieux, System Rescue CD qui comporte Gparted.

Mais avec l’apparition des ultra portables non munis de lecteurs CD ou tout simplement pour ne pas avoir à graver des CDs, on peut utiliser la possibilité qu’ont les ordinateurs à démarrer à travers le réseau (évidemment, il faut disposer d’un 2ème ordinateur, au moins pour le temps de dépannage).

PXE

L’environnement d’exécution pré démarrage permet à un ordinateur de pouvoir charger, depuis le réseau, un système sur lequel démarrer.

En fait, un démarrage PXE consiste en 3 étapes:

  • Récupérer une adresse IP
  • Télécharger un fichier à lancer depuis un serveur TFTP
  • Lancer le dit fichier.

System Rescue CD

System Rescue CD n’est disponible qu’en image iso pour graver sur un CD, qu’à cela ne tienne, les fichiers nécessaires sont tous contenus dans le CD, il nous faut donc télécharger le .iso disponible sur cette page.

Une fois le CD téléchargé, on peut le monter dans un répertoire, disons par exemple « /mnt/disk » (sous Archlinux, n’oubliez pas de charger le module loop):

mount -o loop systemrescuecd-x86-1.1.0.iso /mnt/disk

On copiera les fichiers plus tard.

Services nécessaires

Afin de monter un serveur PXE fonctionnel, il nous faut 3 services:

  • Serveur DHCP
  • Serveur TFTP
  • Serveur Web

Le serveur web n’est pas forcément nécessaire, mais rend le démarrage plus fiable car contrairement au serveur TFTP, il utilise TCP qui donne une meilleure garantie sur la transmission des données. On l’utilisera pour télécharger la racine du système de fichier du système d’exploitation à démarrer.

Installation des serveurs

L’exemple est fait sur Archlinux, mais il n’est pas difficile de trouver les paquets correspondants pour votre distribution:

pacman -S tftp-hpa dhcpd httpd syslinux

DHCP

On commence d’abord par configurer le serveur DHCP, pour le serveur installé en exemple, la configuration est effectué dans le fichier /etc/dhcpd.conf (reportez vous au manuel du serveur que vous auriez installé), la partie importante concerne la déclaration du sous réseau:

subnet 192.168.1.0 netmask 255.255.255.0 {
        range 192.168.1.70 192.168.1.100;
        filename "pxelinux.0";
        next-server 192.168.1.2;
        option subnet-mask 255.255.255.0;
        option broadcast-address 192.168.1.255;
        option routers 192.168.1.1;
}

On y indique que le serveur TFTP correspond à 192.168.1.2 et que le fichier à charger se nomme pxelinux.0.

HTTP

Sur le serveur Web, il nous faut y copier 2 fichiers:

cp /mnt/disk/sysrcd.dat /srv/http/
cp /mnt/disk/sysrcd.md5 /srv/http/

TFTP

Le premier fichier que doit fournir un serveur TFTP pour un démarrage PXE est le fichier pxelinux.0, ce dernier agit de la même façon que grub, c’est un chargeur de démarrage.

Ce fichier est fourni par le paquet syslinux, sous Archlinux, une fois le paquet installé:

cp /usr/lib/syslinux/pxelinux.0 /var/tftpboot

pxelinux.0, après lancement essaie de charger un fichier de configuration en se basant sur le type et l’adresse physique de la carte, puis selon l’adresse IP si la recherche d’avant échoue et enfin si celle ci échoue également, il se rabat sur le fichier pxelinux.cfg/default.

Avant de le renseigner, on va d’abord copier les fichiers nécessaires au boot pour qu’ils puissent être trouvés par le serveur TFTP:

mkdir /var/tftpboot/sysresccd
cp /mnt/disk/isolinux/initram.igz /var/tftpboot/sysresccd
cp /mnt/disk/isolinux/rescuecd /var/tftpboot/sysresccd

Voilà, il ne reste plus qu’à modifier le fichier de config pxelinux.cfg/default:

prompt 1
timeout 0
default sysresccd
label sysresccd
kernel sysresccd/rescuecd
append scandelay=5 initrd=sysresccd/initram.igz netboot=http://192.168.1.2/sysrcd.dat setkeymap=fr

Application

A ce stade, la configuration spécifique à un démarrage PXE est finie, il faut néanmoins vérifier si les accès à la machine sont possibles, sous Archlinux par exemple, il nous faut modifier /etc/hosts.allow pour y rajouter:

in.tftpd: 192.168.1. : ALLOW
dhcpd: 192.168.1. : ALLOW
httpd: 192.168.1. : ALLOW

Lancer les différents services si ce n’est déjà fait:

/etc/rc.d/httpd start
/etc/rc.d/tftpd start
/etc/rc.d/dhcpd start

Et il n’y a plus qu’à démarrer un autre ordinateur sur le même sous-réseau en n’oubliant de sélectionner un démarrage sur le réseau.

NB: Par contre, un bémol sur l’efficacité de la méthode, il faut quand même que le système démarré, dans l’exemple System Rescue CD puisse reconnaître l’interface réseau pour télécharger la racine du système.

Commentaires (2)