Add a new sub-menu

The Main Menu contains various sub-menus, e.g. LINUX, ANTIVIRUS,etc. The sub-menu entry will only appear in the Main Menu if there are files inside the sub-menu folder. We can add our more sub-menu folders (e.g. MSDART) into the Main Menu. 

Note: All Menu folders must be directly under \_ISO and the folder name must not contain spaces or special characters. Do NOT edit/change any of the existing E2B files.  

E2B SUBMENU Maker.cmd

Assuming you want to add a new sub-menu for say MSDART… 

An easy way to add a new Main Menu entry for a new folder, is to use the \_ISO\E2B SUBMENU Maker.cmd file – just run this or drag-and-drop your new \_ISO\MSDART folder onto it, to make a Main menu entry for it. 

You can edit the new file using NotePad afterwards (save as UTF-8 to preserve any special characters if using a non-English language).

Watch the YouTube video above or read the Blog for more details.

Note: If the new menu folder is completely empty, then there will be no menu entry for it in the Main menu – you must copy an ISO or .mnu file, etc. into the new sub-folder before the menu entry will be displayed.

ADMIN Menus (secret and password protected menu folders)

You can edit the .mnu file so that the sub-menu entry is only displayed under certain conditions.

For instance, in the example below, if the SCROLL LOCK LED is on, then an ADMIN Menu entry will be displayed in the Main Menu.

1. Use the E2B SUBMENU Maker to make a \_ISO\ADMIN folder and a new ZZSubMenu$ADMIN.mnu file as detailed above.

2. Edit the iftitle line in the new \_ISO\MAINMENU\ZZSubMenu$ADMIN.mnu file as shown below (the extra text to add is shown in red):

#Check 0x40 for CAPS LOCK  on - use 0x20 for NUM-LOCK or 0x10 for SCROLL-LOCK, 0x08 for ALT, 0x04 for CTRL
iftitle [calc *0x417 & 0x10 > nul && ls (bd)/_ISO/ADMIN/ > (md)0x9F00+1 && checkrange 1:-1 read 0x13E0000 > nul] ^Alt+A ADMIN Menu             [Alt+A]\nThis menu is only visible in Admin mode.
set MFOLDER=/_ISO/ADMIN
set HDG=Admin Menu
(bd)/%grub%/SubMenu.g4b
boot

This example will only display the Admin menu entry in the Main Menu when SCROLL-LOCK is on.

Whenever the Main Menu is loaded, the status of the keyboard will be checked. 

You can change the 0x10 number to test for CAPS LOCK or NUM LOCK or the ALT or CTRL keys being held down. Note that some systems will turn on NUM LOCK when they boot.

0x02 for L-SHIFT, 0x01 for R-SHIFT can also be used, but you must not hold down the SHIFT key until just before the Main Menu starts to load, otherwise the grub4dos USB 2 driver will be loaded because E2B checks for the SHIFT keys at an early stage.

If using CTRL or ALT or SHIFT, you must press F8 first and then hold down the special key just before the Main Menu is loaded.

You can create more sub-menus in the same way if you wish, so that many extra menus will be visible in the MAIN MENU when the secret key is activated.

You can request a password before a sub-menu will be loaded by adding the line:

password fred || configfile (md)0xA000+0xA0

just below the iftitle line.

Change ‘fred’ to your own password or use %pwd% to use the E2B menu password.

Manually add a new sub-menu

Let us suppose we want a new menu folder called ‘MSDaRT’ for our MSDart ISOs (this could hold XP-based, Vista/7/8 based or UEFI .imgPTN files – see blog). We want this new menu to be listed in the Main menu as a SubMenu. 

1. Make a new folder at \_ISO\MSDART and put an ISO in it (or whatever payload files you want). If you want to add payload files + .mnu files to it, make a \_ISO\MSDART\MNU folder (any name will do!) and put your .mnu files + payload files in there. 

2. Create a new text file \_ISO\MAINMENU\ZZSubMenu$MSDART.mnu from the WINPE example menu below (actually the name of your new .mnu file is not important, but it’s name will determine the order it appears in the Main menu – so to have it appear before the other menu entries call it $$SubMenuMSDART.mnu – to have it appear last, call it ZZZZSubMenuMSDART.mnu). 

3. Edit the new .mnu file and change  ‘WINPE’ to ‘MSDART’ and all the other text shown below in bold text. Choose a new hotkey letter (or delete the ^Ctrl+W text) and a new heading for the menu. 

IMPORTANT: Ensure that the ‘set MFOLDER=…..’ line does not end with a SPACE character as this may cause problems (e.g. loading wallpaper files, etc.).

This is for non-GFXBoot Menu E2B configurations as it uses a menu hotkey (CTRL+W) – hotkeys do not work in GFXBoot Menus. 

