0

How do I install windows 8.1 on a laptop running legacy BIOS firmware? The laptop in question is a Toshiba Satellite C870D-11X that originally came with a windows 8.1 OEM install.

I've downloaded the Windows 8.1 ISO from Microsoft's website and burned it to a USB using the dd utility running under Debian 11. When I put the USB in the laptop and enter the BIOS, a USB device is displayed in the boot order but no name is attached to it and I cannot boot from it. If I put the same USB in my UEFI desktop machine and enter the UEFI firmware interface, I can boot the installer just fine.

Microsoft's website does not offer a BIOS flavour of the install medium and I have searched DuckDuckGo and Google for hours, with the only reference to the same problem being a user question on Microsoft's own site that contains an answer which does not solve the problem at all.

Any help is much appreciated!

Edit: see @Akeo's great answer below for a proper explanation and solution. I'm also leaving an explanation of what I did below, even though it is practically identical to the accepted answer, save for a single detail. Every one of the steps outlined below was performed using fdisk except of course the final copying of the files.

I created a new MBR partition table (apparently known as a DOS partition table in the fdisk lexicon), I then created a single 5GiB partition and formatted it with a FAT32 filesystem before setting the partition type to "W95 FAT32" (code '0b') and setting the bootable flag. Finally I copied the content of the Windows 8.1 installer ISO (not the ISO itself) into the single partition and was then able to boot the installer from it.

One thing that seemed significant, I reached this solution through a process of trial and error coupled with reading a lot of material online; initially I set the partition type (not to be confused with the the filesystem!) to 'W95 FAT32 (LBA)' (code '0c'). Under this condition the Windows 8.1 installer would boot, but it pretty quickly complained that a required driver was missing and invited me to provide it, with no hint as to which driver it was.

Finally, I'm not actually sure at this point that the laptop in question does not run UEFI firmware. The very ugly user interface that lacks mouse support, coupled with the machines age, lead me to believe this is the case. However, the firmware settings do contain an option to select CSM mode and the ultimate Windows 8.1 install reported it was running in UEFI mode - as confirmed using msconfig.exe. I did not try booting the installer from a GPT drive with an NTFS partition, which on this machine may be entirely possible...

2
  • 2
    You need to use a utility that can create a proper MBR based USB boot drive from an .iso. As far as I know that is not dd. Look at Rufus. On a side note, you could just use the windows media creation tool and install Windows 10. It’s been a while, but I’m pretty sure Windows 10 will happily reactivate on the Win 8 system. Just make sure you install the proper version (home, pro, etc). Commented Apr 11, 2022 at 23:07
  • 2
    “How do I install windows 8.1 on a laptop running legacy BIOS firmware? Microsoft's website does not offer a BIOS flavour of the install medium …” - It should just be as simple as booting to the media. For a lot of reasons, Windows 8 most definitely supports Legacy Mode, as does Windows 10. There is no difference between an OEM and Retail Windows 8.1 ISO
    – Ramhound
    Commented Apr 12, 2022 at 1:35

1 Answer 1

0

Explanation of why what you have tried does not work

(skip this if you are only interested in a potential solution)

and burned it to a USB using the dd utility running under Debian 11

That won't work.

The problem is that you appear to be coming from Linux and believe that, because most modern Linux ISOs have the capability to do that (but that wasn't always the case!), you can just take an ISO and dd it to a USB flash drive, and it'll just work.

This is an incorrect assumption.

The only reason this works for modern Linux ISOs is because they are abusing the ISO9660 specification, that describes how ISO images should be created, and use a hack called ISOHybrid to add a partition scheme (which ISO9660 doesn't have) and separate file systems (ISO9660 only has one) on top of the ISO content.

While this is of course very convenient for Linux users, who then don't have to fiddle with SysLinux or GRUB bootloaders in order to make the ISO content boot for BIOS (though it should be said that, as far as UEFI boot is concerned, and if the distro maintainers did their job properly, all that it should take to create a bootable USB media is to extract the ISO files onto a FAT32 formatted flash drive, so one could say that the actual need for ISOHybrid can be seen as 'disputable' for UEFI, especially as UEFI was designed to avoid this whole nonsense of having to write media at the sector level to make it bootable... which is what dd does), it remains that this method of creating images that work both when burned to CD/DVD and dd copied to USB media is a clear abuse of the ISO9660 specifications, and because of this, Microsoft has (so far) preferred not to join Linux distro maintainers in using the very nonstandard ISOHybrid method for their ISOs.

Therefore, you can NOT use dd to write a Microsoft Windows ISO onto a USB media and expect that to boot. Instead you have to extract its content to a FAT32 or NTFS media, and (possibly) sort out some bootloader installation.

Note however that, unlike what is the case for some Linux distros, Microsoft always makes sure that, if you want to install the system in UEFI mode, then extracting the file content to a FAT32 or NTFS formatted media is all you should ever need to do to ensure that your media can boot on a UEFI computer.

There is however a small caveat to the above in that, most of the recent Windows ISOs contain a file that is larger than 4 GB, which requires the use of NTFS to extract the content, and a lot of older UEFI platforms do not have native support for UEFI boot (but it needs to be pointed that a lot of recent platforms and motherboards do, and that there exists solutions for platforms that don't).

Possible solution on how to accomplish what you want

Now, your main problem is that you are trying to create a bootable media for BIOS and not UEFI, which means that you need to do 3 things:

  1. Partition your USB using an MBR partition scheme (not GPT) and create a single NTFS partition (NB: This could also work with FAT32, but for the sake of not having to cover multiple options, I will only cover NTFS).
  2. Extract the Windows 8.1 ISO content to the partition you just created.
  3. Install a Windows bootloader into the MBR as well as an NTFS bootloader into partition you created.

I expect you to be familiar on how to accomplish steps 1 & 2, but not step 3, which requires a bit more involvement if you are not already running a Windows platform, as is your case.

On Linux, you can however accomplish this using ms-sys, which is an application that is designed to install exactly the types of bootloaders you need.

I don't believe a ready-made ms-sys package exists for Debian, so you will have to recompile it from source, but once you have done that, and assuming that your USB device is /dev/sdu, you should be able to accomplish step 3 with:

./ms-sys -7 /dev/sdu
./ms-sys -n /dev/sdu1

The first command installs a Windows 7 boot record into the MBR (the same boot record is used for all versions of Windows since Windows 7, so it doesn't matter that you are trying to install Windows 8.1). This boot record basically chain loads the boot record that is installed on the NTFS partition, if any.

The second command installs an NTFS boot record that will load the bootmgr executable from the NTFS file system and run it, which is how the (BIOS) Windows installation process ultimately gets started.

Pay attention that the argument for the first command is the whole disk device (/dev/sdu) whereas the second command uses the first partition (/dev/sdu1).

Or, if you have access to a Windows machine, and as suggested by somebody else, you can just use a utility like Rufus, that does exactly what I have described behind the scenes (including using the ms-sys code).

Hopefully, this should get you sorted with creating a Windows 8.1 installation media from Debian GNU/Linux.

[Disclaimer: I am the main developer of Rufus]

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .