@mashina Ok now for the hacky path.
You can view the menu program behind the fog ipxe menu by pointing your browser to http://<fog_server_ip>/fog/service/ipxe/boot.php in the following example Iām going to use 192.168.50.23 as the fog serverās IP address.
You will see that the text behind the fog serverās ipxe menu is akin to a computer program.
You will see the āDeploy Imageā (old name is Quick Image or qi) menu where it calls the boot.php program once again but adds in the parameter qihost=1
So now if we call that url again with the new parameters http://192.168.50.23/fog/service/ipxe/boot.php?qihost=1&username=fog&password=yourpass note you will need to enter a valid user ID and Password for your fog server to get past this menu. So in this case there are 3 parameters that need to be passed (qihost, username, password).
At this next screen it will list out all of the images you have defined in fog with its image id.
Each section will look something similar to this
set imageID 1
params
param mac0 ${net0/mac}
param arch ${arch}
param imageID ${imageID}
param qihost 1
param username ${username}
param password ${password}
param sysuuid ${uuid}
isset ${net1/mac} && param mac1 ${net1/mac} || goto bootme
isset ${net2/mac} && param mac2 ${net2/mac} || goto bootme
Now we add the imagid to the parameters list and call the boot.php program once again.
http://192.168.50.23/fog/service/ipxe/boot.php?qihost=1&username=fog&password=yourpass&menuAccess=1&imageID=1
That will produce this menu structure similar to what you are creating in your custom ipxe menu which is bootable via iPXE.
#!ipxe
set fog-ip 192.168.50.23
set fog-webroot fog
set boot-url http://${fog-ip}/${fog-webroot}
set storage-ip 192.168.50.23
kernel bzImage loglevel=7 initrd=init_32.xz root=/dev/ram0 rw ramdisk_size=275000 web=http://192.168.50.23/fog/ consoleblank=0 rootfstype=ext4 nvme_core.default_ps_max_latency_us=0 mac= ftp=192.168.50.23 storage=192.168.50.23:/images/ storageip=192.168.50.23 osid=9 irqpoll chkdsk=0 img=Dell3630Base imgType=n imgPartitionType=all imgid=1 imgFormat=5 capone=1 type=down
imgfetch init.xz
boot
So this ipxe menu then will instruct the client to boot into imaging download mode.
Now to rewrite this into fog ipxe menu params block format
set imageID 1
params
param mac0 ${net0/mac}
param arch ${arch}
param imageID ${imageID}
param qihost 1
param username fog
param password yourpass
param sysuuid ${uuid}
isset ${net1/mac} && param mac1 ${net1/mac} || goto bootme
isset ${net2/mac} && param mac2 ${net2/mac} || goto bootme
Now you can create multiple fog ipxe menus just use a different image ID for the image you want to deploy. You can see what these image IDs are from the FOG web UI when you look at the images in list form.