Différences entre versions de « PXE »

De The Linux Craftsman
Aller à la navigation Aller à la recherche
 
(14 versions intermédiaires par le même utilisateur non affichées)
Ligne 9 : Ligne 9 :
 
*exécution du fichier à amorcer;
 
*exécution du fichier à amorcer;
 
*téléchargement du contenu via http.
 
*téléchargement du contenu via http.
 +
= Préparation =
 +
Dans un premier temps, il faudra avoir une connexion à Internet, utiliser un serveur DNS et désactiver SELinux.
 +
 +
Pour ceux qui auraient manqué des étapes, les voici:
 +
* [[resolv.conf|Configuration du client DNS]]
 +
* [[ifcfg-ethX|Paramétrer sa carte réseau]]
 +
*[[SELinux#Changement_d.27.C3.A9tat|Désactiver SELinux]]
 +
 +
Une fois ces étapes effectuées, entrons dans le vif du sujet !
 +
 
=Mise en place=
 
=Mise en place=
 
==Installation==
 
==Installation==
Ligne 16 : Ligne 26 :
 
# yum -y install dhcp httpd tftp-server syslinux
 
# yum -y install dhcp httpd tftp-server syslinux
 
</pre>
 
</pre>
On va ensuite configurer le chargeur de démarrage (chkconfig) pour qu'il démarre les services automatiquement au démarrage du système :
+
On va ensuite configurer le chargeur de démarrage pour qu'il démarre les services automatiquement au démarrage du système :
 +
* Pour SystemVInit:
 
<pre>
 
<pre>
 
# chkconfig httpd on
 
# chkconfig httpd on
 
# chkconfig dhcpd on
 
# chkconfig dhcpd on
 
# chkconfig xinetd on
 
# chkconfig xinetd on
 +
</pre>
 +
* Pour SystemD:
 +
<pre>
 +
# systemctl enable httpd.service
 +
# systemctl enable dhcpd.service
 +
# systemctl enable xinetd.service
 +
</pre>
 +
 +
= Configuration des services =
 +
==Tftpd / PXE ==
 +
===Activation de Tftpd===
 +
<pre>
 +
# cat /etc/xinetd.d/tftp
 +
service tftp
 +
{
 +
  socket_type = dgram
 +
  protocol    = udp
 +
  wait        = yes
 +
  user        = root
 +
  server      = /usr/sbin/in.tftpd
 +
  server_args = -s /var/lib/tftpboot
 +
  disable    = no
 +
  per_source  = 11
 +
  cps        = 100 2
 +
  flags      = IPv4
 +
}
 +
</pre>
 +
===Préparation du répertoire tftpboot===
 +
Il faut préparer le répertoire tftpboot en fonction des distributions que l'on va vouloir installer en PXE.
 +
<pre>
 +
# mkdir /var/lib/tftpboot/pxelinux.cfg
 +
# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
 +
# cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/
 +
</pre>
 +
Nous allons ensuite créer le répertoire pour la distribution 64bits...
 +
<pre>
 +
# mkdir -p /var/lib/tftpboot/images/centos/x86_64/6
 +
</pre>
 +
... et ensuite la version 32 bits:
 +
<pre>
 +
# mkdir -p /var/lib/tftpboot/images/centos/i386/6
 +
</pre>
 +
===Copie du bootstrap===
 +
Le bootstrap se trouve sur le DVD de la distribution dans le répertoire «images/pxeboot». Il ne nous reste plus qu'a monter l'image et copier les fichiers ''vmlinuz'' et ''initrd.img''.
 +
*Si vous avez le CD:
 +
<pre>
 +
# mount /dev/cdrom /mnt
 +
</pre>
 +
*Ou si vous avez l'image ISO:
 +
<pre>
 +
# mount -o loop /opt/raid/shares/iso/CentOS-6.5-x86_64-bin-DVD1.iso /mnt
 +
</pre>
 +
Pour la version 64 bits :
 +
<pre>
 +
# cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/images/centos/x86_64/6/
 +
# cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/images/centos/x86_64/6/
 +
</pre>
 +
Pour la version 32 bits :
 +
<pre>
 +
# cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/images/centos/i386/6/
 +
# cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/images/centos/i386/6/
 +
</pre>
 +
 +
=== Copie des fichiers de syslinux ===
 +
La machine à besoin des fichiers de ''Syslinux'' pour démarrer, nous allons les copier dans le répertoire de ''tftp'':
 +
<pre>
 +
# mkdir /tftpboot
 +
# cp /usr/share/syslinux/pxelinux.0 /tftpboot
 +
# cp /usr/share/syslinux/menu.c32 /tftpboot
 +
# cp /usr/share/syslinux/memdisk /tftpboot
 +
# cp /usr/share/syslinux/mboot.c32 /tftpboot
 +
# cp /usr/share/syslinux/chain.c32 /tftpboot
 +
</pre>
 +
== Création d'un menu ==
 +
Il ne reste plus qu'à créer un fichier contenant les instructions d'installation.
 +
<pre>
 +
# cat /var/lib/tftpboot/pxelinux.cfg/default
 +
prompt 0
 +
timeout 300
 +
default menu.c32
 +
ONTIMEOUT local
 +
menu title ------ CentOS PXE Boot options ------
 +
LABEL CentOS 6 x86_64 installer
 +
MENU LABEL CentOS 6 x86_64 installer
 +
KERNEL images/centos/x86_64/6/vmlinuz
 +
APPEND initrd=images/centos/x86_64/6/initrd.img
 +
method=http://192.168.50.254/centos/x86_64/6 ramdisk_size=100000 ip=dhcp url --url http://192.168.50.254/centos/x86_64/6
 +
lang=fr_FR keymap=fr ksdevice=bootif
 +
</pre>
 +
Retenez bien l'url utilisée pour servir les fichiers, nous en aurons besoin un peu plus loin.
 +
==DHCP==
 +
Voici le contenu du fichier ''/etc/dhcp/dhcpd.conf'':
 +
<pre>
 +
subnet 192.168.50.0 netmask 255.255.255.0 {
 +
  allow booting;
 +
  allow bootp;
 +
  option subnet-mask 255.255.255.0;
 +
  next-server 192.168.50.254;
 +
  default-lease-time 3600;
 +
  one-lease-per-client true;
 +
  range 192.168.50.10 192.168.50.50;
 +
  filename "pxelinux.0";
 +
}
 +
</pre>
 +
 +
== HTTPD ==
 +
Configurez votre serveur ''HTTPD'' comme détaillé dans la section [[HTTPD#Configuration_de_base | configuration de base]]
 +
=== Copie des fichiers ===
 +
Nous allons créer les répertoires necessaires :
 +
<pre>
 +
# # Version 64 bits
 +
# mkdir -p /opt/centos/x86_64/6
 +
# cp -Rf /media/* /opt/centos/x86_64/6/
 +
# # Version 32 bits
 +
# mkdir -p /opt/centos/i386/6
 +
# cp -Rf /media/* /opt/centos/x86_64/6/
 +
</pre>
 +
=== Création d'un alias ===
 +
Dans le fichier ''/etc/httpd/conf.d/00-pxeboot.conf'' nous allons mettre les lignes suivantes:
 +
<pre>
 +
Alias
 +
/centos
 +
/opt/centos
 +
<Directory "/opt/centos">
 +
  Options Indexes MultiViews
 +
  AllowOverride None
 +
  Order allow,deny
 +
  Allow from all
 +
</Directory>
 +
</pre>
 +
Ne pas oublier de donner les droit à l'utilisateur apache:
 +
<pre>
 +
# chown -R apache. /opt/centos
 +
</pre>
 +
= Automatisation de l'installation =
 +
<pre>
 +
vi /opt/ks/centos/6.4/mimal.ks
 +
install
 +
url --url=http://192.168.50.254/centos/x86_64/6.4
 +
lang fr_FR.UTF-8
 +
keyboard fr-latin9
 +
network --onboot yes --device eth0 --bootproto dhcp --noipv6
 +
rootpw password
 +
firewall --service=ssh
 +
authconfig --enableshadow --passalgo=sha512
 +
selinux --disabled
 +
timezone --utc Europe/Paris
 +
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
 +
clearpart --all
 +
halt
 +
%packages
 +
@base
 +
@core
 
</pre>
 
</pre>

Version actuelle datée du 25 novembre 2019 à 17:21

Introduction

Présentation de Preboot eXecution Environment

L'amorçage PXE 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. L'image ainsi récupérée peut être le système d'exploitation brut ou bien le système d'exploitation personnalisé avec des composantes logicielles (suite bureautique, utilitaires, packs de sécurité, scripts, etc...). Il permet également d'installer de manière automatique et à distance des serveurs sous divers OS. Pour activer le PXE, il faut auparavant le configurer dans le BIOS et l’option se trouve fréquemment dans un menu concernant la carte réseau.

Les étapes

L'amorce par PXE s'effectue en plusieurs étapes :

  • recherche d'une adresse IP sur un serveur DHCP/BOOTP ainsi que du fichier à amorcer;
  • téléchargement du fichier à amorcer depuis un serveur Trivial FTP;
  • exécution du fichier à amorcer;
  • téléchargement du contenu via http.

Préparation

Dans un premier temps, il faudra avoir une connexion à Internet, utiliser un serveur DNS et désactiver SELinux.

Pour ceux qui auraient manqué des étapes, les voici:

Une fois ces étapes effectuées, entrons dans le vif du sujet !

Mise en place

Installation

Tout d'abord, il faut installer les services dhcp, tftp, http ainsi qu'un paquetage de chargeur d'amorçage (Syslinux):

# yum -y install dhcp httpd tftp-server syslinux

On va ensuite configurer le chargeur de démarrage pour qu'il démarre les services automatiquement au démarrage du système :

  • Pour SystemVInit:
# chkconfig httpd on
# chkconfig dhcpd on
# chkconfig xinetd on
  • Pour SystemD:
# systemctl enable httpd.service
# systemctl enable dhcpd.service
# systemctl enable xinetd.service

Configuration des services

Tftpd / PXE

Activation de Tftpd

# cat /etc/xinetd.d/tftp
service tftp
{
   socket_type = dgram
   protocol    = udp
   wait        = yes
   user        = root
   server      = /usr/sbin/in.tftpd
   server_args = -s /var/lib/tftpboot
   disable     = no
   per_source  = 11
   cps         = 100 2
   flags       = IPv4
}

Préparation du répertoire tftpboot

Il faut préparer le répertoire tftpboot en fonction des distributions que l'on va vouloir installer en PXE.

# mkdir /var/lib/tftpboot/pxelinux.cfg
# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
# cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/

Nous allons ensuite créer le répertoire pour la distribution 64bits...

# mkdir -p /var/lib/tftpboot/images/centos/x86_64/6

... et ensuite la version 32 bits:

# mkdir -p /var/lib/tftpboot/images/centos/i386/6

Copie du bootstrap

Le bootstrap se trouve sur le DVD de la distribution dans le répertoire «images/pxeboot». Il ne nous reste plus qu'a monter l'image et copier les fichiers vmlinuz et initrd.img.

  • Si vous avez le CD:
# mount /dev/cdrom /mnt
  • Ou si vous avez l'image ISO:
# mount -o loop /opt/raid/shares/iso/CentOS-6.5-x86_64-bin-DVD1.iso /mnt

Pour la version 64 bits :

# cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/images/centos/x86_64/6/
# cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/images/centos/x86_64/6/

Pour la version 32 bits :

# cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/images/centos/i386/6/
# cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/images/centos/i386/6/

Copie des fichiers de syslinux

La machine à besoin des fichiers de Syslinux pour démarrer, nous allons les copier dans le répertoire de tftp:

# mkdir /tftpboot
# cp /usr/share/syslinux/pxelinux.0 /tftpboot
# cp /usr/share/syslinux/menu.c32 /tftpboot
# cp /usr/share/syslinux/memdisk /tftpboot
# cp /usr/share/syslinux/mboot.c32 /tftpboot
# cp /usr/share/syslinux/chain.c32 /tftpboot

Création d'un menu

Il ne reste plus qu'à créer un fichier contenant les instructions d'installation.

# cat /var/lib/tftpboot/pxelinux.cfg/default
prompt 0
timeout 300
default menu.c32
ONTIMEOUT local
menu title ------ CentOS PXE Boot options ------
LABEL CentOS 6 x86_64 installer
MENU LABEL CentOS 6 x86_64 installer
KERNEL images/centos/x86_64/6/vmlinuz
APPEND initrd=images/centos/x86_64/6/initrd.img 
method=http://192.168.50.254/centos/x86_64/6 ramdisk_size=100000 ip=dhcp url --url http://192.168.50.254/centos/x86_64/6
lang=fr_FR keymap=fr ksdevice=bootif

Retenez bien l'url utilisée pour servir les fichiers, nous en aurons besoin un peu plus loin.

DHCP

Voici le contenu du fichier /etc/dhcp/dhcpd.conf:

subnet 192.168.50.0 netmask 255.255.255.0 {
   allow booting;
   allow bootp;
   option subnet-mask 255.255.255.0;
   next-server 192.168.50.254;
   default-lease-time 3600;
   one-lease-per-client true;
   range 192.168.50.10 192.168.50.50;
   filename "pxelinux.0";
}

HTTPD

Configurez votre serveur HTTPD comme détaillé dans la section configuration de base

Copie des fichiers

Nous allons créer les répertoires necessaires :

# # Version 64 bits
# mkdir -p /opt/centos/x86_64/6
# cp -Rf /media/* /opt/centos/x86_64/6/
# # Version 32 bits
# mkdir -p /opt/centos/i386/6
# cp -Rf /media/* /opt/centos/x86_64/6/

Création d'un alias

Dans le fichier /etc/httpd/conf.d/00-pxeboot.conf nous allons mettre les lignes suivantes:

Alias 
/centos
/opt/centos
<Directory "/opt/centos">
   Options Indexes MultiViews
   AllowOverride None
   Order allow,deny
   Allow from all
</Directory>

Ne pas oublier de donner les droit à l'utilisateur apache:

# chown -R apache. /opt/centos

Automatisation de l'installation

vi /opt/ks/centos/6.4/mimal.ks
install
url --url=http://192.168.50.254/centos/x86_64/6.4
lang fr_FR.UTF-8
keyboard fr-latin9
network --onboot yes --device eth0 --bootproto dhcp --noipv6
rootpw password
firewall --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --disabled
timezone --utc Europe/Paris
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
clearpart --all
halt
%packages
@base
@core