Dell 7010 Lenovo L530 with UEFI enabled, won't network boot.
-
I’ve been working on this for some days now, on and off. I’ve not had any success, thought it was time to make a thread.
FOG - r3225
Fedora workstation 21 - fully updated about a week ago.So, I’m using Windows Server 2012 for DHCP and have control over it. These two models boot fine in BIOS mode with undionly.kpxe , but when switched to UEFI they will not boot.
I’ve changed option 067 to:
ipxe.efi
snp.efi
snponly.efiIt seems like the computers aren’t even getting the files. There are no specific errors that they give. They just sit there for a minute or two saying “Initializing devices…” and then fail.
I plan to install wireshark on our DHCP server and capture these packets, and do the same on the FOG server.
-
Just ran a capture on our DHCP server and the underlying NICs for our virtualized FOG server.
I’ve confirmed it gets the right options in DHCP, asks for the ipxe.efi file, and it looks like it gets the file.
So… This comes down to the files themselves.
[url=“/_imported_xf_attachments/1/1856_UEFI_Communications.zip?:”]UEFI_Communications.zip[/url]
-
[quote=“Wayne Workman, post: 45233, member: 28155”]They just sit there for a minute or two saying “Initializing devices…” and then fail.[/quote]
AFAIK this should definitely be iPXE already! So file is being loaded via TFTP fine. Then we get to the interesting part. (U)EFI support in iPXE. Still a bit of a riddle to me. I think you need to look into compiling your own binaries to be able to take this to the next level!See my post here: [url]http://fogproject.org/forum/threads/pxe-boot-from-yoga-2s-using-usb-to-ethernet-adapter.12638/#post-44486[/url]
Try ‘DEBUG=efi_init,efi_snp’ as a start and work your way from this point. Let us know about your findings! -
Just tried ipxe.efi with the Lenovo L530 using my home FOG server using dnsmasq.
It seems like it didn’t even get the file.
I did make a copy of ipxe.efi to ipxe.0
I did change the ltsp.conf file to point to ipxe.0
I did restart dnsmasq.Also, this particular FOG server I just tested with works fine on other computers in the house using undionly.kpxe
-
Well then, pack the Lenovo thing away for a minute. We need to focus on one thing and as it seems we are way closer with Dell than we are with Lenovo here in this case. Please compile iPXE with debugging on to see what goes wrong…
-
[CODE]make: *** No rule to make target ‘ipxe.efi’. Stop.[/CODE]
[CODE]make: *** No rule to make target ‘…’. Stop.[/CODE]
Also, I have zero idea what I’m doing with this… it’s all totally foreign territory.
I tried following these:
[url]http://fogproject.org/forum/threads/build-ipxe-from-source.10152/[/url]
[url]http://fogproject.org/wiki/index.php/Building_undionly.kpxe[/url]
[url]http://fogproject.org/forum/threads/elitepad-1000.12596/page-2#post-44071[/url]
[url]http://fogproject.org/wiki/index.php/Filename_Information[/url]I think I’m going to need a little more help doing this…
-
I guess you are best off following the step by step instructions in Tom’s post (‘Build iPXE from source’). The first part is about building normal BIOS iPXE binaries (undionly.kpxe). So after cloning the repository (step one) and changing into the source directory (step two) you better skip 3, 4, 5 and 6 and jump straight to step one of building an EFI binary!
Make the changes in config/general.h (config/console.h is ok as it is for EFI) according to Tom’s example and then run the make command to build the binary:
[CODE]$ make bin-x86_64-efi/ipxe.efi EMBED=ipxescriptfile DEBUG=efi_init,efi_snp
…
[FINISH] bin-x86_64-efi/ipxe.efi
rm bin-x86_64-efi/version.ipxe.efi.o
$ sudo cp bin-x86_64-efi/ipxe.efi /tftpboot
$ make bin-x86_64-efi/snponly.efi EMBED=ipxescriptfile DEBUG=efi_init,efi_snp
…
[FINISH] bin-x86_64-efi/snponly.efi
rm bin-x86_64-efi/version.snponly.efi.o
$ sudo cp bin-x86_64-efi/snponly.efi /tftpboot
$ sudo chown root:root /tftpboot/*.efi[/CODE] -
It’s still failing for me… This is what I did…
[CODE][root@localhost ~]# git clone git://git.ipxe.org/ipxe.git
Cloning into ‘ipxe’…
remote: Counting objects: 45298, done.
remote: Compressing objects: 100% (12084/12084), done.
remote: Total 45298 (delta 34119), reused 42536 (delta 31587)
Receiving objects: 100% (45298/45298), 10.89 MiB | 539.00 KiB/s, done.
Resolving deltas: 100% (34119/34119), done.
Checking connectivity… done.
[root@localhost ~]# cd ipxe/scr
-bash: cd: ipxe/scr: No such file or directory
[root@localhost ~]# cd ipxe/src
[root@localhost src]# ls
arch core doxygen.cfg image libgcc net util
bin crypto drivers include Makefile tests
config doc hci interface Makefile.housekeeping usr
[root@localhost src]# cd config
[root@localhost config]# ls
branding.h config_romprefix.c dhcp.h nap.h timer.h
colour.h config_route.c entropy.h reboot.h umalloc.h
config.c config_usb.c general.h sanboot.h usb.h
config_ethernet.c console.h ioapi.h serial.h vbox
config_fc.c crypto.h isa.h settings.h
config_infiniband.c defaults local sideband.h
config_net80211.c defaults.h named.h time.h
[root@localhost config]# vi general.h
[root@localhost config]# cd
[root@localhost ~]# ls
anaconda-ks.cfg ipxe
[root@localhost ~]# cd ipxe
[root@localhost ipxe]# ls
contrib COPYING COPYING.GPLv2 COPYING.UBDL README src
[root@localhost ipxe]# cd src
[root@localhost src]# ls
arch config crypto doxygen.cfg hci include libgcc Makefile.housekeeping tests util
bin core doc drivers image interface Makefile net usr
[root@localhost src]# cd config
[root@localhost config]#
[root@localhost config]# ls
branding.h config_romprefix.c dhcp.h nap.h timer.h
colour.h config_route.c entropy.h reboot.h umalloc.h
config.c config_usb.c general.h sanboot.h usb.h
config_ethernet.c console.h ioapi.h serial.h vbox
config_fc.c crypto.h isa.h settings.h
config_infiniband.c defaults local sideband.h
config_net80211.c defaults.h named.h time.h
[root@localhost config]# vi console.h
[root@localhost config]# make bin-x86_64-efi/ipxe.efi EMBED=ipxescriptfile DEBUG=efi_init,efi_snp
make: *** No rule to make target ‘bin-x86_64-efi/ipxe.efi’. Stop.
[root@localhost config]# make bin-x86_64-efi/ipxe.efi EMBED=ipxescriptfile DEBUG=efi_init,efi_snp
make: *** No rule to make target ‘bin-x86_64-efi/ipxe.efi’. Stop.
[root@localhost config]# ls
branding.h config_romprefix.c dhcp.h nap.h timer.h
colour.h config_route.c entropy.h reboot.h umalloc.h
config.c config_usb.c general.h sanboot.h usb.h
config_ethernet.c console.h ioapi.h serial.h vbox
config_fc.c crypto.h isa.h settings.h
config_infiniband.c defaults local sideband.h
config_net80211.c defaults.h named.h time.h
[root@localhost config]# cd
[root@localhost ~]# ls
anaconda-ks.cfg ipxe
[root@localhost ~]# cd ipxe
[root@localhost ipxe]# ls
contrib COPYING COPYING.GPLv2 COPYING.UBDL README src
[root@localhost ipxe]# cd src
[root@localhost src]# ls
arch core doxygen.cfg image libgcc net util
bin crypto drivers include Makefile tests
config doc hci interface Makefile.housekeeping usr
[root@localhost src]# make bin-x86_64-efi/ipxe.efi EMBED=ipxescriptfile DEBUG=efi_init,efi_snp[/CODE]It starts building… stuff is happening… then…
[CODE][BUILD] bin-x86_64-efi/elf.o
[BUILD] bin-x86_64-efi/script.o
[BUILD] bin-x86_64-efi/png.o
[BUILD] bin-x86_64-efi/efi_image.o
[BUILD] bin-x86_64-efi/segment.o
make: *** No rule to make target ‘ipxescriptfile’, needed by ‘bin-x86_64-efi/embedded.o’. Stop.
[root@localhost src]# [/CODE] -
Do you have the ipxescriptfile in the src directory?
-
I did not make that file. I made it, inside the src directory… still getting errors though…
[CODE] [BUILD] bin-x86_64-efi/efidrvprefix.o
[BUILD] bin-x86_64-efi/efiprefix.o
[BUILD] bin-x86_64-efi/cpuid_cmd.o
[BUILD] bin-x86_64-efi/hvm.o
[BUILD] bin-x86_64-efi/hyperv.o
[BUILD] bin-x86_64-efi/gdbstub_test.o
[BUILD] bin-x86_64-efi/setjmp.o
[AR] bin-x86_64-efi/blib.a
ar: creating bin-x86_64-efi/blib.a
[HOSTCC] util/elf2efi64
util/elf2efi.c:32:17: fatal error: bfd.h: No such file or directory
#include <bfd.h>
^
compilation terminated.
Makefile.housekeeping:1247: recipe for target ‘util/elf2efi64’ failed
make: *** [util/elf2efi64] Error 1
[root@localhost src]# [/CODE] -
Tom supplied me with the correct debug boot files (thank you thank you, I was so lost!)
Using ipxe.efi on the Dell 7010, I get this:
[IMG]http://s11.postimg.org/c4gxume0j/ipxe_efi_debug_error.jpg[/IMG]
-
Here’s what snp.efi does…
[IMG]http://s2.postimg.org/ght9o5iah/snp_efi_Dell_7010.jpg[/IMG]
-
This is what the Lenovo L530 does with ipxe.efi and snponly.efi they are pretty much identical… it just sits here.
-
[quote=“Wayne Workman, post: 45359, member: 28155”]…
[CODE]…
[HOSTCC] util/elf2efi64
util/elf2efi.c:32:17: fatal error: bfd.h: No such file or directory
#include <bfd.h>
^
compilation terminated.
Makefile.housekeeping:1247: recipe for target ‘util/elf2efi64’ failed
make: *** [util/elf2efi64] Error 1
[root@localhost src]# [/CODE][/quote]google.com -> bfd.h: No such file or directory -> … not very hard to find out that you need to install binutils-dev or binutils-devel on your system to make this work. You definitely need to get your own compiled binaries as we’ll be going on and off with debug options and such with this now. Please give it a go. I am sure you can do this and you can learn a lot of important new things too!
Still reading about EFI device paths… this is new terrain for me too! Very interesting.
From what I could find out about the Dell 7010 there should be a Intel 82579LM NIC in it, right?? Some models come with an options Broadcom 5722 NIC as well. Do your’s have one NIC or two? I hope you only have the Intel one. Interesting to see that snp.efi as well as ipxe.efi are using the SNP interface. Not sure if this is normal. Please build intel-only-driver EFI to see what we get from this:
[CODE]make bin-x86_64-efi/intel.efi EMBED=ipxescriptfile DEBUG=intel:3
…[/CODE]
(the number after the colon specifies the debug level…) -
Not sure if it is a good idea to try to get both working at the same time. It’s probably a very different issue and things with be more confusing and complex as they are already if you keep mixing up posts. But hey, give it a go. For the Lenovo I’d suggest try this build:
[CODE]make bin-x86_64-efi/ipxe.efi EMBED=ipxescriptfile DEBUG=efiprefix,efidrvprefix[/CODE]Lenovo comes with a Realtek RTL8111F Gigabit Network adapter, right?? From what I can see in the code iPXE “should” also support this NIC. So you can go the same way as with your Dell an build a realtek-only-EFI binary.
[CODE]make bin-x86_64-efi/realtek.efi EMBED=ipxescriptfile DEBUG=realtek:3[/CODE]
Play with those and let us know what you get from it…
Edit: Didn’t know that there are so many different (but similar) RTL8111 NICs… [url]http://www.realtek.com.tw/products/productsView.aspx?Langid=1&PNid=13&PFid=5&Level=5&Conn=4[/url]
-
The dell has an intel NIC, and only one NIC.
The Lenovo has a realtek.
I will attempt to build these files again. Thanks for the help with this… It’s beyond me at the moment, and I’m kinda leaning on you guys for this one.
-
Good news is I successfully built the ipxe.efi for the Lenovo (my work laptop).
Bad news is… dnsmasq is screwy and although I put the file name in there where undionly.0 used to be, it seems to not be working.
I did copy the new ipxe.efi to the /tftpboot directory.
I also copied /tftpboot/ipxe.efi to /tftpboot/ipxe.0
I also restarted dnsmasq.
It’s a problem for another day…I’m going to try this at work tomorrow, seeing that I got further there using full DHCP for everything, and I now know what’s needed to build these on Fedora 21.
-
But you had it all rinning with ipxe.efi/ipxe.0 already. What’s different now? Please tun tcpdump on the server:
[CODE]sudo tcpdump -i eth0 -w dump.pcap udp[/CODE]
-
[quote=“Uncle Frank, post: 45404, member: 28116”]But you had it all rinning with ipxe.efi/ipxe.0 already. What’s different now? Please tun tcpdump on the server:
[CODE]sudo tcpdump -i eth0 -w dump.pcap udp[/CODE][/quote]
I’ve been messing with two FOG servers. One at home, one at work. The one at work uses Windows 2012 DHCP fully, while the one at home uses dnsmasq.
-
[quote=“Wayne Workman, post: 45417, member: 28155”]I’ve been messing with two FOG servers. One at home, one at work. The one at work uses Windows 2012 DHCP fully, while the one at home uses dnsmasq.[/quote]
You can install wireshark on your windows DHCP server, can’t you??I can’t wait to see the new debug output…