7
Documentation Debian – Serveur PXE Cette documentation est basée sur un sujet de travaux pratiques rédigé par Jean-Philippe Zimmer (IUT Dijon-Auxerre – Dé- partement Réseaux et Télécommunications – Université de Bourgogne) en 2011. Procédure validée sur Debian 8. Ne pas confondre ’ (apostrophe, touche 4 ) et ‘ (obtenu par Alt Gr + 7 ) que nous utiliserons ici. 1 Présentation du projet Nous souhaitons démarrer un système Debian par le réseau. Pour cela, nous utilisons la technologie PXE (Pre-boot eXecution Environment ) qui permet à un ordinateur de démarrer depuis le réseau en récupérant un système d’exploitation se trouvant sur sur un serveur. Nous installerons deux systèmes Debian : le serveur et le client démarré depuis le réseau. 2 Installation et configuration du client Sur le client, installer une Debian à votre convenance. Pour une connexion automatique du système, modifier le fichier /etc/systemd/system/getty.target.wants/[email protected] et ajouter l’option à la ligne . Sur le serveur, créer un dossier accueillant tous les fichiers du système client (prévoir au moins 3 Go). Nous utiliserons ici le dossier /var/netsystem. mkdir /var/netsystem Copiez dans ce dossier l’intégralité de l’arborescence du système client sauf les fichiers initrd.img et vmlinuz et les dossiers lost+found, mnt, proc, run, sys et tmp dans le dossier /var/netsystem. Pour cela, arrêtez le système client puis déconnectez le disque dur et connectez le au serveur. Lancez et montez la partition système et copiez en utilisant Midnight Commander par exemple. Sur le serveur, créez les dossiers mnt, proc, run, sys et tmp et ajoutez les droits en lecture pour tous sur /var/netsystem : cd /var/netsystem mkdir mnt proc run sys tmp chmod - R a+r /var/netsystem 3 Installation et configuration du serveur Installez les paquets suivants : apt -get install isc -dhcp- server tftpd -hpa nfs -kernel - server syslinux pxelinux Configurez l’adresse IP du serveur (ici : 192.168.0.100) en éditant le fichier /etc/network/interfaces : # This file describes the network interfaces available on your system # and how to activate them . For more information , see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet static address 192.168.0.100 netmask 255.255.255.0 gateway 192.168.0.1 1

Documentation Debian - Serveur PXE - Antoine Pernot PXE.pdf · ENDTEXT LABEL UBUNTU MENU LABEL Ubuntu 15.10 Wily Installeur 64 bits KERNEL ubuntu 1510/linux APPEND VGA=788 initrd=ubuntu

Embed Size (px)

Citation preview

Documentation Debian – Serveur PXE

Cette documentation est basée sur un sujet de travaux pratiques rédigé par Jean-Philippe Zimmer (IUT Dijon-Auxerre – Dé-partement Réseaux et Télécommunications – Université de Bourgogne) en 2011.

Procédure validée sur Debian 8.

Ne pas confondre ’ (apostrophe, touche 4 ) et ‘ (obtenu par Alt Gr + 7 ) que nous utiliserons ici.

1 Présentation du projetNous souhaitons démarrer un système Debian par le réseau. Pour cela, nous utilisons la technologie PXE (Pre-boot eXecutionEnvironment) qui permet à un ordinateur de démarrer depuis le réseau en récupérant un système d’exploitation se trouvant sursur un serveur.

Nous installerons deux systèmes Debian : le serveur et le client démarré depuis le réseau.

2 Installation et configuration du clientSur le client, installer une Debian à votre convenance.Pour une connexion automatique du système, modifier le fichier /etc/systemd/system/getty.target.wants/[email protected] ajouter l’option -a <USER> à la ligne ExecStart.Sur le serveur, créer un dossier accueillant tous les fichiers du système client (prévoir au moins 3 Go). Nous utiliserons ici le dossier/var/netsystem.mkdir / va r / ne t sy s t emCopiez dans ce dossier l’intégralité de l’arborescence du système client sauf les fichiers initrd.img et vmlinuz et les dossierslost+found, mnt, proc, run, sys et tmp dans le dossier /var/netsystem. Pour cela, arrêtez le système client puis déconnectezle disque dur et connectez le au serveur. Lancez et montez la partition système et copiez en utilisant Midnight Commander parexemple.Sur le serveur, créez les dossiers mnt, proc, run, sys et tmp et ajoutez les droits en lecture pour tous sur /var/netsystem :cd / va r / ne t sy s t emmkdir mnt proc run s y s tmpchmod −R a+r / va r / ne t sy s t em

