Configuration de PXE

GEDsismik

Autres

Systèmes

Un ordinateur peut démarrer sur plusieurs supports : disque dur interne (forcément, en règle général, c'est là qu'on installe l'OS), sur CD/DVD-ROM (on s'en sert notamment pour les disques d'installation de l'OS et les CD-Live), clef/disque USB et... réseau. C'est sur ce dernier point que je vais m'attarder.

Il y a plusieurs intérêts à démarrer une interface réseau comme installer des machines sans support physique (machines qui n'ont pas de lecteur CD ni port USB ou qui doivent être réinstallée souvent) ou avoir des stations légères (à la manière des terminaux X).

Je vous propose ici la mise en place d'un serveur PXE qui lance l'installation de Slackware. Vous pouvez bien sûr lancer une autre image, cette documentation reste utile. Elle est librement inspirée du README officiel de Slackware : README_PXE.TXT. De même, le serveur sera sous GNU/Linux Slackware mais tout est adaptable.

PXE ? Kézako ? Petit Xylophone Edenté ?

Nan ! PXE, ça signifie "Preboot eXecution Environment" (ok, à peine plus clair que le xylo). Il s'agit d'un ensemble de protocoles : Ok, y'a ptet beaucoup de chose mais ça n'est pas complexe.

TFTP

Préparation du dépôt

Commençons par TFTP. On créé le répertoire /tftpboot et on le remplit des fichiers adéquates (comme Sheila) :
# export SLACKDIR=ftp://ftp.slackware.com/pub/slackware/slackware64-current
# 
# mkdir -p /tftpboot/slackware-13.0/pxelinux.cfg
# cp /usr/lib/syslinux/pxelinux.0 /tftpboot/slackware-13.0/
# cd /tftpboot/slackware-13.0/pxelinux.cfg
# wget -qc ${SLACKDIR}/usb-and-pxe-installers/pxelinux.cfg_default -O default
# 
# mkdir -p /tftpboot/slackware-13.0/isolinux
# cd /tftpboot/slackware-13.0/isolinux
# wget -qc ${SLACKDIR}/isolinux/message.txt
# wget -qc ${SLACKDIR}/isolinux/f2.txt
# wget -qc ${SLACKDIR}/isolinux/initrd.img
OpenBSD via PXE
Si vous voulez une installation d'OpenBSD à la place, la création de /tftpboot ressemblerait ça :
# mkdir /tftpboot/
# wget -qc ftp://ftp.openbsd.org/pub/OpenBSD/4.6/i386/bsd.rd -O bsd
# wget -qc ftp://ftp.openbsd.org/pub/OpenBSD/4.6/i386/pxeboot
Dans la partie configuration du DHCP, il faudra alors remplacer la ligne
filename "/slackware-13.0/pxelinux.0";
par
filename "/pxeboot";

Configuration du démon

Sous Slack, TFTP est pré-configuré par inetd. Dans un premier temps, décommentez la ligne tftp dans /etc/inetd.conf ou ajoutez-là :

tftp dgram udp wait root /usr/sbin/in.tftpd in.tftpd -s /tftpboot -r blksize
Note : Beaucoup de distributions utilisent xinetd à la place de inetd. La configuration se fait alors en ajoutant un fichier /etc/xinetd.d/tftp contenant :
service tftp
{
protocol        = udp
port            = 69
socket_type     = dgram
wait            = yes
user            = nobody
server          = /usr/sbin/in.tftpd
server_args     = /tftpboot
disable         = no
}

Il suffit maintenant de redémarrer inetd (Sous slack : /etc/rc.d/rc.inetd restart).

DHCP

On va maintenant configurer ISC DHCP. C'est le serveur DHCP par défaut sous Slackware (et je suppose sur les autres distributions). Partons du principe que le serveur DHCP a pour adresse 192.168.0.1 et que notre réseau soit 192.168.0.0/24. Le fichier /etc/dhcpd.conf ressemblera donc à :
# dhcpd.conf
#
# Configuration file for ISC dhcpd
#
# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;
ddns-update-style none;

# Allow bootp requests
allow bootp;

# Point to the TFTP server:
next-server 192.168.0.1;

# Default lease is 1 week (604800 sec.)
default-lease-time 604800;
# Max lease is 4 weeks (2419200 sec.)
max-lease-time 2419200;

subnet 192.168.0.0 netmask 255.255.255.0 {
    option domain-name "mon-labo-a-moi.com";
    option broadcast-address 192.168.0.255;
    option subnet-mask 255.255.255.0;
    option domain-name-servers 192.168.0.1;
    option routers 192.168.0.10;
    range dynamic-bootp 192.168.0.50 192.168.0.100;
    use-host-decl-names on;
    if substring (option vendor-class-identifier, 0, 9) = "PXEClient" {
      filename "/slackware-13.0/pxelinux.0";
    }
}
Créez maintenant le fichier /etc/rc.d/rc.dhcpd :
#!/bin/sh
#
# /etc/rc.d/rc.dhcpd
#      This shell script takes care of starting and stopping
#      the ISC DHCPD service
#

# Put the command line options here that you want to pass to dhcpd:
DHCPD_OPTIONS="-q eth0"

[ -x /usr/sbin/dhcpd ] || exit 0

[ -f /etc/dhcpd.conf ] || exit 0

start() {
      # Start daemons.
      echo -n "Starting dhcpd:  /usr/sbin/dhcpd $DHCPD_OPTIONS "
      /usr/sbin/dhcpd $DHCPD_OPTIONS
      echo
}
stop() {
      # Stop daemons.
      echo -n "Shutting down dhcpd: "
      killall -TERM dhcpd
      echo
}
status() {
  PIDS=$(pidof dhcpd)
  if [ "$PIDS" == "" ]; then
    echo "dhcpd is not running!"
  else
    echo "dhcpd is running at pid(s) ${PIDS}."
  fi
}
restart() {
      stop
      start
}

# See how we were called.
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart)
        stop
        start
        ;;
  status)
        status
        ;;
  *)
        echo "Usage: $0 {start|stop|status|restart}"
        ;;
esac

exit 0

Configuration du client

Entrez dans le BIOS. Dans la partie définissant l'ordre de boot, vous pouvez choisir "Réseau" (attention : les vieilles machines (disons en dessous du Pentium II ou équivalent) n'ont pas la fonctionnalité). Redémarrez. Et hop ! Bienvenu sous Slack.

Pour conclure, je me suis arrêté ici à ce qui concerne le démarrage sur réseau. Pour l'installation complète, vous pouvez continuer en netinstall (avec un serveur HTTP, FTP ou NFS). J'espère que cette documentation vous a plu.


Le site : Le Livre D'Or
Autres : - Développement - Droit - Graphisme - Mes Applications - Réseau et sécurité -
Systèmes : - Généralités sur les systèmes - BeOS - BSD - GNU/Linux - IBM AIX - MS-DOS / Microsoft Windows -
Par : GEDsismik
Dernière mise jour :
- du site : 14/09/2006
- de la page : 17/12/2009
Site hébergé par Free.
Document issu de http://gedsismik.free.fr/darkdoc/article.php?id=67.
Les informations contenues dans cette page ne sont aucunement garanties.
Toute critique constructive ou correctif est la bienvenue.
Contactez le webmaster
  Linux
 Valid HTML 4.01!  Powered by DarkDoc