A05: Enabling Multiple Partitions on Removable USB Storage Devices
1. Fixed and removable disks: The difference
In Windows, fixed disks can have multiple partitions and removable disks can have only one partition. You can create two or more partitions on the removable disk in Linux, but Windows will recognize only the first partition on that disk.
Usually external USB HDDs are fixed disks and USB thumbdrives are removable disks in Windows.
Whether the particular device is fixed or removable is determined by driver. Usually it's USBSTOR.SYS and it queries device itself to get removable/fixed flag.
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). A RMB set to zero indicates that the device is not a removable media device. A RMB of one indicates that the device is a removable media device. Drivers obtain this information by using the StorageDeviceProperty request. http://www.microsoft.com/whdc/archive/usbfaq.mspx
The rest of this article assumes that reader has intention to turn removable USB device into fixed USB device in Windows for the purpose of multipartitioning.
2. Making all USB disks fixed in 32-bit Windows
Some USB thumbdrives provide a way to flip removable/fixed bit with specific, vendor-provided utility. But not all vendors provide such utilities, and USB thumbdrives from other vendors are incompatible with bitflipping utility from particular vendor. Most USB thumbdrives don't even have such bit in hardware — they always report themselves as removable to host.
So, in order to turn removable USB thumbdrive into fixed one, you need to install filter driver in Windows. Download and install this driver to make all USB removable disks appear as fixed in Windows. It will work in 32-bit Windows only (XP, Vista and Windows 7).
Downloadable file linked above includes Anton Bassov's "dummydisk.sys" packaged in installer for convenience. Also it may be uninstalled from Control Panel -> Add/Remove Programs at any time.
3. 64-bit Windows
Filter driver won't work on 64-bit Windows because it is using some low-level 32-bit tricks, and because it's not signed (driver signing is mandatory for 64-bit Windows).
USBDISK.SYS on 64-bit Windows can't be bithacked for the same reason (digital signature will become invalid, won't load at all if signature is stripped from file).
So on 64-bit Windows the options are quite limited:
- use vendor-provided utility for flipping removable/fixed bit on particular USB device
- use USB device in some 32-bit virtualized environment (XP Mode, VMWare, Oracle VirtualBox, Microsoft Virtual PC etc).
If you know any better solution, please leave comment to this article!
4. Other considerations
Some BIOSes reject to boot from USB mass storage devices with partition table having more than one entry. Watch out for compatibility issues if you need multipartitioned USB device to be bootable.