Dernières venues de sites connues...
Derniers messages du forum...
xhtml 1.1

DocumentationsMise en place de serveursPXE

Smiley forum Discussions sur ce sujet dans le forum Smiley forum

Mise en place d'un serveur de boot PXE (avec PXELinux !)

« Le démarrage PXE (sigle de Pre-boot eXecution Environment) permet à une station de travail de démarrer depuis le réseau un système d'exploitation qui se trouve sur un serveur. »

Wikipédia

Nous allons mettre en place ce serveur dont il est question. Il doit pouvoir répondre aux requêtes DHCP des clients et servir les fichiers nécessaires par le biais du protocole TFTP.

Des solutions 100% Linux proposent ces services, mais ici nous aborderons ceci dans un environnement Windows Server

Windows 2003 intègre un serveur DHCP de base qui suffira amplement. Un service d'installation à distance est aussi fourni comme composant optionnel (RIS) mais nécessite de passer en domaine pour pouvoir être mis en place. De plus ce dernier n'est pas très flexible.

Nous allons donc mettre en place une solution hybride à base d'amorce Linux pour booter de plusieurs manières possibles :

Ce dernier point n'étant pas abordé dans cette documentation. Il est assez bien développé dans bon nombre d'articles présents sur Internet.

Démarrer un CD amorçable nécessite un composant système issu de Windows 2003 SP1 (RAMDISK.SYS), ce qui limite les versions de Windows démarrables par ce moyen à Windows 2003 et XP SP1 au minimum.

Voici le résultat juste après l'étape du Bios et l'obtention des paramètres du serveur :

Exemple de menu de boot PXE

Exemple de contenu :

Ghost 8.2 Pro, Offline NT Password & Registry Editor, Partition Magic, Partition Manager
Diagnostic Maxtor, IBM – Hitachi, Fujitsu, Samsung, Westerd Digital, Seagate...
MemTest, Disquette de boot standard, Windows 3.11, Windows PE, BartPE...

Articles associés :

Sommaire

Avant de continuer…

Pré requis sur le serveur

Conventions

Sources de données nécessaires :

› Pour l'essentiel des fichiers nécessaires de ce tutoriel (une partie nécessite que vous possédiez une licence Windows 2003), téléchargez ce fichier : kiwi_pxe.rar

Outils optionnels :

1) Mise en place du service TFTP

  1. Depuis le répertoire i386 de la source d'installation, décompresser le fichier TFTPD.EX_ dans le répertoire système :

    expand d:\i386\tftpd.ex_ %SystemRoot%\system32\tftpd.exe
    expand d:\i386\tftp.ex_  %SystemRoot%\system32\tftp.exe

    Ce dernier fichier n'est pas essentiel au service serveur en lui-même mais permet de vérifier son bon fonctionnement.

  2. Création du service correspondant au serveur :

    sc create tftpd binpath= %SystemRoot%\system32\tftpd.exe start= auto DisplayName= "Service Trivial FTP"

  3. Paramétrage du répertoire de base

    • Se rendre avec l'éditeur de registre (regedit) à la clé suivante :

      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tftpd

    • Créer une nouvelle clé nommée : Parameters
    • Créer dans cette même clé une valeur chaîne:

      • Nom : Directory
      • Valeur : x:\tftp

      Clé de la base de registre

    Pour les accros de la ligne de commande ou les scripteurs fous :

    reg add HKLM\SYSTEM\CurrentControlSet\Services\tftpd\Parameters /v Directory /t REG_SZ /d x:\tftp

  4. Nous pouvons maintenant démarrer le service :

    sc start tftpd

    Un rapide coup d'œil dans les services Windows permet de vérifier le bon déroulement de cette procédure.

    Service TFTP en marche

    Pour les accros de la ligne de commande ou les scripteurs fous :

    sc interrogate tftpd

    Si tout c'est bien passé nous pouvons voir :

    STATE : 4 RUNNING

