TrueSec Expert Trainings
  Search English (United States)  Svenska (Sverige)
Saturday, July 04, 2009 ..:: Blog » Johan Arwidmark ::.. Register  Login
 Blog_Archive Minimize

 Print   
 Booting WinPE 2.0 from a third party PXE Server Minimize
Location: BlogsJohan Arwidmark    
Posted by: johan 3/30/2007

Welcome

This article describes how to configure a third party PXE Server (Jounin Tftpd32) for booting Windows PE 2.0

Perform all steps on a Vista Machine (the files/folders can of course later be transferred to a Windows 2003 SP1 server)

The guide covers the following steps

  • Configure and the Install WAIK,
  • Create a x86 Windows PE 2.0 image
  • Prepare the PXE Server folder structure
  • Create a new BCD store
  • Install and Configure the PXE Server (Tftpd)
  • Create an x64 Windows PE 2.0 Image
  • Create a BCD store with multiple choices

Step 1 – Creating the Server Structure

  1. Download and install WAIK to the default location
  2. Start an elevated command prompt (Run as administrator) and type the following commands

    cd /d "C:\Program Files\Windows AIK\Tools\PETools"
    copype x86 c:\winpe_x86
    ren winpe.wim winpe_x86.wim
    imagex /mount c:\winpe_x86\winpe_x86.wim 1 c:\winpe_x86\mount
    md C:\PXEServer\TFTPRoot\Boot\Fonts
    copy c:\winpe_x86\mount\Windows\Boot\PXE\pxeboot.n12  C:\PXEServer\TFTPRoot\boot /y
    copy c:\winpe_x86\ISO\boot\fonts\*.* c:\PXEServer\TFTPRoot\Boot\Fonts /y
    copy c:\winpe_x86\mount\Windows\Boot\PXE\bootmgr.exe C:\PXEServer\TFTPRoot /y
    imagex /unmount c:\winpe_x86\mount
    copy C:\winpe_x86\ISO\boot\boot.sdi C:\PXEServer\TFTPRoot\boot /y
    copy c:\winpe_x86\winpe_x86.wim C:\PXEServer\TFTPRoot\boot /y

    Note
    : Each line beginning with imagex or copy is a separate line (might have been wrapped)

                                


Step 2 – Create a new BCD Store

  1. In the C:\PXEServer folder, create a batchfile in named CreateBCD.cmd with the following content

    Rem Creates BCD (boot configuration data) for Windows PE 2.0
    set BCD-File=c:\PXEServer\Tftproot\Boot\BCD
    del %BCD-File%
    Bcdedit /createstore %BCD-File%
    Bcdedit /store %BCD-File% /create {ramdiskoptions} /d "Ramdisk options"
    Bcdedit /store %BCD-File% /set {ramdiskoptions} ramdisksdidevice  boot
    Bcdedit /store %BCD-File% /set {ramdiskoptions} ramdisksdipath  \boot\boot.sdi
    for /f "tokens=1-3" %%a in ('Bcdedit /store %BCD-File% /create /d "WinPE x86" /application osloader') do set guid1=%%c
    Bcdedit /store %BCD-File% /set %guid1% systemroot \Windows
    Bcdedit /store %BCD-File% /set %guid1% detecthal Yes
    Bcdedit /store %BCD-File% /set %guid1% winpe Yes
    Bcdedit /store %BCD-File% /set %guid1% osdevice ramdisk=[boot]\Boot\winpe_x86.wim,{ramdiskoptions}
    Bcdedit /store %BCD-File% /set %guid1% device ramdisk=[boot]\Boot\winpe_x86.wim,{ramdiskoptions}
    Bcdedit /store %BCD-File% /create {bootmgr} /d "Windows Vista BootManager" 
    Bcdedit /store %BCD-File% /set {bootmgr} timeout 30
    Bcdedit /store %BCD-File% /set {bootmgr} displayorder %guid1%
    Bcdedit /store %BCD-File% /enum all


    Note
    : Each line beginning with bcdedit or for is a separate line (might have been wrapped)
  2. In the Command prompt, run the CreateBCD.cmd batch file.

 

