Présentation
L'amorçage 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 d'un « OS » sur un serveur.
Une fois cette image "pré-chargée", elle peut éventuellement, en fonction des paramétrages passés à cette image sur le serveur, être installée sur la machine qui a booté en PXE.
Dans notre cas, nous nous concentrerons sur l'aspect qui permet également d'installer de manière automatique et à distance des serveurs sous divers « OS ».
Issa kandji - Promoteur Eric Derasse
Table of Contents
|
I. LES PREREQUIS
1. Côté serveur
Pour l'installation d'un PXE (installation qui se déroulera sous un OS Centos) on aura besoin des packages suivants:
#Xinetd pour activer tftp-server
#DHCP configuré pour permettre bootp.
#ftp server, on utilisera vsftpd
#http server , juste comme alternative
#Bind9 , on en aura besoin pour l’intégration de Windows.
#Un Centos DVD iso
2. Côté client
Pour activer le PXE, il faut auparavant le configurer dans le « BIOS ». L’option se trouve fréquemment dans un menu référence « NIC »
Le boot par PXE s'effectue en plusieurs étapes :
#Recherche d'une adresse IP sur un serveur « DHCP » ainsi que du fichier à booter >Téléchargement du fichier à booter sur un serveur « TFTP ».
#Exécution du fichier "à booter".
NB:La taille du fichier "à booter" ne permet pas de démarrer directement un « Noyau Linux », par exemple, mais il faut que le client le télécharge et l'exécute lui même.
II. LES GRANDES ETAPES DE L’INSTALLATION DU SERVEUR PXE
1. Installation de Paquets
Installation des Packages, si toute fois on ne les as pas installer par défaut lors du déploiement du système d’exploitation.
#yum install xinetd dhcp tftp-server http-server vsftpd system-config-kickstart syslinux
2. Configuration "DHCP-server"
Configuration de notre DHCP-server.
Il faudra remarquer ici l'ajout de quelques options qui seront les suivantes:
allow unknown clients ( permet aux MAC inconnus de recevoir quand même une IP)
booting ( les PC pourront bouter via le server DHCP)
bootp ( permet la détermination d'adresse et le transfert de fichier de démarrage via FTP ou TFTP)
filename ( Est un string pour désigner un fichier sur un serve; dans notre cas —> pxelinux.0)
On a ici un exemple simple pour le fichier dhcpd.conf:
3. Configuration "TFDPD"
On permettra ici au server TFTP de tourner via Xinetd
Pour cela , il faudra juste éditer le fichier /etc/xinetd.d/tftp pour que ça ressemble à ceci:
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
}
NB: Le répertoire « tftp » est « /tftpboot »
4. Configuration des services "FTP/HTTP"
Configuration du server FTP / HTTP pour promouvoir les fichiers d'installation
Dans les deux cas, on notera ici que notre répertoire de travail est : /var/ftp/install ( on le créera s'il n'existe pas).
Ce répertoire devra être déclaré dans les fichiers de configurations /etc/httpd/conf/httpd.conf et /etc/vsftpd/vsftpd.conf comme suit:
NB:On se concentrera seulement sur les paramètres à modifier pour que notre service soit configuré selon les besoins.
HTTPD.conf
################ Des entrées de ce fichier sont omises ###################
DocumentRoot "/var/ftp/install"
# This should be changed to whatever you set DocumentRoot to.
<Directory "/var/ftp/install">
# We include the /icons/ alias for FancyIndexed directory listings. If you
# do not use FancyIndexing, you may comment this out.
Alias /icons/ "/var/www/icons/"
VFTPD.conf
################ Des entrées de ce fichier sont omises ###################
# Example config file /etc/vsftpd/vsftpd.conf
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=YES
#ADDED BY ISSA
#user_config_dir=/etc/vsftpd/vsftpd_user_conf
guest_enable=YES
#guest_username=ftpinstall
#chroot_local_user=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
local_root=/var/ftp/install
5. Approvisionnement des répertoires de travail
On alimente nos répertoire de travail , avec les distributions à déployer. On aura ci dessous l'exemple de la distribution « Centos » via le service « FTP »
Si toute fois, on utilise une image « iso », la commande suivante permet de le monter dans le répertoire de travail:
#mount –t iso9660 -o loop /export/software/CentOS-5.2-x86_64-bin-DVD.iso /var/ftp/install/CentOS
Dans le cas où on a un CD ou DVD déjà prêt, on pourrait avec l'aide de la commande suivante, copier le contenu dans le répretoire de travail
cp -i -avr /media/Centos-x-y/* /var/ftp/install/Centos
6. Directives de boot
On alimente notre répertoire /tftpboot avec les commandes suivantes:
#cp /usr/share/syslinux/pxelinux.0 /tftpboot/
#mkdir –p /tftpboot/images/CentOS
#cp /var/ftp/install/CentOS/images/pxeboot/vmlinuz /tftpboot/images/CentOS
#cp /var/ftp/install/CentOS5x64/images/pxeboot/initrd /tftpboot/images/CentOS
On crée le menu PXE et la configuration par défaut comme suit:
cp /usr/share/syslinux/menu.c32 /tftpboot
mkdir /tftpboot/pxelinux.cfg
vi /tftpboot/pxelinux.cfg/default --> et ajoutons les ligne suivantes:
default menu.c32
prompt 0
timeout 200
ONTIMEOUT local
MENU TITLE Linux-Centos
LABEL Linux-Centos Rescue via FTP
MENU LABEL Linux-Centos
KERNEL images/centos/vmlinuz
append vga=normal initrd=images/centos/initrd.img ramdisk_size=100000\
url --url= ftp://192.168.1.6/install/centos ks=ftp://192.168.1.6/install/ks/centos.cfg
#APPEND initrd=images/centos/initrd.img ramdisk_size=100000 ksdevice=eth0 ip=dhcp url --url http://192.168.1.6/install/centos/ ks=http://192.168.1.6/ks/centos.cfg
NB:Pour utiliser l'installation via HTTP et non FTP, il faudra dans ce fichier commenter le premier "append" et dé-commenter le second.
7. Le fichier "kickstart"
On placera le fichier kickstart ( que l'on peut générer de manière graphique à partir de la commande "system-config-kickstart" , ou utiliser le fichier anaconda créé lors de l'installation ) dans le répertoir "/var/ftp/install/ks/" et il aura comme nom "centos.cfg" comme spécifier dans le « default menu »
NB:Notons que le répertoire "ks" sera créé s'il n'existe pas.
Voici un exemple de notre fichier:
8. Scripts et démarrages des différents services
On redémarre tous les services nécessaires avant de tester:
/etc/init.d/xinetd restart;
/etc/init.d/dhcpd restart;
/etc/init.d/vsftpd restart;
/etc/init.d/httpd restart;
III. INTEGRATION DE UBUNTU
L'intégration consiste à l'ajout de fonction et options suivantes dans notre déploiement actuel afin de pouvoir installer aussi des clients « Ubuntu ».
On ne reprendra ici que les modifications nécessaires:
1. Approvisionnement du répertoire /var/ftp/install/ubuntu-desktop
#cp -arvp /media/Ubuntu9.04 /var/ftp/install/ubuntu-desktop
On alimente le répertoire /tftpboot:
mkdir –p /tftpboot/images/ubuntu
# cp /var/ftp/install/ubuntu-desktop/install/netboot/ubuntu-installer/i386/linux /tftpboot/images/ubuntu-desktop/
# cp /var/ftp/install/ubuntu-desktop/install/netboot/ubuntu-installer/i386/initrd.gz /tftpboot/images/ubuntu-desktop/
2. Modification du fichier /tftpboot/pxelinux.cfg/default comme suit:
default menu.c32
prompt 0
timeout 200
ONTIMEOUT local
MENU TITLE Linux-Centos
LABEL Linux-Centos Rescue via FTP
MENU LABEL Linux-Centos
KERNEL images/centos/vmlinuz
append vga=normal initrd=images/centos/initrd.img ramdisk_size=100000\
url --url= ftp://192.168.1.6/install/centos ks=ftp://192.168.1.6/install/ks/centos.cfg
#append initrd=images/centos/initrd.img ramdisk_size=100000 ksdevice=eth0 ip=dhcp url --url http:/
/192.168.1.6/install/centos/ ks=http://192.168.1.6/ks/centos.cfg
LABEL Ubuntu
MENU LABEL Ubuntu-Desktop 9.4 - KS
kernel images/ubuntu-desktop/linux
append initrd=images/ubuntu-desktop/initrd.gz ks=ftp://192.168.1.6/install/ks/ubuntu.cfg --
tres bon tuto
je l'ai sivi pas a pas et j'ai mon pxe qui fonctionne tres bien
mais j'aimerais avoir la suite pour installer windows…
c tres interessant je voudrai avoir la suite pour installation d'un systeme windows 7
Aperçu du message:
Fermer l'aperçu