agFM – a1ive grub2 File Manager

The default agFM theme

Menu systems on an Easy2Boot USB drive include: 

  • Easy2Boot – a grub4dos-based MBR\Legacy-only menu system
  • agFM – a grub2-based MBR\Legacy+UEFI32+UEFI64 menu system based on grubfm (optional)
  • Ventoy for Easy2Boot – a grub2-based MBR\Legacy+UEFI32+UEFI64 menu system based on Ventoy  (optional)

Although agFM can also MBR\Legacy boot, I recommend that you use the E2B menu system for Legacy booting and the agFM menu system for UEFI booting. E2B has been developed and tested over many years and is usually more compatible than agFM or Ventoy when used with a Legacy BIOS. Ventoy may be more successful when booting BSD-based ISOs and WinPE-based ISOs.

Note: Some, but not all boot options require the ISO to be contiguous.

Introduction to agFM

  • agFM is grub2-based. The agFM boot files are located on the 2nd FAT32 partition. Partition 4 should not be present on the USB drive.
  • MBR-boot to agFM from the E2B Legacy menu on Partition 1 or directly UEFI-boot to agFM from the 2nd partition.
  • agFM can boot payload files from any drive or partition. For example, you can add your ISOs, VHDs, WIM files to Partition 3 of the USB drive (or other drives\partitions).
  • Boot to Windows Install ISO files (even >4GB)), Linux ISOs, WIM, VHD, EFI and IMG files.
  • UEFI-boot from the second FAT32 partition – payload files are usually on first NTFS partition (but can be on other partitions or drives).
  • Windows ISOs do not need to be contiguous (but must not be highly fragmented).
  • Secure UEFI64-boot to most ISOs (even >4GiB Windows ISOs or non-secure ISOs) – uses Kaspersky shim.
  • If booting a .VHD, .imgPTN file or using the Easy2boot\partnew boot option then the file must be contiguous.
  • Secure UEFI-boot from FAT32 Windows Install .imgPTN files + other OS’s.
  • Secure UEFI-boot to FAT32+NTFS .imgPTN files (e.g. for large Windows Install ISOs >4GiB).
  • Switch-in different images into Partition 3 using the .imgPTNREP3 file extension (e.g. ext4, Linux swap or hfs Mac OSX partitions).
  • Configurable menu theme/wallpaper/text colours/layout.
  • Design your own initial start-up menu.
  • Add your own menu entries for special functions such as Linux+persistence, or UEFI64-booting and then running a Legacy-only Linux ISO, etc.

Get the eBook!

eBook #4 – a1ive grub2 File Manager for Easy2Boot (PDF)  – UEFI multiboot using the agFM grub2 File Manager. How to add Linux ISOs, DLCBoot, Strelec WinPE, HBCD, Gandalf, Medicat, Kaspersky, DrWeb, Eset, Norton Rescue, Avast, GData, Trend Micro AV, Adaware, Comodo AV, Windows Install ISOs, etc.

To add or update agFM

Run “\e2b\Update agFM\Download and update agFM_v2.cmd” on the FAT32 2nd partition 

OR you can instead run Make_E2B.exe from the E2B download and click on the ‘Update E2B drive’ button to update E2B, agFM and Ventoy.

Using agFM

The agFM menu system can have an initial grub2-based menu, after which a ‘File Explorer’ type menu system is loaded. This allows you to select any file on any drive in the system (not just the files on the USB drive).

To MBR\Legacy boot – first Legacy boot to the E2B Menu system – then select the ‘a1ive grub2 File Manger (agFM)’ menu entry as shown below:

Easy2Boot Legacy menu will list the agFM Legacy menu entry

