Quick links

Have you ever had the need to install Windows XP from a hard drive running other Windows version? Have you ever felt that the installation from the Windows XP CD takes a really long time? Did you need to throw out slipstreamed CDs just because you slipstreamed the wrong AHCI drivers? Have you ever wondered about what the Dynamic Update section of the graphical installation is supposed to be? Were you ever in need of having the Windows Recovery Console booted quickly and without the need of a CD? This article will help you with all these issues!

 

Summary

Summary: There is a rather hidden way to install Windows XP from any other Windows version (not sure about Win98 generation, though) or possibly even Linux from your hard drive itself, eliminating the need for a burnt CD or a CD drive. This involves using the WinNT32.exe from the original Windows installation CD to override the checks that the main Setup.exe has. As a side effect, it will also speed up the installation significantly.

Applies to: Newly installed OS: Windows XP, Windows XP x64 Edition, Windows Server 2003, Windows 2000, Windows NT (Note: I will call any of these as Windows XP in this tutorial, but those other OSs listed here also work the same way); Installed from: Any Windows version after Windows 98 (including Windows Vista and Windows 7) for WinNT32.exe (maybe including Linux and Mac OS with WINE, not tested), any Windows version or MS-DOS for WinNT.exe (Note: I will call these OSs as "old Windows" in this guide).

First step: preparation

First, you have to prepare your system for installation. The first step is to plan where your Windows XP will be on the disk. If you want your Windows XP installation to co-exist with your current Windows, you need to create a new primary partition for it. Windows XP setup has its own partitioning tool, but it's very basic and very limited; in fact, so far no Microsoft partitioning tool has been particularly good at partitioning. So I recommend downloading the Linux-based GNU Partition Editor (GPartEd). Write it to a CD or a USB drive as written here, then reboot and launch it. Accept the default boot setting, when it asks about keymaps press Enter, when it asks about the language either press Enter again or enter the numbers for your language that are given in the table and press Enter, then when it asks about X configuration press Enter again. You will see the GPartEd screen with all the partitions on your drive listed. Make space for your new Windows XP installation by resizing your other partitions if there is no unallocated space yet, and then create a new primary partition of the type NTFS. You can also add a label to the partition here, that will be useful later ("WinXP" is my preferred label in this case). Apply partitioning, wait for it to finish (this may take a few hours depending on the size of your partitions), then make sure that the "boot" flag on your old Windows partition is still there (if it was removed, readd it). Close the GPartEd window, double click the Turn Off icon, choose Reboot, OK, wait for it to exit to the command line and ask you to remove the media, then remove the USB drive or the CD and press Enter. Note: Back up your data before partitioning, there is always a slim chance that something might go wrong (although most of the time it's easy to fix those by using the old Windows installation CD to repair your boot loader). Also, It might be possible to write Windows XP into the same partition that your old Windows is running on, but it's not recommended, since it can create boot loader conflicts, besides, it's easy to delete the old partition after you install Windows XP.

Second step: slipstream (optional)

The second step is to set up your Windows XP installation CD. Boot into your old windows and insert your Windows XP CD. Check to see that the automatic setup has the "Install" option greyed out, saying that you need to restart the installation from the CD because your current Windows version is newer than the one on CD. This is what we will manually override later. Now if you want to slipstream or change something in your Windows XP installation CD, copy all of the files to a folder on your hard drive (such as C:\XPSetup). Normally you would want to do that since Windows XP installation CDs are usually unpatched and need Service Packs installed; if you have an AHCI-based system, you will also have to slipstream the AHCI drivers to your Windows XP setup in order to make it find your hard disk during installation. If your XP didn't come with a CD, you should have it extracted somewhere on your drive already. Once you're done copying your CD, eject it from your drive and put it somewhere in your archive, and download and install nLite, which is a GUI-based slipstreaming utility. Run it, select your XP Setup location, skip though the Presets window, press "Integrate a service pack" if you want to add a service pack (this is what most users will want to do), "Hotfixes and Update packs" if you want to install other updates, "Remove components" if you want to get rid of some of the unneeded components in your Windows installation, and "Options" and "Tweaks" if you want to change misc. options in your new installation. Note that you can select several categories at once, and you do not need to select "Create a bootable ISO" as it will be a waste of your hard drive space! Then choose your options in other steps of nLite, they should be pretty self-explanatory. When installing a Service Pack, you have to download your latest service pack for the system - SP3 for Windows XP, SP2 for Windows Server 2003 and Windows XP x64, and SP4 for Windows 2000. There is no need to install older packs, since latest SPs have all the updates from the older packs in them as well. If you need to slipstream a driver and you need it to be loaded before the drive detection (like AHCI/RAID), you need to use the Textmode type slipstream. If you don't know which driver to choose from the textmode list, just choose all of them, the OS will use the correct one automatically. After you're finished with nLite, copy your updated Windows XP installation source to your newly made partition, for example, D:\XPSetup.

