Install a driver

From ReactOS Wiki
Revision as of 14:32, 27 June 2009 by Haos (talk | contribs)
Jump to: navigation, search

If you encounter any problem using this HOWTO, please notify ReactOS team for help/guidance.

Automatic Installation

Normally when a device is found, a 'Found new Hardware' wizard will come up that guides you through the process of installing a driver.

1. Get the driver from the CD that came with the device or the manufacturer's website

2. Unzip the files in ReactOS if the drivers did not come on a CD. If they did, insert the CD and reboot your computer. The wizard should show up again if you did not complete it when it ran the first time. If it does not come up, You will have to reinstall ReactOS to show the wizard again.

3. Install the drivers using the wizard. If you are using a CD just press Next on all the pages with the CD in the CD-ROM drive. If you have extracted the files, Click Next and put in the path to the driver.

Automatic Slipstreamed Installation

If ReactOS is providing its own driver for any device, the new hardware wizard will not show up (for example, Video adapter or supported I/O controller). As many installer applications still have issues (like InstallShield), there is another way to install such drivers. Requirement: having ReactOS sources checked out and built.

1. Get the driver. You should use XP/2003 counterparts if possible.

2. Create a new directory in ReactOS source trunk, in Modules directory (i usually name it Windows, but you may use any name). If you want more than one driver to be installed this way, you may consider creating more directories inside, like for every device. Copy the driver into selected directory.

3. Use HOWTO/Slipstreamfiles guide to link the driver files in reactos.dff. INF files should be placed in Reactos\Inf dir, SYS - into Reactos\System32\Drivers, EXE and DLL - into Reactos\System32 directory.

4. Build the ISO, burn it and install. You should see your files being copied in 1st stage of install. On 2nd stage, if all goes well, you should see them being listed in debug log.

5. If something goes wrong, see the possible reason. If the files are not being copied, see if they are included into bootcd properly - possible path mismatch in reactos.dff? If they are not installed in 2nd stage - the problem must be in the driver INF file - see if the PCI/Vendor_Device code is exactly the same as the one for your device (SUBSYS also matters!). Also, Multifunction device INF are not supported, (MF\PCI_VEN_12EB&DEV_0002), you should convert them to ordinary ones (in the same example: PCI\VEN_12EB&DEV_0002).

Manual Installation

If you want to install some non-PNP drivers in ReactOS you need at first the binary itself but also it's settings in the registry. This howto tells you how to accomplish that.

In an ideal situation, you'd need a PC emulator (Bochs will do, but VMware is faster), a copy of Windows NT 4 and ReactOS. Boot into Windows NT 4, open regedit, save the entire registry to a .reg file, then quit. Install the driver, restart if necessary, then open regedit and save the entire registry to a .reg file again - a different one this time. Compare the two either manually, or run them through DIFF. From this, you should find the settings needed by the driver.

You can then copy the driver over to your ReactOS system32\drivers folder, and add the necessary settings to the registry.

The registry is fairly straightforward. To edit it, you can either do so from within ReactOS itself (using regedit), or with a text editor. To do this, you'll most likely need the source code. Go into the bootdata folder, and open up hivesys.inf in Notepad or your favourite non-formatting text editor. For each driver (*.sys file) you want to test, just copy and paste an existing chunk from another driver, changing the type and start type as appropriate (eg: Video, Automatic...) - see the bit at the top for a list of the driver types.

Once you're done, run MKHIVE (in the tools\mkhive folder of the source tree) passing the bootdata folder as the first parameter, and the target folder as the second. In my case I have to do this: ..\..\TOOLS\MKHIVE\MKHIVE . V:\REGISTRY ... from the bootdata folder.