0 Set default menu entry and timeout – set the Main menu default menu option and countdown timeout
1 a1ive grub2 File Manager – loads the agFM grub2 menu system (Legacy mode)
2 Clover 64-bit UEFI Boot – Clover is a substitute UEFI BIOS, use it to boot various .EFI files from a Legacy BIOS (it is better to directly UEFI-boot from Partition 2, if possible)
3 Clover 32-bit UEFI Boot – Clover is a substitute UEFI BIOS, use it to boot various .EFI files from a Legacy BIOS (it is better to directly UEFI-boot from Partition 2, if possible)
4 Ventoy – loads the Legacy grub2-based USB multiboot Ventoy menu system
5 Disable UEFI64 secure Boot (blank screen BUGFIX) – some BIOSes will not load the Kaspersky shim which is used for bypassing Secure Boot. If you have Secure Boot enabled in your BIOS and you try to UEFI64-boot from partition 2 and get a blank screen on some systems, you will need to use this option to replace the Kaspersky Secure Boot shim and disable Secure Boot in your BIOS. Then UEFI64-boot using non-secure booting.
6 Disable UEFI-booting from Partition 2 – this is a workaround for another BIOS bug. Some UEFI BIOSes will not offer the choice to Legacy-boot from the E2B USB drive unless you remove the UEFI boot files. This option renames the EFI folder so that these BIOSes will allow you to Legacy boot from the E2B drive (the same menu option is available if you UEFI64-boot to agFM). To re-enable UEFI-booting from the E2B USB drive, you must first use the ‘Enable UEFI-booting from Partition 2’ menu entry.
7… – sub-menus and other options

To UEFI-boot, use your BIOS Boot Selection pop-up menu to select Partition 2 on the E2B USB drive.

To UEFI-boot, select the correct EFI BIOS entry (Partition 2)
Default agFM startup menu
Using the agFM File Manager menu system (F2), you can locate any payload file on any drive and select it.

Tip: When you first boot to agFM, it will tell you what mode it has booted in (Legacy, UEFI32, UEFI64, Secure Boot, etc.)…

agFM startup information

Note: the default start-up menu does not allow you to press c to get to the grub2 console or e to edit a grub2 menu entry unless you first press the TAB key. Once you get to the agFM explorer interface the TAB key is ignored.

Use the keyboard cursor UP/DOWN/PgUP/PgDn/Home/End keys.

On first startup, agFM will load a special ‘startup’ menu before it runs the grubfm Explorer menu system. You can modify this startup menu if you wish, change contents and appearance, etc.

F10 will reload the startup menu.

Add payload files (ISO files, etc.)

Although you can copy your payload files to any folder or partition on the E2B USB drive, it is best to use the standard E2B menu folders so that the files will also be listed by the E2B Menu system.

Windows Install ISO files should always be copied to the appropriate E2B menu folder – e.g. \_ISO\WINDOWS\WIN10 for a Windows 10 Install ISO file. This allows you to use it with Easy2Boot and to use the XML files if required.

All other types of ISO file can be copied to whichever menu folder that you like. For instance, you can copy an Ubuntu LiveCD ISO file to the \_ISO\LINUX folder or to the \_ISO\MAINMENU folder or even to the \_ISO\DOS folder.

Ubuntu ISO in \_ISO\LINUX folder

Select the payload file from any folder on any drive…

The method of booting the payload file is determined by the file extension that the payload file has.

The Secondary Menu allows you to choose several different boot methods…

Secondary Menu for ISO files

You can suppress the secondary menu by changing the file extension (use Windows Explorer or Linux to rename the file). This means you do not have to remember which secondary menu option works with which payload file.
For instance, if the Ubuntu ISO boots successfully after selecting the ‘Boot ISO (partnew/Easy2Boot) [.isodef]’ option, rename the file to have a .isodef file extension.

Note: The Ventoy Menu system will only list files with standard file extensions (e.g. .iso), so if you also want to use Ventoy, you must not change the file extension – instead you can change the filename and add a suffix (see below).

The Ubuntu ISO’s boot menu

Recommended file extensions

You can use a special file extension which is ‘understood’ by the E2B menu system and some of these are also understood by the agFM menu system.

e.g. Ubuntu 64.isodef

E2B and agFM will now immediately boot to this file without any delay and without the user needing to select a secondary menu option.

The E2B menu system understands a greater number of special file extensions than agFM.

However, since the Ventoy menu system only recognises standard file extensions, you can keep the file extension as .iso but force E2B and agFM to boot the ISO file in a different way by using suffixes in the filename.