Third step: start of installation

Once you have your installation source set up the way you want, we can now proceed to the third step - installation. Note: This part is rather tricky and may lead to your system being unbootable! Make sure you still have your files backed up, have the GPartEd LiveUSB and your old Windows installation CD on hand. Now you need to open your command line (Note: not sure if the command line part is necessary, but it won't hurt). Press Win+R and input cmd, then in the command prompt input the drive of your new Windows XP installation, in my example D:, then enter cd Path\To\Your\WindowsXP\installation\source, in my example, cd XPSetup. Now this is where the differences between the x86 and x64 versions of Windows kick in. If you're installing a 32-bit windows (that's the majority of them), then you need to enter cd i386 here; if you're installing the 64-bit version, you need to enter cd amd64. Now if you are currently running any version of Windows after Windows 98, enter this: WinNT32.exe /syspart:D:\ /tempdrive:D:\ provided that D: is the drive you're installing Windows XP into. If you're running Windows 95 or Windows 98, enter this: WinNT32.exe /tempdrive:D:\ where D: is again the drive where you want to install XP. And if you for some reason happen to be running Windows before Windows 95 or DOS, enter WinNT.exe /t:D:\ where D:\ is your target drive once again.

Fourth step: graphical installation

You will now automatically proceed to the fourth step. This is the first part (of three) of the actual Windows XP installation - in this part your old Windows helps out Windows XP with its installation. After the command in the last step was entered, you should see a new fullscreen window with the familiar Windows XP setup screen open. However, you should immediately see a message "Setup cannot continue because the version of Windows on your computer is newer than the version on the CD". If Windows you are currently running is Windows 7 or Vista, it is slightly difficult to get around this issue, since Microsoft has put a hard system lock on doing that for some strange reason. In that case, you need to open your registry editor (Start -> regedit.exe), navigate to HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows, then make sure a key named AppCompat exists (if not - create it), then add a DWORD value DisableEngine with value 1 and restart the PC. That should force the system to execute the installer. If you're on Windows XP or older, then it's easier - just click OK, and the setup will happily continue. You will be asked for the type of install, and "New Installation (Advanced)" should be selected, with no other options to choose from (unless you're running Windows 98 or Windows ME, in which case it should allow you to upgrade your system, but then the normal setup would work as well and you wouldn't be reading this, now would you?). Click Next, and it will give you some options to choose from. Click on "Advanced Options" and you will see two text input fields. The first one should point to your Windows XP installation media and normally you don't need to change that. The second one, however, has \WINDOWS written on it. Change this to D:\WINDOWS provided that D: is your Windows XP installation drive. Then uncheck the lower tickbox (the other one should be greyed out) and press OK. You can also change your language in this window, and once done, click OK. In the next window you will need to enter your CD key, so do so. This will end the "Gathering information" part of the setup, and you will enter the "Dynamic update". This is a very nice thought and a very poor implementation - basically this function allows the setup files to update themselves, but this part is instantly skipped if you install Windows XP through the CD, so like 98% of the people never see it. I'm also not sure if this service still works or not and what it updates, but it surely doesn't do any harm, so allow the setup to update itself. After that the temporary files will be copied to your new Windows XP partition, and the setup will ask if you want to reboot. Now if you're thinking about having both Windows installed on the save drive, you can safely wait for the reboot. If you are planning to delete your current Windows and switch entirely to Windows XP, then press Esc to cancel reboot, use Windows Explorer to navigate to your Windows XP drive and perform a search for "migration.inf" (don't forget to include hidden and system files). Once you find it, delete it. That file contains data about the current layout of the drives on your current Windows and will be used to synchronise the letters between Windows, making Windows XP installed on the D: drive (in my example) instead of C:, which doesn't make much sense if you're going to delete the C: drive of the current Windows anyway.

Fifth step: console mode installation

After reboot you should enter the fifth step, and the 2nd part of Windows XP installation. What you see should be familiar to you - that's what you see when you boot from CD! However, there is one major difference here - this way the DOS-like setup will complete loading drivers like ten times faster than it would if it was reading from the CD since the hard drive is much faster than any of the CD drives. Accept the license agreement and you will get to the partitioning part. You will have all your partitions listed here again, so go ahead and press Enter on your Windows XP partition (if you put a label on it earlier, you will see it here, making it a lot easier to tell partitions one from another). The setup will ask you if you want to format the partition. Make sure you choose not to! Otherwise it will also erase your installation media as well, and you can't have that. It might complain that there is already a Windows folder in the selected partition, go ahead and ignore that, it's safe to continue the setup on that partition - no files will be overwritten. Now you will see a few files being copied there with the speed of light and the setup will ask for the second reboot before you know it. Accept that.

Sixth step: finishing installation

The sixth step is to continue the installation from your newly setup Windows XP. If everything went right, you should boot into Windows XP setup. If it didn't, you will boot into your old OS (or not boot at all), in which case you have to boot into GPartEd again, remove the boot flag from your OS partition and add it to your Windows XP partition, then reboot again. Once you are in the setup, just continue installing it as you do normally, the only difference from the CD install is that it doesn't ask you for the CD key since you've entered it beforehand. The setup should complete successfully and reboot again. Well, now you have Windows XP successfully installed! However, you would probably want to either delete the old Windows partition and let Windows XP take the remaining space, or create a dual boot setup in order to have both OSs available.

If you want to delete your old Windows: Again, make sure you have everything backed up, especially from the old partition (you can simply copy anything you need to your new partition). Boot into GPartEd, delete the partition of the old OS and resize your Windows XP partition to fill in the gap, then wait a few more hours for it to complete. Once it's done, make sure you have your boot flag placed on your Windows XP partition and reboot. You will notice that your disk size has increased.

If you want to have a dual boot setup: Read some guides about that on Google, since different OSs have different ways of setting up those. Personally I'd use GRUB, the Linux boot loader, to carry out any dual boot needs, you can download and install it on Windows, too, but it doesn't come with visual list editors as most of the Linux distributions do. Though knowing the command line can prove to be a very good thing, for example, in order to boot any windows from the GRUB (Legacy) command line, you need to write root (hd0,0), chainloader +1, boot - that's all there's to it to boot Windows from the fist partition of the disk. Likewise to boot from other partitions, you just need to change the numbers after the "(hd0," part. Windows-based boot loaders are not nearly as reliable and a lot more limited.

Troubleshooting

Normally, you shouldn't have any problems with this. However, I haven't tested this too much, and have got a few problems (that shouldn't rise if you followed this guide I believe, but could rise if the wrong drive is selected for installation anyway).

If after the fourth or sixth step you can't boot (you get a windows error message about a missing bootloader or an unreadable drive), that probably means that you have either set your old Windows partition to be the Windows XP installation partition or windows XP bootloader was installed there instead of the new partition. Either way the resolution is the same. You can easily check if that's the case by going into GPartEd and looking at boot flags. If the boot flag is on your old Windows partition and it boots Windows XP setup, when it's on your Windows XP partition it gives you "NTLDR not found" error and when it's on your System Reserved partition (Windows 7 only) it gives you another error, this is what happened. Now, if your previous Windows was Vista or Windows 7, boot from the Windows installation CD/USB and select Repair. If at this point it asks you if you want to repair boot errors, accept. Note that this will reset all of the BCD options you had in your Vista/7 loader. After that's done, it will reboot, make sure you boot from the CD/USB once again and again go to Repair. If you didn't get that message before, then you already are at this step. You should see a list of drives you have with your old Windows installations. Select the one you want to be able to boot (usually there is only one) and let it repair it. Once done it should boot into your old Windows once again.

If after repairing your bootloader you can no longer boot into Windows XP or its setup after putting the boot flag back onto it, you need to change the location of the Windows XP bootloader (NTLDR - New Technology Loader). You need to copy two files from wherever the current location of NTLRD is to your Windows XP partition. Open Windows Explorer, set it to show hidden and system files (look into Folder Options from the Tools menu) and navigate to the C: drive. You should see three files there - boot.ini, NTDETECT.COM and ntldr. Copy NTDETECT.COM and ntldr files to your Windows XP partition to the root of the drive (in my example, D:). Don't copy boot.ini, we will generate a new one. Now boot from the Windows XP CD if you can, wait for it to load and then press R to enter the Recovery Console. There, log into your Windows XP (you will need to issue the administrator password - this is the password you issued during your Windows XP setup, if you got there, if not, it's blank - just press Enter. Note that if you enter the wrong one three times, the system will reboot.), make sure you're in the right partition by entering dir boot.ini (if it finds it, you're in the wrong drive, reboot; you can use this command to locate other files to make sure you're in the right drive, too; the drive letters here are totally erratic and don't mean anything), then issue these commands: bootcfg /rebuild and fixboot. After the first command, you will be asked about what the name of the OS is, just enter what you're installing (in my example, "Windows XP x64" or "xp64" or something similar, it doesn't matter too much). The second command is automatic. You can additionally issue fixmbr, but that will prevent your old Windows from booting and you'll have to go through all the recovery process again. Once this is done, you should be able to boot into both systems depending on the position of the boot flag.

And finally, there is one point that I didn't discuss: how to get the Recovery Console as a boot option for Windows XP so you wouldn't need a CD for it? That's simple: you need to run winnt32.exe again as indicated in the third step of this guide, but instead of entering WinNT32.exe /syspart:D:\ /tempdrive:D:\ you need to enter WinNT32.exe /cmdcons /tempdrive:D:\ or just WinNT32.exe /cmdcons, if you want to install it on the current drive. Of course, you need to have a working bootloader in order to reach it, but if you're installing XP from another NT-based Windows version, this could very well come in handy in the installation as I wrote above.

That's it, I hope this will be helpful. If you have any questions, just comment below.