Cannot exit IPXE menu and boot from hard drive?
-
@wmw509 So this is a uefi based system then? If so what model computer?
-
I would try switching the refind binary to version 0.11.0.
I just posted how to do this in this forum post https://forums.fogproject.org/topic/14850/refind-not-working-properly
I would then use the default efi
REFIND_EFI
exit type and it will likely do the trick.Hope that helps.
-
I believe it is a UEFI system, I checked from the OS when I booted into linux. Its just a spare desktop I had laying around. Specs below, Let me know if there is any other info I can provide.
ASRock H110 Motherboard with and Intel 1151 socket CPU with 8gb DDR4
-
@wmw509 Sorry to keep laboring the point but knowing what mode is helpful for debugging.
If you have one of these systems booted into linux a quick check is this.
ls -la /sys/firmware/efi
if that file exists then its uefi boot.And your target OS is ubuntu 20.04?
-
@george1421 In the refind.conf (/var/www/html/fog/service/ipxe/refind.conf) There is settings
scanfor internal,external,optical,manual
make sure that is set.You might want to see if uncommenting helps
uefi_deep_legacy_scan
We have also seen some disks need a little settling time so setting
scan_delay 5
may help.I may spin up a efi ubuntu system to see if I can get it to detect at leas on a VM. Ubuntu 20.04 may do things a new way.
Also surely try @JJ-Fullmer suggestion too by rolling refind back to 0.11.0 that has also helped with some mobos. I would recommend that you don’t try everything all at once
-
No worries, its understandable. The target host is ubuntu server 18.04.5 and below is the output showing the existence of the /sys/fimware/efi directory.
ls -la /sys/firmware
total 0
drwxr-xr-x 6 root root 0 Oct 21 17:07 .
dr-xr-xr-x 13 root root 0 Oct 21 17:06 …
drwxr-xr-x 6 root root 0 Oct 21 17:06 acpi
drwxr-xr-x 3 root root 0 Oct 21 17:07 dmi
drwxr-xr-x 6 root root 0 Oct 21 17:06 efi
drwxr-xr-x 23 root root 0 Oct 21 17:07 memmap -
Same results after making those config changes. I think I might try @JJ-Fullmer suggestions.
I know this is more or less unrelated to Fog, but are you familiar with changing the refind binaries? When I download/decompress the image he suggests I do not see any filenames matching the ones in the /fog/service/ipxe/ directory. Am I just supposed to rename these files as they are in fog?
This is what I get after unpacking refind
bootaa64.efi bootia32.efi bootx64.efi refind.conf -
@wmw509 said in Cannot exit IPXE menu and boot from hard drive?:
bootx64.efi
This should be renamed to match what FOG is using the same for the 32 bit version. You can discard the bootaa version since that is for ARM processors.
I just pxe booted into ubuntu 20.04 on a uefi VM. refind found grub64.efi and booted that. So the issue might be hardware related. Describe the number of disks and their structure on this mobo? Are they sata or nvme? Do you have 2 NVMe drives installed?
-
This host just has a single 60gb SATA drive. Here’s how the partitions look…
Device Start End Sectors Size Type
/dev/sda1 2048 1050623 1048576 512M EFI System
/dev/sda2 1050624 3151359 2100736 1G Linux filesystem
/dev/sda3 3151360 117231103 114079744 54.4G Linux filesystem -
Thanks for your reply, that post looks very similar to my issue. I am attempting to get those binaries right now but am a little confused about what files are needed specifically. The binaries in the /fog/service/ipxe directory are…
refind_aa64.efi
refind.efi
refind_ia32.efi
refind_x64.efiThe files I found after decompressing the files from sourceforge are below…
refind_x64.efi
refind_ia32.efi
refind_aa64.efiI do not see a refind.efi file in any of the sourceforge downloads. Is this file needed/used by fog? If so, any ideas where it is?
-
@wmw509 The
refind.efi
file is an older version (0.9.4). Tom added this a while ago as this seemed to be kind of a stable version. I have to say that I am not sure this one really is version 0.9.4 or perhaps a different one. You’d use that one by renaming the file. FOG servesrefind_x64.efi
to 64 bit architecture andrefind_ia32.efi
for 32 bit.Unfortunately there does not seem to be a general solution to this. People report that version xxx of rEFInd doesn’t work with their hardware while others have no problems and vice versa. So trying to provide binaries that suit every case is probably not possible. You can download older versions and try out which one works best for you.
-
Aha, that makes sense, thank you.
I have noticed some other potentially weird behavior in my attempts at getting this working. When I have been testing my Boot Exit Settings I have been testing each available selection for both EFI and non-EFI exit methods. I have gotten a few different results as I have done this, but it seems that Fog might be trying to use my non-EFI exit method even though I am definitely on a UEFI system.
If I leave the non-efi boot exit setting as SANBOOT for example, no matter what my efi boot exit setting are the host will always end up hanging with a blinking cursor in the top corner. Is it possible Fog (or my settings of Fog/the host) are causing some confusion as to what method to use?
-
@wmw509 said in Cannot exit IPXE menu and boot from hard drive?:
If I leave the non-efi boot exit setting as SANBOOT for example, no matter what my efi boot exit setting are the host will always end up hanging with a blinking cursor in the top corner. Is it possible Fog (or my settings of Fog/the host) are causing some confusion as to what method to use?
That’s interesting. We rely on iPXE determining the correct mode be it UEFI or legacy BIOS and query its
platform
config parameter.To check which platform it sees on your systems you could quickly edit
/tftpboot/default.ipxe
and make the script look like this:#!ipxe show platform
Make a backup copy of the original file so you can switch forth and back quickly.
-
Once the changes were made in that script the host booted (unsuccessfully of course) but it displayed the following.
builtin/platform:string = pcbios
This is a bit above my head so forgive me if this is a stupid question, but if I expect to use Fog with only UEFI systems could I hardcode this somehow? Any other ideas?
-
@Sebastian-Roth I did not know that
refind.efi
was an older version and refind_x64.efi was a newer one. That’s a nice touch if it’s still true.
Also @wmw509 sorry for not double checking my guide, I forgot that you had to rename the files after extracting, I have a script that manages restoring my refind binary and config on every update so I haven’t had to extract and look at the file names in quite some time. -
No worries! The files were actually names the same as they are in Fog in one of the packages I installed. It was just that refind.efi that threw me for a bit of a loop.
Seems like refind might not be what was causing me problems after all
-
@wmw509 said in Cannot exit IPXE menu and boot from hard drive?:
Seems like refind might not be what was causing me problems after all
As long as the platform == pcbios then is working on the bios side, but that doesn’t follow through with what you reported from inside ubuntu. Are you working with multiple hardware? OR is iPXE misreporting the platform?
OK I’m trying to think how this is possible (ipxe reporting pcbios and ubuntu reporting efi). I think I might have an idea.
There are some firmware that are dynamic depending on the boot media they will dynamically switch between bios and uefi mode depending on what they detect. If the boot media is bios based then they will switch into bios mode, if the firmware detects a efi boot media they will switch into uefi mode. There is no firmware switch its all dynamic.
So lets assume you are pxe booting this computer and you send unidonly.kpxe to this computer. This computer will see, oh that’s a bios boot loader and boot it in bios mode. FOG Imaging will work just fine in bios mode and you can deploy a uefi image with FOG Imaging in bios mode. Then after the imaging reboot, again you send undionly.kpxe to the target computer. Again it sees that is a bios boot loader so it switches to bios mode. So now you are in the iPXE menu and the menu times out to boot to the disk, but SANBOOT hangs because its trying to chain to a bios mode disk, but the disk contains a uefi boot loader. When you change the boot order so the disk is first in the order, the firmware looks to see the disk is a uefi disk and switches to uefi mode and boots from the hard drive.
I think this is how iPXE (undionly.kpxe) is reporting pcbios yet the actual OS is uefi. There is a lot of suppositions here, but it make a logical connection.
So what specifically do you have configured for dhcp option 67?
-
@george1421 said in Cannot exit IPXE menu and boot from hard drive?:
@wmw509 said in Cannot exit IPXE menu and boot from hard drive?:
Seems like refind might not be what was causing me problems after all
As long as the platform == pcbios then is working on the bios side, but that doesn’t follow through with what you reported from inside ubuntu. Are you working with multiple hardware? OR is iPXE misreporting the platform?
I could be wrong, but I believe iPXE is misreporting the platform. For these tests today I did a fresh new Ubuntu 18.04 install on the host, so no hardware has been changed and it appears to be efi according to ubuntu.
OK I’m trying to think how this is possible (ipxe reporting pcbios and ubuntu reporting efi). I think I might have an idea.
There are some firmware that are dynamic depending on the boot media they will dynamically switch between bios and uefi mode depending on what they detect. If the boot media is bios based then they will switch into bios mode, if the firmware detects a efi boot media they will switch into uefi mode. There is no firmware switch its all dynamic.
I kind of follow you on this, but am a little confused. I was under the impression that most major linux distribution installers were the dynamic part and would detect what the host system supported and use that method to install?
So lets assume you are pxe booting this computer and you send unidonly.kpxe to this computer. This computer will see, oh that’s a bios boot loader and boot it in bios mode. FOG Imaging will work just fine in bios mode and you can deploy a uefi image with FOG Imaging in bios mode. Then after the imaging reboot, again you send undionly.kpxe to the target computer. Again it sees that is a bios boot loader so it switches to bios mode. So now you are in the iPXE menu and the menu times out to boot to the disk, but SANBOOT hangs because its trying to chain to a bios mode disk, but the disk contains a uefi boot loader. When you change the boot order so the disk is first in the order, the firmware looks to see the disk is a uefi disk and switches to uefi mode and boots from the hard drive.
This certainly sounds like the behavior I am getting!
I think this is how iPXE (undionly.kpxe) is reporting pcbios yet the actual OS is uefi. There is a lot of suppositions here, but it make a logical connection.
So what specifically do you have configured for dhcp option 67?
I am using pfSense for the DHCP server and option 67 is set to unidonly.kpxe.
-
@wmw509 said in Cannot exit IPXE menu and boot from hard drive?:
I could be wrong, but I believe iPXE is misreporting the platform.
If this is true its the first time (ever) I’ve heard of that. Could it happen, I doubt it for the simple fact that the boot loader has to be uefi or bios and it has to match the hardware or the computer doesn’t boot. A uefi based computer CAN NOT boot undionly.kpxe. Unless…
I kind of follow you on this, but am a little confused.
What I’m referring to is the firmware not the target OS. There is some firmware that will reconfigure itself on the fly based on what type of boot media is installed. I know our one Lenovo server is that way. There is no firmware mode switch inside the firmware settings, the firmware itself picks its mode.
I am using pfSense for the DHCP server and option 67 is set to unidonly.kpxe.
OK Good, with pfsense did you populate the efi fields with ipxe.efi for the 64bit and i386/ipxe.efi for the 32 bit versions of efi?
If we are still in doubt as long as the fog server, dhcp server, and pxe booting client are on the same subnet we can use tcpdump to collect what the target computer is being told to do. This is a good mystery and I’d really like to know why your system is acting the way it is. https://forums.fogproject.org/topic/9673/when-dhcp-pxe-booting-process-goes-bad-and-you-have-no-clue grab a pcap of the pxe booting process, pxe boot to the iPXE menu is enough of a capture. Then upload the file to a file share site and post the link here and I’ll take a look at what is going down the wire. The capture filter provided will only give us the dhcp and tftp communications and nothing more.
-
@wmw509 Would be interesting to see If it reports a different platform if your pfSense also hands out the UEFI binaries as mentioned by George!
There are two more things coming to my mind. First I am wondering if there is some confusion about the wording. Host can mean different things but in the FOG world it’s used for the Client machines that PXE boot for deploymens. So I am wondering if your Ubuntu server system is your FOG server or really one of the PXE booting systems.
Second I may ask you to schedule a debug deploy task. Same as If you create a normal task but Just before you click the create button in the FOG web UI there is a checkbox for debug mode. Now PXE boot the machine in question and wait for it to give you a Linux shell. Run the
ls -al /sys/firmware/efi
command in there and report what it looks like.