From b8320092a7529e7c4fc033198b43a468067a7d12 Mon Sep 17 00:00:00 2001 From: btatu Date: Thu, 6 Apr 2017 14:15:22 +0200 Subject: [PATCH] Update full install & configure a PXE server --- HowtoPXE.md | 139 ++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 96 insertions(+), 43 deletions(-) diff --git a/HowtoPXE.md b/HowtoPXE.md index 8420d73f..aa09db5d 100644 --- a/HowtoPXE.md +++ b/HowtoPXE.md @@ -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 d’interfé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. \ No newline at end of file