Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
sysadmin:boot_pxe [2010/01/07 00:51] james ajout menus/ sous menus |
sysadmin:boot_pxe [2012/02/08 14:13] james [Références] ajout lien recap img iso bin |
||
---|---|---|---|
Ligne 9: | Ligne 9: | ||
===== Installation du serveur de boot PXE ===== | ===== Installation du serveur de boot PXE ===== | ||
- | 2 parties : | ||
==== Configuration du serveur TFTP ==== | ==== Configuration du serveur TFTP ==== | ||
Pour servir les images, il faut un serveur TFTP (Trivial File Transfert Protocol) | Pour servir les images, il faut un serveur TFTP (Trivial File Transfert Protocol) | ||
- | <note> sous debian, le repertoire racine du tftpboot est /var/lib/tftpboot, mais nous utiliserons /tftpboot ici</note> | + | J'utilise tftpd-hpa qui s'installe grace a la commande suivante :<code>apt-get install tftpd-hpa</code> |
- | + | Vous avez remarqué que le demon est par défaut désactivé, nous allons le configurer pour démarrer automatiquement | |
- | TODO | + | <note> sous debian, le répertoire racine du tftpboot est /var/lib/tftpboot, mais nous utiliserons /tftpboot ici</note> |
+ | Activer le démarrage automatique du démon :<code>sed -i -e 's/RUN_DAEMON="no"/RUN_DAEMON="yes"/' /etc/default/tftpd-hpa</code> | ||
+ | Changer le repertoire racine :<code>sed -i -e 's,OPTIONS="-l -s /var/lib/tftpboot",OPTIONS="-l -s /tftpboot",' /etc/default/tftpd-hpa</code> | ||
+ | Création du répertoire racine :<code>mkdir /tftpboot</code> | ||
+ | Démarrage du service :<code>/etc/init.d/tftpd-hpa start</code> | ||
==== Configuration du serveur DHCP ==== | ==== Configuration du serveur DHCP ==== | ||
- | next-server | ||
- | TODO | + | Je ne vais pas reprendre ici toute la configuration, mais je vais lister les directives a ajouter par rapport a une configuration "normale" : |
+ | * ajouter en global : <code> | ||
+ | # pour le boot reseau | ||
+ | allow booting; | ||
+ | allow bootp; | ||
+ | </code> | ||
+ | * ajouter dans le subnet/shared-network/host de votre choix :<code> | ||
+ | #next-server is your network boot server | ||
+ | next-server 192.168.1.40; | ||
+ | filename "pxelinux.0"; | ||
+ | </code> | ||
+ | ou "192.168.1.40" est l'IP de votre serveur tftp et "pxelinux.0" le fichier à télécharger. | ||
+ | Vous pouvez bien sûr mixer les serveurs tftp et/ou les fichiers a télécharger en fonction des différents réseaux/machines. Vous pouvez également utiliser un nom DNS et non une IP. | ||
+ | Voici par exemple la déclaration complete d'un subnet et celle d'un hote utilisant une configuration différente de celle par défaut : | ||
+ | <code> | ||
+ | subnet 192.168.1.0 netmask 255.255.255.0 { | ||
+ | range 192.168.1.150 192.168.1.200; | ||
+ | option routers monrouteur.mondomaine.com; | ||
+ | option domain-name "mondomaine.com mondomaine.org"; | ||
+ | option domain-name-servers ns.mondomaine.com, ns2.mondomaine.com; | ||
+ | | ||
+ | next-server pxeserver.mondomaine.com; | ||
+ | filename "pxelinux.0"; | ||
+ | } | ||
+ | |||
+ | [....] | ||
+ | |||
+ | host athlon2600 { | ||
+ | hardware ethernet ab:cd:ef:00:01:02; | ||
+ | fixed-address mamachine.mondomaine.com; | ||
+ | filename "GEEXBOX/boot/pxelinux.0"; | ||
+ | } | ||
+ | </code> | ||
==== Mise en place de l'arborescence pour le boot PXE ==== | ==== Mise en place de l'arborescence pour le boot PXE ==== | ||
Ligne 41: | Ligne 75: | ||
* Création des liens symboliques (pour faciliter les eventuelles mises a jour de syslinux) :<code> | * Création des liens symboliques (pour faciliter les eventuelles mises a jour de syslinux) :<code> | ||
- | ln -s /tftpboot/syslinux-3.84 /tftpboot/syslinux | + | cd /tftpboot/ |
- | ln -s /tftpboot/syslinux/* /tftpboot/ | + | ln -s syslinux-3.84 syslinux |
+ | ln -s syslinux/* /tftpboot/ | ||
</code> | </code> | ||
Vous devriez avoir dans le repertoire /tftpboot quelque chose qui ressemble à :<code> | Vous devriez avoir dans le repertoire /tftpboot quelque chose qui ressemble à :<code> | ||
- | t# ls -l /tftpboot/ | + | # ls -l /tftpboot/ |
total 26876 | total 26876 | ||
drwxr-xr-x 2 root root 4096 jan 7 00:16 img | drwxr-xr-x 2 root root 4096 jan 7 00:16 img | ||
- | lrwxrwxrwx 1 root root 26 jan 6 23:47 memdisk -> /tftpboot/syslinux/memdisk | + | lrwxrwxrwx 1 root root 26 jan 6 23:47 memdisk -> syslinux/memdisk |
- | lrwxrwxrwx 1 root root 27 jan 6 23:47 menu.c32 -> /tftpboot/syslinux/menu.c32 | + | lrwxrwxrwx 1 root root 27 jan 6 23:47 menu.c32 -> syslinux/menu.c32 |
drwxr-xr-x 2 root root 4096 jan 7 00:16 menuconf | drwxr-xr-x 2 root root 4096 jan 7 00:16 menuconf | ||
- | lrwxrwxrwx 1 root root 29 jan 6 23:47 pxelinux.0 -> /tftpboot/syslinux/pxelinux.0 | + | lrwxrwxrwx 1 root root 29 jan 6 23:47 pxelinux.0 -> syslinux/pxelinux.0 |
drwxr-xr-x 2 root root 4096 jan 7 00:16 pxelinux.cfg | drwxr-xr-x 2 root root 4096 jan 7 00:16 pxelinux.cfg | ||
lrwxrwxrwx 1 root root 13 jan 6 23:45 syslinux -> syslinux-3.84 | lrwxrwxrwx 1 root root 13 jan 6 23:45 syslinux -> syslinux-3.84 | ||
drwxr-xr-x 2 root root 4096 jan 7 00:15 syslinux-3.84 | drwxr-xr-x 2 root root 4096 jan 7 00:15 syslinux-3.84 | ||
</code> | </code> | ||
+ | <note important>Les chemins des liens symboliques doivent etre en chemin "relatif" et et non en "absolu" sinon cela ne fonctionne pas : il ne faut pas avoir <del>"pxelinux.0 -> /tftpboot/syslinux/pxelinux.0"</del> mais "pxelinux.0 -> syslinux/pxelinux.0" par exemple.</note> | ||
+ | |||
==== Test du transfert TFTP ==== | ==== Test du transfert TFTP ==== | ||
Ligne 75: | Ligne 112: | ||
* images ISO de CDROM | * images ISO de CDROM | ||
- | === Fichiers images === | + | === Fichiers images (binaires)=== |
Ca tombe bien c'est les plus simples car elles sont directement bootables :-) : | Ca tombe bien c'est les plus simples car elles sont directement bootables :-) : | ||
Par exemple nous allons proposer le boot de l'utilitaire [[http://www.memtest.org/|MemTest86+]] qui permet de tester la RAM d'une machine et qui peut s'avérer tres utile ;-) | Par exemple nous allons proposer le boot de l'utilitaire [[http://www.memtest.org/|MemTest86+]] qui permet de tester la RAM d'une machine et qui peut s'avérer tres utile ;-) | ||
Ligne 99: | Ligne 136: | ||
* Ou encore : <code>append initrd=images/fichier.img bigraw</code> | * Ou encore : <code>append initrd=images/fichier.img bigraw</code> | ||
* Ou enfin pour une image de disquette Ghost, nécessitant le driver UNDI :<code>append keeppxe initrd=images/fichier.img</code> | * Ou enfin pour une image de disquette Ghost, nécessitant le driver UNDI :<code>append keeppxe initrd=images/fichier.img</code> | ||
+ | |||
+ | === Images ISO de liveCD/DVD === | ||
+ | |||
+ | <note>Toutes les ISOs de CD/DVD ne sont pas bootables en utilisant cette technique, cependant c'est le cas de toutes les images de liveCD / installateurs d'ubuntu "récente" (>= 10.04 lucid lynx) utilisant casper, comme dans l'exemple qui suit.</note> | ||
+ | |||
+ | Pour cela vous allez avoir besoin : | ||
+ | * de l'ISO du liveCD (ici ubuntu 10.04 version 32 bits) | ||
+ | * un serveur NFS préconfiguré | ||
+ | |||
+ | Admettons que vous ayez l'ISO dans "/export/iso/linux/ubuntu/10.04-Lucid_Lynx_LTS/ubuntu-10.04-desktop-i386.iso". | ||
+ | * Il faut tout d'abord monter l'ISO en loop (ce point montage devra ensuite etre accessible et exporté en NFS ) :<code> | ||
+ | mkdir /export/ISOs/ubuntu-10.04-desktop-i386 | ||
+ | mount -o loop,ro /export/iso/linux/ubuntu/10.04-Lucid_Lynx_LTS/ubuntu-10.04-desktop-i386.iso /export/ISOs/ubuntu-10.04-desktop-i386 | ||
+ | </code> | ||
+ | * Création de l'arborescence tftpboot :<code> | ||
+ | mkdir -p /tftpboot/ubuntu-live/10.04_lucid/i386/</code> | ||
+ | |||
+ | * Il ensuite faut copier les fichier noyau et initrd pour pouvoir les distribuer en PXE :<code> | ||
+ | cp /export/ISOs/ubuntu-10.04-desktop-i386/casper/initrd.lz /tftpboot/ubuntu-live/10.04_lucid/i386/ | ||
+ | cp /export/ISOs/ubuntu-10.04-desktop-i386/casper/vmlinuz /tftpboot/ubuntu-live/10.04_lucid/i386/ | ||
+ | </code> | ||
+ | |||
+ | * Il faut ensuite ajouter les lignes suivantes a votre fichier "/tftpboot/pxelinux.cfg/default" (ou autre : voir plus haut pour les subtilités) :<code> | ||
+ | # Ubuntu Lucid Lynx 10.04 LTS liveCD | ||
+ | label lucid-i386-liveCD | ||
+ | menu label Ubuntu 10.04 Lucid Lynx i386 Live^CD | ||
+ | kernel ubuntu-live/10.04_lucid/i386/vmlinuz | ||
+ | append boot=casper netboot=nfs nfsroot=10.31.192.28:/export/ISOs/ubuntu-10.04-desktop-i386/ initrd=ubuntu-live/10.04_lucid/i386/initrd.lz -- | ||
+ | </code> | ||
+ | ou "10.31.192.28" est l'IP de votre serveur NFS distribuant l'image ISO montée dans "/export/ISOs/ubuntu-10.04-desktop-i386/" : adaptez les chemins le cas échéant. | ||
+ | |||
+ | * Voici pour info la ligne correspondant à l'export NFS (à ajouter dans le fichier /etc/exports du serveur correspondant) :<code> | ||
+ | # pour les liveCD en NFS / PXE | ||
+ | /export/ISOs/ubuntu-10.04-desktop-i386 *(ro,no_root_squash,nohide,async,no_subtree_check) | ||
+ | </code> | ||
==== Industrialisation de la chose ==== | ==== Industrialisation de la chose ==== | ||
Ligne 106: | Ligne 178: | ||
* Fichier de configuration de PXE Linux | * Fichier de configuration de PXE Linux | ||
* Pour créer un fichier de configuration propre à chaque machine, deux choix de création s'offrent à nous : | * Pour créer un fichier de configuration propre à chaque machine, deux choix de création s'offrent à nous : | ||
- | * 00-26-54-42-b1-d3-d4 (adresse MAC de la carte reseau, donc la machine) | + | * 01-00-26-54-42-b1-d3-d4 ("01-" suivi de l'adresse MAC de la carte reseau, donc la machine) |
* C0A80003 (qui correspond a l'IP de la machine "192.168.0.3" en hexadecimal) | * C0A80003 (qui correspond a l'IP de la machine "192.168.0.3" en hexadecimal) | ||
* Il faut bien sur privilégier le premier, car 'adresse IP peut ne pas etre fixe (attribution d'adresse via DHCP sans réservation par exemple) alors que l'adresse MAc est quant a elle fixe et unique. | * Il faut bien sur privilégier le premier, car 'adresse IP peut ne pas etre fixe (attribution d'adresse via DHCP sans réservation par exemple) alors que l'adresse MAc est quant a elle fixe et unique. | ||
Ligne 145: | Ligne 217: | ||
Et en créant un fichier "menuconf/sysutil.conf" analogue au précédent | Et en créant un fichier "menuconf/sysutil.conf" analogue au précédent | ||
+ | ===== Références ===== | ||
+ | Je vous conseille les lectures suivantes : | ||
+ | * http://www.gentilkiwi.com/documentations-s11-t-pxe.htm | ||
+ | * http://www.isalo.org/wiki.debian-fr/index.php?title=PXE | ||
+ | * http://www.syslinux.org/wiki/index.php/PXELINUX (anglais) | ||
+ | * http://www.syslinux.org/wiki/index.php/MEMDISK#EXTLINUX.2FISOLINUX.2FPXELINUX.2FSYSLINUX | ||
+ | ===== Aller plus loin ===== | ||
+ | * http://drbl.sourceforge.net/ (Diskless Remote Boot in Linux) | ||
+ | * http://ipxe.org/start (iPXE permet de booter en iSCSI, AoE, http, .... et peut s'utiliser avec chainloader ) | ||