PXE Boot HP X2 210 (Hybrid tablet Windows 10 Pro)
-
Here is a new one! Removed some of the debug statements (just saying so that you don’t wonder) and added some new ones. Please give it a try. Will hang again but we know better where.
-
@Sebastian-Roth ok, 2 pictures, before and after “boot” command
-
@Matthieu-Jacquart As we are waiting for an answer from the iPXE devs Tom had the idea that we could try an older version of iPXE just so see if this issue was introduced at some point. Here is a binary compiled from older source (from 02.02.2015).
I also thought about putting together a PXE-enabled grub or pxelinux EFI binary for you to see if this can netboot into FOG. But I dropped the idea because this would not be of much help for you when it comes to cloning those machines. We use iPXE to kind of remote control the clients when booting up - e.g. let them do some kind of task. And we cannot remote control grub or pxelinux easily.
-
Just got a first answer from one of the devs. He suggested to add DEBUG=efi_wrap and so here is another binary that you can try. It might dump a lot of debug messages but that’s ok. Hopefully we end up with some new information…
Please try this as well as the binary from the old source I posted. Just to make sure!
-
@Matthieu-Jacquart Don’t give up. Guys like you are exactly what FOG needs to move forward. Your work with Sebastian is VERY appreciated by the whole fog community!
-
@Wayne-Workman Thanks that’s nice, I really had impression to waste your time
@Sebastian-Roth ok, so first with old ipxe file
One strange thing is that this ipxe.efi file makes the tablet reboot after few minutes : first time I began to type command and make other thing, when I came back tablet had reboot, and second time while I was taking a picture before typing “boot” command. But once I’ve entered “boot” command, even after 30 minutes tablet always stays on prompt like in picture.
And with last ipxe file, I had debug=efi_wrap I hope it was ok
Before “boot” command
And after “boot” command
Much more text ! I hope it helps
Thanks again to all of you
-
@Matthieu-Jacquart You are doing a great job! I really hope this will be fixed soon! So iPXE from an older source does not seam to be any better - good to know. Not sure what the rebooting is about.
One thing I notice in that output is GraphicsOutput. Maybe it’s just not able to print on the screen but still running. I kind of doubt but it’s possible. Could you configure a monitoring port on your switch to capture a packet dump of the tablet booting up using wireshark? We might see another DHCP request or some other noise from it.
@george1421 and @Wayne-Workman Do you want to give this iPXE binary a try as well? Any known working UEFI machine will do. Just as a reference to see if there is a difference in the output or what should be seen next. I guess you’d have to take a video. AFAIK some newer iPhones can take slow motion video. Would be awesome.
-
@Sebastian-Roth Do you want me to test the ipxe file you sent to Georges and Wayne ?
For capturing packet dump, I don’t really know how to do that, do you have some tips ? I’ve installed wireshark but I don’t know how to specifically capture packet on one switch port… -
@Sebastian-Roth said:
One thing I notice in that output is GraphicsOutput. Maybe it’s just not able to print on the screen but still running. I kind of doubt but it’s possible. Could you configure a monitoring port on your switch to capture a packet dump of the tablet booting up using wireshark? We might see another DHCP request or some other noise from it.
This thought may be in line with what I found with grub booting. I needed to add the function insmod efi_gop or the output was not visible on that e6220. As far as I could tell the FOS client was running just the screen output was not visible.
I will test the ipxe boot when I get in the office in about 2 hours.
-
@Matthieu-Jacquart Forget about the packet dump for now I’d say. Some good hints from iPXE dev Michael Brown pointed me a way to further dig into this. The blue lines in the last picture you posted is not really iPXE anymore. This is the linux kernel already!! I had no clue… Somehow it is possible for iPXE to track the UEFI calls the linux kernel is doing. This is crazy stuff. Never been there before but it is very interesting I find.
So back to the point. All the calls like GraphicsOutput I can see in the kernel source. Graphics/video detection seams to run through without any issue! Therefore I think wireshark won’t give us a clue.
So what’s next? I added an earlyprintk debug output to the linux kernel source. Find a new binary called bzImage_ng here. I am not sure if this will work but it’s worth a try. Use the latest uploaded ipxe.efi binary (DEBUG=efi_wrap) and adddebug earlyprintk=efi
to the parameters when loading bzImage_ng. If we see the output from the kernel than we can go on step by step. From then on we can move back to the original ipxe binary where you don’t have to type all the commands in the shell anymore! -
-
@Matthieu-Jacquart Yeah! Success. Now we have the kernel talking to us. I’ll look through the kernel code a little more to see where to properly add debugging messages and will upload a new binary later on. Might be in the evening as I have some other things to do as well. Will post here again.
-
@Sebastian-Roth ok good news !
No problem for new binairy, I finish job in 2 hours, test will be for tomorrow morning ! -
@Matthieu-Jacquart Meanwhile you can setup things to be prepared. Go back to the original ipxe.efi binary (so you don’t have to do all the typing). Make sure to register the USB NIC MAC address in the web interface by hand and add
debug earlyprintk=efi
to the kernel parameter for this host.
When I have a new kernel ready you can just go in /var/www/fog/service/ipxe, rename original bzImage to bzImage.orig and bzImage_ng to bzImage… Or change the name of the kernel via web interface (FOG configuration -> FOG settings …) and then boot the tablet. -
@Sebastian-Roth said:
Do you want to give this iPXE binary a try as well?
I would but you guys seem to have found success?
-
@Sebastian-Roth I create tablet on fog interface, I have to put “debug earlyprintk=efi” in “Host Kernel Arguments” right ?
-
@Wayne-Workman and @Matthieu-Jacquart Yes!
-
@Matthieu-Jacquart Here we go, get the new kernel image called bzImage_mj (just making up those extensions). Looking forward to what we will see.
-
@Sebastian-Roth Oh my personalized kernel, nice
Here you are
-
Ok, this is exactly where it hangs: http://lxr.free-electrons.com/source/arch/x86/boot/compressed/eboot.c#L473 (memcpy but allocation of memory seams fine further up in the code)
We’ll see if iPXE devs can help with this or we will need to get in contact with kernel devs as well. I am following this and will keep you all posted.
@Matthieu-Jacquart Meanwhile I’d ask you to try booting the bzImage_mj straight as UEFI binary from a USB stick to see if this works. We cannot use GRUB in between to check (I was told by Michael Brown) because “GRUB has the ability […] to treat the kernel as a bzImage rather than an EFI executable. This enters the kernel via a different path, which probably bypasses the code we’re looking at in eboot.c”
This can be done on Linux and Windows:
- Get an empty USB Stick, partition with one full primary partition (most probably already done!)
- Format with FAT32
- Create
X:\EFI\BOOT
(or/mnt/EFI/BOOT
) - copy and rename ‘bzImage_mj’ to
X:\EFI\BOOT\bootx64.efi
(or/mnt/EFI/BOOT/bootx64.efi
- Grap your tablet and boot of the USB stick in UEFI mode
If you get past the setup_efi_pci issue you will run into a kernel panic. But that’s ok. We just want to see if there is any difference booting the same kernel in real UEFI mode directly or via iPXE.