3 Installation et configuration du serveurInstallez les paquets suivants :apt−get i n s t a l l i s c−dhcp−s e r v e r t f t pd−hpa nf s−k e r n e l−s e r v e r s y s l i n u x p x e l i n u xConfigurez l’adresse IP du serveur (ici : 192.168.0.100) en éditant le fichier /etc/network/interfaces :# This f i l e d e s c r i b e s the network i n t e r f a c e s a v a i l a b l e on your system# and how to a c t i v a t e them . For more i n f o rma t i on , s e e i n t e r f a c e s ( 5 ) .

# The loopback network i n t e r f a c eauto l oi f a c e l o i n e t l oopback

# The pr imary network i n t e r f a c eauto eth0i f a c e eth0 i n e t s t a t i c

add r e s s 192 . 168 . 0 . 1 00netmask 255 . 255 . 255 . 0gateway 192 . 1 6 8 . 0 . 1

1

3.1 Configuration du serveur DHCPDans notre cas, nous travaillerons sur un réseau 192.168.0.0/24. Éditez le fichier /etc/dhcp/dhcpd.conf## Sample c o n f i g u r a t i o n f i l e f o r ISC dhcpd f o r Debian##

# The ddns−updates−s t y l e paramete r c o n t r o l s whether o r not the s e r v e r w i l l# attempt to do a DNS update when a l e a s e i s con f i rmed . We d e f a u l t to the# beha v i o r o f the v e r s i o n 2 packages ( ’ none ’ , s i n c e DHCP v2 d idn ’ t# have suppo r t f o r DDNS. )ddns−update−s t y l e none ;

default−l e a s e−time 43200 ;max−l e a s e−time 86400 ;

# Use t h i s to send dhcp l og messages to a d i f f e r e n t l o g f i l e ( you a l s o# have to hack s y s l o g . con f to complete the r e d i r e c t i o n ) .log− f a c i l i t y l o c a l 7 ;

op t i on subnet−mask 2 5 5 . 2 5 5 . 2 5 5 . 0 ;op t i on b roadcas t−add r e s s 1 9 2 . 1 6 8 . 0 . 2 5 5 ;op t i on r o u t e r s 1 9 2 . 1 6 8 . 0 . 1 ;op t i on domain−name−s e r v e r s 1 9 2 . 1 6 8 . 0 . 1 ;

a l l ow bootp ;a l l ow boo t i ng ;next−s e r v e r 1 9 2 . 1 6 8 . 0 . 1 0 0 ;f i l e n ame " p x e l i n u x . 0 " ;

subnet 1 9 2 . 1 6 8 . 0 . 0 netmask 255 . 255 . 255 . 0 {op t i on r o u t e r s 1 9 2 . 1 6 8 . 0 . 1 ;op t i on subnet−mask 2 5 5 . 2 5 5 . 2 5 5 . 0 ;op t i on b roadcas t−add r e s s 1 9 2 . 1 6 8 . 0 . 2 5 5 ;range 192 . 1 68 . 0 . 1 0 1 9 2 . 1 6 8 . 0 . 9 0 ;

}Redémarrez le service :s e r v i c e i s c−dhcp−s e r v e r r e s t a r t

3.2 Configuration TFTPÉditez le fichier /etc/default/tftpd-hpa :# / et c / d e f a u l t / t f t pd−hpa

TFTP_USERNAME=" t f t p "TFTP_DIRECTORY="/ s r v / t f t p "TFTP_ADDRESS=" 0 . 0 . 0 . 0 : 6 9 "TFTP_OPTIONS="−−s e c u r e "

RUN_DAEMON=" yes "

3.3 Création du menu au démarrageCopiez le fichier /usr/lib/PXELINUX/pxelinux.0 sous /srv/tftp/ et créez le dossier /srv/tftp/pxelinux.cfg :cp / u s r / l i b /PXELINUX/ p x e l i n u x . 0 / s r v / t f t p /mkdir / s r v / t f t p / p x e l i n u x . c f gCopiez le fichier /usr/lib/syslinux/modules/bios/vesamenu.c32 vers /srv/tftp/ :

2

