C:\tftp => répertoire de base du serveur TFTP
192.168.0.1 => ip du serveur TFTP
srv.workgroup.local => nom du serveur
d:\ => lecteur cd (avec le cd-rom de Windows 2003)
1) Mise en place du serveur TFTP
A) Récupération des exécutables
Dans une fenêtre “invite de commande” :
[cpp]expand d:\i386\tftpd.ex_ %SystemRoot%\system32\tftpd.exe
expand d:\i386\tftp.ex_ %SystemRoot%\system32\tftp.exe[/cpp]
Info : Ce dernier fichier n'est pas essentiel au service serveur en lui-même mais permet de vérifier son bon fonctionnement.
B) Creation du service
Dans une fenêtre “invite de commande” :
[cpp]sc create tftpd binpath= %SystemRoot%\system32\tftpd.exe start= auto DisplayName= "Service Trivial FTP"[/cpp]
Info : vous pouvez remplacer "Service Trivial FTP" par ce que vous voulez, c’est le nom de service qui apparaitra dans la liste des services de votre serveur.
C) Paramétrage du dossier TFTP
Dans une fenêtre “invite de commande” :
[cpp]reg add HKLM\SYSTEM\CurrentControlSet\Services\tftpd\Parameters /v Directory /t REG_SZ /d c:\tftp[/cpp]
D) Démarrage du service
Dans une fenêtre “invite de commande” :
[cpp]sc start tftpd[/cpp]
2) Mise en place de l’arborescence du serveur TFTP
A) Syslinux
Télécharger le logiciel Syslinux (
http://www.kernel.org/pub/linux/utils/boot/syslinux/) et décompresser les fichiers suivant dans le dossier TFTP ("c:\tftp" dans notre exemple) :
- Pxelinux.0
- Memdisk/memdisk
- Com32/modules/menu.c32
B) Création des répertoires du dossier TFTP
Dans c:\tftp, vous devez créer les dossiers images, pxelinux.cfg, menuconf
3) Paramétrage du serveur DHCP
A) Installer les rôles DHCP et DNS sur le serveur
B) Ajout d’options a l’étendue DHCP
Il faut ajouter les options 66 et 67 pour l'etendue DHCP.
pour l'option 66 : valeur => srv.workgroup.local
pour l'option 67 : valeur => pxelinux.0
4) Creation d’une image BartPE
En vous aidant de “pebuilder”, vous pouvez créer une image BartPE.iso a placer dans « c:\tftp\images »
Pour cette etape, je vous invite a lire ce site :
http://severinterrier.free.fr/Boot/PE-Builder/
5) Creation du boot
A) Fichiers de boot
Dans une fenêtre “invite de commande” :
[cpp]expand d:\i386\setupldr.ex_ c:\tftp\ntldr
expand d:\i386\startrom.n1_ c:\tftp\startrom.0
copy d:\i386\ntdetect.com c:\tftp\ntdetect.com[/cpp]
B) Fichier winnt.sif
Dans c:\tftp, il faut créer un fichier .txt avec ceci :
[cpp][SetupData]
BootDevice = "ramdisk(0)"
BootPath = "\i386\System32\"
OsLoadOptions = "/noguiboot /fastdetect /minint /rdexportascd /rdpath=images\BartPE.iso"[/cpp]
Et renommer ce fichier txt en winnt.sif pour permettre de booter avec l’image iso créée.
C) Fichier menu pxe
Créer le fichier c:\tftp\pxelinux.cfg\defaut (sans extention) :
[cpp]DEFAULT menu.c32
ALLOWOPTION 0
PROMPT 0
MENU TITLE Menu PXE
LABEL bartpe
MENU LABEL BartPE
KERNEL startrom.0[/cpp]
Explications de ce fichier :
- ALLOWOPTION 0
Limite le choix iniquement à ceux affiché dans le menu, il ne pourra pas spécifier de choix à l'invite.
- PROMPT 0
L'invite « boot: » ne sera pas affiché.
- MENU TITLE Menu PXE
Pour indiquer le titre de la fenêtre, vous pouvez mettre ce que vous voulez.
- LABEL bartpe
C’est le titre de la section du menu, vous pouvez mettre ce que vous voulez, mais de préférence en rapport avec la ligne MENU LABEL.
- MENU LABEL BartPE
C’est le texte qui s’affichera dans la liste des choix du menu.
- KERNEL Startrom.0
Pour indiquer que l’image binaire à exécuter est le fichier « startrom.0 ».
6) Test boot BartPE
Vous pouvez réaliser un test de boot pxe depuis une VM, en choisissant « BartPE » dans le menu pxe.
7) Création d’une image wim
A) WAIK
Télécharger et installer le Kit d'installation Windows automatisée
http://www.microsoft.com/downloads/deta ... 9830D629F2
L’installation peut se faire sur un pc sous XP SP2 ou Seven.
B) Création de l’arborescence
Dans l’invite de commande des outils WAIK, exécuter les lignes suivantes :
[cpp]mkdir c:\winpe
imagex /apply x86\winpe.wim 1 c:\winpe
mkdir \\srv.workgroup.local\tftp\boot\fonts
mkdir \\srv.workgroup.local\tftp\images\
copy c:\winpe\Windows\Boot\PXE\pxeboot.n12 \\srv.workgroup.local\tftp\winpeboot.0
copy c:\winpe\Windows\Boot\PXE\bootmgr.exe \\srv.workgroup.local\tftp\
copy c:\winpe\Windows\System32\bcdedit.exe .
copy x86\boot\boot.sdi \\srv.workgroup.local\tftp\boot
copy x86\boot\fonts\wgl4_boot.ttf \\srv.workgroup.local\tftp\boot\fonts
rd c :\winpe /s /q[/cpp]
Le fichier winpeboot.0 est l’image binaire qui servira à booter notre image wim.
C) Fichier Default
Nous devons ajouter une entrée dans le fichier « pxelinux.cfg\Default » :
[cpp]LABEL wimpe
MENU LABEL WimPE
KERNEL winpeboot.0[/cpp]
D) Image WIM
Dans l’invite de commande des outils WAIK, exécuter les lignes suivantes :
[cpp]mkdir c :\winpe
imagex /apply x86\winpe.wim 1 c:\winpe
imagex.exe /capture c:\winpe \\srv.workgroup.local\tftp\images\boot_x86.wim "Windows PE Image" /boot /compress max
rd %TEMP%\winpe /s /q[/cpp]
8) Chargeur de démarrage
A) Création du catalogue
Dans l’invite de commande des outils WAIK, executer les lignes suivantes pour créer le catalogue :
[cpp]bcdedit -createstore \\srv.workgroup.local\tftp\boot\BCD
bcdedit -store \\srv.workgroup.local\tftp\boot\BCD -create {bootmgr} /d "Windows BootManager"
bcdedit -store \\srv.workgroup.local\tftp\boot\BCD -set {bootmgr} timeout 30
bcdedit -store \\srv.workgroup.local\tftp\boot\BCD -create {ramdiskoptions} /d "Ramdisk options"
bcdedit -store \\srv.workgroup.local\tftp\boot\BCD -set {ramdiskoptions} ramdisksdidevice boot
bcdedit -store \\srv.workgroup.local\tftp\boot\BCD -set {ramdiskoptions} ramdisksdipath \boot\boot.sdi
bcdedit -store \\srv.workgroup.local\tftp\boot\BCD /enum ALL[/cpp]
Ce qui donnera comme résultat :
Windows Boot Manager
--------------------
identifier {bootmgr}
description Windows BootManager
timeout 30
Setup Ramdisk Options
---------------------
identifier {ramdiskoptions}
description Ramdisk options
ramdisksdidevice boot
ramdisksdipath \boot\boot.sdi
B) Ajout d’une entrée
Dans l’invite de commande des outils WAIK, executer les lignes de commandes :
[cpp]:: Cette soit disante "boucle" a pour but de vous éviter d'avoir à recopier à chaque fois le GUID généré
for /f "tokens=1-3" %a in ('bcdedit -store \\srv.workgroup.local\tftp\boot\BCD -create /d "Boot WinPE 32bits" /application osloader') do set GUIDPE=%c
bcdedit -store \\srv.workgroup.local\tftp\boot\BCD -set %GUIDPE% systemroot \Windows
bcdedit -store \\srv.workgroup.local\tftp\boot\BCD -set %GUIDPE% detecthal Yes
bcdedit -store \\srv.workgroup.local\tftp\boot\BCD -set %GUIDPE% winpe Yes
bcdedit -store \\srv.workgroup.local\tftp\boot\BCD -set %GUIDPE% osdevice ramdisk=[boot]\images\boot_x86.wim,{ramdiskoptions}
bcdedit -store \\srv.workgroup.local\tftp\boot\BCD -set %GUIDPE% device ramdisk=[boot]\images\boot_x86.wim,{ramdiskoptions}
bcdedit -store \\srv.workgroup.local\tftp\boot\BCD -set {bootmgr} displayorder %GUIDPE%
bcdedit -store \\srv.workgroup.local\tftp\boot\BCD /enum OSLOADER[/cpp]
Info : boot_x86.wim peut être modifier par le nom de votre image Wim.
Ce qui donnera comme résultat :
Windows Boot Loader
-------------------
identifier {d70fc91e-c160-11db-97cc-8000600fe800}
device ramdisk=[boot]\images\boot_x86.wim,{ramdiskoptions}
description Boot WinPE 32bits
osdevice ramdisk=[boot]\images\boot_x86.wim,{ramdiskoptions}
systemroot \Windows
detecthal Yes
winpe Yes
9) Test boot WinPE
Vous pouvez booter en sélectionnant l’entrée WinPE dans le menu PXE.
Attention :
Apres plusieurs tests pour intégrer les drivers VMWare dans mon WinPE, je n’ai pas réussi à obtenir un boot correct (la carte réseau n’était pas reconnue). J’ai donc réalisé mon test sur un pc physique.
10) Plusieurs images ISO dans le menu PXE
Pour ceux qui souhaiteraient ajouter plusieurs images ISO dans le menu PXE, vous pouvez créer des copies des fichiers :
- startrom.0 vers startrom2.0
- ntldr vers ntld2
- winnt.sif vers winn2.sif
Ensuite, à l’aide d’un éditeur hexadécimal (j’ai utilisé HexEdit), vous devez remplacer les occurrences de :
- ntldr en ntld2 dans le fichier startrom.0
- winnt.sif en winn2.sif dans le fichier ntld2
- ancienfichier.iso en nouveaufichier.iso dans le fichier winn2.sif