2) Mise en place de l'arborescence sur le serveur

  1. Télécharger le dernier SysLinux à l'adresse suivante :

    http://www.kernel.org/pub/linux/utils/boot/syslinux/

  2. Décompresser les fichiers suivants dans le répertoire de base (à savoir x:\tftp ici) :

    • pxelinux.0
    • memdisk/memdisk
    • com32/modules/menu.c32
  3. Créer les répertoires suivants :

    • images (contiendra les images de disquettes)
    • pxelinux.cfg (contiendra la configuration)
    • menuconf (contiendra la configuration d'éventuels sous-menus)

    Résultat :

    Liste des fichiers TFTP de base

    Vous pouvez bien entendu dès à présent si vous disposez d'images de disquettes (img/ima/imz) les ranger dans le répertoire « images ».

  4. Test de transfert de fichier :

    Depuis un poste sur le réseau (Windows XP intègre la commande tftp) ou depuis le serveur lui-même :

    tftp srvkiwi.nirvana.com GET pxelinux.0
    ou bien :
    tftp 192.168.0.1 GET pxelinux.0

    Résultat :

    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 les logiciels de sécurité du serveur si besoin est.
  5. Mise en place d'une sécurité :

    Par défaut, nous pouvons écrire sur le serveur, ce qui est une faille de sécurité car des personnes peuvent mettre d'autres noyaux, fichiers, ou bien en remplacer…
    Nous pouvons restreindre l'accès en écriture en empêchant le compte System d'écrire dans le répertoire, en effet le service TFTP est lancé sous ce compte.

    Cette procédure peut être réalisée en modifiant les droits avancés de ce répertoire :

    Sécurité TFTP

    Résultat :

    tftp srvkiwi.nirvana.com PUT %SystemRoot%\notepad.exe

    Erreur sur le serveur : Access violation.
    échec lors de la demande de connexion

3) Réglages du serveur DHCP

Nous n'abordons pas en détails la configuration d'un serveur DHCP sous Windows 2003, il suffit que ce serveur donne bien entendu les paramètres sur l'interface où est connecté le PC devant booter sur le réseau…

Les options DHCP minimales à rajouter pour que le boot PXE fonctionne sont :

66 Nom d'hôte du serveur de démarrage [chaîne de caractère]
67 Nom du fichier de démarrage [chaîne de caractère]

Remplir ces options avec les valeurs suivantes :

66 srvkiwi.nirvana.com
67 pxelinux.0

Ou bien sur srvkiwi.nirvana.com est le nom d'hôte du serveur…, dans le doute il faut mieux placer l'adresse IP du serveur.

Options DHCP

Pour les accros de la ligne de commande ou les scripteurs fous :

  1. Listons les étendues DHCP :

    netsh dhcp server show scope

    ==============================================================================
     Adresse étendue- Masque sous-rés. -  État - Nom étendue        -  Commentaire 
    ==============================================================================
    
     192.168.0.0    - 255.255.255.0    - Actif - RéZo Kiwi interne  -              
    
     Nb total d'étendues = 1 
    La commande s'est terminée correctement.

    Nous voyons donc ici que l'adresse de l'étendue est 192.168.0.0

  2. Ajoutons les options à l'étendue :

    netsh dhcp server scope 192.168.0.0 set optionvalue 066 STRING srvkiwi.nirvana.com
    netsh dhcp server scope 192.168.0.0 set optionvalue 067 STRING pxelinux.0

    Ou bien sur srvkiwi.nirvana.com est le nom d'hôte du serveur…, dans le doute il faut mieux placer l'adresse IP du serveur.

4) Utilisation de VMware pour tester

Le serveur est normalement opérationnel. Vous pouvez le tester avec un PC branché sur le réseau ou en créant un PC virtuel très simple

Si vous possédez une licence pour VMware Workstation il suffit de créer une machine virtuelle très simple comme illustré ci-dessous :

Configuration de VMware pour PXE

