USB Boot UEFI client into FOG menu (harder way)
-
WARNING: this tutorial is no longer relevant since the rom-o-matic site has been shutdown since Dec 2019. These instructions are no longer valid and can be followed. I'm leaving these instructions here for historical reasons. No additional support on this topic can be provided since they depend on an external web site working
You may has why do we need this?
UEFI PXE booting is a bit different than BIOS based PXE booting. Some of the early UEFI systems like the Dell Latitude e6420 and the OptiPlex 790 do not support PXE booting in UEFI mode. But through testing they do support USB booting in PXE mode. So knowing this I’m going to create the harder solution (see easier solution if this method is too complicated for your needs) to PXE boot these devices in UEFI mode. This method we will create a new efi boot kernel to install on our usb flash drive to boot into the FOG environment. Building linux kernels are not extremely difficult using the rom-o-matic, but because of the number of options you can choose, you can run into problems if not created correctly. I can say for sure this method works with the previous mentioned systems. YMMV with other hardware platforms.
The process steps are not that hard, its a bit like giving your self a root canal without medicine. It will hurt like crazy while you are doing it, but once its over you will have the satisfaction of not wanting to ever do it again <jk>. Its not really that hard, the rom-o-matic does all of the work.
You will need to acquire these things.
- A 2GB (min) flash drive
- A UEFI pxe boot image we will create from the rom-o-matic web site
iPXE UEFI boot kernel creation process
- From a browser access the rom-o-matic web site at https://rom-o-matic.eu/
- Select Advanced, for experienced users radio button
- In the drop down list for the output format select EFI PXE bootstrap 64-bit (.efi) selection.
- Ensure that NIC type is set to all-drivers (default)
Since there are a ton of settings that could be changed here, I'm only going to post the changes from the default settings for the PXE boot. HINT: You may want to search in your browser for the variable names I used below to locate the exact setting in question.
- Section: Download protocols.
DOWNLOAD_PROTO_HTTPS = checked
DOWNLOAD_PROTO_FTP = checked
DOWNLOAD_PROTO_NFS = checked - Section: SAN boot protocols
All checked in this section except HTTP_ENC_PEERDIST = unchecked - Section: Image types
All unchecked except IMAGE_PNG = checked - Section: Command-line commands to include
All checked except IWMGMT_CMD = unchecked, PXE_CMD = unchecked, PROFSTAT_CMD, = unchecked - Section: Console options
All unchecked except CONSOLE_FRAMEBUFFER = checked - Section: Embedded script add in the following script
#!ipxe set fogserver 192.168.1.88 isset ${net0/mac} && dhcp net0 || goto dhcpnet1 echo Received DHCP answer on interface net0 && goto netboot :dhcpnet1 isset ${net1/mac} && dhcp net1 || goto dhcperror echo Received DHCP answer on interface net1 && goto netboot :dhcperror prompt --key s --timeout 10000 DHCP Failed, hit 's' for the iPXE shell; reboot in 10 seconds && shell || reboot :netboot cpuid --ext 29 && set arch x86_64 || set arch i386 params param mac0 ${net0/mac} param arch ${arch} param platform ${platform} param product ${product} param ipxever ${version} isset ${net1/mac} && param mac1 ${net1/mac} || goto bootme :bootme chain http://${fogserver}/fog/service/ipxe/boot.php##params
Be sure to change the ip address above for next-server to the IP address of your FOG server. You must use an IP address and not the conical name of your fog server.
- Section: Which revision should be set to Master (default)
- Press the Proceed >> button. After a bit you will be prompted to download a file called **ipxe.efi ** be sure to save it. We will need this file in the section below.
Boot drive creation process
- Insert your flash drive into a Windows based computer and format it with FAT32 disk format
- On that flash drive create a folder called EFI
- On that same flash drive create a folder called BOOT in the EFI folder creating this path “x:\EFI\BOOT”.
Note: I have not tested if case is important or not, I used upper case for everything and it worked. That is as far as I tested.
- Copy the ipxe.efi kernel created in the previous section to the flash drive in the EFI\BOOT folder. That file MUST BE RENAMED to bootx64.efi (note the case difference. I did not test to see if case is important)
- At this point remove the usb thumb drive from the build up computer and insert the drive into a target computer
- Power on the target computer and press F10 or F12 (depending on the mfg) to call up the EFI boot menu.
- Select the USB boot device under the EFI section of the EFI menu
- You should see the iPXE boot banner and then after about 30 seconds it should be prompted for the IP address of your FOG server. Key in the IP ADDRESS of your FOG server and press Enter.
- At this point you should boot into the FOG iPXE menu.
-
Tagging this for the wiki
-
@george1421 This has been added to the wiki here: https://wiki.fogproject.org/wiki/index.php?title=USB_Bootable_Media
FYI, George, all that formatting was a PITA.
-
I am trying this and for the most part it is seeing my USB drive and starting, however once it hits the Open Source Network Boot Firmware it closes and goes into windows. Am I missing something here. It never asks me for the server IP.
Here is the script I used in the ROM-o-matic site:
#!ipxe
dhcp
set next-server 10.20.60.14
set filename ipxe.efi
chain tftp://${next-server}/${filename}I have tested and the file is easily grabbable form all VLANs, so I am not sure what might be happening, unless the network card I am using just isn’t working. Is there anyway to tell. I am not seeing a IP being assigned.
-
@Psycholiquid I’d think you need to chain to the default.ipxe file of fog, not the ipxe.efi. The ipxe.efi should be already started by the usb stick, or at least how I’m seeing it.
Maybe I’m misunderstanding.
-
I guess what I’m trying to say, if you’re using the usb, you’re already IN ipxe in some way, why would you want to redirect to another ipxe file. Why not make the config the same AS the default.ipxe file, or just load the file itself.
Load the file itself directly
#!ipxe dhcp chain tftp://${next-server}/default.ipxe
Just boot directly to what you need:
#!ipxe isset ${net0/mac} && dhcp net0 || goto dhcpnet1 echo Received DHCP answer on interface net0 && goto netboot :dhcpnet1 isset ${net1/mac} && dhcp net1 || goto dhcperror echo Received DHCP answer on interface net1 && goto netboot :dhcperror prompt --key s --timeout 10000 DHCP Failed, hit 's' for the iPXE shell; reboot in 10 seconds && shell || reboot :netboot cpuid --ext 29 && set arch x86_64 || set arch i386 params param mac0 ${net0/mac} param arch ${arch} param platform ${platform} param product ${product} param ipxever ${version} isset ${net1/mac} && param mac1 ${net1/mac} || goto bootme :bootme chain http://fogserverip/fog/service/ipxe/boot.php##params
Then again, i may be grossly misunderstanding the purpose of all of this.
-
@Tom Elliott Let me give that a try. I tried just loading the ipxe.efi directly form the server I get the same result. I hate these Dell XPS 12s
-
@Psycholiquid Let us know about anything you needed to do differently.
-
@Psycholiquid I believe the point of these usb files is for the cases where you do have problems. If you’re having problems with the files from PXE, booting “BACK” to them from the usb side would yield, I would imagine, the exact same results.
-
What I am trying to do is boot from USB pxe because the laptop has no NIC or UEFI is not cooperating like it should.and Wireless wont boot from network. So basically trying to make a live USB drive so I can boot to FOG on machine where there is no nic or the docking station wont show up.
-
@Psycholiquid said:
What I am trying to do is boot from USB pxe because the laptop has no NIC or UEFI is not cooperating like it should.and Wireless wont boot from network. So basically trying to make a live USB drive so I can boot to FOG on machine where there is no nic or the docking station wont show up.
This method requires a wired network connection still. Look into getting a USB to Ethernet adapter.
-
@Wayne-Workman Right I have a USB network card that seems to be showing up when I boot to the ipxe.efi just trying to get into FOG now
-
@Psycholiquid What is it’s make and model ?
-
@Psycholiquid You still need a network for fog to operate. I don’t include wireless drivers in the kernel, nor do I include the wireless utilities.
-
@Tom-Elliott See below. LOL we are all over this today.
-
From what I can tell I may have to do this same procedure for the MS Surfaces
Haven’t really tried it yet but it is looking like another UEFI nightmare. I havent seen any of my Surfaces boot to network yet.
-
@Psycholiquid What is the make and model of the USB adapter you’re using?
-
@Wayne-Workman StarTech USB31000SPTB
-
@Psycholiquid Ok… I don’t think that these instructions by the OP are going to help in your situation. We need to get your USB to Ethernet adapter going the regular way. Can you please start a new thread for the issue and post a screen shot of what you’re seeing when you try to network boot?
-
@Wayne-Workman Will do