Upload
phamnguyet
View
229
Download
6
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