« Serveur PXE » : différence entre les versions
(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... ») |
(Ajout d'une information concernant l'objet de cette documentation.) |
||
(7 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 2 : | Ligne 2 : | ||
L'armorçage par le réseau impose dans bien de ces implémentations deux services: | 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 | * '''DHCP''': Pour l'apprentissage du serveur [[Tftp|TFTP]] fournissant les fichiers de démarrage par le client | ||
* '''TFTP''': Pour la fourniture de ces fichiers | * '''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. | 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. | ||
{{Info|Cette documentation ne traite que de l'amorçage PXE via un BIOS. Pour un fonctionnement sous UEFI, le [[Serveur PXE UEFI|document suivant]] est plus approprié.}} | |||
=Installation des services= | =Installation des services= | ||
Ligne 33 : | Ligne 35 : | ||
#adresse du serveur tftpd | #adresse du serveur tftpd | ||
next-server 192.168. | next-server 192.168.183.254; | ||
#fichier de boot pxe | #fichier de boot pxe | ||
filename "lpxelinux.0"; | filename "lpxelinux.0"; | ||
Ligne 41 : | Ligne 43 : | ||
option domain-name-servers 192.168.170.171; | option domain-name-servers 192.168.170.171; | ||
subnet 192.168. | subnet 192.168.183.0 netmask 255.255.255.0 { | ||
range 192.168. | 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. | option broadcast-address 192.168.183.255; | ||
option routers 192.168. | option routers 192.168.183.254; | ||
default-lease-time 600; | default-lease-time 600; | ||
max-lease-time 7200; | max-lease-time 7200; | ||
Ligne 66 : | Ligne 68 : | ||
Si vous voulez utiliser le service DHCP d'un équipement Cisco, vous pouvez vous référez à la [[Dhcp_-_cisco|documentation appropriée]]. | Si vous voulez utiliser le service DHCP d'un équipement Cisco, vous pouvez vous référez à la [[Dhcp_-_cisco|documentation appropriée]]. | ||
==Service | ==Service TFTP== | ||
vim /etc/default/tftpd-hpa | vim /etc/default/tftpd-hpa | ||
<source lang="ini"> | <source lang="ini"> | ||
Ligne 107 : | Ligne 109 : | ||
=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 126 : | ||
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 132 : | ||
<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 144 : | ||
menu background boot-screens/bg-debian.png | menu background boot-screens/bg-debian.png | ||
# Rend l'écran blanc transparent (n'affecte pas le menu) | |||
#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 159 : | ||
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. | LINUX http://192.168.183.254/noyaux/stretch/vmlinuz-2 quiet | ||
APPEND initrd=http://192.168. | 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. | KERNEL http://192.168.183.254/noyaux/stretch/debian-installer/linux quiet | ||
APPEND vga=normal initrd=http://192.168. | 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> | ||
Enfin, envoyez une image PNG (640x480) sur votre serveur pour le fond de votre menu. J'utilise [https://{{SERVERNAME}}/fichiers/amorçage/syslinux/pxe/bg-debian.png celle-ci]. | Enfin, envoyez une image PNG (640x480) sur votre serveur pour le fond de votre menu. J'utilise [https://{{SERVERNAME}}/fichiers/amorçage/syslinux/pxe/bg-debian.png celle-ci]. | ||
<source lang="bash"> | |||
wget https://doc.ycharbi.fr/fichiers/amor%C3%A7age/syslinux/pxe/bg-debian.png -P /srv/tftp/boot-screens/ | |||
</source> | |||
=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 177 : | Ligne 205 : | ||
mkdir -p /srv/tftp/noyaux/stretch/ | mkdir -p /srv/tftp/noyaux/stretch/ | ||
mkdir /srv/tftp/images/ | mkdir /srv/tftp/images/ | ||
''' | '''Importation de son noyau''' | ||
scp vmlinuz-2 root@192.168. | scp vmlinuz-2 root@192.168.183.254:/srv/tftp/noyaux/stretch/ | ||
'''Importation de son initrd''' | '''Importation de son initrd''' | ||
scp initrd.img-2 root@192.168. | scp initrd.img-2 root@192.168.183.254:/srv/tftp/noyaux/stretch/ | ||
'''Importation de l'image''' | '''Importation de l'image''' | ||
scp stretch-pxe.squashfs root@192.168. | scp stretch-pxe.squashfs root@192.168.183.254:/srv/tftp/images | ||
Vous pouvez désormais démarrer une machine en PXE avec cette image SquashFS. | Vous pouvez désormais démarrer une machine en PXE avec cette image SquashFS. | ||
==Debian-installer== | ==Debian-installer== | ||
Les fichiers suivants sont présents dans l'archive '''netboot.tar.gz''' de ''debian-installer'' du [http://ftp.fr.debian.org/debian/dists/stretch/main/installer-amd64/current/images/netboot/netboot.tar.gz dépôt officiel de Debian]. | |||
'''Importation du noyau''' | |||
scp linux root@192.168.183.254:/srv/tftp/noyaux/stretch/debian-installer/ | |||
'''Importation de l'installateur Debian''' | |||
scp initrd.gz root@192.168.183.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''' | ||
Ligne 195 : | Ligne 231 : | ||
mkdir /srv/tftp/noyaux/stretch/debian-installer/ | mkdir /srv/tftp/noyaux/stretch/debian-installer/ | ||
'''Importation du script d'installation''' | '''Importation du script d'installation''' | ||
scp preseed.cfg root@192.168. | scp preseed.cfg root@192.168.183.254:/srv/tftp/scripts/preseed/ | ||
'''Importation du noyau''' | '''Importation du noyau''' | ||
scp linux root@192.168. | scp linux root@192.168.183.254:/srv/tftp/noyaux/stretch/debian-installer/ | ||
'''Importation de l'installateur Debian''' | '''Importation de l'installateur Debian''' | ||
scp initrd.gz root@192.168. | scp initrd.gz root@192.168.183.254:/noyaux/stretch/debian-installer/ | ||
Vous pouvez désormais installer une machine en PXE de façon automatique. | Vous pouvez désormais installer une machine en PXE de façon automatique. |
Dernière version du 29 décembre 2019 à 19:16
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.
INFORMATION
Cette documentation ne traite que de l'amorçage PXE via un BIOS. Pour un fonctionnement sous UEFI, le document suivant est plus approprié.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 TFTP
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 https://doc.ycharbi.fr/fichiers/amor%C3%A7age/syslinux/pxe/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/
Importation de son noyau
scp vmlinuz-2 root@192.168.183.254:/srv/tftp/noyaux/stretch/
Importation de son initrd
scp initrd.img-2 root@192.168.183.254:/srv/tftp/noyaux/stretch/
Importation de l'image
scp stretch-pxe.squashfs root@192.168.183.254:/srv/tftp/images
Vous pouvez désormais démarrer une machine en PXE avec cette image SquashFS.
Debian-installer
Les fichiers suivants sont présents dans l'archive netboot.tar.gz de debian-installer du dépôt officiel de Debian.
Importation du noyau
scp linux root@192.168.183.254:/srv/tftp/noyaux/stretch/debian-installer/
Importation de l'installateur Debian
scp initrd.gz root@192.168.183.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.183.254:/srv/tftp/scripts/preseed/
Importation du noyau
scp linux root@192.168.183.254:/srv/tftp/noyaux/stretch/debian-installer/
Importation de l'installateur Debian
scp initrd.gz root@192.168.183.254:/noyaux/stretch/debian-installer/
Vous pouvez désormais installer une machine en PXE de façon automatique.