Si vous ne possédez pas de licence pour VMware Worlstation, alors sachez que le VMware player est lui gratuit, il ne permet pas de créer de machine, mais juste d'en utiliser…

  1. Créer un fichier texte contenant :

    config.version = "8"
    virtualHW.version = "4"
    memsize = "384"
    MemAllowAutoScaleDown = "FALSE"
    
    ide0:0.present = "FALSE"
    ide1:0.present = "FALSE"
    floppy0.present = "FALSE"
    sound.present = "FALSE"
    tools.remindInstall = "FALSE"
    
    ethernet0.present = "TRUE"
    ethernet0.addressType = "generated"
    
    displayName = "Test Boot PXE"
    guestOS = "other"
    

    J'impose ici la mémoire virtuelle de la machine virtuelle à 384 Mo, mais pour un simple test vous pouvez sensiblement la baisser à 32 Mo, 384 Mo étant une bonne valeur pour tester les démarrages WinPE

  2. Enregistrer le fichier

    Le fichier sera nommé : Test Boot PXE.vmx, faire attention à l'extension (vmx)

    De préférence, le marquer en mode « Lecture seule »…

Résultat après démarrage PXE :

Démarrage PXE sous VMware

Si vous voyez ceci c'est que le serveur fonctionne correctement, rien n'a démarré car rien n'a été configuré comme image de boot. Mais nous observons ici que plusieurs fichiers ont été demandés au serveur…

Les noms de fichier « en escalier » représentent la recherche de fichiers de configurations

En l'absence de fichier de configuration, le noyau linux sera demandé au serveur TFTP.
Dans les nouvelles version de PXELinux, ce message apparaît : Unable to locate configuration file, ceci sans demander de noyau par défaut.

