Jump to content

Multi Boot and TFTP32

Recommended Posts

Hi guys ,

I have a question for you .

I have 2 differents version of BartPe and 2 different version of WinPe 2.0 .

If I use TFTPD32 with a single " image " ( BartPe or WinPe ) all works fine . But I don't know the way for use with TFTPD32 and a menu for select an "image" to run .

Can you help me with example o link ?

Thanks for your collaboartions


Link to post
Share on other sites

If you use as base WinPE 2.0, you could use a "multiple" BCD:



But cannot say how and if it will work with BartPE. :unsure:

grub4dos has newish PXE capabilities, but there is not yet much documentation/examples AFAIK, some hints are given here:


This is from readme_grub4dos:

*** PXE device ***

If PXE service is found at startup, GRUB4DOS will create a virtual device
(pd), through which files from the tftp server can be accessed. You can setup
a diskless boot environment using the following steps:

Client side

You need to boot from PXE ROM.

Server side

You need to configure a dhcp server and a tftp server. In the dhcp server, use
grldr as boot file.

You may also want to load a different menu.lst for different client. GRUB4DOS
will scan the following location for configuration file:


Here, we assume the network card mac for the client machine is
88:99:AA:BB:CC:DD, and the ip address is (C000025B). /mybootdir is
the directory of the boot file, for example, if boot file is /tftp/grldr, then

If none of the above files is present, grldr will use its embeded menu.lst.

This is a menu.lst to illstrate how to use files from the tftp server.

title Create ramdisk using map
map --mem (pd)/floppy.img (fd0)
map --hook
rootnoverify (fd0)
chainloader (fd0)+1

title Create ramdisk using memdisk
kernel (pd)/memdisk
initrd (pd)/floppy.img

You can see that the menu.lst is very similar to normal disk boot, you just
need to replace device like (hd0,0) with (pd).

There are some differences between disk device and pxe device:

1. You can't list files in the pxe device.

2. The blocklist command will not work with a file in the pxe device.

3. You must use --mem option if you want to map a file in the pxe device.

When you use chainloader to load file from the pxe device, there is a option
you can use:

chainloader --raw (pd)/BOOT_FILE

Option --raw works just like --force, but it load file in one go. This can
improve performance in some situation.

You can use the pxe command to control the pxe device.

1. pxe

If used without any parameter, pxe command will display current

2. pxe blksize N

Set the packet size for tftp transmission. Minimum value is 512,
maximum value is 1432. This parameter is used primarily for very old
tftp server where packet larger than 512 byte is not supported.

3. pxe basedir /dir

Set the base directory for files in the tftp server. If

pxe basedir /tftp

then all files in the pxe device is related to directory /tftp, for
example, (pd)/aa.img correspond to /tftp/aa.img in the server.

The default value of base directory is the directory of the boot file,
for example, if boot file is /tftp/grldr, then default base directory
is /tftp.

4. pxe keep

Keep the PXE stack. The default behaviour of GRUB4DOS is to unload
the PXE stack just before it exits.

5. pxe unload

Unload the PXE stack immediately.

Get latest here:



Link to post
Share on other sites

HI ,

ok now all works fine !!! :thumbup

I can boot two different WinPe 2.0 ( with a menu' ) an only session of TFTPD32

But I have another little problem . When I see the menu' item this has the identical name

On my example

-Ramdisk Option

-Ramdisk Option

If possible change this menu' ?

For example

- WinPe 1

- WinPe 2

Thanks a Lot


Link to post
Share on other sites
If possible change this menu' ?

Maybe, if only you could tell us HOW you are booting the two PE's! :w00t:

(unfortunately my crystall ball is in the shop for maintenance and tuning and Tarots are SO inaccurate) ;)

My guess :unsure: is that you edited the BCD, if this is the case, simply re-edit the description:



You can also change the description of an entry using the following command:

h. Bcdedit /set ID description "The new description"

For example:

bcdedit /set {802d5e32-0784-11da-bd33-000476eba25f} description "My Favorite OS"


Link to post
Share on other sites

Hi Jaclaz ,

no problem , here my little how to :

I following your link -> http://www.deployvista.com/Default.aspx?ta...&EntryID=27

1) Create your server structure and

- create your wim1 image

- create your wim2 image

- create your wim3 image

2 ) Install and configure your TFTPD32 server

3 ) Create your BCD file with CreateBCD3.cmd ( cut & past )

- copy CreateBCD3.cmd in the C:\PXEServer folder

- copy bcdedit.exe

- Run CreateBCD3.cmd

Now you have new BCD file in the c:\PXEServer\TFTPRoot\Boot

4 ) Run your TFTPD32 server and boot the client

Wow works fine

But we have a menu' with 3 identical ites

- Ramdisk Option

- Ramdisk Option

- Ramdisk Option

If you change this parameter in to CreateBCD3.cmd


Bcdedit /store %BCD-File% /create {ramdiskoptions} /d "Ramdisk options"


Bcdedit /store %BCD-File% /create {ramdiskoptions} /d "WinPE"

Now you have menu' with 3 items

- WinPe

- WinPe

- WinPe

