Jump to content











Photo
- - - - -

WinPE 4 - UEFI PXE - Error 0x225


  • Please log in to reply
12 replies to this topic

#1 AceBlade258

AceBlade258
  • Members
  • 7 posts
  •  
    United States

Posted 13 November 2014 - 02:45 AM

Using this post from Erwan's blog, I managed to get WinPE to start booting in UEFI... Now I'm getting a very descriptive 0xc0000225 stop: "An unexpected error has occurred." Yay.

 

I get this error immediately after it hits the BCD file (observed through tcpdump), and never even tries to grab my boot.wim :(

 

Thoughts?

 

PS (tried some other things before posting) When using Erwan's method, I get the old ugly stop screen (white on black). If I copy the contents of my Win PE ISO and just move (or redirect my DHCP server to) the bootx64.efi file, it's all pretty like Windows 8 stop screens. Same text and options, just looks nice now, lol.



#2 erwan.l

erwan.l

    Gold Member

  • Developer
  • 1918 posts
  • Location:Nantes - France
  •  
    France

Posted 13 November 2014 - 08:18 AM

Hi,

Can you display the content of your bcd store?

bcdedit /store x:\pxe\boot\bcd (example).

 

And if you using TinyPXE Server, please, also display log here.

 

Cheers,

Erwan



#3 AceBlade258

AceBlade258
  • Members
  • 7 posts
  •  
    United States

Posted 13 November 2014 - 12:07 PM

BCDEdit output: 

Windows Boot Manager
--------------------
identifier              {bootmgr}
description             Windows Boot Manager
locale                  en-US
inherit                 {globalsettings}
default                 {default}
displayorder            {default}
toolsdisplayorder       {memdiag}
timeout                 30
 
Windows Boot Loader
-------------------
identifier              {default}
device                  ramdisk=[boot]\sources\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}
path                    \windows\system32\boot\winload.exe
description             Windows Setup
locale                  en-US
inherit                 {bootloadersettings}
osdevice                ramdisk=[boot]\sources\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}
systemroot              \windows
custom:250000c2         1
detecthal               Yes
winpe                   Yes
ems                     No

I'm using DD-WRT and i have the TFTP folder on my server. I'm using DNSMasq with the option

dhcp-boot=bootx64.efi,box,192.168.1.225

tcpdump of port 69 on my server

07:04:00.031827 IP deploy.1062 > box.tftp:  41 RRQ "bootx64.efi" octet tsize 0 blksize 1468
07:04:00.092355 IP deploy.1063 > box.tftp:  33 RRQ "bootx64.efi" octet blksize 1468
07:04:00.629832 IP deploy.7930 > box.tftp:  26 RRQ "\Boot\BCD" octet tsize 0
07:04:00.632343 IP deploy.7931 > box.tftp:  39 RRQ "\Boot\BCD" octet tsize 0 blksize 1456
07:04:00.945749 IP deploy.7932 > box.tftp:  56 RRQ "\EFI\Microsoft\Boot\Fonts\wgl4_boot.ttf" octet tsize 0
07:04:00.982196 IP deploy.7933 > box.tftp:  69 RRQ "\EFI\Microsoft\Boot\Fonts\wgl4_boot.ttf" octet tsize 0 blksize 1456
07:04:01.031875 IP deploy.7934 > box.tftp:  59 RRQ "\EFI\Microsoft\Boot\Fonts\segoe_slboot.ttf" octet tsize 0
07:04:01.034288 IP deploy.7935 > box.tftp:  72 RRQ "\EFI\Microsoft\Boot\Fonts\segoe_slboot.ttf" octet tsize 0 blksize 1456
07:04:01.118708 IP deploy.7936 > box.tftp:  59 RRQ "\EFI\Microsoft\Boot\Fonts\segmono_boot.ttf" octet tsize 0
07:04:01.121089 IP deploy.7937 > box.tftp:  72 RRQ "\EFI\Microsoft\Boot\Fonts\segmono_boot.ttf" octet tsize 0 blksize 1456

