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 syslinuxDHCP
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.
4 novembre 2008 - 23 h 17 min
Intéressant car effectivement pour sauver mon eeepc j’ai copié l’image sysresccd sur un disque dur usb via un tuto que l’on trouve sur le site officiel.
Dire que je viens de basculer le dhcp sur ma freebox pour pas laisser allumé mon pc tout le temps
14 décembre 2008 - 16 h 14 min
hello, I found you info interesting, thanks!
Do you know how to use NFS in place of the HTTP server?
–
Hello et merci pour le tutorial.
Comment utiliser NFS au post de le HTTP Serveur?