Démarrer SystemRescueCd a partir du réseau par PXE


Présentation

L’environnement PXE permet de démarrer un ordinateur a partir du réseau. Cela permet de demarrer un systeme sur une machine qui ne dispose ni de disque dur ni de lecteur de CD/DVD ou de port USB. Cette technique permet donc de démarrer SystemRescueCd par le reseau, ce qui facilite le dépannage d’ordinateurs d’un parc informatique a partir du moment ou un serveur de boot PXE est installé. C’est aussi très utile pour les machine qui n’ont pas le lecteur de CD/DVD ou pour maintenir des machines distantes sur lesquelles ont ne peut pas insérer un disque de boot. SystemRescueCd est capable de démarrer en reseau par PXE depuis la version 0.4.0-beta1 et cela fonctionne sur l’architecture x86 (les ordinateurs PC).

SystemRescueCd implémente le démarrage réseau en utilisant le protocole HTTP plutôt que NFS pour télécharger le systeme, car c’est plus facile a faire fonctionner (un seul port est nécessaire, NFS est complexe a configurer notamment sur un firewall), et HTTP utilise le protocole TCP qui assure l’intégrité des données transmises.

Prérequis

  • Un ordinateur pouvant démarrer sur CD ou clé USB qui servira de serveur PXE. Si vous n’avez pas de machine disponible vous pouvez très bien utiliser installer une machine virtuelle VMWare pour cette tache.
  • Un ordinateur client avec au moins 300Mo de mémoire vive et avec une carte réseau compatible PXE
  • SystemRescueCd version 1.0.0 (édition x86) ou plus récent

Comment le démarrage par PXE fonctionne

Le serveur de boot PXE

Le serveur de boot est composé de trois parties:

  • Le serveur DHCP qui envoie une adresse IP dynamique au client
  • Le serveur TFTP qui envoie les premiers fichiers de démarrage (gestionnaire d’amorçage et noyau) au client
  • Le serveur HTTP qui envoie les systeme de fichiers racine

Ces trois serveurs peuvent fonctionner soit sur une seule machine ou alors être repartis sur plusieurs machines. La méthode fournie par SystemRescueCd vous permet de mettre en place très facilement une machine qui aura ces trois rôles a la fois. Le service pxebootsrv gère en effet les trois serveurs pour vous.

Le processus de boot PXE

Il est utile de comprendre comment le demarrage reseau fonctionne pour pouvoir notamment resoudre les problemes que vous pouvez rencontrer. Voici les étapes importantes du processus:

  1. Quand l’ordinateur client essaie de demarrer avec PXE il commence par envoyer une demande d’adresse IP sur le reseau (DHCP request)
  2. Le serveur DHCP lui repond en lui envoyant une adresse IP dynamique disponible ainsi que d’autres informations (serveur DNS, route par défaut) ainsi que l’adresse du serveur TFTP nécessaire pour la suite.
  3. Le client recoit l’offre l’adresse DHCP et l’accepte. Il se connecte alors au serveur TFTP dont il a recu l’adresse precedemment, et charge les premiers fichiers de demarrage par TFTP.
  4. Le serveur TFTP envoie les fichiers du gestionnaire de démarrage (pxelinux) ainsi que les fichiers a afficher a l’écran par pxelinux
  5. Le client affiche les fichiers reçus et l’utilisateur peut choisir ses options de démarrage. Le gestionnaire de démarrage charge alors le noyau et le fichier initramfs par TFTP.
  6. Le serveur TFTP envoie le noyau et le fichier initramfs demandés précédemment (rescuecd + rescuecd.igz)
  7. Le client demarre le noyau qu’il vient de recevoir et execute le script de demarrage linuxrc qui est dans l’initramfs.
  8. Pendant le démarrage du noyau une requête DHCP est envoyée par le client (option ip=dhcp) pour recevoir une adresse IP. Cette demande peut sembler redondante, mais elle est nécessaire car le noyau n’a pas connaissance de l’adresse IP précédemment reçue par pxelinux.
  9. Le client se connecte ensuite au serveur HTTP dont il connaît l’adresse IP car elle était indiquée dans les options de démarrage du noyau fournies par pxelinux. Il télécharge le fichier sysrcd.dat par HTTP sur ce serveur et le place en mémoire vive (RAM). Ce fichier est assez volumineux (environ 120Mo) car il contient tout le système a l’exception du noyau.
  10. Le client monte le fichier sysrcd.dat pour pouvoir utiliser le contenu et poursuit le démarrage du système.
  11. A cette étape le serveur de démarrage n’est plus nécessaire pour le client et celui-ci peut fonctionner même si on arrête le serveur.