It looks to me like my BCD store is wrong, but I don't know what it's supposed to look like.


Edited by AceBlade258, 13 November 2014 - 12:17 PM.


#4 erwan.l

erwan.l

    Gold Member

  • Developer
  • 1918 posts
  • Location:Nantes - France
  •  
    France

Posted 13 November 2014 - 03:01 PM

indeed, your bcd store is wrong.

 

change path \windows\system32\boot\winload.exe to path \windows\system32\boot\winload.efi



#5 AceBlade258

AceBlade258
  • Members
  • 7 posts
  •  
    United States

Posted 13 November 2014 - 10:17 PM

Still does the same thing:

 

Current BCD:

Windows Boot Manager
--------------------
identifier              {bootmgr}
description             Windows Boot Manager
locale                  en-US
inherit                 {globalsettings}
default                 {default}
displayorder            {default}
toolsdisplayorder       {memdiag}
timeout                 30

Windows Boot Loader
-------------------
identifier              {default}
device                  ramdisk=[boot]\sources\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}
path                    \windows\system32\boot\winload.efi
description             Windows Setup
locale                  en-US
inherit                 {bootloadersettings}
custom:16000060         Yes
osdevice                ramdisk=[boot]\sources\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}
systemroot              \windows
custom:250000c2         1
detecthal               Yes
winpe                   Yes
ems                     No

tcpdump output (identical to previous):

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
17:11:39.664695 IP 192.168.1.103.1034 > box.tftp:  41 RRQ "bootx64.efi" octet tsize 0 blksize 1468
17:11:39.666097 IP 192.168.1.103.1035 > box.tftp:  33 RRQ "bootx64.efi" octet blksize 1468
17:11:42.052727 IP 192.168.1.103.8388 > box.tftp:  26 RRQ "\Boot\BCD" octet tsize 0
17:11:42.057565 IP 192.168.1.103.8389 > box.tftp:  39 RRQ "\Boot\BCD" octet tsize 0 blksize 1456
17:11:42.202194 IP 192.168.1.103.8390 > box.tftp:  56 RRQ "\EFI\Microsoft\Boot\Fonts\wgl4_boot.ttf" octet tsize 0
17:11:42.207458 IP 192.168.1.103.8391 > box.tftp:  69 RRQ "\EFI\Microsoft\Boot\Fonts\wgl4_boot.ttf" octet tsize 0 blksize 1456
17:11:42.235870 IP 192.168.1.103.8392 > box.tftp:  59 RRQ "\EFI\Microsoft\Boot\Fonts\segoe_slboot.ttf" octet tsize 0
17:11:42.238280 IP 192.168.1.103.8393 > box.tftp:  72 RRQ "\EFI\Microsoft\Boot\Fonts\segoe_slboot.ttf" octet tsize 0 blksize 1456
17:11:43.301791 IP 192.168.1.103.8394 > box.tftp:  59 RRQ "\EFI\Microsoft\Boot\Fonts\segmono_boot.ttf" octet tsize 0
17:11:43.304258 IP 192.168.1.103.8395 > box.tftp:  72 RRQ "\EFI\Microsoft\Boot\Fonts\segmono_boot.ttf" octet tsize 0 blksize 1456


#6 erwan.l

erwan.l

    Gold Member

  • Developer
  • 1918 posts
  • Location:Nantes - France
  •  
    France

Posted 14 November 2014 - 12:09 AM

you may want to try the following : run this against your BCD store :

bcdedit.exe /store my.bcd /set {bootmgr} nointegritychecks yes 

although this is usually used to solved the following error : error code 0xc0000428 (The digital signature for this file couldn’t be verified).

 

Back to your first post, you mentionned you used another method compared to mine.

Can you be more descriptive?

"my" method here is the following :  PXE-> IPXE.efi ->MS Bootx64.efi ->BCD (winload.efi) ->Boot.wim (x64).

But Bootx64.efi ->BCD (winload.efi) ->Boot.wim (x64) will work too.

 

Also, probably a stupid question but make sure you wim file is a x64 one.

 

And last but not least, make sure you hardware is win8 x64 compatible (but you probably checked that already).



#7 AceBlade258

AceBlade258
  • Members
  • 7 posts
  •  
    United States

Posted 14 November 2014 - 12:33 AM

It BSODs after grabbing boot.sdi. Excellent and super useful info on the screen got me nowhere... Ideas?

 

My PE image contained only one boot.sdi, so I don't know if I need to make a different one (I'd have to learn how, too).

 

What signatures are checked and failing? (And why is it limited to PXE booting?) Could it be a server/connection issue? Any way to get boot/kernel debug output?

 

tcpdump:


19:20:56.506192 IP 192.168.1.103.1804 > box.tftp:  41 RRQ "bootx64.efi" octet tsize 0 blksize 1468
19:20:56.507717 IP 192.168.1.103.1805 > box.tftp:  33 RRQ "bootx64.efi" octet blksize 1468
19:20:57.154604 IP 192.168.1.103.8943 > box.tftp:  26 RRQ "\Boot\BCD" octet tsize 0
19:20:57.157846 IP 192.168.1.103.8944 > box.tftp:  39 RRQ "\Boot\BCD" octet tsize 0 blksize 1456
19:20:57.317944 IP 192.168.1.103.8945 > box.tftp:  34 RRQ "\sources\boot.wim" octet tsize 0
19:20:57.322753 IP 192.168.1.103.8946 > box.tftp:  31 RRQ "\Boot\boot.sdi" octet tsize 0
19:20:57.327146 IP 192.168.1.103.8947 > box.tftp:  59 RRQ "\EFI\Microsoft\Boot\fonts\segoe_slboot.ttf" octet tsize 0
19:20:57.331822 IP 192.168.1.103.8948 > box.tftp:  59 RRQ "\EFI\Microsoft\Boot\fonts\segmono_boot.ttf" octet tsize 0
19:20:57.333607 IP 192.168.1.103.8949 > box.tftp:  58 RRQ "\EFI\Microsoft\Boot\resources\bootres.dll" octet tsize 0
19:20:57.335063 IP 192.168.1.103.8950 > box.tftp:  56 RRQ "\EFI\Microsoft\Boot\fonts\wgl4_boot.ttf" octet tsize 0
19:20:57.336483 IP 192.168.1.103.8951 > box.tftp:  56 RRQ "\EFI\Microsoft\Boot\fonts\wgl4_boot.ttf" octet tsize 0
19:20:57.338377 IP 192.168.1.103.8952 > box.tftp:  44 RRQ "\boot\boot.sdi" octet tsize 0 blksize 1456

VM Screenshot:

 

Windows_8-2014-11-13-19-23-08-PscLpSDy.p

 

Yup.

 

 

 

Edit:

 

Forgot to mention that it just shuts off after a little bit. Also, I can go get a laptop (more accurately, the laptop I want this to work on primarily) if we think it's the VM causing problems.

 

Also - the VM is set to EFI firmware by adding this option to the .vmx file.

firmware = "efi"

 

Second Edit: Finished reading your post... more to come

 

 

 

I referenced your post because it was the one with most useful information for getting me where I am.

 

 

As I have things now:

 

Router is DD-WRT with DNSMasq set as DHCP. DNSMasq options:

no-resolv
server=8.8.8.8
server=8.8.4.4
server=208.67.222.222
server=208.67.222.220
dhcp-boot=bootx64.efi,box,192.168.1.225

box is running tftpd with a rebind for \ to /

 

I have a PE 4 image I use, I built it from the ADK. I used WinToolkit to turn it in to an ISO, and then used Rufus to make an EFI flash drive of it. (I'll be honest, until I started doing this, never bothered to learn how manually: it's easy and always worked.) At this point what I have done is extracted that ISO to the TFTP root, copied bootx64.efi from \EFI\Boot\ to the root, replaced the BCD in \Boot\ with the one from \EFI\Windows\Boot\ and disabled digital signature checking.