iftitle [ls (bd)/_ISO/WINPE/ > (md)0x9F00+1 && checkrange 1:-1 read 0x13E0000 > nul && if "%GFX%"==""] ^Ctrl+W WINPE Menu        [Ctrl+W]\n Bootable WinPE's
#MFOLDER must be the full folder path starting with /
set MFOLDER=/_ISO/WINPE
#HDG is the top heading for the menu - \x20 is the code for a single SPACE character
set HDG=\x20WinPE Menu                                 \x20
(bd)/%grub%/SubMenu.g4b
boot

Look at \_ISO\MAINMENU\ZZSubMenuAll.mnu for other examples (but DO NOT edit it!). Ensure you save it as UTF-8 encoded if you use non-ASCII characters (use NotePad- File – Save As…).

Add new ‘AUTO’ Payload folders

The \_ISO\AUTO folder can be used to hold many folders containg many payloads files. All the payload files in all the sub-folders will be collected into one ‘DIRECT BOOT’ menu. If you want to add more menu folders that work like the \_ISO\AUTO folder, then create a .mnu text file in the \_ISO\MAINMENU folder and use this format:

The folders do not have to be below /_ISO, but this example uses \_ISO\LinuxISO\Ubuntu and \_ISO\LinuxISO\Fedora to hold Ubuntu and Fedora payload files…

iftitle [if "%GFX%"=="" && ls (bd)/_ISO/LinuxISO/Ubuntu > (md)0x9F00+1 && checkrange 1:-1 read 0x13E0000 > nul] Ubuntu Menu\n Go to Ubuntu Menu
set LBACKMENU=(bd)/%grub%/menu.lst
set HDG=\x20 Ubuntu Menu
(bd)/%grub%/QAUTO.g4b .automenu /_ISO/LinuxISO/Ubuntu
debug 0
configfile (md)0x3000+0xA0
 
iftitle [if "%GFX%"=="" && ls (bd)/_ISO/LinuxISO/Fedora > (md)0x9F00+1 && checkrange 1:-1 read 0x13E0000 > nul] Fedora Menu\n Go to Fedora Menu
set LBACKMENU=(bd)/%grub%/menu.lst
set HDG=\x20 Fedora Menu
(bd)/%grub%/QAUTO.g4b .automenu /_ISO/LinuxISO/Fedora
debug 0
configfile (md)0x3000+0xA0

Note that QAUTO.g4b will enumerate ALL payload files in all folders below the specified folder, so you cannot have nested folders.  

Enumerate only one folder

If you only want the menu to list payload files that are in one folder and not search below that folder, then set the LEVEL1 parameter – e.g. 

Example folder structure:

  • /_ISO/Ubuntu                                       – use for main ISOs   
  • /_ISO/Ubuntu/Version13                       – for released v13 ISOs  
  • /_ISO/Ubuntu/Version13/TESTONLY       – used for test builds of Ubuntu v13
iftitle [ls (bd)/_ISO/Ubuntu > (md)0x9F00+1 && checkrange 1:-1 read 0x13E0000 > nul] Main Ubuntu ISOs\n List Main Ubuntu ISO only
set LBACKMENU=(bd)/%grub%/menu.lst
set HDG=\x20 Ubuntu Menu
set LEVEL1=YES
(bd)/%grub%/QAUTO.g4b .automenu /_ISO/Ubuntu
set LEVEL1=
debug 0
configfile (md)0x3000+0xA0
 
iftitle [ls (bd)/_ISO/Ubuntu/Version13 > (md)0x9F00+1 && checkrange 1:-1 read 0x13E0000 > nul] Ubuntu v13 Menu\n Go to Ubuntu v13 menu
set LBACKMENU=(bd)/%grub%/menu.lst
set HDG=\x20 Ubuntu v13 Menu
set LEVEL1=YES
(bd)/%grub%/QAUTO.g4b .automenu /_ISO/Ubuntu/Version13
set LEVEL1=
debug 0
configfile (md)0x3000+0xA0
 
iftitle [ls (bd)/_ISO/Ubuntu/Version13/TESTONLY > (md)0x9F00+1 && checkrange 1:-1 read 0x13E0000 > nul] Ubuntu v143 Test ISOs\n Go to Ubuntu v13 TEST menu
set LBACKMENU=(bd)/%grub%/menu.lst
set HDG=\x20 Ubuntu v13 TEST Menu
set LEVEL1=YES
(bd)/%grub%/QAUTO.g4b .automenu /_ISO/Ubuntu/Version13/TESTONLY
set LEVEL1=
debug 0
configfile (md)0x3000+0xA0

Add a sub-sub-menu folder

The \_ISO\UTILITIES_MEMTEST folder is actually a sub-sub-menu folder for the Memory Test menu which can only be reached via the Utilities menu.