Example file prefixes, suffixes and extensions

Filename format: [prefix] name [_.xxxx] [.agfmyyyy] . file-extension (where name, file-extension, xxxx and yyyy can be any number of characters, same as *)

Filename prefix

A prefix can be used to change the order of the menu entries within the menu because the files are usually sorted alphabetically.
E2B supports two formats of filename prefix:

Prefix type 1: _*_ (underscore + any number of characters + underscore) – e.g. _123_
Prefix type 2: …_ (any three characters + underscore) – e.g. d34_ (E2B v2.09 or later)

E2B will display the filename in it’s menu system without the initial prefix part and without displaying any part after _. (underscore + period).

Since agFM can only use the first initial letter as a hotkey. I recommend using the type 2 format to order your menu entries:

d34_Ubuntu x64.iso
j44_Tails.iso
j50_Tails v2.iso
p32_Acronis.iso

Tip: To view the order that will be displayed, use Windows Explorer and sort the files by clicking in the word ‘Name’ at the top of the filename column to sort the files by filename.

In E2B, Ventoy and agFM, the menu entries are arranged alphabetically. If you precede the filename with _abcdefg_ (or xyz_) then E2B will not display that first part of the filename in the E2B menu. For example, _aaaaa_Ubuntu 64.iso or a20_Ubuntu 64.iso will appear first in the menu and be listed as ‘Ubuntu 64’ by E2B, but agFM and Ventoy always display the full filename and extension. If the filename starts with an underscore (Type 1 prefix – _abcd_), E2B sorts the filename alphabetically starting with 2nd character (it ignores the first _ when sorting).

Valid agFM file extensions are those file types listed in the \boot\grubfm\types folder in the 2nd partition.

The file extension determines how E2B and agFM will boot a payload file.

To make an ISO automatically boot in the correct way with no secondary user menu, we can use file extension overrides within the filename.

Two types of file extension override suffixes

_.xxxx. (underscore – period – extension – period)
and
.agfmyyyy. (period – agfm+extension – fileextension-period) are both override suffixes.

If .agfmyyyy. exists it will always be used by agFM instead of the actual file extension.

  1. If _.*. or .agfm*. do not exist in the full filename, then the actual file extension will be used by E2B and agFM.
  2. If _.*. exists in the filename then E2B and agFM will always use it as the file extension (unless a .agfm*. is also in the filename).
  3. If .agfm*. exists in the filename (where * is a valid agFM file extension (see below)), then agFM will always use that file extension instead of the actual file extension. E2B ignores it.
  4. If both _.*. and .agfm*. is in the filename – e.g. Ubuntu x64_.isoPE.agfmisowin.iso then E2B will use .isoPE and agFM will use .isowin.

Both E2B and agFM can understand some special file suffixes (_.*.) and .agfm* and file extensions (.zzzz).

E2B will not display the prefix part that starts and ends with an underscore (_aaa_) or if character #4 is an underscore in the menu, but agFM and Ventoy display the complete filename and extension (so for instance:
_001_Ubuntu x64.iso or a30_Ubuntu x64.iso will be displayed as ‘Ubuntu x64’ in the E2B menu – but agFM and Ventoy always display the full filename.

agFM file extension overrides that are currently detected (must start with agfm string):
isowin, winntsetup, isope, isohw, isoagfm, isomap, isodef, isodefault, isoloop, isoPE, iso01 (not case sensitive).
e.g. xxxx.agfmisowin01.iso would boot as .isowin and if Legacy-booted it would make the boot drive the internal hard disk after booting (for HDD repair operations).

The ’01’ suffix causes E2B and agFM to swap the USB drive and first internal drive number so that Drive 0 is the ‘boot’ drive once booted. This is especially useful when booting WinPE-based Windows repair ISOs, where some boot repair commands may install the Windows boot code onto the E2B USB drive if ’01’ is not used in the filename (e.g. DaRT ISOs, HBCDPE, etc).

E2B and agFM both sort files alphabetically. You can select a menu entry using the initial letter when listed in the menu. e.g. Pressing the letter U three times will select the third menu entry that begins with u (if there is one). This does not work so well in agFM if you use numbers like _xxx_ at the beginning of each filename. So for agFM you will need to use the cursor keys or