z:\tftproot>dir
 Volume in drive Z is box
 Volume Serial Number is F007-BA11

 Directory of z:\tftproot

11/13/2014  01:28 AM    <DIR>          .
11/12/2014  06:19 PM    <DIR>          ..
02/20/2014  04:06 AM         1,617,752 bootx64.efi
11/13/2014  05:12 PM    <DIR>          Boot
11/13/2014  01:28 AM    <DIR>          EFI
02/20/2014  04:06 AM         1,613,656 bootmgr.efi
08/21/2013  09:31 PM           427,680 bootmgr
11/13/2014  01:28 AM    <DIR>          en-us
11/13/2014  01:28 AM    <DIR>          sources
               3 File(s)      3,659,088 bytes
               6 Dir(s)  182,364,905,472 bytes free

I don't want to use standard PXE, it's annoying as crap on these laptops - adds 15 seconds to boot if it's before the hard drive, no matter what. UEFI PXE however doesn't even show up unless it's booting (this was frustrating at first, mind you).

 

How do you use PXE to chainload to efi?


Edited by AceBlade258, 14 November 2014 - 01:33 AM.


#8 AceBlade258

AceBlade258
  • Members
  • 7 posts
  •  
    United States

Posted 14 November 2014 - 01:21 PM

So, just wrote my own BCD from scratch - have an error now.

 

 

My BCD:

z:\tftproot>bcdedit /store .\Boot\BCD

Windows Boot Manager
--------------------
identifier              {bootmgr}
description             WinPE Boot Mgr
nointegritychecks       Yes
displayorder            {c56b1faa-6bc7-11e4-affb-005056c00003}
timeout                 5

Windows Boot Loader
-------------------
identifier              {c56b1faa-6bc7-11e4-affb-005056c00003}
device                  ramdisk=[boot]\sources\boot.wim,{ramdiskoptions}
description             WinPE 4
osdevice                ramdisk=[boot]\sources\boot.wim,{ramdiskoptions}
systemroot              \Windows
detecthal               Yes
winpe                   Yes

tcpdump:

08:09:51.777352 IP 192.168.1.103.1551 > seedbox.tftp:  41 RRQ "bootx64.efi" octet tsize 0 blksize 1468
08:09:51.778858 IP 192.168.1.103.1552 > seedbox.tftp:  33 RRQ "bootx64.efi" octet blksize 1468
08:09:55.420384 IP 192.168.1.103.8280 > seedbox.tftp:  26 RRQ "\Boot\BCD" octet tsize 0
08:09:55.422870 IP 192.168.1.103.8281 > seedbox.tftp:  39 RRQ "\Boot\BCD" octet tsize 0 blksize 1456
08:09:55.435170 IP 192.168.1.103.8282 > seedbox.tftp:  34 RRQ "\sources\boot.wim" octet tsize 0
08:09:55.437665 IP 192.168.1.103.8283 > seedbox.tftp:  31 RRQ "\Boot\boot.sdi" octet tsize 0
08:09:55.440373 IP 192.168.1.103.8284 > seedbox.tftp:  56 RRQ "\EFI\Microsoft\Boot\Fonts\wgl4_boot.ttf" octet tsize 0
08:09:55.444131 IP 192.168.1.103.8285 > seedbox.tftp:  70 RRQ "\EFI\Microsoft\Boot\Fonts\wgl4_boot.ttf" octet tsize 0 blksize 16384
08:09:55.472759 IP 192.168.1.103.8286 > seedbox.tftp:  45 RRQ "\boot\boot.sdi" octet tsize 0 blksize 16384

Booting from that BCD (everything else the same) yields this:

 

Windows_Embedded_8-2014-11-14-08-16-47-1

 

Pressing enter goes here:

 

Windows_Embedded_8-2014-11-14-08-16-55-f

 

