Ceci est une ancienne révision du document !


Boot PXE

:!: ebauche de document, plus un reminder qu'un vrai howto pour le moment

Pourquoi ?

Le boot PXE a plein d'avantage : on peut boter a peu pres tout et n'importe quoi, sans lecteur CD, disquette ou disque dur et cela sur n'importe quelle machine pas trop vieille (qui supporte le boot PXE)

Installation du serveur de boot PXE

2 parties :

Configuration du serveur TFTP

Pour servir les images, il faut un serveur TFTP (Trivial File Transfert Protocol)

sous debian, le repertoire racine du tftpboot est /var/lib/tftpboot, mais nous utiliserons /tftpboot ici

TODO

Configuration du serveur DHCP

next-server

TODO

Mise en place de l'arborescence pour le boot PXE

L'ensemble des fichiers de boot PXE seront stockés dans le repertoire /tftpboot comme vu plus haut. Si tel n'etait pas le cas chez vous, il faudrait bien sur adapter les chemins dans la suite.

  • decompresser certains (ceux utiles dans notre cas) fichiers de l'archive, puis les copier en place :
    • cp core/pxelinux.0 /tftpboot/syslinux-3.84/
    • cp memdisk/memdisk /tftpboot/syslinux-3.84/
    • cp com32/menu/menu.c32 /tftpboot/syslinux-3.84/
  • Créer les répertoires suivants :
    • /tftpboot/img (contiendra les images de disquettes)
    • /tftpboot/pxelinux.cfg (contiendra la configuration)
    • /tftpboot/menuconf (contiendra la configuration d'éventuels sous-menus)
 mkdir /tftpboot/img /tftpboot/pxelinux.cfg /tftpboot/menuconf
  • Création des liens symboliques (pour faciliter les eventuelles mises a jour de syslinux) :
    cd /tftpboot/
    ln -s syslinux-3.84 syslinux
    ln -s syslinux/* /tftpboot/

Vous devriez avoir dans le repertoire /tftpboot quelque chose qui ressemble à :

# ls -l /tftpboot/
total 26876
drwxr-xr-x  2 root  root          4096 jan  7 00:16 img
lrwxrwxrwx  1 root  root            26 jan  6 23:47 memdisk -> syslinux/memdisk
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
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
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
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 “pxelinux.0 → /tftpboot/syslinux/pxelinux.0” mais “pxelinux.0 → syslinux/pxelinux.0” par exemple.

Test du transfert TFTP

Test de transfert de fichier :

Depuis un autre poste sur le réseau (ca marche meme sous windows ;p) ou depuis le serveur lui-même :

tftp monserveurtftp.mondomaine.com GET pxelinux.0

ou bien :

tftp 192.168.0.1 GET pxelinux.0

devrait donner quelque chose de similaire a :

Transfert réussi : 13454 octets en 1 seconde, 13454 octets/s
Le service TFTP utilise le port 69 en UDP, il faut l'autoriser dans le firewall du serveur (et/ou sur les firewall intermediaires) si besoin est.

Maintenant que tout ca marche, il est temps de mettre a dispostion des images de boot.

Mise a disposition d'une image de boot

Il existe plusieurs formats d'image :

  • images binaires
  • images de disquettes
  • images ISO de CDROM

Fichiers images

Ca tombe bien c'est les plus simples car elles sont directement bootables :-) : Par exemple nous allons proposer le boot de l'utilitaire MemTest86+ qui permet de tester la RAM d'une machine et qui peut s'avérer tres utile ;-)

  • Allez sur le site http://www.memtest.org/#downiso et téléchargez la derniere version du “Pre-Compiled Bootable Binary” (en .gz ou .zip, comme vous préférez)
  • Décompresser l'archive obtenue et placez le fichier .bin obtenue dans le repertoire 'img' a la racine du serveur TFTP (/tftpboot) :
    cp memtest86+-4.00.bin /tftpboot/img/
  • Nous pouvons maintenant booter sur MemTest+ depuis un client PXE en tapant au prompt de boot :
    img/memtest86+-4.00.bin

:!: cette invite est en qwerty :!:

Images de disquettes

Les images de disquettes ne sont pas directement bootables, il faut donc utiliser l'image binaire “memdisk” à laquelle nous passerons en argument le nom du fichier image (disquette) a démarrer. Les images pouvant être passées à ce module peuvent être de tous les formats standards, même si l'ordinateur client ne dispose pas de ce type de lecteur disquette, voir pas de lecteur disquette du tout.

  • Placer l'image de votre disquette test.img dans le repertoire img, et vous pouvez ensuite booter dessus depuis un client PXE en tapant au prompt de boot :
    memdisk initrd=img/test.img

Entrée de menu nécessaire pour démarrer une image disquette (stockée dans le répertoire “img” des images et nommée “fichier.img”) :

  • Entrée de menu classiques pour les disquettes :
    LABEL monImageDeDisquette
    	MENU LABEL Mon image de disquette
    	kernel memdisk
    	append initrd=img/fichier.img
  • Ou pour certaines images de disquette ne fonctionnant pas totalement, ajouter “raw” fin de ligne append :
    append initrd=images/fichier.img raw
  • Ou encore :
    append initrd=images/fichier.img bigraw
  • Ou enfin pour une image de disquette Ghost, nécessitant le driver UNDI :
    append keeppxe initrd=images/fichier.img

Industrialisation de la chose

C'est quand meme un peu lourd de devoir taper le nom des images a lancer sur une console, qui plus est en qwerty, non ? ;-)

Nous allons donc créer et organiser un menu de boot :

  • Fichier de configuration de PXE Linux
    • 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)
      • 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.
    • On pourrait créer un fichier de configuration propre au réseau 192.168.0.0/24 :
      • C0A800 (réseau “192.168.0” en hexadecimal)
    • Ou une configuration par défaut :
      • Créer un fichier texte nommé : “default” dans le répertoire “pxelinux.cfg”, et contenant :
        DEFAULT menu.c32
        
        TIMEOUT 50
        ALLOWOPTIONS 0
        PROMPT 0
        
        MENU TITLE Kiwi Menu
        
        LABEL BootNormal
             MENU LABEL ^Boot Normal
             MENU DEFAULT
             LOCALBOOT 0
        
        LABEL test
             MENU LABEL Dis^quette de test
             kernel memdisk
             append initrd=images/test.img

Ceci est la version la plus simple d'affichage d'un menu au démarrage, meme si nous aurions pu réaliser un menu graphique.

La syntaxe de ce fichier de configuration est décrite dans le fichier “syslinux.doc” de l'archive de SysLinux.

Noter les touches de raccourcis des différentes entrées de ce menu ( caractere ^ devant la lettre correspondante )

Un sous menu n'est rien d'autre qu'un autre “menu.c32” appelé avec comme argument le fichier de configuration de ce sous menu, comme par exemple :

LABEL sysUtils
	MENU LABEL > Utilitaires ^systemes
	KERNEL menu.c32
	APPEND menuconf/sysutil.conf

Et en créant un fichier “menuconf/sysutil.conf” analogue au précédent

Références

Je vous conseille les lectures suivantes :

sysadmin/boot_pxe.1281514193.txt.gz · Dernière modification: 2010/08/11 10:09 par james
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0