Unsolved EFI Chainloading Failure - Venue 11 x86
- FOG Version: 1.3.4 (SVN Revision 6066)
- OS: Ubuntu Server 14.04.5 x64
- Service Version: N/A
- OS: Win 8.1 x86
I’m having difficulty with getting my Venue 11 tablet to do any actions after loading the FOG iPXE menu.
The boot process is fine and the menu loads up, but no matter what option I choose, or what action I schedule, I get a chainloading failure.
I think the issue may be that this is a Dell Venue 11 5130 32-bit, but I’m finding that the bzimage32 and init_32.xz are not pulling down. I have all the Vendor Classes for x64 and x86 setup in my DHCP Server (Win Server 2012) as per the Wiki article.
However I don’t really know what will tell the process to push the 32bit versions of the bzImage and init.xz files.
I have tried using i386-efi/ipxe.efi and the i386-efi/snponly.efi, but saw no difference. I also tried using EXIT and REFIND_EFI exit options with no difference.
I feel like I’m missing something simple.
@amo862 Try these files:
Which kernel that gets used is dynamic. If you look here in your web browser, replacing the Xs with your FOG Server’s IP address:
x.x.x.x/fog/service/ipxe/boot.phpYou’ll see a line that looks like this near the top:
cpuid --ext 29 && set arch x86_64 || set arch i386
That’s what sets the
archparameter inside of the iPXE environment, it is what determines which kernel arch gets used - this is all automatic.
you can also manually specify the kernel and init in the fog gui for that host
@Wayne-Workman Thanks Wayne.
Switching the path to i386-7156-efi/ipxe.efi or snponly.efi did not make a difference in the behavior.
Understanding the way it decides to send the 32bit or 64bit boot files did help though. It continued to send the 64 bit files, which led to the chainloading failure. However, from within the ipxe shell, I manually loaded the bzImage32 and init_32.xz files and was able to get it to boot.
(I used this command from the ipxe shell:)
kernel http://[FOGServer]/fog/service/ipxe/bzImage32 loglevel=4 initrd=http://[FOGServer]/fog/service/ipxe/init_32.xz root=/dev/ram0 rw ramdisk_size=127000 web=[FOGServer]/fog/ consoleblank=0 rootfstype=ext4 loglevel=4 imgfetch http://[FOGServer]/fog/service/ipxe/init_32.xz
Following this, I specified the Host Kernel and Host Init options for that Host’s config, and I’ve now been able to start capturing an image.
I think it boils down to the cpuid command, ultimately. This tablet is a Dell Venue 11 5130 (32bit), but has a 64bit processor. So only the 32bit boot files work, but cpuid determines its an x86_64 processor and loads the 64bit bzImage and init.xz.
Since this is clearly an exception to the norm, I’m not too worried about it.
However, is there a way that I could write a separate boot.php file that only called i386 boot files and specify it in the TFTP x86 efi files or DHCP boot options or something?
@amo862 While I’m sure it would be fun to make such custom code changes, I think you can just make a group for the venue tablets and similar devices that sets all devices in that group to load the 32bit kernel and inits. That’s what I would do personally.