cp / u s r / l i b / s y s l i n u x /modules / b i o s /vesamenu . c32 / s r v / t f t p /Éditez le fichier /srv/tftp/pxelinux.cfg/default :DEFAULT vesamenu . c32TIMEOUT 100MENU TITLE Menu de demarrageALLOWOPTIONS 0MENU AUTOBOOT Demarrage automat ique dans # seconde { , s } .

LABEL NETSYSTEMKERNEL net sy s t em / vml inuzAPPEND roo t=/dev/ n f s n f s r o o t =192 .168 .0 . 100 :/ va r / ne t sy s t em i p=dhcp i n i t r d=net sy s t em

/ i n i t r d . img rw −−TEXT HELPAmorcer l e sys teme en r e s e au .ENDTEXT

L’ensemble des modules jusqu’à la section 3.4 sont facultatifs.

3.3.1 Personnaliser le menu

Le menu par défaut n’est pas très flatteur à l’œil. Nous allons le personnaliser et pour cela nous allons agir sur les paramètressuivants :MENU TITLE Change le titre du menu.

MENU TITLE Mon menu de demarrage PXE

MENU BACKGROUND Change le fond d’écran du menu. Cette image doit avoir la résolution égale à celle de l’écran (recom-mandé : 640 × 480).L’image doit avoir 65536 couleurs. Pour convertir une image, utilisez la commande :c onv e r t −depth 16 −c o l o r s 65536 /tmp/background . j pg / s r v / t f t p / background . j pg

MENU BACKGROUND background.jpg

MENU COLOR Change la couleur des éléments du menu. Pour plus de détails, se reporter ici : Documentation MENU COLORSyslinuxMENU COLOR TITLE 0 #FFD64937 #00000000 std

MENU SEPARATOR Ajouter un séparateur au menu.MENU SEPARATOR

MENU LABEL Change l’étiquette sur une entrée du menu.MENU LABEL Debian 8 Jessie - Installeur 64 bits

TEXT HELP Ajoute une description sur une entrée du menu.TEXT HELP

Installation de Debian 8 Jessie a partir du reseau.

ENDTEXT

TIMEOUT Definit la durée en dixième de secondes d’affichage du menu avant le démarrage de l’option par défaut.TIMEOUT 100

La documentation complète est disponible ici : http://www.syslinux.org/wiki/index.php?title=Menu

3.3.2 Ajouter un option de démarrage sur le disque local

Copiez le fichier /usr/lib/syslinux/modules/bios/chain.c32 vers /srv/tftp/ :cp / u s r / l i b / s y s l i n u x /modules / b i o s / cha i n . c32 / s r v / t f t p /Ajoutez les lignes suivantes au fichier /srv/tftp/pxelinux.cfg/default :LABEL LOCALDISK

MENU LABEL Demarrer l e d i s qu e l o c a lKERNEL cha i n . c32APPEND hd0

3

3.3.3 Ajouter un option de redémarrage

Copiez le fichier /usr/lib/syslinux/modules/bios/reboot.c32 vers /srv/tftp/ :cp / u s r / l i b / s y s l i n u x /modules / b i o s / r eboo t . c32 / s r v / t f t p /Ajoutez les lignes suivantes au fichier /srv/tftp/pxelinux.cfg/default :LABEL REBOOT

MENU LABEL Redemarrer l e sys temeKERNEL reboo t . c32

3.3.4 Ajouter un option de démarrage sur Memtest86+

Memtest86+ est un logiciel conçu pour réaliser des tests exhaustifs de la mémoire vive d’un ordinateur PC, afin de détecterd’éventuelles erreurs ou défectuosités.

Source : Wikipedia

Téléchargez Memtest86+ :wget −O / s r v / t f t p /memtest h t tp : //www. memtest . o rg /download /5 .01/ memtest86+−5.01. b i nAjoutez les lignes suivantes au fichier /srv/tftp/pxelinux.cfg/default :LABEL MEMTEST

MENU LABEL Memtest86+KERNEL memtestAPPEND −e

3.3.5 Ajouter un option de démarrage sur l’installeur Debian 8

Téléchargez l’image netboot Debian :wget −O /tmp/ netboot−deb ian . t a r . gz h t tp : // f t p . n l . deb i an . org / deb ian / d i s t s / j e s s i e /main/

