Dell 7010 Lenovo L530 with UEFI enabled, won't network boot.
-
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…
-
[quote=“Uncle Frank, post: 45435, member: 28116”]You can install wireshark on your windows DHCP server, can’t you??
I can’t wait to see the new debug output…[/quote]
It’s already installed. I’m working on building the files now…
-
For the Dell Optiplex 7010,
I built intel.efi using this command:
[FONT=Tahoma][CODE]make bin-x86_64-efi/intel.efi EMBED=ipxescriptfile DEBUG=intel:3[/CODE][/FONT]
[FONT=Tahoma]I copied that over to the /tftpboot directory.[/FONT]
I changed option 067 on the DHCP server to intel.efiBooted up the target computer, and it hangs on this: “Initializing devices…”
Here are packet captures from the DHCP server, and from the FOG server:[url=“/_imported_xf_attachments/1/1869_intel.efi DHCP&FOG.zip?:”]intel.efi DHCP&FOG.zip[/url]
-
Just built realtek.efi
The Lenovo L530 does the same thing with realtek.efiJust sits at “iPXE initialising devices…”
-
UPDATE:
At work today, I installed FOG/w DHCP on a Dell Optiplex 7010. Revision 3246
I put it on it’s own little isolated network, with no connections to the outside world… on a 100Mbps unmanaged switch (an old Asante).
It serves up x.x.x.x/fog/management and dhcpd is running without errors, and gives out IPs correctly.
On my Lenovo L530 in BIOS mode, I can get to the FOG boot menu.
However, when changing the boot file to ipxe.efi, snp.efi, or snponly.efi and the laptop to UEFI, I get the same thing…
“iPXE initializing devices…” and it just sits there.
An interesting side note is that using this build, and BIOS with undionly.kpxe,
my Lenovo L530 passes all the compatibility checks, but when I try to do a full registration, it tells me “Invalid MAC”.Of course, I did do a full host registration with our production FOG server (r3240) and it works fine.
By building and testing this, I’ve only further verified it’s something with the files…
I was really hoping it would work… thus leading me to find what I screwed up on the production server… but no luck -
[quote=“Wayne Workman, post: 45463, member: 28155”]Just sits at “iPXE initialising devices…”[/quote]
Any DEBUG output you see before this???
-
[quote=“Uncle Frank, post: 45480, member: 28116”]Any DEBUG output you see before this???[/quote]
None at all. It gets IP configuration from DHCP, shows that very briefly, and then sits at the “iPXE initializing devices…”
I’m going to do some surfing tonight for other bootfiles for UEFI.
Would any work? They need to be 64 bit, probably? As I understand it, the boot file simply places drivers to get the network interface working right (and maybe other stuff?) and then calls a kernel to begin execution?