« Serveur PXE » : différence entre les versions

De Wiki doc

(Page créée avec « Category:pxe L'armorçage par le réseau impose dans bien de ces implémentations deux services: * '''DHCP''': Pour l'apprentissage du serveur TFTP fournissant les fi... »)
 
Aucun résumé des modifications
Ligne 33 : Ligne 33 :


#adresse du serveur tftpd
#adresse du serveur tftpd
next-server 192.168.182.254;
next-server 192.168.183.254;
#fichier de boot pxe
#fichier de boot pxe
filename "lpxelinux.0";
filename "lpxelinux.0";
Ligne 41 : Ligne 41 :
option domain-name-servers 192.168.170.171;
option domain-name-servers 192.168.170.171;


subnet 192.168.182.0 netmask 255.255.255.0 {
subnet 192.168.183.0 netmask 255.255.255.0 {
range 192.168.182.2 192.168.182.99;
range 192.168.183.2 192.168.183.99;
option subnet-mask 255.255.255.0;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.182.255;
option broadcast-address 192.168.183.255;
option routers 192.168.182.254;
option routers 192.168.183.254;
default-lease-time 600;
default-lease-time 600;
max-lease-time 7200;
max-lease-time 7200;
Ligne 107 : Ligne 107 :
=Provisionnement des fichiers d'amorçage=
=Provisionnement des fichiers d'amorçage=
Nous utiliserons PXELinux (Syslinux via le réseau) pour effectuer la tâche de [[:Catégorie:Chargeur d'amorçage|chargeur d'amorçage]] par le réseau.
Nous utiliserons PXELinux (Syslinux via le réseau) pour effectuer la tâche de [[:Catégorie:Chargeur d'amorçage|chargeur d'amorçage]] par le réseau.
'''Téléchargement de Syslinux'''
'''Téléchargement de Syslinux'''
  wget https://www.kernel.org/pub/linux/utils/boot/syslinux/Testing/6.04/syslinux-6.04-pre1.tar.gz -P /tmp
  wget https://www.kernel.org/pub/linux/utils/boot/syslinux/Testing/6.04/syslinux-6.04-pre1.tar.gz -P /tmp
Ligne 123 : Ligne 124 :
  mkdir /srv/tftp/pxelinux.cfg
  mkdir /srv/tftp/pxelinux.cfg


{{info|Vous pouvez utiliser le fichier <source lang="bash" inline>/tmp/syslinux-6.04-pre1/bios/core/lpxelinux.0</source> pour assurer la compatibiliter avec le protocole HTTP ou le fichier <source lang="bash" inline>/tmp/syslinux-6.04-pre1/bios/core/pxelinux.0 /srv/tftp/</source> pour rester classique et n'utiliser que le TFTP.}}
{{info|Vous pouvez utiliser le fichier <source lang="bash" inline>/tmp/syslinux-6.04-pre1/bios/core/lpxelinux.0</source> pour assurer la compatibiliter avec le protocole HTTP ou le fichier <source lang="bash" inline>/tmp/syslinux-6.04-pre1/bios/core/pxelinux.0 /srv/tftp/</source> pour rester classique et n'utiliser que le TFTP. Pensez dans ce cas à adapter le fichier fournit par votre DHCP.}}


'''Création du menu PXE'''
'''Création du menu PXE'''
Ligne 129 : Ligne 130 :


<source lang="bash">
<source lang="bash">
##########################
# Personnalisation du menu
##########################
default /boot-screens/vesamenu.c32
default /boot-screens/vesamenu.c32
menu hshift 13
menu hshift 13
Ligne 136 : Ligne 142 :
menu background boot-screens/bg-debian.png
menu background boot-screens/bg-debian.png


#Démarrage automatique de l'entrée spécifié au bout de 3 secondes
# Rend l'écran blanc transparent (n'affecte pas le menu)
timeout 30
ONTIMEOUT Debian_Stretch
MENU AUTOBOOT Lancement de Debian_Stretch dans # secondes
 
#Rend l'écran blanc transparent (n'affecte pas le menu)
#menu color screen 37;40      #80ffffff #ccffffff std
#menu color screen 37;40      #80ffffff #ccffffff std


#Couleur du selectueur (là ou est le curseur. Je le met en orange non transpatrent (ff). 00 pour transparent à 100%
# Couleur du selectueur (là ou est le curseur. Je le met en orange non transpatrent (ff). 00 pour transparent à 100%
menu color sel 7;37;40    #e0000000 #ccff8000 all
menu color sel 7;37;40    #e0000000 #ccff8000 all


#Couleur du font du menu (ne comprend pas le fond du titre). En noir
# Couleur du font du menu (ne comprend pas le fond du titre). En noir
menu color unsel 37;44      #90ffffff #cc000000 std
menu color unsel 37;44      #90ffffff #cc000000 std


Couleur du fond du titre (d'une hauteur d'1em donc ça couvre que la taille du texte).
# Couleur du fond du titre (d'une hauteur d'1em donc ça couvre que la taille du texte).
menu color title 1;36;44    #c00090f0 #20000000 std
menu color title 1;36;44    #c00090f0 #20000000 std


Ligne 156 : Ligne 157 :
menu autoboot Starting Local System in # seconds
menu autoboot Starting Local System in # seconds
prompt 0
prompt 0
##################################
# Entrée des systèmes de démarrage
##################################
# Démarrage automatique de l'entrée spécifié au bout de 3 secondes
timeout 30
ONTIMEOUT Debian_Stretch
MENU AUTOBOOT Lancement de Debian_Stretch dans # secondes
LABEL Disque_local
MENU LABEL Amorcer le disque local
localboot -1


LABEL Debian_Stretch
LABEL Debian_Stretch
MENU LABEL Lancer Debian Stretch
MENU LABEL Lancer Debian Stretch
LINUX http://192.168.182.254/noyaux/stretch/vmlinuz-2 quiet
LINUX http://192.168.183.254/noyaux/stretch/vmlinuz-2 quiet
APPEND initrd=http://192.168.182.254/noyaux/stretch/initrd.img-2 boot=live vga=792 config noswap noprompt fetch=http://192.168.182.254/images/stretch-pxe.squashfs ramdisk_size=6666 root=/dev/ram0 rw net.ifnames=0 showmounts toram quickreboot
APPEND initrd=http://192.168.183.254/noyaux/stretch/initrd.img-2 boot=live vga=792 config noswap noprompt fetch=http://192.168.183.254/images/stretch-pxe.squashfs ramdisk_size=6666 root=/dev/ram0 rw net.ifnames=0 showmounts toram quickreboot
 
LABEL Installation_Debian_manu
MENU LABEL Installer Debian 9 manu
KERNEL http://192.168.183.254/noyaux/stretch/debian-installer/linux quiet
APPEND vga=normal initrd=http://192.168.183.254/noyaux/stretch/debian-installer/initrd.gz priority=low


LABEL Installation_Debian_auto
LABEL Installation_Debian_auto
MENU LABEL Installer Debian 9 auto
MENU LABEL Installer Debian 9 auto
KERNEL http://192.168.182.254/noyaux/stretch/debian-installer/linux quiet
KERNEL http://192.168.183.254/noyaux/stretch/debian-installer/linux quiet
APPEND vga=normal initrd=http://192.168.182.254/noyaux/stretch/debian-installer/initrd.gz auto=true interface=auto netcfg/dhcp_timeout=60 netcfg/choose_interface=auto priority=critical url=http://192.168.182.254/scripts/preseed/preseed.cfg DEBCONF_DEBUG=5 IPAPPEND 2
APPEND vga=normal initrd=http://192.168.183.254/noyaux/stretch/debian-installer/initrd.gz auto=true interface=auto netcfg/dhcp_timeout=60 netcfg/choose_interface=auto priority=critical url=http://192.168.183.254/scripts/preseed/preseed.cfg DEBCONF_DEBUG=5 IPAPPEND 2
</source>
</source>


Ligne 171 : Ligne 190 :
  wget --no-check-certificate https://doc.ycharbi.fr/fichiers/amor%C3%A7age/syslinux/pxe/bg-debian.png -P /srv/tftp/boot-screens/
  wget --no-check-certificate https://doc.ycharbi.fr/fichiers/amor%C3%A7age/syslinux/pxe/bg-debian.png -P /srv/tftp/boot-screens/
=Provisionnement des systèmes distants=
=Provisionnement des systèmes distants=
==Démarrage sur le disque local==
Si un système est déjà installé sur le volume local de votre machine, vous pouvez utiliser la première entrée du menu configuré plus haut avec l'option [http://reboot.pro/topic/11640-syslinux-normal-boot-from-local-hard-drive/ localboot].
==SquashFS==
==SquashFS==
Pour la création d'une image SquashfS, je vous invites à lire la [[Squashfs|documentation appropriée]].
Pour la création d'une image SquashfS, je vous invites à lire la [[Squashfs|documentation appropriée]].
Ligne 187 : Ligne 208 :


==Debian-installer==
==Debian-installer==
'''Importation du noyau'''
scp linux root@192.168.182.254:/srv/tftp/noyaux/stretch/debian-installer/
'''Importation de l'installateur Debian'''
scp initrd.gz root@192.168.182.254:/noyaux/stretch/debian-installer/


==Preseed==
==Preseed==
Pour la création d'un fichier Preseed, je vous invites à lire la [[Installation_automatique_Debian|documentation appropriée]].
Pour la création d'un fichier Preseed, je vous invites à lire la [[Installation_automatique_Debian|documentation appropriée]].
La partie sur le noyau et l'initrd est identique à la section [[#Debian-installer|Debian-installer]].


'''Création des répertoires d'accueils'''
'''Création des répertoires d'accueils'''

Version du 24 décembre 2017 à 17:50


L'armorçage par le réseau impose dans bien de ces implémentations deux services:

  • DHCP: Pour l'apprentissage du serveur TFTP fournissant les fichiers de démarrage par le client
  • TFTP: Pour la fourniture de ces fichiers

J'ajouterai un service HTTP afin d'améliorer les performances par rapport au service TFTP (qui est vraiment tout pourris). Ce dernier ne servira donc qu'a l'amorçage de PXELinux, HTTP s'occupant du transfère des différents fichiers de démarrage.

Installation des services

Pour cet exemple j'utiliserai les services suivants:

apt install isc-dhcp-server tftpd-hpa apache2

Configuration des services

Service DHCP

Isc-dhcp-server

vim /etc/dhcp/dhcpd.conf
#Désactivation du dynDNS
ddns-update-style none;

#Limitation du DDoS
deny declines;

#Permet l'envoi de requette DHCPNAK
authoritative;

#------ autorisation du pxe ------

allow bootp;
allow booting;

#------ POUR LE PXE ------

#adresse du serveur tftpd
next-server 192.168.183.254;
#fichier de boot pxe
filename "lpxelinux.0";

#------ définition des serveurs DNS ------

option domain-name-servers 192.168.170.171;

subnet 192.168.183.0 netmask 255.255.255.0 {
	range 192.168.183.2 192.168.183.99;
	option subnet-mask 255.255.255.0;
	option broadcast-address 192.168.183.255;
	option routers 192.168.183.254;
	default-lease-time 600;
	max-lease-time 7200;
}
vim /etc/default/isc-dhcp-server
# Spécifiez vos interfaces en les séparant par des espaces
INTERFACESv4="eth0"
INTERFACESv6=""

Redémarrer le service

systemctl restart isc-dhcp-server.service

Dnsmasq

DHCP Cisco

Si vous voulez utiliser le service DHCP d'un équipement Cisco, vous pouvez vous référez à la documentation appropriée.

Service TFFP

vim /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/srv/tftp"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure -v"
RUN_DAEMON="yes"

Redémarrer le service

systemctl restart tftpd-hpa.service

Service HTTP

vim /etc/apache2/apache2.conf
<Directory /srv/tftp>
	Options Indexes FollowSymLinks
	AllowOverride None
	Require all granted
</Directory>
vim /etc/apache2/sites-available/pxe.conf
<VirtualHost *:80>
	ServerAdmin webmaster@localhost
	DocumentRoot /srv/tftp

	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
a2dissite 000-default.conf
a2ensite pxe.conf
systemctl reload apache2.service

Provisionnement des fichiers d'amorçage

Nous utiliserons PXELinux (Syslinux via le réseau) pour effectuer la tâche de chargeur d'amorçage par le réseau.

Téléchargement de Syslinux

wget https://www.kernel.org/pub/linux/utils/boot/syslinux/Testing/6.04/syslinux-6.04-pre1.tar.gz -P /tmp

Si le lien venait à mourir, Syslinux est téléchargeable ici.

Extraction de son contenu

tar xzvf /tmp/syslinux-6.04-pre1.tar.gz -C /tmp

Copie des fichiers d’intérêts pour notre usage

cp /tmp/syslinux-6.04-pre1/bios/com32/elflink/ldlinux/ldlinux.c32 /srv/tftp/
cp /tmp/syslinux-6.04-pre1/bios/com32/lib/libcom32.c32 /srv/tftp/
cp /tmp/syslinux-6.04-pre1/bios/com32/libutil/libutil.c32 /srv/tftp/
cp /tmp/syslinux-6.04-pre1/bios/core/lpxelinux.0 /srv/tftp/
cp /tmp/syslinux-6.04-pre1/bios/memdisk/memdisk /srv/tftp/
mkdir /srv/tftp/boot-screens/
cp /tmp/syslinux-6.04-pre1/bios/com32/menu/vesamenu.c32 /srv/tftp/boot-screens/
mkdir /srv/tftp/pxelinux.cfg

INFORMATION

Vous pouvez utiliser le fichier /tmp/syslinux-6.04-pre1/bios/core/lpxelinux.0 pour assurer la compatibiliter avec le protocole HTTP ou le fichier /tmp/syslinux-6.04-pre1/bios/core/pxelinux.0 /srv/tftp/ pour rester classique et n'utiliser que le TFTP. Pensez dans ce cas à adapter le fichier fournit par votre DHCP.

Création du menu PXE

vim /srv/tftp/pxelinux.cfg/default
##########################
# Personnalisation du menu 
##########################

default /boot-screens/vesamenu.c32
menu hshift 13
menu width 49
menu vshift 12
menu title Menu PXE Yohan
menu background boot-screens/bg-debian.png

# Rend l'écran blanc transparent (n'affecte pas le menu)
#menu color screen	37;40      #80ffffff #ccffffff std

# Couleur du selectueur (là ou est le curseur. Je le met en orange non transpatrent (ff). 00 pour transparent à 100%
menu color sel		7;37;40    #e0000000 #ccff8000 all

# Couleur du font du menu (ne comprend pas le fond du titre). En noir
menu color unsel	37;44      #90ffffff #cc000000 std

# Couleur du fond du titre (d'une hauteur d'1em donc ça couvre que la taille du texte).
menu color title	1;36;44    #c00090f0 #20000000 std

menu tabmsg Press ENTER to boot or TAB to edit a menu entry
menu autoboot Starting Local System in # seconds
prompt 0

##################################
# Entrée des systèmes de démarrage 
##################################

# Démarrage automatique de l'entrée spécifié au bout de 3 secondes
timeout 30
ONTIMEOUT Debian_Stretch
MENU AUTOBOOT Lancement de Debian_Stretch dans # secondes

LABEL Disque_local
MENU LABEL Amorcer le disque local
localboot -1

LABEL Debian_Stretch
MENU LABEL Lancer Debian Stretch
LINUX http://192.168.183.254/noyaux/stretch/vmlinuz-2 quiet
APPEND initrd=http://192.168.183.254/noyaux/stretch/initrd.img-2 boot=live vga=792 config noswap noprompt fetch=http://192.168.183.254/images/stretch-pxe.squashfs ramdisk_size=6666 root=/dev/ram0 rw net.ifnames=0 showmounts toram quickreboot

LABEL Installation_Debian_manu
MENU LABEL Installer Debian 9 manu
KERNEL http://192.168.183.254/noyaux/stretch/debian-installer/linux quiet
APPEND vga=normal initrd=http://192.168.183.254/noyaux/stretch/debian-installer/initrd.gz priority=low

LABEL Installation_Debian_auto
MENU LABEL Installer Debian 9 auto
KERNEL http://192.168.183.254/noyaux/stretch/debian-installer/linux quiet
APPEND vga=normal initrd=http://192.168.183.254/noyaux/stretch/debian-installer/initrd.gz auto=true interface=auto netcfg/dhcp_timeout=60 netcfg/choose_interface=auto priority=critical url=http://192.168.183.254/scripts/preseed/preseed.cfg DEBCONF_DEBUG=5 IPAPPEND 2

Enfin, envoyez une image PNG (640x480) sur votre serveur pour le fond de votre menu. J'utilise celle-ci.

wget --no-check-certificate bg-debian.png -P /srv/tftp/boot-screens/

Provisionnement des systèmes distants

Démarrage sur le disque local

Si un système est déjà installé sur le volume local de votre machine, vous pouvez utiliser la première entrée du menu configuré plus haut avec l'option localboot.

SquashFS

Pour la création d'une image SquashfS, je vous invites à lire la documentation appropriée.

Création des répertoires d'accueils

mkdir -p /srv/tftp/noyaux/stretch/
mkdir /srv/tftp/images/

Imoortation de son noyau

scp vmlinuz-2 root@192.168.182.254:/srv/tftp/noyaux/stretch/

Importation de son initrd

scp initrd.img-2 root@192.168.182.254:/srv/tftp/noyaux/stretch/

Importation de l'image

scp stretch-pxe.squashfs root@192.168.182.254:/srv/tftp/images

Vous pouvez désormais démarrer une machine en PXE avec cette image SquashFS.

Debian-installer

Importation du noyau

scp linux root@192.168.182.254:/srv/tftp/noyaux/stretch/debian-installer/

Importation de l'installateur Debian

scp initrd.gz root@192.168.182.254:/noyaux/stretch/debian-installer/

Preseed

Pour la création d'un fichier Preseed, je vous invites à lire la documentation appropriée.

La partie sur le noyau et l'initrd est identique à la section Debian-installer.

Création des répertoires d'accueils

mkdir -p /srv/tftp/scripts/preseed/
mkdir /srv/tftp/noyaux/stretch/debian-installer/

Importation du script d'installation

scp preseed.cfg root@192.168.182.254:/srv/tftp/scripts/preseed/

Importation du noyau

scp linux root@192.168.182.254:/srv/tftp/noyaux/stretch/debian-installer/

Importation de l'installateur Debian

scp initrd.gz root@192.168.182.254:/noyaux/stretch/debian-installer/

Vous pouvez désormais installer une machine en PXE de façon automatique.