From ReactOS Wiki
Revision as of 20:13, 27 March 2018 by Binarymaster (talk | contribs) (Vgal USB state: add new section)
Jump to: navigation, search

Icon speedy deletion.png Warning: With current versions of ReactOS, USB support is NOT advanced enough to successfully boot, and ReactOS will crash when it begins loading system USB drivers. See e.g. CORE-7826. The following details for older versions are left here for historical reference and for use in the future when this feature becomes supported again.


Revision r55555 of ReactOS introduced support for USB devices, and after some time it became possible to run the OS from a USB drive. In revision 55714 ReactOS was successfully installed and running from Patriot Xporter XT 8Gb USB stick. LiveCD revision 55995 has also been successfully executed from the same device using USB 1.1 OHCI.

Note: To install on a USB-HDD, it is preferable to use Bootcd; and for a USB flash drive, it is preferable to use LiveCD. Differences between installing on USB-HDD or USB flash drive are minor, but keep in mind that the resources (speed and storage space) of a USB flash drive can be much more limited than those of a hard drive. Flash drives also often have a limited lifetime of read and writes before they become damaged or unusable.

For more convenient use or testing of LiveUSB mode, you need to know the following things:

  • If you install bootcd, the first phase of installation to a virtual HDD in a virtual machine is much faster than directly to the USB-stick. Therefore later in this article we will consider how to transfer files needed to start the second phase of the installation from a virtual machine to a flash drive/USB-HDD.
  • If you install ReactOS to a USB-drive and install the MBR/VBR using the installer (without formatting the disk), then it is likely that the system will be unable to boot. If you wish to boot more than just ReactOS from a USB drive, please refer to the second paragraph of this article.
  • You also need a motherboard capable of booting a USB drive. This guide assumes you have one and that it is already configured.

Vgal USB state

Here is the current state of Vadim Galyant USB patches.

Additional notes are listed below the table.

# apply seq Patch name # PR Status LiveUSB Required
1 [USBPORT] Transaction Translator #283 Not merged Yes
2 [USBPORT] Correct size adressing for PA (01) N/A Not merged Yes
3 [USBOHCI_NEW] Correct size adressing for PA N/A Not merged Yes
4 [USBOHCI_NEW] Enable driver N/A Not merged Yes
5 [USBUHCI_NEW] Bring-in new USB UHCI driver (requires patch 2, 3) #245 Not merged Yes
6 [USBEHCI_NEW] Bring-in new USB EHCI driver (requires patch 2, 3) #301 Not merged Yes
7 [USBSTOR_NEW] Bring-in new USB Storage driver #308 Not merged Yes
8 [USBHUB] Black list for unsupported devices N/A Not merged H/W depend
9 [USBHUB] Make ReactOS bootable from USB N/A Not merged Yes
10 [USBCCGP] Fix SelectConfiguration NULL handling N/A Not merged
11 [HID] Bring-in new USB HID support N/A Not merged
12 [NTOSKRNL][HAL] Allow USB boot in PnP Enumeration Worker N/A Not merged Yes
13 [USBHUB] Move DPRINT after check Status #282 Merged
14 [NTOSKRNL][BOOT] Hack for ImportHwIDs N/A Not merged
15 [NTOSKRNL][USETUP] Hack for USB keyboard in 1st Stage Setup N/A Not merged
16 [NTOSKRNL] Fix and improve IopValidateID() #341 Merged
17 [USBPORT][USBHUB_NEW] Fix QueryIDs N/A Not merged

Additional notes

  • To achieve successfull Live USB boot, it is enough to merge all patches that are marked as Required.
  • Before merging new UHCI and EHCI drivers, "Correct size adressing for PA" patches should be merged.
  • Patch #8 with black list of devices is required to boot successfully on some machines, until the support for Isochronous Transfers would be implemented.

Installing the system to a USB-drive

This process is now extremely simple thanks to Rufus! Rufus is a Windows/ReactOS application. If you use a different system, you'll need to seek an alternate method (like GRUB for Linux and BSD users, or diskutil for Mac users).

  1. Get the latest version of Rufus from
  2. Download a current livecd or bootcd image of ReactOS
  3. Run Rufus (give admin rights if asked), and setup like this:
    1. Select your USB drive from the Device drop-down menu
    2. Select "Create a bootable startup disk using"
    3. Choose "ISO Image" from that drop down menu
    4. Click the disk icon next to that drop down menu, and select the .ISO file
    5. (Optional) tweak the other Rufus settings – ONLY if you know what you're doing
  4. Click "Start" in Rufus. Acknowledge that this operating will erase everything currently on your USB drive. Wait a few moments while Rufus does its magic.
  5. Try to boot. (Please do not use a computer where you store important data in order to avoid data loss!)

If it works (hooray!) do NOT let ReactOS change the filesystem or the boot record. Doing so will render ReactOS unbootable until you repeat the above process.

If it doesn't work (damn) it could be either due to a bug in the USB driver or because of a system regression (or regression of driver). Try to use a working revision (check the beginning of the article). If they work then you're dealing with a regression. Please report about it to the developers. If they also do not work then your USB controller or USB drive is not yet supported. Please report this too as a new bug.