Jump to content

EFI, UEFI, NICs and PXE Servers


Tripredacus

Recommended Posts

This topic may be misplaced, as it covers both Hardware, Networking and Server 2008. :angel

My current project is mostly solved, save for one small thing... Can I PXE Boot via UEFI?

I am starting with a supported motherboard, the Intel DQ67OW which supports UEFI bootable devices. When this is turned on, I can choose alternate UEFI SATA HDD or UEFI ODD (USB or SATA) as choices in the boot menu. However, the IBA (Intel Boot Agent) does not get that special prefix.

If I want to be able to properly install Windows to a GPT disk, I would need to boot the installation media via a UEFI boot option. If I choose the UEFI DVD drive, I can install Windows to the GPT disk, do a reboot and everything is great. If I choose the regular DVD drive option, I can install Windows to the GPT disk but will get a 2TB disk OR Windows won't boot. BUT, Network boot all but works fine with one exception! WinPE can't see the BCD Store on the OS volume after deployment. This is specified in Installing Windows Server 2008 and Windows Vista SP1 on UEFI Systems (UEFIGuide.docx) here:

Note: You must boot into Windows PE for UEFI. If you start Windows PE by using the BIOS boot option, the BCDEdit operations that are described later in this procedure cannot correctly locate the BCD system store.

A lot of work on getting a NIC to get the proper (EFI) boot rom from WDS is located here:

http://social.technet.microsoft.com/Forums/en-US/winserversetup/thread/ceca6149-bedd-4860-8a7f-a1c83bf99aa4/

So is this about NIC response to the PXE request for architecture type? I checked the WDS logs and found that this particular client is returning a Arch value of 6, which is EFI IA32. But in any case, the EFI rom isn't being used as evidence of WinPE can't find the BCD when using BCDEdit or BCDBoot. BCDEdit reports it can't find the store, but BCDBoot says there is a file copy error.

How to proceed? Its already too late for me to send a request to Quad, so I can do that on Monday. And unfortunately those steps in the above link of running commands in the EFI Shell aren't very helpful since the Intel Desktop boards do not have an EFI Shell, and the Intel Server boards (while they do have an EFI Shell) do not support UEFI unless using a RAID controller. I suppose I could "fool" it into using 1 drive on JBOD but that won't help me on the Desktop boards.

But back to the Arch value, does the Arch value listed in the table here:

0    Intel x86PC
1 NEC/PC98
2 EFI Itanium
3 DEC Alpha
4 Arc x86
5 Intel Lean Client
6 EFI IA32
7 EFI BC
8 EFI Xscale
9 EFI x86-64

Relate to the Arch value that WDS reports in the Event Log?

So does anyone have any insight on this topic? :ph34r:

Also, is it possible I'm trying to do stuff ahead of its time?

Link to comment
Share on other sites

  • 8 months later...

I've been working on this again, not by choice but because it cropped up again while working on something else. I've been doing some comparison work between Server 2008 R2 and Server 2012 RC. Fortunately, it appears that Server 2012 is going to support detection of a UEFI or ARM PXE boot request:

http://social.technet.microsoft.com/Forums/zh/winserversetup/thread/11558a29-f934-4f08-a67a-c8dec1302b76

In my last post, I posted the boot type response list, but not the actual response. According to the Deployment-Services-Diagnostics logs in Event Viewer on 2008, the DQ67OW I was using was reporting an arch of 6. I've moved on from that board and using one with UEFI 2.3.1: Intel DX79TO. Here is a comparison of behaviours vs both WDS types.

If PXE boot DX79TO to 2008 WDS, arch reported is 0 (x86), which prompts the download of WDSNBP.COM. It then will boot one of the Boot Images (3 x64 WinPE to pick from) and I can select a WinPE x64.

However, on 2012 WDS, it also reports an arch of 0 (x86) but WDS creates an error that says there are no x86 boot images and that the client will not be able to boot. Yet, it will then load x86\boot\WDSNBP.COM, and then the x64 WinPE. edit: Server 2012 reports multiple arch values, one is x86, but also reports x86-x64 arch, which allows the download of the 64bit PE. It still shows an error because of the first arch not having a matching boot image.

Server 2008 R2 has the ability to detect one of 3 different boot types (regardless of the list it appears):

- x86PC

- x64PC

- ia64

And can provide a bootloader for whichever one. Server 2012 RC has the same choices, but adds the additional set:

- ARM

- UEFI x86

- UEFI x64

Which is interesting. If you look on Server 2012's boot folder, there is EFI boot rom for x86, but there are the 2 standard ones (bootmgfw.efi and wdsmgfw.efi) in the x64 folder. This matches up with official support that Microsoft does not support (and will not support) 32bit versions of Windows 7 or Windows 8 on UEFI 2.3.1 architecture.