The \_ISO\UTILITIES\Utilities_MemTest.mnu file is used to add a menu item in the Utilities Menu which will take you to the UTILITIES_MEMTEST menu.

In the UTILITIES_MEMTEST folder there is a ZZBackTo_Utils.mnu file which will take you back to the Utilities Menu from the Memory Test menu.

New in v1.62: 
An easy way to add a new Main Menu entry for a folder is to use the \_ISO\docs\E2B Utilities\Make SubMenu.cmd file – just run this or drag-and-drop your new \_ISO\MSDART folder onto it, to make a Main menu entry for it. See the Blog for more details.

Otherwise, do it the hard way and follow the steps below.

If you want your own sub-sub-menu, then you will need to create two similar files…

Example for Linux – Ubuntu sub-sub-menu

You want a new UBUNTU sub-sub-menu in the Linux Menu for Ubuntu ISOs

1. Use the \_ISO\docs\E2B Utilities\E2B SUBMENU Maker.cmd to create a LINUX_UBUNTU folder

Yoy can specify a hotkey (e.g. Ctrl+U) if you wish.

2. Move the file created in the \_ISO\MAINMENU folder (ZZSubMenu$LINUX_UBUNTU.mnu) to the \_ISO\LINUX folder

3. Copy your Ubuntu ISO files into the new, empty \_ISO\LINUX_UBUNTU folder

4. You can now test your menu, but you can only go back to the Main menu using F8.

To return to the LINUX menu from the LINUX_UBUNTU menu, add a new \_ISO\LINUX_UBUNTU\ZZReturn.mnu file:

title Return to Linux Menu\n Go back to the previous menu
set MFOLDER=/_ISO/LINUX
set HDG=Linux Menu
#HDG will be the heading for the menu
(bd)/%grub%/SubMenu.g4b
boot

You can define a hotkey too, by using a different title line, e.g.

title ^Ctrl+F9 Return to Linux Menu   [Ctrl+F9]\n Go back to the previous menu

 *Ctrl+F9 should now be used because Ctrl+F8 will now reload E2B in later versions!

To change the order of the menu entries, start the .mnu file name with either $ or ZZZZ as files are sorted alphabetically (the actual name of .mnu files does not matter).

You can edit the new .mnu files if you wish to change them (if you edit existing E2B .mnu files, they will be overwritten when you next update E2B!).

Multiple ‘nested’ menus

You can make a series of new ‘nested’ menus using the same technique as detailed above. Note that all the new menu folders must be directly under the \_ISO folder – you must not place one folder inside another folder (do not nest menu folders).

Password protect a sub-menu

If you only want to allow users to access a sub-menu if they know a password, you can just create a new folder and then make a new .mnu file which will load that new folder as an E2B menu folder.

The new folder could contain payload files and/or .mnu files.

# Example to password protect a sub-menu
# menu folder is \_ISO\E2B_SETTINGS in this example
# password is "E2B" - you could use %pwd% or %menupwd% or a different variable instead
 
iftitle [ls (bd)/_ISO/E2B_SETTINGS/ > (md)0x9F00+1 && checkrange 1:-1 read 0x13E0000 > nul] ^Ctrl+S E2B Settings Menu      [Ctrl+S]\nSettings menu (password protected)
echo -e -n \nThis menu is password protected.\nPlease enter the correct password now...
echo
echo !BAT > (md)0x300+1
echo -e password E2B \|\| configfile (md)0x3000+0xA0 >> (md)0x300+1
#display batch file for debug
#raw cat --hex (md)0x300+1 ;; pause
call (md)0x300+1
# set menu folder and menu heading
set MFOLDER=/_ISO/E2B_SETTINGS
set HDG=E2B SETTINGS MENU
clear
# load the new submenu
(bd)/%grub%/SubMenu.g4b
boot

New! Ventoy for Easy2Boot v1.0.97 now released!

 

eBooks available (in PDF format)

Easy-to-read eBooks are available in PDF format (each eBook is over 100 pages) – rated 4.5/5 stars.
Learn the secrets of Legacy and UEFI USB booting and then make your perfect multiboot USB drive.
E2B eBook #1 includes instructions on how to remove the E2B 5-second start-up delay blue screen.

E2B is unique in that it uses partition images which allows you to directly boot from Secure Boot images (no need to disable Secure Boot or run MOK manager or modify your UEFI BIOS).

Most eBooks are over 100 pages long, contain original content and step-by-step exercises which are suitable for both the beginner or the more experienced user.
Customer reviews are located at bottom of each eBook product page and multi-buy discounts are available when you buy more than one eBook. Please also visit RMPrepUSB.com and the E2B Forum.
Subscribe to my blog for the latest news, tips, USB boot articles and free eBook updates.