BIOS and UEFI Mixed Enviroment
-
We have recently began building the support for UEFI within our environment. DHCP has been set to detect the vendor class of the device and boot to ipxe based on vendor class. A new UEFI base image has been tested and is working correctly. We have scripts to reorder the UEFI boot order for the machines.
What we are currently struggling with is how to get our post init script to kick off the UEFI or BIOS base image.
Currently we have the posit script to allow entry of barcode and location of the device. Then we pull device information and update Fog and Snipe-IT inventories . Lastly it assigns the base image.
What we are trying to figure out is how to have the script assign the correct BIOS or UEFI image to the machine. Is there a decent way to pull DCHP scope 67 information of the device to tell if ipxe.efi is used or not?
-
@erotic-pastry I think I would go about it a little differently.
It almost sounds like you are trying to create a load and go method (my words), where you don’t register the computer with FOG, but are basically deploying an image. Maybe as a system rebuilder would do?
If this is the case then I would pxe boot into the iPXE menu and pick deploy image. From there name your images correctly for bios and uefi to correctly identify. Then in your post init script, or even in the post install script ask for parameters then update the unattend.xml file as needed.
-
@erotic-pastry said in BIOS and UEFI Mixed Enviroment:
Is there a decent way to pull DCHP scope 67 information of the device to tell if ipxe.efi is used or not?
There is not from the dhcp scope. But at the point where the post * script is running there is a linux kernel parameter that will tell you if its running on a UEFI for BIOS system. I can’t access the info at the moment, but there is a way on the uefi side to tell if its uefi, if the /proc key is missing then its bios system.
BUT also be aware that the mode the workstation boots in doesn’t mean that is what the target OS is. You can image a computer in bios mode for FOG, but as long as the target image is uefi and the target computer boots UEFI that is allowed and will work.
-
@george1421 We use this particular kick off to “perform full host registration” of the device which assigns a base image and registers the host in fog as well as updating our inventory system with the device’s location, our barcode, etc.
Up until now we had everything configured for BIOS and have it hardcoded to assign our current base image. Now that I have two base images, was hoping to automate the assignment of the image to avoid in the field typos. I suppose we could just add in the option to chose UEFI or BIOS to the choose your own adventure during the initial full host registration of the device.
-
@erotic-pastry So are you doing this bit of magic with a custom fog.man.reg file?
-
@erotic-pastry Ok let me back up and answer the question asked.
https://itsfoss.com/check-uefi-or-bios/
Look at the above link in the linux section.
The short answer is to see if this file exists. (
/sys/firmware/efi
) If that file/directory exists the FOS Linux OS is running on a uefi system. Based on that you can check to see if it exists and then default your image to a uefi image, if it doesn’t exist then its a bios system. -
@george1421 Checking for the folder /sys/firmware/efi works perfectly so far on the systems we are testing.
If the folder exists we assign it the UEFI image, if it doesn’t exist it gets assigned the BIOS image.