i n s t a l l e r −amd64/ c u r r e n t / images / ne tboot / ne tboot . t a r . gzDécompressez l’archive téléchargée :t a r −C /tmp −z x v f /tmp/ netboot−deb ian . t a r . gzCréez le dossier /srv/tftp/debian-8 et copiez-y les fichiers initrd.gz et linux de l’archive décompressée.mkdir / s r v / t f t p / deb ian−8cp /tmp/ deb ian− i n s t a l l e r /amd64/ i n i t r d . gz /tmp/ debian− i n s t a l l e r /amd64/ l i n u x / s r v / t f t p /

deb ian−8/Ajoutez les lignes suivantes au fichier /srv/tftp/pxelinux.cfg/default :LABEL DEBIAN

MENU LABEL Debian 8 J e s s i e − I n s t a l l e u r 64 b i t sKERNEL debian−8/ l i n u xAPPEND VGA=788 i n i t r d=debian−8/ i n i t r d . gz −−− qu i e t

3.3.6 Ajouter un option de démarrage sur l’installeur Ubuntu

Nous allons utiliser ici le mini ISO qui permet d’installer Ubuntu et ses variantes à partir de la même image disque et du réseau.

Pour cela, nous allons la télécharger :wget −O /tmp/ netboot−ubuntu . t a r . gz h t tp : // a r c h i v e . ubuntu . com/ubuntu/ d i s t s / w i l y /main/

i n s t a l l e r −amd64/ c u r r e n t / images / ne tboot / ne tboot . t a r . gzDécompressez l’archive téléchargée :t a r −C /tmp −z x v f /tmp/ netboot−ubuntu . t a r . gzCréez le dossier /srv/tftp/ubuntu-1510 et copiez-y les fichiers initrd.gz et linux de l’archive décompressée.

4

mkdir / s r v / t f t p /ubuntu−1510cp /tmp/ubuntu− i n s t a l l e r /amd64/ i n i t r d . gz /tmp/ debian− i n s t a l l e r /amd64/ l i n u x / s r v / t f t p /

ubuntu−1510/Ajoutez les lignes suivantes au fichier /srv/tftp/pxelinux.cfg/default :LABEL UBUNTU

MENU LABEL Ubuntu 15 .10 Wily − I n s t a l l e u r 64 b i t sKERNEL ubuntu−1510/ l i n u xAPPEND VGA=788 i n i t r d=ubuntu−1510/ i n i t r d . gz −−− qu i e t

3.3.7 Ajouter un option de démarrage sur un autre serveur PXE

Copiez le fichier /usr/lib/syslinux/modules/bios/pxechn.c32 vers /srv/tftp/ :cp / u s r / l i b / s y s l i n u x /modules / b i o s / pxechn . c32 / s r v / t f t p /Ajoutez les lignes suivantes au fichier /srv/tftp/pxelinux.cfg/default. Modifiez l’adresse IP en fonction du serveur à contacter :LABEL NEPTUNE

MENU LABEL Ba s cu l e r s u r l e menu PXE s e r v e u r NeptuneKERNEL pxechn . c32APPEND 19 2 . 1 6 8 . 0 . 1 0 1 : : p x e l i n u x . 0

3.3.8 Exemple de configuration complète

Voici un exemple de configuration complète :

Voici le fichier de configuration /srv/tftp/pxelinux.cfg/default associé :DEFAULT vesamenu . c32TIMEOUT 100ONTIMEOUT LOCALDISKMENU TITLE Menu de demarrage PXEMENU BACKGROUND sp l a sh−pxe . j pgMENU COLOR TITLE 0 #FFD64937 #00000000 s tdMENU COLOR SEL 0 #E0000000 #FFD64937 a l lMENU COLOR BORDER 0 #00000000 #00000000 noneMENU VSHIFT 2ALLOWOPTIONS 0MENU AUTOBOOT Demarrage automat ique du d i s qu e l o c a l dans # seconde { , s } .

LABEL LOCALDISKMENU LABEL Demarrer l e d i s qu e l o c a lKERNEL cha i n . c32APPEND hd0TEXT HELP

5

Amorcer l e d i s qu e dur l o c a l .ENDTEXT

LABEL REBOOTMENU LABEL Redemarrer l e sys temeKERNEL reboo t . c32TEXT HELPRedemarrer l ’ o r d i n a t e u r .ENDTEXT

LABEL MEMTESTMENU LABEL Memtest86+KERNEL memtestAPPEND −eTEXT HELPE f f e c t u e r un t e s t de memoire .ENDTEXT

MENU SEPARATOR