Note that in the examples below, only the files with a .iso file extension will be listed by Ventoy.

  • ubuntu-20.04-desktop-amd64.isodef – will automatically run the ISO when it is selected and boot using the ‘partnew’ method (no Secondary Menu). The full boot menu within the ISO will be displayed.
  • _001_ubuntu-20.04-desktop-amd64.isodef – same as above but will be listed first/near the top of the menu screen
  • _001_ubuntu-20.04-desktop-amd64.isoagfm – same as above but will use the agFM ‘Boot Ubuntu from ISO’ boot option automatically
  • _001_ubuntu-20.04-desktop-amd64.isoloop – same as above but will use the agFM ‘Boot ISO (loopback.cfg)’ boot option automatically
  • _002_DLCBoot 2019 v3.6_.isohw.iso – E2B will use the isohw boot extension method, agFM will display a secondary boot option screen
  • _003_Gandalf’s Win10PE x64 Redstone 3-07-10-2018_.isomap64.iso – E2B and agFM both ‘understand’ _.isomap64.ISO file extension, agFM will warn if not booted on a 64-bit CPU
  • _050_BobOmbsModifiedWin10PEx64.v4.8.isomap64 – will not be listed in E2B or agFM menu on systems with 32-bit CPUs (no Secondary menu)
  • _030_Sergei_Strelec_WinPE_8and10 x86x64_2019.02.04English.isowin – run Strelec with no secondary menu choice
    Recognised by Ventoy, E2B and agFM (keep extension as .iso)…
  • ubuntu-20.04-desktop-amd64.iso – unaltered (will be listed alphabetically and produce a Secondary Menu when selected)
  • a15_HBCD PE x64 1.0.1_.isomap64.iso – use a prefix to determine order in the menu (xxx_ format)
  • a10_Gandalf5_.isodef.iso – E2B and agFM will boot immediately (no Secondary menu) – extension must be .iso to work for Gandalf
  • a30_Sergei_Strelec_WinPE_8and10 x86x64_2019.02.04English_.isodef.agfmisomap.iso – run Strelec with no secondary menu choice, E2B will use .isodef, agFM will use .isomap.
  • a30_Sergei_Strelec_WinPE_8and10 x86x64_2019.02.04English.agfmisomap.iso – E2B will use .iso and so may prompt the user, agFM will use .isomap.
  • a01_ubuntu-18.10-desktop-amd64_.isodef.agfmisoagfm.iso – E2B will use .isodef, but agFM will use .isoagfm and so recognise the type of Linux and use the kernel parameters so that the ISO file does not need to be contiguous because partnew will not be used. If you just used the .isodef file extension, then both E2B and agFM would require the file to be contiguous.
  • a50_HBCD PE x64 1.0.1_.isodef0164.agfmiso0164.iso – test CPU is 64-bit, swap hd0 with hd1 before Legacy booting (to set boot device as the internal HDD and not the USB).

