How E2B was born
Actually E2B was not really born - it just evolved.
1. First, I started investigating grub4dos and other boot managers/boot loaders such as syslinux and grub/grub2 in order to boot different payloads from a USB drive. I spent a lot of time on the reboot.pro
forum and experimenting with USB drives! There was lots of information, but it was spread out all over the forums. There did not seem to be a good single
source of information. Along the way, I added many 'Tutorial' and 'How to' articles to the RMPrepUSB.com
2. The first 'eureka moment
' came from a casual post by 'cdob' on reboot.pro
. He mentioned the use of the grub4dos partnew
command to boot linux ISOs that I had not seen mentioned anywhere before. I tested this method and quickly realised that here was an almost universal
method to boot linux ISOs from a USB drive which no-one else seemed to have picked up on because it could only be used on writable media (not CDs/DVDs)! I used the partnew trick with some simple 'auto-menu' grub4dos scripts (which were adapted from grub4dos scripts written by chenall) and Easy2Boot was born! The only downside is that the payload files (ISOs) need to be contiguous - but you can't have everything in life...
3. I then took this a step further by using the partnew command to also mount ext2-formatted files and use them for persistence for some linux ISOs. I added the ability to create these files to RMPrepUSB.
4. People then wanted to be able to directly boot lots of different Windows 7/8/10 Install ISOs from the same USB drive, so I used \AutoUnattend.xml (together with ImDisk to automatically mount the Windows Install ISO as a virtual DVD before Setup started looking for the Install.wim file). Windows PE has a handy feature of automatically scanning Removable media for XML files so there was no need to edit the ISO files.
5. I then investigated methods of installing Windows XP from ISO and found chenall's DPMS grub4dos utility. I improved this (DPMS2) and adapted it to work with the latest Driver pack so that we could install XP to SATA systems straight from an unmodified XP Install ISO. I also worked out a way of adding two virtual F6 floppies (one for firadisk/winvblock and one for the correct mass storage driver) so that the user did not need to press F6 and manually select the correct drivers.
6. Next, I wanted to perform UEFI-booting and installs. Using a multiboot
UEFI-boot manager/loader turned out to be horribly complicated and
unreliable. One day I had the idea of making an image of a UEFI FAT32 partition and using the grub4dos partnew command to replace the whole partition table with a single entry for that FAT32 partition. I tried it and it worked! This also had the advantage that it does not break the secure boot 'chain-of-trust' because no extra bootloader code is involved and it keeps each 'image' completely separate so that they can be simply added or deleted from the E2B USB drive. I am a great believer in the KISS principle
! The big disadvantage is that you need to be able to boot in MBR-mode to grub4dos in order to select the partition image in the first place, so I wrote the Switch_E2B.exe utility to 'switch-in' the partition image under Windows first (so not quite as perfect as I would have liked - but hey, it works!).
7. I realised that grub (not grub4dos, but grub2) could boot, via UEFI, directly from an ISO. It required special 'bespoke' grub commands which are specific to each ISO, but it did allow us to boot some linux ISOs that could not be booted using .imgPTN files (because those ISOs did not actually contain UEFI boot files!). This led to the additional grub2 menu system
which can be added to E2B.
8. My attention was drawn to the Snappy Driver utility (which can install Windows drivers), Chocolatey (which can install applications) and WSUS Offline Updater (which can install Windows Updates offline), so I devised a way to be able to automatically
install Windows drivers + applications + updates without needing to change the Microsoft Windows install ISOs in any way, using SDI_CHOCO
9. I found that the iPXE wimboot project was capable of 'injecting' files into the X: RAM drive when
booting a boot.wim file. This allowed me to inject a startup.bat file into WinPE and then load the ISO using ImDisk without needing a special entry in the XML file and without needing an extra removable type of 'WinHelper' USB drive. E2B v1.A8 and later versions allow us to directly boot Windows Install ISOs using WIMBOOT
, but you can still skip it and use the 'old' method. Later (2019) iPXE WIMBOOT support was added to grub2, so I devised a way to directly UEFI-boot from Windows Install ISOs using grub2.
10. In early 2020 I came across the developer a1ive's grub2 and grubfm projects on github. a1ive has managed to improve grub2 and has add extra UEFI modules to support such features as wimboot, dd and partnew. At last we have a boot manager that has equivalent functions to grub4dos but is UEFI-bootable. The agFM (a1ive grub2 File Manager) allows you to navigate the partitions and boot from the files using the same techniques developed and used in E2B. I also added a Secure Boot shim which allows us to Secure UEFI64-boot on most systems without needing to use MokManager (which is highly unreliabe). The agFM system has been adapted to work with E2B and can boot to WinPE ISOs and .imgPTN files too.
Along the way I have developed a few 'helper' utilities and scripts to make the USB-booter's (and my!) life easier and also I helped with the development and improvement of grub4dos.
Easy2Boot would not have been possible without being able to 'stand on the shoulders of giants
' such as chenall
, yaya, tinybit, cdob (all grub4dos), Olaf (ImDisk), Marco (WinContig), DavidB (VMUB), Chandra (Split_WinISO), a1ive (agFM) many of the contributors on forums such as Wonko/Jaclaz
, plus other various contibutors and developers (sorry if I missed any of you out of the list!).
See also 'How E2B Works'.