5) Fichiers images

  1. Images binaires

    Nous pouvons démarrer, par exemple, l'utilitaire MemTest86+ depuis son image :

    http://www.memtest.org/
    Disponible sous l'appellation « Pre-Compiled Bootable Binary »

    Placer le fichier image memtest86+-1.65.bin dans le répertoire images puis ENLEVER l'extension bin pour des raisons de compatibilités.

    ren x:\tftp\images\memtest86+-1.65.bin memtest86+-1.65

    › Nous pouvons maintenant booter sur MemTest+ :

    PXE MemTest

    Résultat :

    MemTest
  2. Images de disquettes

    Les images de disquettes ne sont pas directement bootable, nous passons par une image binaire : memdisk, à laquelle nous passerons en arguments le nom du fichier images.

    Les images pouvant être passées à ce module peuvent être de tous les formats standards, même si un tel lecteur n'est pas présent dans l'ordinateur client.

    Les formats de disquettes disponibles sont :

    360K floppy (DD 5.25")
    720K floppy (DD 3.5")
    1200K floppy (HD 5.25")
    1440K floppy (HD 3.5")
    1680K floppy (HD 3.5" extended format)
    1722K floppy (HD 3.5" extended format)
    2880K floppy (ED 3.5")
    
    • Création d'une image de disquette avec RawWrite :

      RawWrite

      Simple, rapide, efficace…

      Vous aurez peut-être à rajouter l'extension de fichier pour le nom du fichier image.

      Bien entendu en ligne de commande :

      rawwritewin --read --drive 0 \\srvkiwi.nirvana.com\tftp\images\test.img

      › Aucune interface n'est affichée durant l'exécution de cette commande, et le retour à l'invite est immédiat

    • Création d'une image de disquette avec WinImage :

      WinImage est bien plus complet, il permet d'éditer les fichiers images, les amorces…

      Il permet aussi de créer des images de disque dur et d'enregistrer les images de disquettes au format compressé (compression ZIP)

      WinImage Enregistrement WinImage

      Les trois formats d'images sont gérés, le format compressé (imz) l'est aussi, si aucun mot de passe n'est placé.

      › Exemple avec une image : test.img

      Boot PXE Memdisk

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

    LABEL monImageDeDisquette
    	MENU LABEL Mon image de disquette
    	kernel memdisk
    	append initrd=images/fichier.img

    Pour certaines images de disquette ne fonctionnant pas totalement :

    append initrd=images/fichier.img raw

    ou encore :

    append initrd=images/fichier.img bigraw

    Pour une image de disquette Ghost, nécessitant le driver UNDI :

    append keeppxe initrd=images/fichier.img

    GhostCast Création de l'image disquette Ghost pour serveur GhostCast

  3. Images de CD-Rom à base de Windows 2003 SP1

    Smiley forum Discussions sur ce sujet dans le forum Smiley forum

    Puce Vista Astuce pour démarrer Windows PE 2.0 (Vista) par PXE disponible !

    Avant de pouvoir démarrer ce type d'image, il faut placer à la racine du serveur TFTP quelques fichiers essentiels :

    expand d:\i386\setupldr.ex_ x:\tftp\ntldr
    expand d:\i386\startrom.n1_ x:\tftp\startrom.0
    copy   d:\i386\ntdetect.com x:\tftp\ntdetect.com

    Si vous connaissez peu les environnements à base de Windows PE, le plus simple est d'utiliser PE Builder :

    http://www.nu2.nu/pebuilder/

    PE Builder

    BartPE est très modulable via son système de plug-in (d'origine et téléchargeable sur Internet)

    Ne pas cocher dans les options : "Ne pas mettre les fichiers Windows en lettres majuscule"
    Pas de panique, par défaut, cette option n'est pas activée ;)

    Pour créer un fichier image à partir de Windows XP SP2, il faut remplacer dans la source d'installation le fichier : I386\RAMDISK.SY_, par celui provenant d'une source Windows 2003 SP1... (cela peut être le service pack 1)

    Une fois paramétré, cliquer sur « Compiler », ceci créera une ISO de CD-ROM nommée : pebuilder.iso, à placer dans le répertoire images si ce n'est pas déjà paramétré.

    Pour les utilisateurs de Windows PE 2005 :

    mkimg d: %temp%\winpe x:\tftp\images\winpe.iso

    Il faut maintenant créer un fichier text nommé : winnt.sif à la racine du serveur TFTP contenant :

    [SetupData]
    BootDevice = "ramdisk(0)"
    BootPath = "\i386\System32\"
    OsLoadOptions = "/noguiboot /fastdetect /minint /rdexportascd /rdpath=images\pebuilder.iso"

    Ou bien winpe.iso dans le cas d'une création d'image Windows PE 2005

    Liste de fichiers correspondante :

    Liste de fichiers du serveur TFTP pour Windows PE

    › Démarrage d'image de CD-Rom à base de Windows PE

    Chargement WinPE

    Résultat :

    Windows PE 2005de base

    BartPE - version personnalisée

    WinPE 2005

    BartPE

    Rappel

    Le démarrage réseau à partir d'image Windows n'est supporté qu'à partir d'image de Windows 2003 SP1 ou XP SP2 avec le fichier I386\RAMDISK.SY_ de 2003 SP1

    Entrée de menu nécessaire pour démarrer une image de CD Windows PE (stockée dans le répertoire images et nommée pebuilder.iso) :

    label wpe
    	MENU LABEL Windows PE
    	KERNEL startrom.0

6) Fichier de configuration de PXE Linux

7) Annexe

Cette annexe a juste pour but de servir d'exemple.

Vous pouvez vous inspirer de ces fichiers afin d'arriver à trouver une syntaxe ou des idées.

  1. Mon fichier de configuration (pxelinux.cfg/default)

    DEFAULT menu.c32
    
    TIMEOUT 50
    ALLOWOPTIONS 0
    PROMPT 0
    
    MENU TITLE Kiwi Menu
    
    LABEL BootNormal
    	MENU LABEL ^Boot Normal
    	MENU DEFAULT
    	LOCALBOOT 0
    
    LABEL model
    	MENU LABEL Dis^quette modele
    	kernel memdisk
    	append initrd=images/model.imz
    
    LABEL hdz
    	MENU LABEL ^Test de disque dur bootable
    	kernel memdisk
    	append initrd=images/hd.imz
    
    LABEL sysUtils
    	MENU LABEL > Utilitaires ^systemes
    	KERNEL menu.c32
    	APPEND menuconf/sysutil.conf
    
    LABEL memUtils
    	MENU LABEL > Utilitaires de ^memoires
    	KERNEL menu.c32
    	APPEND menuconf/memutil.conf
    
    LABEL hddUtils
    	MENU LABEL > Utilitaires de ^disques dur
    	KERNEL menu.c32
    	APPEND menuconf/diskutil.conf
    
    label bpe
    	MENU LABEL Bart^PE
    	KERNEL startrom.0
    
    label reboot
    	MENU LABEL ^Redemarrer
    	kernel reboot.com
    
    label shutdown
    	MENU LABEL ^Eteindre
    	kernel halt.com
  2. Fichier de configuration du sous menu « Utilitaire système » (menuconf/sysutil.conf)

    ALLOWOPTIONS 0
    PROMPT 0
    
    MENU TITLE Kiwi Menu - Utilitaires systemes
    
    
    LABEL ghost
    	MENU LABEL ^Symantec Ghost 8.2 Pro
    	kernel memdisk
    	append keeppxe initrd=images/sys/ghost.imz
    
    LABEL ntpasswd
    	MENU LABEL ^Offline NT Password & Registry Editor
    	kernel memdisk
    	append initrd=images/sys/ntpasswd.imz
    
    LABEL pqMagic
    	MENU LABEL Symantec Partition Magic 8.0
    	kernel memdisk
    	append initrd=images/sys/pqmagic.imz
    
    LABEL pqMagic8
    	MENU LABEL PowerQuest Partition Magic 8.0
    	kernel memdisk
    	append initrd=images/sys/pqmagic8.imz
    
    LABEL anaPM
    	MENU LABEL Anacronis Partition Manager 2003
    	kernel memdisk
    	append initrd=images/sys/anapm.imz bigraw
    
    LABEL paraPM
    	MENU LABEL Paragon Partition Manager 7.0
    	kernel memdisk
    	append initrd=images/sys/parapm.imz bigraw
  3. Structure de fichier sur le serveur TFTP

    \\SRVKIWI.NIRVANA.COM\TFTP.
    |   halt.com
    |   memdisk
    |   menu.c32
    |   NTDETECT.COM
    |   ntldr
    |   pxelinux.0
    |   reboot.com
    |   startrom.0
    |   winnt.sif
    |
    +---images
    |   |   hd.imz
    |   |   kiwipe.iso
    |   |   model.imz
    |   |   pebuilder.iso
    |   |   winpe.iso
    |   |   winpecd.iso
    |   |
    |   +---hdd
    |   |       hdd1.imz
    |   |       hddFujitsu.imz
    |   |       hddIBMhita.IMZ
    |   |       hddMaxtor.imz
    |   |       hddSamsung.imz
    |   |       hddSeagate.imz
    |   |       hddWD.imz
    |   |
    |   +---mem
    |   |       memtest
    |   |       memtestp
    |   |
    |   \---sys
    |       |   anapm.imz
    |       |   ghost.imz
    |       |   ntpasswd.imz
    |       |   parapm.imz
    |       |   pqmagic.imz
    |       |   pqmagic8.imz
    |       |
    |       \---ntpasswd
    |               INITRD.GZ
    |               VMLINUZ
    |
    +---menuconf
    |       diskutil.conf
    |       memutil.conf
    |       sysutil.conf
    |
    \---pxelinux.cfg
            default
            default.old

8) Bibliographie et mot de la fin

Je n'ai pas le mérite d'avoir inventé la manière d'installer et paramétrer un serveur PXE.

Voici une liste de liens menant à des pages et articles m'ayant servi de base ou inspiré pour la rédaction de ce document :

Je vous conseille de chercher des informations dans les aides de chacun des logiciels utilisés lors de ce tutoriel, vous trouverez certainement comment créer des images de disques durs compressés qui puissent être démarrées, ou d'autres astuces ne figurant pas dans ce document.

Ce document n'a pas la prétention d'être la référence sur le sujet, mais a le mérite de combler le cruel manque de documentation sur cette technologie sur plateforme Windows Server.

Creative Commons License
Cette création est mise à disposition sous un contrat Creative Commons.

Page générée en 0.008 secondes.