Note: In the agFM menu system, if the filename does not begin with a letter, you will always need to use the cursor keys to select that menu entry because the initial-letter hotkey function will not work.
In the E2B menu system, you can type the initial letter or the menu number (e.g. press 1 and then 2 to jump to item #12).

For example:
_030_Sergei Strelec WinPE 8 and 10 x86 x64 2019.02.04 English_.isodef.agfmisomap.iso
will be displayed as ‘Sergei Strelec WinPE 8 and 10 x86 x64_2019.02.04 English‘ in the E2B menu (agFM displays the full filename) provided your MyE2B.cfg is configured to not display the file extensions.
Note that a file called _030_Sergei Strelec WinPE 8 and 10 x86 x64 2019.02.04 English.agfmisomap.iso will be displayed as ‘Sergei Strelec WinPE 8 and 10 x86x64_2019.02.04 English.agfmisomap‘ by E2B because it contains no _.xxxx. string.

How to determine the correct suffixes/file extensions

Since Ventoy requires ISO files to always have the file extension .ISO, we must not change the file extension if we want to boot any ISO using Ventoy.

Adding file extension suffixes will mean you will not need to remember which boot option to select for each different payload file.

  1. Make sure the ISO file is contiguous by running \Make_This_Drive_Contiguous.cmd under Windows. Remove all spaces from the filename (to start with) and use alphanumeric characters with – and _ only.
  2. First MBR\Legacy boot to the ISO using E2B. E2B may suggest an alternative file extension for that particular ISO. You can choose to accept the alternate suggestion (type Y and ENTER) or just press ENTER or let it timeout to boot as .iso. Make a note of which extension works best.
  3. Now UEFI-boot to agFM and select the same .iso file – you will be presented with some secondary boot choices (e.g. .isodef, .isoloop, .isowin, .isomap, .isomem, .isoagfm) – try each one until you find one choice that works.
  4. If the default (.isodef/E2B option) worked for both E2B and agFM, you can add the string _.isodef to the end of the filename (keep the extension as .iso) – e.g. Ubuntu x64_.isodef.iso.
    If agFM worked best using .isomap and E2B worked best using the default .iso, then add _.isodef.agfmisomap to the end of the filename – e.g. Ubuntu x64_.isodef.agfmisomap.iso.
    E2B will not display the last part of the filename after _.
  5. Since payload files are ordered alphabetically, you can add a letter/number _*_ prefix – e.g. a10_Ubuntu x64_.isodef.agfmisomap.iso. E2B will not display the prefix part of the filename in the E2B menu.
  6. You can add a ’32’ or ’64’ suffixes. e.g. if you use a10_Ubuntu x64_.isodef64.agfmisomap64.iso – E2B will not list the ISO file at all on 32-bit systems. agFM will list the ISO, but will warn you that the system is a 32-bit system and then load the secondary boot menu.
  7. Test the ISO using Legacy E2B, agFM Legacy, agFM UEFI, Ventoy Legacy and Ventoy UEFI.
    Ventoy and agFM will always display the full filenames.
  8. You can rename the filename and add spaces, etc. (avoid using the characters $, &, ( and ) which may cause problems). Some Linux boot methods do not work if the filename contains spaces. You can use a .txt file to change the E2B menu text.
    Note: If you find that Ventoy is the only menu system that works for some files, you can put them into a new folder – e.g. \_ISO\VENTOY\WINPE and \_ISO\VENTOY\LINUX. The files will not be listed by E2B.

Special grub2 configuration files

You can write your own grub2 menu file for agFM if you require special kernel parameters or need to specify a persistence file, etc. The menu file is normally placed in an E2B menu folder.

A file with the extension .cfg will be treated as a grub2 menu file – it will be listed in the agFM menu and can be selected from the agFM menu.

  • \_ISO\LINUX\blackarch-linux-full-2020.12.01-x86_64.cfg

See eBook #4 for more details.

Example .grubfm

A file with a .grubfm file extension must have exactly the same filename as the ISO. When the user selects the ISO file, an extra ‘User’ boot menu option will be listed in the Secondary ISO boot menu which will run your .grubfm grub2 menu code.

  • \_ISO\LINUX\blackarch-linux-full-2020.12.01-x86_64.grubfm
  • \_ISO\LINUX\blackarch-linux-full-2020.12.01-x86_64.iso

menuentry "BlackArch Linux 64-bit (ISO boot) " --class=archlinux {
set "grubfm_path=/_ISO/LINUX/blackarch-linux-full-2020.12.01-x86_64.iso"
set "grubfm_file=(${grubfm_device})${grubfm_path}"
probe -u ${grubfm_device}) --set=abc
set pqr="/dev/disk/by-uuid/$abc"
loopback loop "${grubfm_file}"
set "params=archisobasedir=blackarch accessibility=on img_loop=$grubfm_path img_dev=$pqr driver=free"
linux (loop)/blackarch/boot/x86_64/vmlinuz-linux ${params}
initrd (loop)/blackarch/boot/intel-ucode.img (loop)/blackarch/boot/amd-ucode.img (loop)/blackarch/boot/x86_64/initramfs-linux.img
}

You can find more example .cfg and .grubfm menus in the \e2b\Sample agFM Menu Files folder on the agFM Partition #2.