Enter again just goes back to the stop screen, but this pops up in the tcpdump:

08:17:16.276614 IP 192.168.1.103.8708 > seedbox.tftp:  45 RRQ "\boot\boot.sdi" octet tsize 0 blksize 16384

Failing to create the ramdisk? Do I need to make a new and or different one?



#9 erwan.l

erwan.l

    Gold Member

  • Developer
  • 1918 posts
  • Location:Nantes - France
  •  
    France

Posted 15 November 2014 - 12:55 PM

i dont think your boot.sdi is the issue : it is a generic virtual disk. pick it up from your dvd and it should be fine.

 

to me your bcd is still incorrect, it is missing : path \windows\system32\boot\winload.efi.
as a consequence, bootmgr wont be able to start loading windows.

remember the boot sequence :
Bootx64.efi ->BCD -> boot.wim\winload.efi -> boot.wim\ntoskrnl.exe ->...
or
bootmgr ->BCD ->boot.wim\winload.exe -> boot.wim\ntoskrnl.exe -> ...



#10 AceBlade258

AceBlade258
  • Members
  • 7 posts
  •  
    United States

Posted 15 November 2014 - 08:49 PM

Added: 

Windows Boot Manager
--------------------
identifier              {bootmgr}
description             WinPE Boot Mgr
nointegritychecks       Yes
displayorder            {c56b1faa-6bc7-11e4-affb-005056c00003}
timeout                 5

Windows Boot Loader
-------------------
identifier              {c56b1faa-6bc7-11e4-affb-005056c00003}
device                  ramdisk=[boot]\sources\boot.wim,{ramdiskoptions}
path                    \Windows\system32\boot\winload.efi
description             WinPE 4
osdevice                ramdisk=[boot]\sources\boot.wim,{ramdiskoptions}
systemroot              \Windows
detecthal               Yes
winpe                   Yes

Still doing the same thing. Random thought: can we make a fat32 ramdisk? Not sure that that matters, but maybe the filesystem is getting in the way?

 

Looking into iPXE now.



#11 AceBlade258

AceBlade258
  • Members
  • 7 posts
  •  
    United States

Posted 19 November 2014 - 05:24 AM

I never successfully got this working. I ended up using iPXE with the following script embedded:

#!ipxe
kernel http://box/wimboot
initrd http://box/winpe/Boot/BCD			BCD
initrd http://box/winpe/Boot/boot.sdi			boot.sdi
initrd http://box/winpe/sources/boot.wim		boot.wim
boot

Boot times with that are about 10 seconds over gigabit on metal (err... plastic?).

 

CONCLUSION: EFI PXE booting WinPE via bootx64.efi does not work. Use iPXE.efi, with a script similar to the one I have above, for purely EFI WinPE.



#12 erwan.l

erwan.l

    Gold Member

  • Developer
  • 1918 posts
  • Location:Nantes - France
  •  
    France

Posted 19 November 2014 - 05:46 PM

I never successfully got this working. I ended up using iPXE with the following script embedded:

#!ipxe
kernel http://box/wimboot
initrd http://box/winpe/Boot/BCD			BCD
initrd http://box/winpe/Boot/boot.sdi			boot.sdi
initrd http://box/winpe/sources/boot.wim		boot.wim
boot

Boot times with that are about 10 seconds over gigabit on metal (err... plastic?).

 

CONCLUSION: EFI PXE booting WinPE via bootx64.efi does not work. Use iPXE.efi, with a script similar to the one I have above, for purely EFI WinPE.

 

well the good news is that you succeedded so at least you know you have the correct set of files.

 

If this works : PXE-> IPXE.efi ->MS Bootx64.efi ->BCD (winload.efi) ->Boot.wim (x64),

there is no reason for this to fail : PXE->MS Bootx64.efi ->BCD (winload.efi) ->Boot.wim (x64).

 

As far as I am concerned, i experimented both with success, the first one being the most difficult one.