I would change this menu' !!

For example

- Winpe1

- Winpe2

- Winpe3

Any suggestion

Ciao Ciao


Edited by Bumbastik
Link to post
Share on other sites
If you change this parameter in to CreateBCD3.cmd

Sure, the batch will create identical entries.

You need to change the BCD description directly from Command Line. (or modify the batch)

For example:

bcdedit /set {802d5e32-0784-11da-bd33-000476eba25f} description "My Favorite OS"

You see the difference between the create command that is in the batch and the set command in the given example, do you? :unsure:


Link to post
Share on other sites

Hi ,

I have tried but the result is the same -- > desn't work

This is my script ( 2 items )

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}

BCDedit /store c:\PXEServer\TFTPRoot\Boot\BCD /set %guid1% description "WinPe1"

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}

BCDedit /store c:\PXEServer\TFTPRoot\Boot\BCD /set %guid2% description "WinPe2"

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

I have an error

C:\PXEServer>Bcdedit /store c:\PXEServer\Tftproot\Boot\BCD /set {bootmgr} displayorder {d4c3277e-af2e-11dd-83c2-0002b3cc4b18} {d60c2c02-af2e-11dd-83c2-0002b3cc4b18}  
[b]An error occurred while attempting to reference the specified entry.
The system cannot find the file specified.[/b]

C:\PXEServer>Bcdedit /store c:\PXEServer\Tftproot\Boot\BCD /enum all

Windows Boot Loader
identifier {d4c3277e-af2e-11dd-83c2-0002b3cc4b18}
device ramdisk=[boot]\Boot\winpe_x86.wim,{ramdiskoptions}
description WinPe1
osdevice ramdisk=[boot]\Boot\winpe_x86.wim,{ramdiskoptions}
systemroot \Windows
detecthal Yes
winpe Yes

Windows Boot Loader
identifier {d60c2c02-af2e-11dd-83c2-0002b3cc4b18}
device ramdisk=[boot]\Boot\winpe_x86_2.wim,{ramdiskoptions}
description WinPe2
osdevice ramdisk=[boot]\Boot\winpe_x86_2.wim,{ramdiskoptions}
systemroot \Windows
detecthal Yes
winpe Yes

Setup Ramdisk Options
identifier {ramdiskoptions}
description Ramdisk options
ramdisksdidevice boot
ramdisksdipath \boot\boot.sdi

Now If I run tftp32 the system return a BCD error

2 test

- Run CreateBCD.cmd ( original file )

- Create a second cmd file only for change ID

BCDedit /store c:\PXEServer\TFTPRoot\Boot\BCD /set {453c05f8-af1a-11dd-83c2-0002b3cc4b18} description "WinPe1"

BCDedit /store c:\PXEServer\TFTPRoot\Boot\BCD /set {467b8114-af1a-11dd-83c2-0002b3cc4b18} description "WinPe2"

Run Tftpd 32 and client . In this case Winpe works fine but I have the menu with identical items

- Ram Option

- Ram Option

Any Suggstion

Thanks a lot



Link to post
Share on other sites

I don't have Vista (you see why I am a rather happy guy, don't you ;)) so I cannot help you as much as I would like but you cannot "invent" the syntax like you would like it to be, this line seems to me WRONG:

Bcdedit /store c:\PXEServer\Tftproot\Boot\BCD /set {bootmgr} displayorder {d4c3277e-af2e-11dd-83c2-0002b3cc4b18} {d60c2c02-af2e-11dd-83c2-0002b3cc4b18}

you cannot pass two parameters to /set displayorder. :unsure:

Or may be you have a timing problem? :w00t:

Some further reference:



See if this helps:


Why don't you try using one of the GUI utilities to modifiy the store if you are not confident enough in batch/command line syntax?




Edited by jaclaz
Link to post
Share on other sites
  • 2 months later...

Has anyone gone any further with this?

I'm experiencing the same issue - every menu entry in the Windows Boot Manager that is created in the BCD reads "Ramdisk options" - using the "BCDedit /store *path*\TFTPRoot\Boot\BCD /set {guid} description "WinPe1"" command changes nothing.

The enum shows this description has been changed for the GUID entry, but that description never shows.

The booting of the different WIMs works fine - but a user doesn't know what WIM he is selecting since each name is the same.

Using EasyBCD or VistaBootPro doesn't seem to offer a way to change it either - it's not a matter of "not knowing the syntax."

Edited by Stratuscaster
Link to post
Share on other sites
Problem solved.

The BOOTMGR.EXE in the latest WAIK is the culprit. Using the BOOTMGR.EXE from a previous WAIK displays the menu items correctly.

Could you please state exact version of BOOTMGR.EXE's?

"latest WAIK" and "a previous WAIK" are a bit labile as references... ;)


Link to post
Share on other sites
  • 2 weeks later...

The multiple BCD is a cool thing, but did any of you guys managed to add LOCALBOOT as a default entry?

I dont know how to set it to localboot so when there is no user interaction and the timeout is done, it should boot to local instead of booting a windows PE image....(like the first one in order...)

anyone knows a solution?

Edited by confused_ka
Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Create New...