LE SERVEUR PXE
Pre-Boot Execution
INTRODUCTION
Le démarrage PXE (sigle de Pre-boot eXecution Environment) permet à une station de travail de démarrer depuis le réseau en récupérant une image de système d'exploitation qui se trouve sur un serveur avec les images des OS, chaque un peut être personnalisé pour son utilisation d'un un milieu bien déterminé (Mise à jours, bureautique, scripts….).
La fonctionnalité du serveur PXE utilise le protocole bootp, qui est un protocole d'amorçage . Permettant à une machine cliente sans disque dur de découvrir sa propre adresse IP , adresse du serveur, nom du fichier charger en mémoire pour son exécution,
Un serveur PXE permet d'installer d'une manière automatique et à distance des clients sous divers OS.
Il important de configurer dans le BIOS l'option boot on lan. L’option se trouve fréquemment dans un menu concernant la carte réseau.
La taille du fichier téléchargé ne permet pas de le faire directement sur le noyau de l'OS, mais il faut que le fichier le télécharge et l'exécute lui même.
L'amorçage est une opération se produisant en deux phases principales:
1) Recherche d'une adresse IP, Détermination d'adresses et sélection du fichier de démarrage, c'est ici qu'intervient le protocole BOOTP. Une fois l'adresse IP attribué le client se connecte à un serveur TFTP pour charger une image basique de l'OS.
2) Le fichiers Kickstart va définir les paramètres de l'installation depuis le serveur. Transfert du fichier de démarrage, le transfert utilisera typiquement le protocole TFTP, SFTP ou encore FTP.
Le serveur BOOTP utilise le port 67 et le client BOOTP utilise le port 68.
Syslinux
est un bootloader (comme grub ou lilo) qui se décline en plusieurs versions : isolinux pour les cdrom et les clés usb (c'est ce qui est utilisé pour le cd d'install de Fedora), pxelinux pour le boot via le réseau, etxlinux pour le boot depuis le disque dur, etc. Voir le site de syslinux pour plus d'infos (http://syslinux.zytor.com/wiki/index.ph … UX_Project)
pxelinux.0
c'est un petit programme qui va lire un fichier de configuration, puis afficher un prompt pour que l'utilisateur choisisse son OS. Ce programme fait partie du projet SYSLINUX.
La configuration de PXELINUX est très souple : il est possible d'avoir un menu de boot différent pour chaque machine ou groupe de machine en fonction de leur adresse MAC, IP ou classe d'adresse IP. Mais nous nous contenterons d'un menu unique.
memdisk
Un interêt de PXELINUX est de pouvoir booter des images de disquettes. Le logiciel Ghost (TM) permet de déployer des images de disque dur sur des machines par le réseau. Le démarrage des machines cibles se fait par disquettes, nous allons voir comment mettre ses disquettes sur le boot PXE.
menu.c32
Une fois qu'on a plein d'option, on se rend compte que c'est long de taper le nom de l'image qu'on veut booter, qu'à cela ne tienne, on va mettre un menu. Dans l'archive de SYSLINUX se trouve un exécutable nommé menu.c32 qui dote PXELINUX d'un menu graphique utilisable avec les flèches. On le copie à côté des autres et on modifie le fichier de configuration :
MENU
I. MATÉRIEL UTILISÉ
II. ÉTAPES INSTALLATION ET CONFIGURATION
III. ÉTAPES DE TEST
IV. SITE DE RÉFÉRENCES
SCHEMA