LABEL NETSYSTEMMENU LABEL Demarrer l e sys teme en r e s e auKERNEL net sy s t em / vml inuzAPPEND roo t=/dev/ n f s n f s r o o t =192 .168 .0 . 100 :/ va r / ne t sy s t em i p=dhcp i n i t r d=net sy s t em

/ i n i t r d . img rw −−TEXT HELPAmorcer l e sys teme de maintenance e t l e s o u t i l s d ’ a dm i n i s t r a t i o n .ENDTEXT

LABEL DEBIANMENU LABEL Debian 8 J e s s i e − I n s t a l l e u r 64 b i t sKERNEL debian−8/ l i n u xAPPEND VGA=788 i n i t r d=debian−8/ i n i t r d . gz −−− qu i e tTEXT HELPI n s t a l l a t i o n de Debian 8 J e s s i e a p a r t i r du r e s e au .ENDTEXT

LABEL UBUNTUMENU LABEL Ubuntu 15 .10 Wily − I n s t a l l e u r 64 b i t sKERNEL ubuntu−1510/ l i n u xAPPEND VGA=788 i n i t r d=ubuntu−1510/ i n i t r d . gz −−− qu i e tTEXT HELPI n s t a l l a t i o n d ’ Ubuntu 15 .10 a p a r t i r du r e s e au .ENDTEXT

MENU SEPARATOR

LABEL NEPTUNEMENU LABEL Ba s cu l e r s u r l e menu PXE s e r v e u r NeptuneKERNEL pxechn . c32APPEND 19 2 . 1 6 8 . 0 . 1 0 1 : : p x e l i n u x . 0TEXT HELPDemarrer s u r l e s e r v e u r NeptuneENDTEXT

Le fond d’écran est téléchargeable ici : http://antoinepernot.fr/data/splash-pxe.jpg

3.4 Création du noyau amorçableCopiez le noyau présent sous /boot et créer le lien symbolique vmlinuz adéquat :cp / boot / vml inuz −‘uname −r ‘ / s r v / t f t p /

6

l n −s / s r v / t f t p / vml inuz −‘uname −r ‘ / s r v / t f t p / vml inuzCopiez le dossier /etc/initramfs-tools/ en /etc/initramfs-pxe :cp −Rp / e t c / i n i t r am f s−t o o l s / e t c / i n i t r am f s−pxeDans le fichier /etc/initramfs-pxe/initramfs.conf, modifiez les lignes suivantes :BOOT=l o c a lDEVICE=enBOOT=n f sDEVICE=eth0Sous le dossier /srv/tftp, exécuter :cd / s r v / t f t pmk i n i t r am f s −d / e t c / i n i t r am f s−pxe −o / s r v / t f t p / i n i t r d . img−‘uname −r ‘ ‘ uname −r ‘l n −s / s r v / t f t p / i n i t r d . img−‘uname −r ‘ / s r v / t f t p / i n i t r d . img

3.5 Configuration du serveur NFSAjoutez la ligne suivante dans le fichier /etc/exports :/ va r / ne t sy s t em ∗( rw , sync , a l l_ squa sh , anonu id=0, anong id=0)Lancez le serveur NFS :s e r v i c e n f s−k e r n e l−s e r v e r s t a r t

3.6 Configuration du système réseauDans le dossier /var/netsystem, modifiez le fichier etc/fstab comme suit :# / et c / f s t a b : s t a t i c f i l e system i n f o rma t i o n .## Use ’ b l k i d ’ to p r i n t the u n i v e r s a l l y un ique i d e n t i f i e r f o r a# de v i c e ; t h i s may be used wi th UUID= as a more r obu s t way to name d e v i c e s# tha t works even i f d i s k s a r e added and removed . See f s t a b (5 ) .## < f i l e system> <mount po in t> <type> <opt i on s> <dump> <pass># / was on /dev/ sda1 du r i n g i n s t a l l a t i o n/dev/ s r 0 /media/cdrom0 udf , i s o9660 use r , noauto 0 0/dev/ n f s / n f s d e f a u l t s 1 1none /tmp tmpfs d e f a u l t s 0 0none / va r /tmp tmpfs d e f a u l t s 0 0none / va r / log tmpfs d e f a u l t s 0 0Dans le fichier etc/network/interfaces, commentez toutes les interfaces à part l’interface lo.Lancez le client PXE et testez.

Auteur : Antoine Pernot

7