Step 3 – Configure the PXE Server

  1. Download Tftpd32 v3.03 from http://www.jounin.net/tftpd32_download.html and extract the tftpd32.exe and tftpd.hlp files to C:\PXEServer.
  2. Start Tftpd32 (Unblock for Vista Firewall) and configure the following TFTP Server Settings:
    - Base Directory: C:\PXEServer\TFTPRoot
    - Allow "\" As virtual root
    - TFTP Security: Read Only
    - Use anticipation windows of: 8192

    Note: Using anticipation windows can greatly improve transfer speed, but since it is prohibited by the TFTP specification, a special warning is displayed when this box is checked.
  3. DHCP Server Settings, change to reflect your environment.

    - IP pool starting address: 192.168.1.100
    - Size of pool: 99
    - Boot File: /boot/pxeboot.n12
    - Default Router: 192.168.1.1
    - Mask: 255.255.255.0
    - Domain name: tslab.net

Optional – Add a x64 Image

  1. Create a x64 Windows PE 2.0 Image

    copype amd64 c:\winpe_x64
    ren winpe.wim winpe_x64.wim
    copy c:\winpe_x64\winpe_x64.wim C:\PXEServer\TFTPRoot\boot /y
  2. In the C:\PXEServer folder, create a batch file in named CreateBCD2.cmd with the following content.

    Rem Creates BCD (boot configuration data) for two Windows PE 2.0 images
    set BCD-File=c:\PXEServer\Tftproot\Boot\BCD
    del %BCD-File%
    Bcdedit /createstore %BCD-File%
    Bcdedit /store %BCD-File% /create {ramdiskoptions} /d "Ramdisk options"
    Bcdedit /store %BCD-File% /set {ramdiskoptions} ramdisksdidevice  boot
    Bcdedit /store %BCD-File% /set {ramdiskoptions} ramdisksdipath  \boot\boot.sdi

    for /f "tokens=1-3" %%a in ('Bcdedit /store %BCD-File% /create /d "WinPE x86" /application osloader') do set guid1=%%c
    Bcdedit /store %BCD-File% /set %guid1% systemroot \Windows
    Bcdedit /store %BCD-File% /set %guid1% detecthal Yes
    Bcdedit /store %BCD-File% /set %guid1% winpe Yes
    Bcdedit /store %BCD-File% /set %guid1% osdevice ramdisk=[boot]\Boot\winpe_x86.wim,{ramdiskoptions}
    Bcdedit /store %BCD-File% /set %guid1% device ramdisk=[boot]\Boot\winpe_x86.wim,{ramdiskoptions}

    for /f "tokens=1-3" %%a in ('Bcdedit /store %BCD-File% /create /d "WinPE x64" /application osloader') do set guid2=%%c
    Bcdedit /store %BCD-File% /set %guid2% systemroot \Windows
    Bcdedit /store %BCD-File% /set %guid2% detecthal Yes
    Bcdedit /store %BCD-File% /set %guid2% winpe Yes
    Bcdedit /store %BCD-File% /set %guid2% osdevice ramdisk=[boot]\Boot\winpe_x64.wim,{ramdiskoptions}
    Bcdedit /store %BCD-File% /set %guid2% device ramdisk=[boot]\Boot\winpe_x64.wim,{ramdiskoptions}

    Bcdedit /store %BCD-File% /create {bootmgr} /d "Windows VISTA BootManager"
    Bcdedit /store %BCD-File% /set {bootmgr} timeout 30
    Bcdedit /store %BCD-File% /set {bootmgr} displayorder %guid1% %guid2%
    Bcdedit /store %BCD-File% /enum all

    Note: Each line beginning with bcdedit or for is a separate line (might have been wrapped)

 

