Removable v. Fixed USB drives
Mass Storage USB media devices can be separated into two categories - Fixed or Removable.
- USB Hard drives are always the Fixed type.
- Most USB Flash drives (but not all) are of the Removable type.
- Microsoft Windows-Certified (WindowsToGo certified) USB Flash drives will be of the Fixed type.
The SCSI Inquiry Command
USB Storage Devices can be accessed by Windows using a 'SCSI Passthrough' API. SCSI-like commands can be sent to the USB controller and data received back.
The removable media device setting is a flag contained within the SCSI Inquiry Data response to the SCSI Inquiry command. Bit 7 of byte 1 (indexed from 0) is the Removable Media Bit (RMB). An RMB set to zero indicates that the device is not a removable media device. An RMB of one indicates that the device is a removable media device. Drivers obtain this information by using the StorageDeviceProperty request.
Windows/linux will assume that a RMB=1 device can be disconnected at any time by the user. Any disk writes made by the OS to the media will be made immediately - no delayed buffering will be used. For a RMB=0 device (e.g. USB HDD), the OS may choose to delay writes for say 30 seconds or so. This improves performance because instead of lots of small write operations, it is quicker to use just a few large write operations.
For more information about the SCSI Inquiry command, see http://www.t10.org
RMPrepUSB will inform you of the type of USB drive you have:
Why is the Fixed\Removable type important?
There are a number of reasons why this single RMB value is important for E2B.
1. Up until Windows 10 Redstone 2 1703 (Creators update), all previous versions of Windows would only mount and assign a volume letter to the first partition of a Removable drive. This meant that Windows could not access files on any other partition of a Removable drive.
If your E2B USB drive is of the 'Fixed-disk' type, you can have multiple partitions and store files on any partition.
2. Some software and linux scripts, etc. specifically test for a Removable USB device. If you use a USB HDD then the software will not work. This includes Windows To Go 8.1 and early Win10 versions which would not boot from a 'flat-file' installation on a Removable type of USB drive (but WindowsToGo will boot from a VHD on a removable USB drive). Other examples are AVG Rescue, Avira, Geek Squad, Avast, Norton Bootable Recovery Tool, Windows Boot Genius, SmartKey Windows password Recovery ISO, and some WinPE ISOs.
3. Standard Microsoft Windows Setup ISOs (WinPE) run a 'wpeinit.exe' program. This program includes a function to look for all Removable drives (CD\DVD, USB CD\DVD, Removable-type USB drives, etc.) and it will look for \AutoUnattend.XML and \Unattend.XML files on these volumes.
The XML file can contain settings and commands which are automatically used by Windows Setup.
This useful and powerful feature is used by E2B when booting directly from a Windows Install ISO as follows:
1. E2B writes an \AutoUnattend.XML file to the E2B USB drive.
2. E2B boots to Windows Setup directly from the ISO.
3. Windows Setup loads the \AutoUnattend.XML file from any Removable Media it can find (searched in order or drive letter).
4. The XML file contains a command to load the ISO file as a virtual DVD (e.g. drive letter Y:) using ImDisk.
5. Setup searches all drive letters to find a \Sources\Install.wim file (if not, it asks you to install the 'missing CD\DVD device driver' because it cannot find the source files needed to copy to the target drive and assumes it cannot access the DVD!).
6. Setup extracts the Windows files from the Install.wim file and copies the files to the target drive.
So if the E2B USB drive is of the Removable type, E2B has no problem booting directly from an ISO.
However, if your E2B USB drive is of the 'Fixed' type, the XML file on the E2B USB drive will not be found by Windows Setup - the ISO file will not be loaded as a virtual DVD drive - and so you will get a 'missing CD\DVD driver device driver' message:
Note: E2B v1.A8 and later versions will attempt to use WIMBOOT to boot to Windows Setup. WIMBOOT does not need a removable USB drive to be present, it also does not need a 'special' XML file containing a RunSynchronous command to cause the ISO to be loaded as a virtual DVD. WIMBOOT requires at least 1-2GB of RAM to be present in the system, the process described above usually requires less than 1GB of RAM.
E2B WinHelper Flash drive
Note: If using E2B v1.8A+ and 2GB of RAM is present then WIMBOOT will be used which does not require a WinHelper flash drive.
One way of avoiding this is to also connect an E2B 'WinHelper' USB Flash drive.
This must be a Removable-type of USB Flash drive which contains a few 'WinHelper' files (see here for more details). E2B will also write the XML files to this Removable 'WinHelper' flash drive when you boot from a Windows Install ISO - thus the XML file will be found by Windows Setup and the ISO file will be mounted as a virtual drive.
Tip: Use a USB hard disk enclosure such as the Inateck FE2007 which has 3 USB ports, and simply connect a small Removable WinHelper flash drive to one of the 3 ports. Then you will always have the WinHelper drive connected.
If you do not want to use a WinHelper flash drive with your 'fixed-disk' E2B drive, you will need to convert the Windows Install ISO to a .imgPTN file.
Note E2B uses this XML file trick when booting some WinPE and other Windows-based ISOs too. Which is why the 'list of tested Payloads' page may say that some ISOs can only be successfully booted from Removable USB drives (unless you convert them to .imgPTN files).