22
0
Fork 0

Update full install & configure a PXE server

This commit is contained in:
btatu 2017-04-06 14:15:22 +02:00
parent a35f537982
commit b8320092a7
1 changed files with 96 additions and 43 deletions

View File

@ -1,64 +1,117 @@
**Cette page a été importée automatiquement de notre ancien wiki mais n'a pas encore été révisée.**
---
title: Howto PXE
...
Nous allons voir comment mettre en place rapidement un serveur de boot PXE pour installer un système via le réseau.
Nous allons voir comment mettre en place un serveur de boot PXE qui va nous servire à installer des système depuis le réseau au lieu des clés USB (que l'on peut perdre facilement!)
Pour ce faire, deux protocoles nous intéresse : [DHCP](https://fr.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol) et [TFTP](https://fr.wikipedia.org/wiki/Trivial_File_Transfer_Protocol).
Nous allons installer 3 serveurs :
Toutes les manipulations seront à réaliser sur le même serveur (192.168.0.10) dont son réseau logique sera en 192.168.0.0/24 avec la passerelle en 192.168.0.254
* un serveur DHCP, pour fournir les informations réseau à la machine ;
* un serveur TFTP, pour le transfert des fichiers nécessaires au boot ;
* et bien sûr, le serveur PXE en lui même.
On notera que dans le BIOS, il y a besoin d'activer et de mettre en priorité l'interface réseau (avant de pouvoir booter sur un disque) et d'être en mode "BIOS" et non pas "UEFI".
Packets nécessaires :
# Installation du service DHCP :
Commençons par installer le paquet suivant qui est simple d'utilisation :
~~~
# aptitude install dhcp3-server pxe atftpd
apt-get install isc-dhcp-server
~~~
## Configuration du réseau
*Attention :* Pour éviter d'interférer avec le serveur DHCP de votre réseau, il est nécessaire de recréer un second réseau, à l'aide d'un switch par exemple, et isolé de votre premier réseau.
### Attribution d'une IP à la carte réseau
On fixe l'adresse IP du serveur PXE :
Ensuite, nous décrivons la configuration réseau dans le fichier /etc/dhcp/dhcpd.conf
~~~
ifconfig eth0 192.168.0.254
~~~
#allow booting;
### Configuration du serveur DHCP
Premièrement, il faut renseigner les interfaces gérées dans le fichier _/etc/default/dhcp3-serveur_
~~~
INTERFACES="eth0"
~~~
Ensuite, nous décrivons la configuration réseau dans le fichier _/etc/dhcp3/dhcpd.conf_
~~~
subnet 192.168.0.0 netmask 255.255.255.0
{
range 192.168.0.1 192.168.0.100;
option routers 192.168.0.100;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
filename "/debian-5.0-amd64/pxelinux.0";
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.100 192.168.0.150;
option broadcast-address 192.168.0.255;
option routers 192.168.0.254;
option domain-name-servers 192.168.0.254;
next-server 192.168.0.10; # Correspond à l'IP du serveur PXE
filename "pxelinux.0";
}
~~~
L'option filename indique le chemin (à partir du chroot du serveur TFTP) du fichier image à booter.
## Avertissements
## Configuration du serveur TFTP
*Attention :* Pour éviter dinterférer avec le serveur DHCP de votre réseau ou pour effectuer des test, il est nécessaire de recréer un second réseau de manière à ce qu'ils ne puissent pas communiquer entre eux.
Nous utilisons atftp comme serveur TFTP. Aucune configuration n'est nécessaire, il est fonctionnel dès l'installation. Par défaut il est lancé par inetd. Pour désactiver ce comportement, remplacez la ligne `USE_INETD=true` par `false`.
Vu que l'on doit pas interférer avec l'autre réseau, on peut utiliser une IP dédié à ce projet en modifiant le fichier /etc/default/isc-dhcp-server
Il s'agira alors de modifier le paramètre suivant :
Suivant si inetd est utilisé ou pas, il est possible de modifier les options de atftpd, soit dans le fichier _/etc/inetd.conf_ soit dans le fichier _/etc/default/atftp_.
~~~
INTERFACES="eth1"
~~~
À l'installation, un répertoire /tftpboot est créé. Il contient les fichiers qui seront servit par atftpd.
On prend en compte ce changement :
## Configuration de PXE
~~~
systemctl restart isc-dhcp-server
~~~
La configuration se fait dans le fichier _/etc/pxe.conf_
# Installation du service TFTP
TODO rdessort : à terminer suivant la conf de l'eeepc
L'avantage de ce protocole est qu'il est simple d'utilisation car il y a juste besoin de l'installer.
Nous allons utiliser l'installateur de Debian pour avoir la liberté de sélectionner son futur système.
~~~
apt-get install tftpd-hpa
~~~
Nos déploiement se trouverons dans le dossier :
~~~
cd /srv/tftp
~~~
On télécharge l'installateur Debian puis on le décompresse (par la même occasion, on vérifie que le service est bien démarré) :
~~~
wget http://cdn-fastly.deb.debian.org/debian/dists/jessie/main/installer-amd64/current/images/netboot/netboot.tar.gz
tar xf netboot.tar.gz
systemctl restart tftpd-hpa
~~~
Ainsi nous avons ce fichier binaire pxelinux.0 qui sera demandé par le DHCP.
Il est maintenant possible d'installer un système Debian depuis le réseau.
On peut voir que tous nos services sont en écoutes :
~~~
# netstat -lntpu |grep -e dhclient -e tftp
udp 0 0 0.0.0.0:1987 0.0.0.0:* 411/dhclient
udp 0 0 0.0.0.0:68 0.0.0.0:* 411/dhclient
udp 0 0 10.0.0.11:69 0.0.0.0:* 3525/in.tftpd
udp6 0 0 :::18502 :::* 411/dhclient
~~~
# Utiliser une ISO via PXE
Ajoutons un peu de difficulté en souhaitant utiliser les fichiers ISO pour voir le choix de son futur OS.
Admettons que nous voulons OpenBSD, on va lui créer son dossier pour simplifier l'organisation des ISO (supposons que l'on en fait la collection) :
Créons le dossier et téléchargeons l'ISO :
~~~
mkdir bsd
wget http://mirrors.ircam.fr/pub/OpenBSD/6.0/amd64/install60.iso -O bsd/openbsd.iso
~~~
On doit ensuite modifier le fichier debian-installer/amd64/boot-screens/txt.cfg pour ajouter ceci :
~~~
label OpenBSD Install
menu label OpenBSD Install
kernel memdisk
initrd bsd/openbsd.iso
append iso raw
~~~
Il nous reste à télécharger un dernier paquet pour avoir la possibilité de charger automatiquement les modules que le système aura besoin.
~~~
apt-get install syslinux
cp /usr/lib/syslinux/memdisk /srv/tftp/
~~~
Vous devez maintenant avoir le menu qui propose d'installer un OpenBSD.