Optional - BCD with multiple entries. 

  1. In the C:\PXEServer folder, create a batchfile in named CreateBCD3.cmd with the following content.

    Rem Creates BCD (boot configuration data) for three Windows PE 2.0 images
    set BCD-File=c:\PXEServer\Tftproot\Boot\BCD
    del %BCD-File%
    Bcdedit /createstore %BCD-File%
    Bcdedit /store %BCD-File% /create {ramdiskoptions} /d "Ramdisk options"
    Bcdedit /store %BCD-File% /set {ramdiskoptions} ramdisksdidevice  boot
    Bcdedit /store %BCD-File% /set {ramdiskoptions} ramdisksdipath  \boot\boot.sdi

    for /f "tokens=1-3" %%a in ('Bcdedit /store %BCD-File% /create /d "WinPE x86" /application osloader') do set guid1=%%c
    Bcdedit /store %BCD-File% /set %guid1% systemroot \Windows
    Bcdedit /store %BCD-File% /set %guid1% detecthal Yes
    Bcdedit /store %BCD-File% /set %guid1% winpe Yes
    Bcdedit /store %BCD-File% /set %guid1% osdevice ramdisk=[boot]\Boot\winpe_x86.wim,{ramdiskoptions}
    Bcdedit /store %BCD-File% /set %guid1% device ramdisk=[boot]\Boot\winpe_x86.wim,{ramdiskoptions}

    for /f "tokens=1-3" %%a in ('Bcdedit /store %BCD-File% /create /d "WinPE x86 2" /application osloader') do set guid2=%%c
    Bcdedit /store %BCD-File% /set %guid2% systemroot \Windows
    Bcdedit /store %BCD-File% /set %guid2% detecthal Yes
    Bcdedit /store %BCD-File% /set %guid2% winpe Yes
    Bcdedit /store %BCD-File% /set %guid2% osdevice ramdisk=[boot]\Boot\winpe_x86_2.wim,{ramdiskoptions}
    Bcdedit /store %BCD-File% /set %guid2% device ramdisk=[boot]\Boot\winpe_x86_2.wim,{ramdiskoptions}

    for /f "tokens=1-3" %%a in ('Bcdedit /store %BCD-File% /create /d "WinPE x64" /application osloader') do set guid3=%%c
    Bcdedit /store %BCD-File% /set %guid3% systemroot \Windows
    Bcdedit /store %BCD-File% /set %guid3% detecthal Yes
    Bcdedit /store %BCD-File% /set %guid3% winpe Yes
    Bcdedit /store %BCD-File% /set %guid3% osdevice ramdisk=[boot]\Boot\winpe_x64.wim,{ramdiskoptions}
    Bcdedit /store %BCD-File% /set %guid3% device ramdisk=[boot]\Boot\winpe_x64.wim,{ramdiskoptions}
    Bcdedit /store %BCD-File% /create {bootmgr} /d "Windows VISTA BootManager" Bcdedit /store %BCD-File% /set {bootmgr} timeout 30
    Bcdedit /store %BCD-File% /set {bootmgr} displayorder %guid1% %guid2% %guid3%
    Bcdedit /store %BCD-File% /enum all

    Note: Each line beginning with bcdedit or for is a separate line (might have been wrapped)
Permalink |  Trackback

Comments (2)  
Re: Booting WinPE 2.0 from a third party PXE Server    By Stratuscaster on 1/28/2009
I've gotten this to work well - I can boot multiple WIMs just fine...

The problem is that in the Windows Boot Manager, all the entries are shown as "Ramdisk options" and not the descriptions give to them (like "WinPE x86" and "WinPE x64") - and that makes it difficult for others to know what WIMs they are choosing.

Any thoughts? I've been working on this issue all day today, and am happy that it works as far as the booting part - but without the correct names in the menu, I cannot put it into production.

-jim

Re: Booting WinPE 2.0 from a third party PXE Server    By Stratuscaster on 1/29/2009
Issue solved.

Turns out that the BOOTMGR.EXE provided with the latest WAIK is the cause of the problem. Using the BOOTMGR.EXE from the older WAIK displays the menu choices correctly.

-jim


  
 Search_Blog Minimize

 Print   
Copyright Deployvista.com 2006-2008 (c)   Terms Of Use  Privacy Statement
DotNetNuke® is copyright 2002-2009 by DotNetNuke Corporation