Le service pxebootsrv

Avec SystemRescueCd la configuration du serveur PXE se fait par l’intermédiaire d’un seul service appelé pxebootsrv. Ce serveur est chargé de préparer la configuration du serveur et de lancer les trois services de travail impliqués dans le processus PXE. Quand vous lancez le service pxebootsrv avec /etc/init.d/pxebootsrv start le service analyse ses paramètres qui sont inscrits dans /etc/conf.d/pxebootsrv puis il lance les trois services.

Le service pxebootsrv a été écrit pour rendre PXE très facile a utiliser avec SystemRescueCd. L’utilisateur doit juste écrire un seul fichier de configuration puis lancer un service pour que tout fonctionne. Si cela ne vous convient pas, vous avez toujours la possibilité de configurer vous même les trois services dhcpd/tftpd/thttp.

Paramétrage d’un serveur de boot PXE dans un cas typique

Introduction

Cette section explique comment configurer un serveur de boot PXE pour SystemRescueCd en ayant les trois services de travail sur une seule machine. Cela signifie que les services DHCP, TFTP et HTTP fonctionneront sur le même ordinateur du réseau. Si cela ne vous convient pas lisez plutôt la section suivante.

Aperçu general

Vous devez juste démarrer un SystemRescueCd normalement depuis un CD/USB/HDD et le configurer pour qu’il agisse comme serveur de boot PXE sur votre réseau. La configuration est très simple a effectuer, car il suffit d’écrire vos paramètres dans un seul fichier et de démarrer le service pxebootsrv pour que le serveur soit prêt. Vous pourrez alors démarrer n’importe que client sur le réseau a partir du moment ou il dispose d’au moins 280Mo de mémoire vive.

Etapes pour configurer le serveur de boot PXE

  • Demarrer un SystemRescueCd depuis un CD/USB/HDD sur l’ordinateur qui servira de serveur PXE.
  • Configurer le réseau sur cette machine avec ipconfig et route. Voici un exemple classique:
    • ifconfig eth0 192.168.1.5/24
    • route add default gw 192.168.1.254
  • Editez les paramètres relatifs au réseau et a PXE dans /etc/conf.d/pxebootsrv
  • Démarrez le service par /etc/init.d/pxebootsrv start. En cas d’erreur, lisez le fichier /var/log/messages pour comprendre le problème.
  • La machine doit être ensuite prête pour agir comme serveur PXE sur le réseau.

Voici un exemple de configuration typique que vous pouvez trouver dans le fichier /etc/conf.d/pxebootsrv:

# ------------------------ CONFIGURATION -------------------------------
# By default the current systems acts as DHCP and TFTP and HTTP server
# If you want another machine of you network to act as one of those
# you will have to turn the appropriate option yo "no"

# Set to "yes" if you want this machine to act as a DHCP server
PXEBOOTSRV_DODHCPD="yes"
# Set to "yes" if you want this machine to act as a TFTP server
PXEBOOTSRV_DOTFTPD="yes"
# Set to "yes" if you want this machine to act as an HTTP server
PXEBOOTSRV_DOHTTPD="yes"

# Here is a typical PXE-Boot configuration --> update with your settings
PXEBOOTSRV_SUBNET="192.168.1.0"
PXEBOOTSRV_NETMASK="255.255.255.0"
PXEBOOTSRV_DEFROUTE="192.168.1.254"
PXEBOOTSRV_DNS="192.168.1.254"
PXEBOOTSRV_DHCPRANGE="192.168.1.100 192.168.1.150"
PXEBOOTSRV_LOCALIP="192.168.1.5"

# Keep these values to $PXEBOOTSRV_LOCALIP if the current computer
# acts as TFTP server and HTTP server as well as DHCP server
PXEBOOTSRV_TFTPSERVER="$PXEBOOTSRV_LOCALIP"       # IP address of the TFTP server
PXEBOOTSRV_HTTPSERVER="http://$PXEBOOTSRV_LOCALIP/sysrcd.dat" # download URL

Paramétrage d’un serveur de boot PXE dans les cas plus complexes

Introduction

