-
Notifications
You must be signed in to change notification settings - Fork 152
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ISO Boot Failure on Supermicro Servers in UEFI Mode #2512
Comments
Thanks much for the very detailed and professional report 👍 As a side note, we dropped support for isolinux (see #2439 for details). Thus legacy boot is handled through grub for
Yeah every system that has EFI boot capabilities and allows to boot from iso9660 requires a FAT based loader structure as part of the ISO layer. We do that in kiwi too which makes me wonder why it did not boot on Supermicro. I looked at one of our integration tests to see the differences. For example: https://build.opensuse.org/package/live_build_log/Virtualization:Appliances:Images:Testing_x86:tumbleweed/test-image-live:Secure/images/x86_64 In there if you search for
The FAT image Further down the log you can search for
As you can see the FAT image is used as an any loader of the form
Which I believe is very similar to your Ok, so from that perspective I have several questions:
Would be great if you can respond to my findings. Currently I only think that the FAT format could be an issue which things are not booting on Supermicro. I don't have this hardware at hand so I'm afraid I can't test it. Thanks |
@schaefi Thank you for looking into this. I am afraid apart from the problem statement part, all the technical information I have put in the issue were provided by the Supermicro engineer who worked on the case, and, unfortunately, I don't have the answer to your questions. I will reach out to the Supermicro engineer and see if they are willing to participate in this discussion. The original feedback I got from Supermicro was that unless the I have access to several Supermicro servers and if there is anything in particular you want to be tested, I can make the change and rebuild the ISO and test and report the results. |
@schaefi I got more information from Supermicro about this case. The person who provided the instructions to correct the ISO said they followed the steps detailed here and studied the format of Rocky Linux ISO and replicated the same format. Here is a verbatim quote regarding their requirement:
Is there any standard Linux ISO (Ubuntu, SLES, Rocky, etc.) that follows the same EFI boot format as the ISOs generated by kiwi? If there is such standard ISO, it should fails to boot using Supermicro's virtual CDROM in UEFI mode, and we might then be able to compel them to resolve the problem on their side; otherwise, they are not going to allocate resources to resolve a problem that doesn't occur with standard Linux ISOs. It is worth noting that we prefer if we can find a solution at kiwi level since, even if Supermicro fixes the problem on their side, we will need to update the BIOS/BMC FW of thousands of servers scattered across several countries to be able to get the fix, which is not practical. |
There is no standard in designing an ISO layout, it's just a filesystem with data. However, there is a clear EFI standard and that has to be followed in order to boot via EFI. Of course kiwi follows this as all others do too. For booting an ISO via EFI an embedded FAT image is required because the EFI standard requires a FAT signature plus EFI binaries below EFI/BOOT. kiwi also does that as shown in the integration test log. At this point, even though there is a standard, many hardware vendors already deviate and add stuff to change the behavior. I'm happy to help and fix what is needed to boot on supermicro. I also believe that it cannot be a big issue because technically kiwi does what is required to boot an ISO from EFI. I'm afraid but the comparison to others does not help here because the design for an ISO layout from a content perspective varies between the distributions and is also not an issue as long as the technical requirements to boot are met. Thus it's required to understand the real cause of the boot issue. In order to find that we need to clarify on the open questions that I still have:
We can only continue with a test and patch when we have clarity on the above questions and I believe this can only be done together with a supermicro engineer contributing to this thread. That's because I have a number of devices here on my table but no supermicro system ;) Thanks |
@schaefi I did actually ask the person who worked on the case to participate in this thread, the response I got was that he is not a "build engineer" and only followed the steps I mentioned earlier to "fix" the ISO we provided them with (albeit, there is no proof the ISO was broken to begin with). He is not sure what the boot requirements of Supermicro's UEFI is, either. It is quite difficult to get Supermicro to co-operate on matters that involve custom solutions, and as I said, unless the issue also happens with ISOs from a standard distribution, they are not going to engage their BIOS/UEFI engineers. Nonetheless, I will pass your questions to Supermicro and see if they can provide an answer. I can predict with high confidence that the problem is exactly what you raised in your last question: Supermicro's bootloader probably cannot read the EFI image from the ISO header, and only looks for it inside the ISO filesystem. |
Verbatim copy of Supermicro's response:
@schaefi Do you know of any standard distribution that embeds the EFI image in the ISO header, rather than including it as part of the ISO file system? Looks like Linux Mint was one, but they went back to putting the image in the ISO filesystem in 21.3 and the changelog of the 21.3 release does not actually mention why they did that. I am pretty sure this was not to restore compatibility with Supermicro's virtual CDROM, though (😆), and the 21.2 structure probably worked everywhere else as is. Unfortunately, Supermicro is going to refer to this case until the end of time, as "proof" that this is the only correct structure, even though we know this is not the case, and unfortunately, there is no official standard or spec to prove them wrong. |
@schaefi I checked several standard Linux ISOs to see if I can find any that doesn't work on Supermicro's servers. The Linux Mint 21.2 ISO that doesn't boot on Supermicro's servers in UEFI mode does actually have an On the other hand, the Ubuntu 22.04 ISOs neither pass the isohybrid test, nor have any The remaining point is regarding FAT 12 vs. FAT 16. Is there any way I can confirm if the EFI partition is FAT12 or FAT16 in an existing ISO such as Ubuntu's ISO? |
Did you try using Additionally, |
@Conan-Kudo Yes, we have tried "uefi", as well. Results are the same. We are not using secure boot in our environment. |
We probably just fixed this with the merge of #2695. Could you try setting |
@Conan-Kudo Thank you for the update. I updated kiwi to 10.2.5 and tried adding For reference, here is the content of my updated
If you see anything amiss and can think of any other options for me to test, please let me know. We are still looking for a solution to this issue, and Supermicro is not helpful as their Virtual CDROM works fine with standard Linux ISOs, several of which I personally tested while I working on this issue back on April. P.S. I also tested FAT12 by modifying kiwi's code and changing F16 to F12 in fat16.py on the old kiwi build we are using in production, to see if that might fix the issue, but it didn't. |
Problem description
ISOs generated by kiwi-ng with
firmware="efi"
are not detected as bootable in UEFI mode when mounted over IPMI on Supermicro servers, and it is impossible to boot from them. The same ISO boots fine in Legacy mode. The same ISO boots fine on HPE and DELL servers, but Supermicro informed us that is due to an extra emulation layer they have implemented for the virtual CDROM. Standard Linux ISOs from Ubuntu/SLES/etc. boot fine on Supermicro servers in both UEFI and Legacy mode. The issue is reproducible on all generations of Supermicro servers.Per Supermicro, the structure of the ISOs generated by kiwi-ng is missing certain components that are required for correct boot in UEFI mode. A similar problem existed in Mint 21.2 ISO which was corrected in Mint 21.3 ISO. The following information is provided to us by Supermicro:
Mint 21.2 UEFI in X12DDW-A6: No FS device.
Compare the two ISOs:
Mint 21.2 doesn’t have the efi.img file, that’s the file for EFI boot information.
Mint fixed the issue in ISO 21.3
Per Supermicro, the following steps are required to correct images generated by kiwi-ng for correct UEFI boot (copied verbatim from Supermicro's response):
Original ISO:
Modified ISO:
Modification steps:
Generate new efiboot.img (I changed from 2880 to 5760 so bootx64.efi can fit in):
Format the boot image with F 12:
Create Directory structure for the efiboot image:
Generate new ISO using xorriso to include EFI platform support and EFI boot image:
isohybrid -u /tmp/klaboot.iso
:Is there some configuration we can change in config.xml or kiwi config.yml that would allow us to build ISOs that follow the structure mentioned above?
Expected behaviour
ISOs created using kiwi-ng with
firmware="efi"
should be detected and bootable in UEFI mode when mounted on Supermicro servers over IPMI.Steps to reproduce the behaviour
config.zip
OS and Software information
The text was updated successfully, but these errors were encountered: