USB Boot Troubleshooting - Additional Information 

Information on troubleshooting USB Boot is available in the xpehelp.chm file shipped with Feature Pack 2007 RTM. Here is some additional information on the subject.

Notes:

1)      Always safely eject your USB DOK after using the UDFPREP utility, and after coping your image to your USB-DOK

2)      If you are using an M-SYSTEMS DOK that announces itself as fixed media, then you use the OS to partition, format, and activate the primary boot partition, not the UDFPREP utility.  The rest of this document is still applicable for troubleshooting however. 

Phase 1: Physically Connected:

The BIOS must recognize that the USB-DOK is physically plugged into the port.  Some machines require specific ports for USB-2.0 Boot Devices (front / rear) and you may need to selectively enable ports in the BIOS. 

Phase 2: Selected for Boot

The user can configure their device to boot from a USB-DOK that is physically connected to their device.  To facilitate trouble shooting, it is advantageous to disable all other boot devices (disks, cdrom, etc).  Thus the only and selected boot device is the one we think is physically connected.  This will help isolate a connection vs. selection problem.

Phase 3 Execute MBR

The connected and selected USB-DOK must have a patched MBR prepared by the UFDPREP tool.  The BIOS will now load and execute the MBR from this USB-DOK.  Note: If no MBR is there or it is corrupted, the BIOS will skip to the next boot device, but since we have disabled all others (Phase 2), we can diagnose the problem here (the bios will display an error message). 

Phase 4 Execute NTLDR/NTDETECT

The MBR loads and executes NTLDR, who executes NTDETECT.  NTDETECT will call into the BIOS to get a list of supported disk devices using the INT13 functions.  Some BIOS fail or return the wrong drive type for USB-DOK(s) and thus the USB-DOK does not get added to the list of boot devices.  If this happens a 7B Error will occur later in the boot phase, and you should use the USBNTD.CHK to diagnose the problem

Phase 5 Execute NTOSKRNL

NTLDR will next execute NTOSKRNL and pass it the list of boot devices discovered from NTDETECT.  If your USB-DOK is not in the list (BIOS BUG) then you will 7B Error here, and need to use USBNTD.CHK to isolate the bug.  If you have verified that your USB-DOK is getting enumerated and added to the list of boot devices (via USBNTD.CHK) and you still bug check with error 7B, then it is likely that you have not added the USB Boot 2.0 component to your run time along with the correct File System component (NTFS or FAT32).  

If you are getting an error in Phase 5 (failure to boot 7B) there verify:

1)      Your runtime has the USB Boot 2.0 component and all its dependencies (auto resolve them).

2)      Your runtime has the correct file system driver component (NTFS or FAST32).  Use the same type as you formatted your USB-DOK with (you can include both).

If are using the correct file system component and your runtime has the USB Boot 2.0 component (and all of its auto resolved dependencies), they replace the replace NTDETECT.COM with USBNTD.CHK (rename it to NTDETECT.COM) and verify that the BIOS is correctly finding and enumerating your USB-DOK.

If the diagnostic version of NTDETECT will enumerate 3 possible BIOS issues that could be the cause of a boot failure:

1)      Interrupt 13h Function 15h (Get Disk Type) Failed

2)      Interrupt 13h Function 15h (Get Disk Type) Returned a drive type = ZERO in AX (Drive not Found) at 80h

3)      Interrupt 13h Function 15h (Get Drive Parameters) failed

For errors 1 or 2, the tool will allow you to proceed and ignore the error then boot with this version only.  The retail version of NTDTECT for USB boot does not allow the device to boot.  If no problems are detected by the tool, then the USB-DOK should be enumerated as drive select 80h.  If not, then this is also a BIOS BUG.  If you see your USB-DOK enumerated at 80h and none of the three errors show above, then your device should boot, and double check the following:

1)      Your DOK was successfully formatted with UFDPREP

2)      You included the correct FS (NTFS and/or FAT32) in your runtime image

3)      You have the USB Boot 2.0 component and all of its dependencies in your runtime.

 

 - Joe