So back to the arch, the new boards with UEFI 2.3.1 report arch of 0, which may just be a reporting error. However, forcing WDS to use one of the two EFI boot ROMs as its default response leads the computer to lock up during the TFTP download. In addition, the "no x86 boot rom" error gets generated in Event Viewer.

Example of how to change the boot rom:

wdsutil /set-server /bootprogram:boot\x64\wdsmgfw.efi /architecture:x64

As the last post in the link I provided earlier shows, while MS is getting on track for supporting this type of deployment, the hardware manufacturers are still not up to it yet. Even though Intel said they'd have UEFI LAN boot available in the "next product line" which is already here... the 77 series. :rolleyes:

Edited by Tripredacus
added command example
Link to comment
Share on other sites

  • 3 months later...

UEFI PXE driver found for SMSC LAN9500 USB 2.0 to Ethernet 10/100 NIC.

http://www.smsc.com/index.php?tid=145&pid=137&cid=&tab=5

NIC is used in the dock for the CZC U116T Ultrabook/Tablet:

http://www.czctech.com/en/t3c/U116T.html

SMSC requires registration to download. Have not tested this device to see if it is capable of doing a UEFI PXE boot or not.

Update: The UEFI PXE "driver" as the website mentions is actually a .EFI file to be used to flash the EEPROM on the NIC itself. It can be done via the EFI Shell (if present) or presumably a utility. It contains 32/64bit Itanium and 32/64bit UEFI types.

UEFI PXE code added to BIOS version 0089 for Intel DH77EB motherboard:

http://downloadmirror.intel.com/21749/eng/EB_0089_ReleaseNotes.pdf

see also:

Update: Intel (apparently) added UEFI PXE support to the DH77KC and DH77DF boards in BIOS version 0100.

http://downloadmirror.intel.com/21846/eng/KC_0100_ReleaseNotes3.pdf

Edited by Tripredacus
Link to comment
Share on other sites

Previously mentioned "SMSC LAN9500 USB 2.0 to Ethernet 10/100 NIC" has been found capable of doing a UEFI PXE boot! BUT there is a problem. Server 2008 R2 gets the arch value from the NIC and reports it as 7. Now it is already known that Server 2008 R2 does NOT support UEFI PXE boot, but seems to understand what to do with Arch 7. So it ends up serving out the Itanium EFI boot option (bootmgfw.efi) to the NIC.

While this appears to work, the PE is loaded with the Itanium EFI rom and the actual hardware is using UEFI. The expected result (as with BIOS based PXE boot to UEFI/GPT systems) is that BCDBoot is unable to write to the BCD Store.

Interestingly enough, if you disable the UEFI Boot option in the BIOS, it automatically will disable the onboard NIC and boot ROM. It does not appear that this system is capable of doing a BIOS level PXE boot. Even if you enable the LAN Option ROM, the other networking related pages in the BIOS are unavailable (grayed out) and it won't even attempt to boot from LAN even if you set LAN as the first boot item and disable everything else. :(

This NIC is included in the CZC U116T Ultrabook.

Unfortunately, this product is out the door, so while I have built a new system with Server 2012, I won't be able to test this functionality until another one comes in or something else shows up that can do a UEFI PXE boot.

Link to comment
Share on other sites

It appears that via Server 2012 that that particular system did in-fact boot via UEFIx64 method and booted to my WinPE 4.0 x64 boot image. Relevent logs:

The following client booted from PXE: 

Hardware Address: 00-24-25-0E-15-53
IP: 10.12.41.42
Device ID: {00000000-0000-0000-0000-0024250E1553}
ClientArchitecture: 4
Prestaged: false

------

The Following Client completed TFTP Download:

Client IP: 10.12.41.42
Filename: \Boot\x64\bootmgfw.efi
File Size: 1354480
Client Port: 8334
Server Port: 53942
Variable Window: false

------

The Following Client started TFTP Download:

Client IP: 10.12.41.42
Filename: \Tmp\x64uefi{1061C2D4-44E6-4B02-AFA7-C73189EE9239}.bcd
File Size: 12288
Client Port: 8352
Server Port: 53942
Variable Window: false

BUT, still unable to image Windows 7 (did not try Windows 8, don't have the time with the hardware) since BCDBoot cannot write the boot files.

Link to comment
Share on other sites

Just a little update. Any client booted via UEFI PXE boot can only deploy either a single partition MBR deployment, OR a multi-partition GPT deployment. You cannot deploy a multi-partition image using MBR. At least BCDBoot can't write to the disk if it is MBR, and BCDBoot isn't used for a single (whole) partition.

I'm not sure if this effects Linux at all. And still haven't found any way to detect the boot method (UEFI vs BIOS) from WinPE which could be helpful for those of us who build custom deployment systems.

Link to comment
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...