Wednesday, 29 June 2016

Directly boot to .VHD, .VHDX and .WIM (NT6) files with E2B

E2B can directly MBR-boot to dozens of .VHD, .VHDX and .WIM (NT6) files. Just copy them to one of the standard E2B boot folders (e.g. \_ISO\WIN) and boot to E2B. They do not need to be contiguous either.

E2B uses chenall's NTBOOT.MOD grub4dos scripts to modify a BCD file which is copied to a virtual floppy disk in memory, so that it contains the correct path to point bootmgr at the boot file.

There are a few caveats however:
  1. A compatible version of bootmgr is required.
  2. There must be no spaces in the filename or path.
If you use the \MAKE_E2B_USB_DRIVE (run as admin).cmd script to make your E2B drive, it will copy bootmgr from your Windows system to the E2B drive. If you did not use the script, then you will need to ensure that you copy the bootmgr file to the \_ISO\e2b\grub\DPMS\NTBOOT.MOD folder yourself.

Until recently, I thought that only Windows 10 versions of bootmgr were incompatible, but I have now tested over 20 different versions (renamed to show what symptom I got with each one when booting a VHD):


333,203 BOOTMGR_0xc0000002_
333,257 bootmgr_0xc0000002_vistasp1
352,795 bootmgr_ptn_table_empty_2
362,585 bootmgr_ptn_table_empty_1
365,032 bootmgr_ptn_table_empty
383,202 BOOTMGR_0xc000000f_err
383,562 bootmgr_0xc000000f_Required_dev_mssing (win7pro x86)
383,684 Bootmgr_0xc000000f_required_dev_missing
383,786 bootmgr_0xc000000f_required_device_missing (win7 Sp1 x86 and x64)
389,720 bootmgr win8prev   (win8 preview 32-bit)
393,829 bootmgr_Error ptn table empty
395,268 bootmgr_bb_err
397,091 bootmgr_0xc000000f_BCD missing or has errors
397,270 bootmgr_win10_bberror
398,144 bootmgr8132        (Win8.1 32-bit)
398,156 bootmgr_gd5        (win8 WDK x86)
398,356 bootmgr_gdwin8
400,228 bootmgr_bb_error
400,302 bootmgr_bberror
400,517 Bootmgr_gd81
403,390 bootmgr_gd1
404,250 bootmgr_gd3   (win8.1 x86 retail)
409,154 bootmgr_gd2
427,680 bootmgr_gd    (Win 8.1 64-bit Retail)
438,840 BOOTMGR_0xc0000002_app is missing or corrupt
492,861 bootmgr_bberror3
520,656 BOOTMGR_resets

This shows the file size of each version - the ones that worked are in blue. The Windows 10 versions gave a 0xc00000bb error. Other versions gave a 0xc000000f error, 0xc0000002, a E2B/grub4dos 'partition table empty' message or just immediately reset the system!

E2B v1.81e will warn you if it does not find one of the seven known 'good' versions. 

Please let me know if you find any more 'good' versions that work with E2B.