I MATÉRIEL UTILISÉ
J'utilise Virtualbox de Sun Microsystems, pour faire les test et mise en place par un serveur CentOS.
Je vais utiliser la même machine pour tous les services vu mon matériel à portée de ma main,
mais il n'es pas très conseillée au point de vue sécurité aux pannes.
II ÉTAPES INSTALLATION ET CONFIGURATION
a) Installer les pacqués utilisés, s'il ne sont pas déjà installer par défaut .
Pour l'installation d'un PXE j'ai besoin de packages suivants:
Serveur tftp j'utiliserais vsftpd
Serveur DHCP configuré pour permettre bootp.
OS-DVD,iso
[root@localhost /]# yum install xinetd dhcp tftp-server vsftpd system-config-kickstart syslinux
Stopper le pare feux
[root@localhost /]#service iptables stop
b) Configuration, lancement et test du SERVEUR-DHCP.
Configuration /etc/dhcpd.conf:
## /etc/dhcpd.conf
##
## DHCP Server Configuration file.
## see /usr/share/doc/dhcp*/dhcpd.conf.sample
##
ddns-update-style interim;
ignore client-updates;
subnet 192.168.2.0 netmask 255.255.255.0 {
option routers 192.168.2.1;
option subnet-mask 255.255.255.0;
authoritative;
range dynamic-bootp 192.168.2.10 192.168.2.254;
default-lease-time 21600;
max-lease-time 43200;
allow unknown-clients;
allow booting;
allow bootp;
filename "/pxelinux.0";
}
Configuration de l'interface Ethernet DHCP
###etc/sysconfig/dhcpd
##Command line options here
DHCPDARGS=eth1
Lancement du service DHCP
[root@localhost /]#service dhcpd start
Test du serveur DHCP
[root@localhost /]#dhclient -r
[root@localhost /]#dhclient
Configuration du serveur TFTP /var/ftp/pub est le dossier racine pour les transferts ftp, et /etc/vsftpd/vsftpd.conf comme suit:
mettre à disposition dans le répertoire /tftpboot le bout de code qui permet d’amorcer le mécanisme de PXE et les fichiers d’amorçage de la distribution
[root@localhost /]#cp -p /usr/lib/syslinux/pxelinux.0 /tftpboot/ (ce fichier fait partie du pakcage syslinux)
[root@localhost /]#mkdir /tftpboot/pxelinux.cfg
[root@localhost /]#cp -p /media/CentOS_5.3_Final/images/pxeboot/vmlinuz /tftpboot/linux/centos/
[root@localhost /]#cp -p /media/CentOS_5.3_Final/images/pxeboot/initrd.img /tftpboot/linux/centos/
service TFTPD
[root@localhost /]#/etc/init.d/xinetd restart
[root@localhost /]#vi /etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
Configuration /etc/vsftpd/vsftpd.conf
VFTPD.conf
anonymous_enable=YES
local_root=/var/ftp/
chmod -Rf 777 ftp/
Je copie le contenu du du dvd CentOS dans le dosser de partage tftp
#cp -i /media/CentOS_5.3_Final/* /var/ftp/CentOS
Le package syslinux contient les fichiers suivants
#ls /usr/lib/syslinux/
chain.c32 isolinux.bin mbr.bin pxelinux.0 syslinux.exe
com32 isolinux-debug.bin memdisk sys2ansi.pl syslinux-nomtools
copybs.com keytab-lilo.pl menu.c32 syslinux
ethersel.c32 mboot.c32 mkdiskimage syslinux.com
Creation du repertoire pour les menus PXE
[root@localhost /]# mkdir /tftpboot/pxelinux.cfg
Je copie les fichiers nécessaires
[root@localhost /]#cp /usr/lib/syslinux/pxelinux.0 /tftpboot
[root@localhost /]#cp /usr/lib/syslinux/menu.c32 /tftpboot
[root@localhost /]#cp /usr/lib/syslinux/memdisk /tftpboot
[root@localhost /]#cp /usr/lib/syslinux/mboot.c32 /tftpboot
[root@localhost /]#cp /usr/lib/syslinux/chain.c32 /tftpboot
/var/ftp/install/centos-ks.cfg
J'utilse anaconda en mode graphique et je crée le fichier de configuration
#platform=x86, AMD64, ou Intel EM64T
# System authorization information
auth --useshadow --enablemd5
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Use graphical install
graphical
# Firewall configuration
firewall --disabled
# Run the Setup Agent on first boot
firstboot --disable
# System keyboard
keyboard be-latin1
# System language
lang fr_BE
# Installation logging level
logging --level=info
# Use network installation
url --url=ftp://192.168.2.1/install/Centos5.3
# SELinux configuration
selinux --enforcing
# System timezone
timezone Europe/Brussels
# Install OS instead of upgrade
install
# X Window System configuration information
xconfig --defaultdesktop=GNOME --depth=8 --resolution=1440x900
%packages
@gnome-desktop
reboot after install
Je configure le fichier /tftpboo/pxelinux.cfg/default
default menu.c32
prompt 0
timeout 300
ONTIMEOUT local
MENU TITLE PXE Menu
LABEL Centos
MENU LABEL Installation automatisee de Centos 5.3
kernel /Centos5.3/vmlinuz
append load initrd=/Centos5.3/initrd.img devfs=nomount ramdisk_size=800000\ url --url= ftp://192.168.2.1/var/ftp/Centos5.3 ks=ftp://192.168.2.1/install/centos-ks.cfg
LABEL Centos
MENU LABEL Installation personnalisee de Centos 5.3
kernel /Centos5.3/vmlinuz
append load initrd=/Centos5.3/initrd.img devfs=nomount
LABEL Ubuntu
MENU LABEL Installation automatisee de Ubuntu 9.10
kernel /Ubuntu9.1/vmlinuz
append load initrid=/Ubuntu9.1/initrd.img devfs=mount ramdisk_size=80000\url -–url=ftp://192.168.2.1/var/ftp/Ubuntu9.1 ks=ftp://192.168.2.1/install/ubuntu-ks.cfg
tree -d
Je contrôle l'arborescence des dossier
tree -d /tftpboot/
tree -d /var/ftp/install/
III. ÉTAPES DE TEST
IV. SITE DE RÉFÉRENCES
http://elle.epfl.ch/Installationde-CentOS-4-par
http://www.enm.bris.ac.uk/staff/pjn/Kickstart-Talk/
http://fr.wikipedia.org/wiki/Preboot_Execution_Environment
http://www.stanford.edu/~alfw/PXE-Kickstart/PXE-Kickstart.html