Example .cfg: Puppy ISO with persistence (save file)

  • Copy the sample file on Ptn2: \e2b\Sample agFM Menu Files\LINUX\slacko64-7.0_persistent.cfg to Ptn1:\_ISO\LINUX folder
  • Download and copy slacko64-7.0.iso to Ptn1:\_ISO\LINUX folder
  • Rename file extension from .iso to .isopup
  • If your ISO is not named slacko64-7.0.isopup, you will need to edit the filename on one line in the .cfg file.

Now when you run the slacko .cfg file from the agFM Menu system, the Puppy kernel will find and load the persistence file from the root of E2B Ptn1. When you exit Puppy, it will ask you if you want to save your changes. The first time you exit, it will ask for various options including save file size. Default persistence filename is usually \slacko64save.3fs.

Note: The .isopup file extension is only required by E2B. The file extension can be kept as just .iso if you are not going to use E2B to boot it with persistence. If you select the .isopup file in the agFM menu system then persistence will not work. E2B Menu system will not list the .cfg file. If you do not want the ISO file to be listed in the agFM menu, you can move it to another folder (e.g. \_ISO\LINUX\ISOS) so that only the .cfg file is listed under the agFM LINUX folder menu (you will need to edit the path in the .cfg file).

Changing the agFM menu background or theme

The default agFM menu system uses a default in-built grub2 theme. You can use your own theme or use a unthemed menu with your own wallpaper background.

agFM Seven22 theme (see eBook #4)

You must create a file on partition 2 called \boot\grubfm\startup_menu.txt menu file (use one of the sample files in the same folder). Instructions are within each .txt file.

Some sample themes are available from the Alternate Download sites (hitman, seven, slax, tela).

Details on how to do add a theme or add/change the startup menu are in eBook #4.

Windows ISOs

Windows ISOs, when booted using isowin or isomap can detect if a \sources\install.wim or install.esd file is present and if a \sources\boot.wim file is present inside the ISO file.

If an install.wim/esd file is found it will also list any XML files present in the same folder.

If a .cmd file exists in the same folder and it has exactly the file name as the .iso file, then that .cmd file will be called as soon as WinPE loads. This means you can add drivers or registry commands before Setup runs, or even run your own installation procedure. One use of this is to run some registry commands which disables Setup from checking for a TPM in Win11 Setup.exe. (agFM v1.72 and later).

Partition Image files (.imgPTN/.imgPTN23/.imgPTNREP3)

agFM can switch in Partition image files in the same way that E2B can. A Partition Image file can replace one of the MBR partitions on the E2B USB drive.

For instance, you can UEFI-boot to agFM, switch-in a .imgPTN file and then boot to the files in the new partition. When you next boot to agFM, you can restore the original partitions from the agFM menu.

If you select a .imgPTN file, then partition #1 is replaced but partition #2 (the agFM partition containing agFM and the EFI boot files) and partition #3 are also removed.
For this reason, it is best to rename the .imgPTN file to use the .imgPTN23 file extension (’23’ means keep partition 2 and 3).

An image partition file with a file extension of .imgPTN or .imgPTN23 should be located on partition #1.

If used, An auxiliary image partition file which has no file extension should be located on Partition #3 of the USB drive, e.g.
Ptn #1: \_ISO\LINUX\Ubuntu64.imgPTN23
Ptn #3: \Ubuntu64

The .imgPTN23 file will replace partition 1 and the auxiliary image file will replace partition 3. In this example, the Ubuntu64 image file could contain an ext3 filesystem with a full install of Ubuntu.

Any image partition file with the file extension of .imgPTNREP3 should be located on Partition #3, e.g.
Ptn #3: \xxx\Catalina.imgPTNREP3
The .imgPTNREP3 file will replace only Partition #3. The image can contain any filesystem (e.g. ext4 or hfs). If it is bootable, you can use the agFM F3 menu to boot to it (or select the boot file using the F2 menu).

For instance, you can switch-in a bootable hfs partition image and then boot to it via the agFM menu system.

I recommend the Sandisk Extreme Pro USB 3