#13 maxsubzero

maxsubzero
  • Members
  • 3 posts
  • Location:Zaporizhzhia
  •  
    Ukraine

Posted 27 August 2015 - 07:00 PM

C:\Windows\system32>bcdedit.exe /store d:\bcd

Диспетчер загрузки Windows
--------------------
идентификатор {bootmgr}
displayorder {fc2ac44b-2d53-11e5-a0d5-50465d6f0a24}
{ce66b41e-2d53-11e5-a0d5-50465d6f0a24}
{315b2401-2d53-11e5-a0d5-50465d6f0a24}
{8e1c6531-2d53-11e5-a0d5-50465d6f0a24}
timeout 10

Загрузка Windows
-------------------
идентификатор {fc2ac44b-2d53-11e5-a0d5-50465d6f0a24}
device ramdisk=[boot]\boot\2013\litetouchpe_x64.wim,{ramdiskoptions}
description MDT2013 Lite Touch Windows Install (x64)
osdevice ramdisk=[boot]\boot\2013\litetouchpe_x64.wim,{ramdiskoptions}
systemroot \Windows
detecthal Yes
winpe Yes

Загрузка Windows
-------------------
идентификатор {ce66b41e-2d53-11e5-a0d5-50465d6f0a24}
device ramdisk=[boot]\boot\2013\litetouchpe_x86.wim,{ramdiskoptions}
description MDT2013 Lite Touch Windows Install (x86)
osdevice ramdisk=[boot]\boot\2013\litetouchpe_x86.wim,{ramdiskoptions}
systemroot \Windows
detecthal Yes
winpe Yes

Загрузка Windows
-------------------
идентификатор {315b2401-2d53-11e5-a0d5-50465d6f0a24}
device ramdisk=[boot]\boot\2012\litetouchpe_x86.wim,{ramdiskoptions}
description MDT2012 Lite Touch Windows Install (x86)
osdevice ramdisk=[boot]\boot\2012\litetouchpe_x86.wim,{ramdiskoptions}
systemroot \Windows
detecthal Yes
winpe Yes

Загрузка Windows
-------------------
идентификатор {8e1c6531-2d53-11e5-a0d5-50465d6f0a24}
device ramdisk=[boot]\boot\2012\litetouchpe_x64.wim,{ramdiskoptions}
description MDT2012 Lite Touch Windows Install (x64)
osdevice ramdisk=[boot]\boot\2012\litetouchpe_x64.wim,{ramdiskoptions}
systemroot \Windows
detecthal Yes
winpe Yes



As you can see there is no path to winload.[exe|efi]. Works like a charm in mixed BIOS/UEFI PXE environment. DHCP, TFTP and Samba shares on the same server. Part of ISC-DHCP configuration:

option space pxelinux;
option pxelinux.magic code 208 = string;
option pxelinux.configfile code 209 = text;
option pxelinux.pathprefix code 210 = text;
option pxelinux.reboottime code 211 = unsigned integer 32;

option space PXE;
option PXE.mtftp-ip code 1 = ip-address;
option PXE.mtftp-cport code 2 = unsigned integer 16;
option PXE.mtftp-sport code 3 = unsigned integer 16;
option PXE.mtftp-tmout code 4 = unsigned integer 8;
option PXE.mtftp-delay code 5 = unsigned integer 8;

option arch code 93 = unsigned integer 16;

class "pxeclients" {
match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
next-server 10.80.3.10;
if option arch = 00:06 {
filename = "efi/boot/bootia32.efi";
} else if option arch = 00:07 {
filename = "efi/boot/bootx64.efi";
} else {
filename = "bios/pxelinux.0";
}
}

pxelinux was used for making menus with tools such as memtest, HDD utils, etc and for chainloading pxeboot.0 (MS's legacy pxeloader)
Did not find any loader, capable to boot bootx64.efi out-of-the-box without problems and workarouds.


Edited by maxsubzero, 27 August 2015 - 07:08 PM.





0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users