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.
Contents
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
<?php
header("Content-type: text/plain");
require_once('../../commons/base.inc.php');
if ($_REQUEST['login'] == 1)
{
print "#!ipxe\n";
print "login\n";
print "params\n";
print "param username \${username}\n";
print "param password \${password}\n";
print "chain \${boot-url}/service/ipxe/advanced.php##params\n";
unset($_REQUEST['login']);
}
if ($_REQUEST['username'])
{
if ($FOGCore->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
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/