6
Préambule Comme il m'a été extrêmement difficile de trouver une méthode pour monter un serveur PXE (méthodes non fonctionnelles, articles pas à jours, etc.) j'ai décidé de vous faire partager ici une procédure fonctionnelle basée sur la dernière version de Debian. Comme vous pourrez le constater, cet article est basé sur la procédure décrite sur Yoann ' s Blog, mais remise au goût du jour et adaptée aux évolutions des outils utilisés. PXE ?? Avant de commencer il semble nécessaire de présenter ce qu'est le PXE et quels en sont les avantages. L'amorçage PXE (sigle de Pre-boot eXecution Environment) 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. [ Wikipedia] En résumé, au moment du boot (bios) il est possible, sur certaines machines équipée de booter un OS depuis un serveur PXE comme on booterait à partir d'un CD ou d'une clé USB. Sur d'autres machines non équipées pour le PXE, il est possible de booter depuis un CD un mini-OS ( gPXE) qui permet le boot PXE, mais j'y reviendrais sûrement d'ici quelques temps. L'avantage de monter un tel serveur devient vite évident lorsque l'on souhaite installer un même OS sur plusieures machines possèdant des hardwares hétérogènes (pas de Ghost possible). Ce genre de serveurs est donc très largement répandu dans le monde de l'entreprise. Pré-requis Pour bien comprendre les prochaines étape de cet article, posons un peu les choses. Un serveur PXE se compose d'un serveur DHCP (si vous n'en avez pas déjà un), d'un serveur TFTP et du serveur PXE proprement dit. Le serveur DHCP permet d'attribuer automatiquement une IP à la machine voulant récupérer l'OS et le serveur TFTP permet de transférer les fichiers nécessaires à l'installation. Pour monter notre serveur, nous allons avoir besoin de: Un PC / Serveur / Machine virtuelle sur le(la)quel(le) est installé Debian Squeeze (6.0) Une connexion Internet pour l'installation des paquets Si vous avez un routeur qui fait office de DHCP sur le réseau, pensez à désactiver ce service. Être root sur la machine lors de cette procédure. Nous définirions l'environnement ainsi: Plage IP: 192.168.200.0/24 IP serveur: 192.168.200.1 IP routeur: 192.168.200.254 Installation du DHCP Nous allons utiliser le serveur "dhcp3" (différent de "dhcpd") qui supporte, semble-t-il, correctement le

Installation d'un Serveur PXE sous Debian Squeeze.pdf

Embed Size (px)

Citation preview

Page 1: Installation d'un Serveur PXE sous Debian Squeeze.pdf

PréambuleComme il m'a été extrêmement difficile de trouver une méthode pour monter un serveur PXE (méthodes non fonctionnelles, articles pas à jours, etc.) j'ai décidé de vous faire partager ici une procédure fonctionnelle basée sur la dernière version de Debian.Comme vous pourrez le constater, cet article est basé sur la procédure décrite sur Yoann's Blog, mais remise au goût du jour et adaptée aux évolutions des outils utilisés.

PXE ??Avant de commencer il semble nécessaire de présenter ce qu'est le PXE et quels en sont les avantages.

L'amorçage PXE (sigle de Pre-boot eXecution Environment) 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. [Wikipedia]

En résumé, au moment du boot (bios) il est possible, sur certaines machines équipée de booter un OS depuis un serveur PXE comme on booterait à partir d'un CD ou d'une clé USB. Sur d'autres machines non équipées pour le PXE, il est possible de booter depuis un CD un mini-OS (gPXE) qui permet le boot PXE, mais j'y reviendrais sûrement d'ici quelques temps. L'avantage de monter un tel serveur devient vite évident lorsque l'on souhaite installer un même OS sur plusieures machines possèdant des hardwares hétérogènes (pas de Ghost possible). Ce genre de serveurs est donc très largement répandu dans le monde de l'entreprise.

Pré-requisPour bien comprendre les prochaines étape de cet article, posons un peu les choses. Un serveur PXE se compose d'un serveur DHCP (si vous n'en avez pas déjà un), d'un serveur TFTP et du serveur PXE proprement dit. Le serveur DHCP permet d'attribuer automatiquement une IP à la machine voulant récupérer l'OS et le serveur TFTP permet de transférer les fichiers nécessaires à l'installation. Pour monter notre serveur, nous allons avoir besoin de:

● Un PC / Serveur / Machine virtuelle sur le(la)quel(le) est installé Debian Squeeze (6.0)● Une connexion Internet pour l'installation des paquets● Si vous avez un routeur qui fait office de DHCP sur le réseau, pensez à désactiver ce service.● Être root sur la machine lors de cette procédure.

Nous définirions l'environnement ainsi:

● Plage IP: 192.168.200.0/24● IP serveur: 192.168.200.1● IP routeur: 192.168.200.254

Installation du DHCPNous allons utiliser le serveur "dhcp3" (différent de "dhcpd") qui supporte, semble-t-il, correctement le

