PXE Boot HP X2 210 (Hybrid tablet Windows 10 Pro)
-
@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.
-
@Sebastian-Roth Ok done, I have exactly same screem than with ipxe boot
-
@Matthieu-Jacquart Thanks a lot for your fast reaction. I somehow thought/hoped this wouldn’t be the case and that it had something to do with iPXE. But from what we see now current main kernel is not able to directly EFI boot on your tablet. I really wonder why we don’t find other people having the same issue. Maybe this is still very new and most people use GRUB (bypassing the kernels efi_init)?!? I am trying to get in contact with kernel devs on this. But I cannot promise anything. Might take some hours but could be weeks as well. I just don’t know. But I am sure we are spot on the issue (which is the main factor for getting it fixed).
-
@Matthieu-Jacquart Just had the idea to try older kernels as well. Would you mind? Just download some older versions and put it on USB as done before. Lets see if any of these works. I doubt it - but it’s valuable information for the kernel devs!
http://sourceforge.net/projects/freeghost/files/KernelList/Kernel.TomElliott.4.1.2.64/download
http://sourceforge.net/projects/freeghost/files/KernelList/Kernel.TomElliott.3.19.3.64/download
http://sourceforge.net/projects/freeghost/files/KernelList/Kernel.TomElliott.3.17.4.64/download -
@Sebastian-Roth Tested but none of them work, screen stays black…
-
Fine then, waiting for some answers. Keeping my fingers crossed. Here if you want to follow:
http://forum.ipxe.org/showthread.php?tid=7938
http://article.gmane.org/gmane.linux.kernel.efi/7361 -
@Sebastian-Roth Thanks ! I cross all my fingers too…
-
Michael from the iPXE team asked if I could add some statements to print memory addresses. So I did. Please try booting bzImage_ad via iPXE and from USB stick and take a picture of both. Will be interesting to see if addresses are different. And hopefully Michael can interpret those numbers.
-
I found an interesting thing today while trying to narrow down on the kernel panics and testing theories of mine to what that issue may be.
My guess, most of the kernel panic’s are due to e1000e driver, though the physical nic is stated not to pose a problem, vmware e1000e does cause a kernel panic for me.
While trying to figure this out, I noticed my screens had a ton more info that most others. Thinking it was just differences in the loglevel fields, I decided to test it by setting my loglevel to 0. When I did this the value was blank in db and to browser there was a MORE messages than with loglevel set to 4. I fixed this issue as I want to always have a value defined, and in doing so it actually gave the proper value.
Why here do I write this? Because with a loglevel=0 set, it doesn’t return ANYTHING to the screen.
Can you update the loglevel setting on your server to the highest value? Maybe we’ll actually see info.