Cette section explique comment faire pour configurer un serveur de boot PXE dans un environnement ou les trois services de travail (DHCP, TFTP, HTTP) ne peuvent pas tous fonctionner sur la même machine. C’est notamment le cas si vous avez déjà un serveur DHCP sur votre réseau et qu’il n’est pas possible d’en installer un second qui entrerait en conflit avec le premier. Avant de passer a la configuration, faites en sorte d’avoir bien compris comment le processus de boot PXE fonctionne car il est nécessaire de savoir ce qui se passe pour adapter la configuration a votre situation.

Personnalisation du service pxebootsrv

Vous pouvez demander au service pxebootsrv de ne remplir que les services que vous voulez parmi les trois qui sont nécessaire. Par exemple si vous avez deja un serveur DHCP sur votre réseau, vous devrez désactiver le serveur DHCP fourni par SystemRescueCd pour ne garder que les services TFTP/HTTP. Pour cela vous devrez mettre l’option PXEBOOTSRV_DODHCPD a “no” dans le fichier de configuration /etc/conf.d/pxebootsrv dont voici un exemple:

# ------------------------ CONFIGURATION -------------------------------
# By default the current systems acts as DHCP and TFTP and HTTP server
# If you want another machine of you network to act as one of those
# you will have to turn the appropriate option yo "no"

# Set to "yes" if you want this machine to act as a DHCP server
PXEBOOTSRV_DODHCPD="no"
# Set to "yes" if you want this machine to act as a TFTP server
PXEBOOTSRV_DOTFTPD="yes"
# Set to "yes" if you want this machine to act as an HTTP server
PXEBOOTSRV_DOHTTPD="yes"

Si vous utilisez un autre serveur DHCP il sera nécessaire de lui ajouter l’option next-server qui permet de demander au serveur DHCP d’envoyer l’adresse IP du serveur TFTP au client, afin que celui-ci sache ou aller les premiers fichiers de démarrage. Voici un exemple d’utilisation de cette option pour le serveur DHCP de chez ISC:

next-server 192.168.1.5; # IP addr of the TFTP server

Démarrer le client en réseau par PXE

  • Vérifiez d’abord que le serveur est bien configure et prêt a répondre aux requetes
  • Vérifiez que l’ordinateur client est muni d’au moins 1Go de mémoire vive (RAM)
  • Paramétrez si nécessaire le BIOS de l’ordinateur pour qu’il démarre en priorité par le réseau
  • Vérifiez que l’ordinateur client est sur le même réseau que le serveur de boot PXE
  • Démarrez l’ordinateur client et çà devrait fonctionner

Réparer une machine a distance avec PXE

SystemRescueCd propose des options permettant de configurer le réseau automatiquement au moment du démarrage de SystemRescueCd. Si vous utilisez a la fois rootpass et les options de configuration du réseau, alors vous pourrez utiliser SystemRescueCd sur une machine distante sans intervention. Cela peut être très utilise pour Gérer des serveurs Windows ou Linux a distance:

  • dodhcp: Utilisez dodhcp si vous avez un serveur DHCP sur votre réseau et que vous voulez que SystemRescueCd récupère une adresse IP dynamiquement au démarrage.
  • ethx=ipaddr: Cela configure l’adresse IP indiquée en paramètre pour toutes les cartes réseau ethernet trouvées sur la machine. Par exemple si vous utilisez l’option ethx=192.168.0.1 sur une machine avec deux cartes réseau alors eth0 et eth1 seront configurées avec l’adresse 192.168.0.1. Vous pouvez aussi utiliser une option de la forme suivante: ethx=10.0.0.1/24.
  • dns=ipaddr: Ceci indique quel serveur DNS sera utilise pour résoudre les noms. Ainsi dns=192.168.0.254 signifie que 192.168.0.254 sera utilise comme serveur DNS.
  • gateway=ipaddr: Indique la route par défaut qui sera utilisée. Par exemple gateway=192.168.0.254 indique que le routeur 192.168.0.254 sera utilise pour faire passer tous les paquets envoyés a une machine en dehors du réseau local.
  • rootpass=1234: Modifie le mot de passe du compte utilisateur root du système du livecd et le définit a 1234. Ainsi quand vous vous connecterez au système du livecd avec ssh vous pourrez fournir le mot de passe qui sera demande par le client ssh.

Documentation
Manual (EN)
LVM Guide
Disk partitioning
Networking
Manual (FR)

Related
Sourceforge
FSArchiver