Page 2: Installation d'un Serveur PXE sous Debian Squeeze.pdf

PXE.Pour l'ensemble des installations et configuration, placez vous en root.

Installation:apt-get install dhcp3-server

Configuration:Éditez (vi, nano, pico, ...) le fichier /etc/default/dhcp3-server (s'il n'existe pas créez le) de manière à spécifier sur quelle interface doit répondre le serveur DHCP. (j'utilise eth1 car je possède deux cartes réseaux, mais si vous n'en avez qu'une choisissez eth0) INTERFACES="eth1" Éditez aussi le fichier /etc/dhcp/dhcpd.conf : authoritative; ddns-update-style interim; ignore client-updates;subnet 192.168.200.0 netmask 255.255.255.0 { range 192.168.200.120 192.168.200.145; option domain-name-servers 192.168.200.1; option routers 192.168.200.254; option subnet-mask 255.255.255.0; option broadcast-address 192.168.200.255; default-lease-time 43200; max-lease-time 86400;server-name "PXE"; next-server 192.168.200.1; filename "pxe/pxelinux.0"; } Vous noterez qu'ici j'ai configuré le DHCP de manière à ne distribuer que 25 adresses (.120 à .145) ... à vous d'adapter selon vos besoins.Voici la commande permettant d'arrêter et relancer le serveur DHCP: /etc/init.d/isc-dhcp-server stop/etc/init.d/isc-dhcp-server start Jusqu'ici, nous n'avons pas configuré l'interface réseau sur laquelle va répondre le DHCP (toujours eth0 ou eth1 selon votre cas). Si une telle configuration doit vous priver du net, attendez la fin des installations avant de la mettre en place. ifconfig eth1 up ifconfig eth1 192.168.200.1/24 Si vous souhaitez faire cette configuration de manière permanente, éditez le fichier/etc/network/interfaces et affectez une adresse statique.

Installation du serveur TFTPNous choisirons ici d'installer le serveur "tftpd-hpa" plutôt que "atftpd" ou "tftpd".

Installation:apt-get install tftpd-hpa

Page 3: Installation d'un Serveur PXE sous Debian Squeeze.pdf

Lorsqu'il vous sera demandé d'entrer le répertoire dans lequel doit officier le serveur, entrez: /tftpboot

Configuration:Éditez ensuite le fichier /etc/default/tftpd-hpa: TFTP_USERNAME="tftp" TFTP_DIRECTORY="/tftpboot" TFTP_ADDRESS="192.168.200.1:69" TFTP_OPTIONS="--secure" Éditez enfin le fichier /etc/inetd.conf et commentez (#) la ligne suivante: #:BOOT: TFTP service is provided primarily for booting. Most sites # run this only on machines acting as "boot servers." #tftp dgram udp4 wait nobody /usr/sbin/tcpd /usr/sbin/in.tftp [...] Les commandes pour arrêter et relancer le serveur sont: /etc/init.d/tftpd-hpa stop /etc/init.d/tftpd-hpa start Enfin, il faut crée le répertoire dans lequel va officier le serveur TFTP: mkdir /tftpboot chmod 777 /tftpboot -R Notez que les droit sont ici placés en 777 et qu'une fois votre serveur 100% fonctionnel il serait plus prudent de sécuriser tout cela. ;D

Installation de PXENous allons maintenant installer le serveur PXE proprement dit.

Installation:apt-get install pxe syslinux

Configuration:Editez le fichier /etc/pxe.conf de manière à avoir les paramètres suivant (adaptez selon eth0 ou eth1): # which interface to use interface=eth1 default_address=192.168.200.1# tftpd base dir tftpdbase=/tftpboot Les commandes pour arrêter et relancer le serveur sont: /etc/init.d/pxe stop /etc/init.d/pxe start Nous avons maintenant terminé l'installation des composants principaux du système. La prochaine étape consiste ajouter à notre serveur PXE l'OS à installer sur les machines.

Page 4: Installation d'un Serveur PXE sous Debian Squeeze.pdf

Préparation du serveurPour commencer, comme votre serveur TFTP peut servir à plusieurs usages, on va créer un sous dossier spécialement pour le PXE: mkdir /tftpboot/pxe/ Maintenant il est nécessaire de récupérer l'image de l'OS. Ici nous choisirons d'installer Debian Lenny, mais n'importe quelle version de Debian / Ubuntu est aussi compatible avec cette procédure.

Téléchargement de l'image netbootwget http://ftp.fr.debian.org/debian/dists/lenny/main/installer-i386/current/images/netboot/netboot.tar.gz -O /tmp/netboot-debian-lenny-i386.tar.gz

Création du répertoire temporairemkdir -p /tmp/netboot-debian-lenny-i386/

Décompression de l'image dans le répertoire temporairecd /tmp/netboot-debian-lenny-i386/; tar zxvf /tmp/netboot-debian-lenny-i386.tar.gz

Création de l'arborescencemkdir -p /tftpboot/pxe/ mkdir -p /tftpboot/pxe/boot-screens/ mkdir -p /tftpboot/pxe/pxelinux.cfg/ mkdir -p /tftpboot/pxe/debian-lenny/i386/

Copie des fichiers depuis le répertoire temporaire vers l'arborescence netbootcp /tmp/netboot-debian-lenny-i386/debian-installer/i386/pxelinux.0 /tftpboot/pxe/ cp /tmp/netboot-debian-lenny-i386/debian-installer/i386/boot-screens/splash.png /tftpboot/pxe/boot-screens/ cp /tmp/netboot-debian-lenny-i386/debian-installer/i386/boot-screens/vesamenu.c32 /tftpboot/pxe/boot-screens/ cp /tmp/netboot-debian-lenny-i386/debian-installer/i386/initrd.gz /tftpboot/pxe/debian-lenny/i386/ cp /tmp/netboot-debian-lenny-i386/debian-installer/i386/linux /tftpboot/pxe/debian-lenny/i386/ On crée ensuite le fichier /tftpboot/pxe/pxelinux.cfg/default qui permet de configurer le boot de l'OS et surtout de spécifier le fichier permettant d'afficher le menu (comme sur une installation Debian classique). include /boot-screens/menu.cfg default /boot-screens/vesamenu.c32 prompt 0timeout 0 Vient le tours du fichier /tftpboot/pxe/boot-screens/menu.cfg permettant la personnalisation du menu: menu hshift 13 menu width 49menu title LTU Installer boot menu menu color title * #FFFFFFFF *

Page 5: Installation d'un Serveur PXE sous Debian Squeeze.pdf

menu color border * #00000000 #00000000 none menu color sel * #ffffffff #76a1d0ff * menu color hotsel 1;7;37;40 #ffffffff #76a1d0ff * menu color tabmsg * #ffffffff #00000000 * menu vshift 12 menu rows 10 menu tabmsgrow 16 menu timeoutrow 17 menu tabmsg Press ENTER to boot or TAB to edit a menu entry menu autoboot Starting Local System in # secondsprompt 0label bootlocal menu label ^Boot from local disk menu default localboot 0 timeout 200 #timeout which is displayed, Wait 10 seconds unless the user types somethin totaltimeout 1200 #timeout which executes the default definitely, always boot after 2 minutesmenu begin debian menu title Debian label mainmenu menu label ^Back.. menu exit menu begin debian-lenny menu title Debian Lenny label mainmenu menu label ^Back.. menu exit menu begin debian-lenny-i386 menu title Debian Lenny i386 label mainmenu menu label ^Back.. menu exit default install label install menu label ^Install kernel debian-lenny/i386/linux append vga=normal initrd=debian-lenny/i386/initrd.gz -- quiet label expert menu label ^Expert install kernel debian-lenny/i386/linux append priority=low vga=normal initrd=debian-lenny/i386/initrd.gz -- label rescue menu label ^Rescue mode kernel debian-lenny/i386/linux append vga=normal initrd=debian-lenny/i386/initrd.gz rescue/enable=true -- quiet label auto menu label ^Automated install kernel debian-lenny/i386/linux append auto=true priority=critical vga=normal initrd=debian-lenny/i386/initrd.gz -- quiet menu end menu end menu end Une fois tous ces fichiers en place vous devriez obtenir l'arborescence suivante: /tftpboot/: pxe/tftpboot/pxe: boot-screens debian-lenny pxelinux.0 pxelinux.cfg

Page 6: Installation d'un Serveur PXE sous Debian Squeeze.pdf

/tftpboot/pxe/boot-screens: menu.cfg splash.png vesamenu.c32/tftpboot/pxe/debian-lenny: i386/tftpboot/pxe/debian-lenny/i386: initrd.gz linux/tftpboot/pxe/pxelinux.cfg: default

Lancement du serveurSi vous n'aviez pas modifier l'IP de votre interface réseau, c'est le moment de le faire. Lancez ensuite le serveur PXE, TFTP puis DHCP (pensez à désactiver tout autre DHCP sur votre réseau). Normalement tous les serveurs doivent se lancer sans erreurs. Un tail -f /var/logs/syslog devrait vous en apprendre plus à ce sujet. Vous pouvez tester le serveur TFTP avec un client TFTP tel que "atftp".

BootMaintenant que le serveur fonctionne, il est temps de booter votre / vos machine(s) et de lancer l'installation. Pour cela dans les options de boot choisissez Network Boot (ou toute autre formulation s'en rapprochant). Dans les logs (syslog) vous devriez constater que votre DHCP à attribué des IPs et sur les machines le menu de choix de l'installation doit apparaître. Lancez l'installation et enjoy !

Autres OSCet article ne décrit pour le moment que l'installation de système de type Debian. Pour d'autres OS Linux je vous renvoie à l'article ayant inspiré celui-ci qui traite notamment de CentOS et Fedora.