Advanced Boot Menu Configuration options

Note: The things in this article apply to FOG 1.2.0 and below. FOG 1.3.0 uses a web-based interface that easily alters the boot menu. Many of the things in this article still apply, but the process has been greatly simplified.

= Advanced Configuration Options = The Advanced configuration options in the FOG PXE Boot Menu Configuration screen allows you to create a secondary menu that can be accessed from the boot menu screen

View All Boot Menu code
Where x.x.x.x is the FOG server's IP address, put this into a browser's address bar:

x.x.x.x/fog/service/ipxe/boot.php

This is the start of the ipxe advanced.php file.

Contents of php file
attemptLogin($_REQUEST['username'],$_REQUEST['password'])) {          print "#!ipxe\n"; print "set userID \${username}\n"; print "chain \${boot-url}/service/ipxe/advanced.php\n"; }      else {          print "#!ipxe\n"; print "clear \${username}\n"; print "clear \${password}\n"; unset($_REQUEST['username'],$_REQUEST['password']); print "echo Invalid login!\n"; print "sleep 3\n"; print "chain -ar \${boot-url}/service/ipxe/advanced.php\n"; }  } print "#!ipxe\n"; print "set fog-ip ".$FOGCore->getSetting('FOG_WEB_HOST')."\n"; print "set fog-webroot ".basename($FOGCore->getSetting('FOG_WEB_ROOT'))."\n"; print "set boot-url http://\${fog-ip}/\${fog-webroot}\n"; print $FOGCore->getSetting('FOG_PXE_ADVANCED');

note: The variables fog-ip and fog-webroot have been created automatically for you, and assigned values relevant to your installation.

= Examples Basic Menu =
 * MENU

menu item --gap -- iPXE boot menu item ipxedemo       ipxe online boot demo item shell         ipxe shell item return       return to previous menu choose --default return --timeout 5000 target && goto ${target}
 * ipxedemo

chain http://boot.ipxe.org/demo/boot.php || goto MENU
 * shell

shell || goto MENU
 * return

chain http://${fog-ip}/${fog-webroot}/service/ipxe/boot.php?mac=${net0/mac} || prompt goto MENU autoboot


 * MENU

menu item --gap -- iPXE boot menu item WIN7PE64BIT   Boot Windows 7 64 bit iso item WIN7PE32BIT   Boot Windows 7 32 bit iso item shell         ipxe shell item return       return to previous menu choose --default WIN7PE64BIT --timeout 5000 target && goto ${target}
 * WIN7PE64BIT

initrd http://${fog-ip}/ISO/Win7PE_x64.ISO chain memdisk iso raw || goto MENU
 * WIN7PE32BIT

initrd http://${fog-ip}/ISO/Win7PE_x86.ISO chain memdisk iso raw || goto MENU
 * ipxedemo

chain http://boot.ipxe.org/demo/boot.php || goto MENU
 * shell

shell || goto MENU
 * return

chain http://${fog-ip}/${fog-webroot}/service/ipxe/boot.php?mac=${net0/mac} || prompt goto MENU autoboot


 * MENU

menu item --gap -- iPXE boot menu item ipxedemo       ipxe online boot demo item shell         ipxe shell item return       return to previous menu item hostinfo       details about this computer choose --default return --timeout 5000 target && goto ${target}
 * ipxedemo

chain http://boot.ipxe.org/demo/boot.php || goto MENU
 * shell

shell || goto MENU
 * return

chain http://${fog-ip}/${fog-webroot}/service/ipxe/boot.php?mac=${net0/mac} || prompt goto MENU
 * hostinfo

echo This computer : || echo MAC address....${net0/mac} || echo IP address.....${ip} || echo Netmask........${netmask} || echo Serial.........${serial} || echo Asset number...${asset} || echo Manufacturer...${manufacturer} || echo Product........${product} || echo BIOS platform..${platform} || echo || echo press any key to return to Menu || prompt goto MENU autoboot

= Example secured menu advanced option = isset ${userID} && goto do_me || goto MENU
 * do_me

kernel bzImage root=/dev/ram0 rw ramdisk_size=127000 ip=dhcp dns=8.8.8.8 web=${fog-ip}/fog/ consoleblank=0 loglevel=4 type=down img=win7actsysprep ftp=${fog-ip} imgType=n osid=7 storage=${fog-ip}:/images capone=1 imgFormat=0 imgfetch init.xz && boot || goto MENU
 * MENU

menu item --gap Please Select one of the images below item fog.local Boot from hard disk item d101_64 D101 Base Image (64 bit load) item return Return to main menu choose --default fog.local target && goto ${target}
 * fog.local

sanboot --no-describe --drive 0x80 || goto MENU
 * d101_64

chain -ar ${boot-url}/service/ipxe/advanced.php?login=1 || goto MENU
 * return

chain http://${fog-ip}/${fog-webroot}/service/ipxe/boot.php?mac=${net0/mac} || goto MENU autoboot Notice the :d101_64 how it has the chain -ar ${boot-url}/service/ipxe/advanced.php?login=1 || goto MENU ?That's all that's needed to have a "login" for your menu item. Notice the top where it says :do_me? This is important to note that it's ABOVE the menu generation part of the advanced menu setup.

additional information about ipxe boot menu creation can be found at http://ipxe.org/