Windows 9x QuickInstall ISO Creator Package
(C) 2012-2024 Eric Voirin (oerg866)
Windows is a trademark that belongs to Microsoft Corporation.
This project has NO ENDORSEMENT FROM ANY INVOLVED PARTIES, SUCH AS MICROSOFT.
Please don’t sue. I just like old computers :(
This is a framework that is intended for creating and preparing Windows 98 installation ISO images in a way that is optimized for extremely quick installation, similar to nLite, but with a completely different method and context.
It takes the root file system of an already installed Windows 98 system and packages it, whilst allowing drivers and tools to be slipstreamed at will.
For the installer, it uses Linux as a base, paired with some tools to allow hard disk partitioning and formatting, as well as a custom installer with a custom data packing method that is optimized for streaming directly from CD to the hard disk without any seeking.
Bottom line, this means that the effort for the user to build an ISO is higher than for example nLite, but the degree of customizability is also massively increased.
On a Pentium III class machine with ATA / ATAPI Ultra DMA available for all storage devices, Windows 98 — using an ISO built with this framework — can be installed from CD in roughly 60-90 seconds.
See BUILDING.md.
Okay. Go to the releases tab :-)
- Microsoft Windows 98 (Build 4.10.1998)
- Microsoft Windows 98 Second Edition (Build 4.10.2222)
- Microsoft Windows Millenium Edition (Build 4.90.3000)
Support for international versions is not properly tested. It should work and in my testing it does, but YMMV. Please report bugs!
NO versions of Windows 95 are supported due to non-PNP device detection being part of the DOS-based installer stage.
- i486-class CPU, at least a 486SX (but it will be very slow)
- 24 MiB of memory
- An IDE / SATA / SCSI controller supported by Linux
There are several provided methods to boot into Windows 98 QuickInstall:
-
CD/DVD-ROM boot
The Windows 98 QuickInstall ISO image can be booted on any computer that supports floppy-emulation CD-ROM boot.
Recommended if you have a PC that supports CD-ROM boot.
-
1.44M floppy boot with DOS (
dosflop.img
)This is a 1.44M floppy disk image that contains FreeDOS and
LOADLIN
to boot the kernel directly off the CD-ROM.Recommended if you have a computer that does not support CD-ROM boot or wish to install from a hard disk.
Also recommended if you have the QuickInstall files on an ATA/ATAPI media or other device that is exposed using Int 13h
If you have a SCSI CD-ROM, the image must be modified accordingly.
-
1.44M floppy boot with tiny kernel (
floppy.img
)This is a 1.44M floppy disk image that contains a proper kernel.
Recommended only if you have QuickInstall on a non-ATA/ATAPI media and your BIOS does not support CD-ROM boot.
The kernel on this image is limited in functionality, driver support and does not enable kernel logs (no
printk
, nodmesg
)Due to the strong compression, it takes a very long time to boot on slow systems. It is only meant as a last resort.
-
Removable media such as USB Flash Drives
Using the system preparation script it is possible to create bootable USB images. The steps to do so are described below.
-
Windows 7, 8.1, 10 or 11
OR
Modern Linux variant or WSL
Tested with:
- Windows 10 21H2, Build 19044.2846
- Windows Subsystem For Linux (Ubuntu 20.04.5 LTS)
- Ubuntu 20.04.4 LTS (native)
-
python
(3.5 or newer)-
On Windows 7 and 8.1:
Download a python installation package from https://www.python.org/downloads/
-
On Windows 10 and 11:
Use the Microsoft Store to download an appropriate variant.
-
On Linux (Debian, Ubuntu):
sudo apt install python3.8
-
-
Script requirements
Run the following command in the framework directory:
pip3 install -r requirements.txt
-
mkisofs
from cdrtools-
On Windows:
Tool is bundled with the framework, no action required.
-
On Linux (Debian, Ubuntu):
sudo apt install genisofs
-
-
wine
(Linux Only)sudo apt install wine
Many parts of the ISO building process are Windows specific and not able to be cleanly implemented natively on Linux, such as modifying system registry, parsing driver INF files, etc.
-
86Box (recommended) or another virtual machine capable of installing Windows 9x
-
Software to extract files from a hard disk image
e.g. 7zip (on Linux:
sudo apt install p7zip-full
)
This script serves the purpose of preparing an installation for packaging into an ISO and/or USB image file.
It takes the following parameters:
-
--iso
Instructs the script to create an ISO image with the given file name
-
--usb
Instructs the script to create an USB key image with the given file name
-
--osroot
Specifies a Windows 98 / ME system root directory (“OS Root“) to be used.
This can be specified multiple times, in which case the installation wizard will show a selection menu.
-
--extra
Instructs the script to add the files in this directory to the final ISO/USB output.
Default:
_EXTRA_CD_FILES_
in the framework directoryThis can be specified multiple times, all the files in all the directories will be added in this case
-
--drivers
Instructs the script to process slipstream all drivers in this directory.
Slipstream means that these drivers will be installed automatically when the hardware for them is detected at any point of the installation’s lifetime, even when the hardware is not yet present at the time of installation.
Default:
_DRIVER_
in the framework directory. It already contains a curated selection of drivers.This parameter can only be specified once.
-
--extradrivers
Instructs the script to process all drivers in this directory and add them into the extra drivers directory.
These drivers are NOT slipstreamed and thus not automatically installed. They are however made available on the resulting installation media and can be installed by pointing the Windows 98 / ME
Add New Hardware
wizard to theDRIVER.EX
directory on the media.The reason for this folder’s existence is the vast selection of hardware available for the operating systems and the varying compatibility / size of them.
Very large drivers are recommended to go in here, as well as drivers for which it cannot be assumed that different versions have different compatibility and speed.
For example, it is better to choose an older driver for an older nVidia GeForce card even though a newer one would also support this hardware for speed reasons, whilst the newer driver should also be available, in case newer hardware is present.
Default:
_EXTRA_DRIVER_
in the framework directory. It already contains a curated selection of drivers.This parameter can only be specified once.
-
--verbose VERBOSE
This parameter controls console output verbosity of the script.
Where VERBOSE
is either True
or False
.
The default is False
.
This parameter is currently broken, sorry. It’s always quiet.
-
Install Windows 98 / ME in a virtual machine or emulator, just as you want it.
I recommend using 86Box using the following configuration:- Machine:
- Machine Type: Slot 1
- Achine: [i440BX] ABIT BF6
- CPU type: Intel Pentium II (Deschutes)
- Memory: 64 MB
- Display:
- Video: [ISA] VGA (or any video card that does not have an integrated driver in Windows 98 / ME)
- Network:
- None, VERY IMPORTANT TO MAKE SURE NETWORK DRIVER SETUP STAYS INTACT!!
- Hard disks:
- IDE (0:0), raw image, big enough to install the operating system.
It is recommended that you install Windows in APM mode, because ACPI is a buggy mess (
setup /p i
).WARNING: The operating system must be installed from the HARD DISK and it must contain a folder containing the Windows 98 CAB files from the CDROM. Otherwise, drivers can not be slipstreamed.
NOTE: It is recommended that NO extra drivers are installed in this VM.
- Machine:
-
Configure the Windows 98 / ME installation as you wish. Examples:
- Machine name
- User name
- System options
- Themes
- Patches
- Utilities
- Software
-
Shut down the virtual machine and DO NOT TURN IT BACK ON
-
Use 7zip or an imaging software and extract the entire root of the
partition you installed Windows 98 to.Extract all files into a directory. We will call this the OS Root. The default for this is
_OS_ROOT_
in the framework directory.On Windows, you can open the image file using the 7zip File Manager or the 7zip context menu. Or WinImage, et cetera.
On Linux, you ca
16 Comments
orionblastar
Good work, I still use Windows 9X for emulation for DOS, 16 bit Windows, and 32 bit Windows programs. I do legacy systems and retro programming on them.
imiric
Very cool!
Is there an equivalent tool for Windows 11? I've used MSMG Toolkit and NTLite in the past to slim down the ISO, but it was a very manual and tedious process, and I still have to babysit the installation itself. I would like a tool that takes a predefined config file of what to remove, and then creates a fully unassisted installer. Obviously bypassing the online account shenanigans.
rasz
> 60-90 seconds
Thats impressive speed for an install that not just copies pre-installed system, but also includes Hardware detection and selective driver installation phase.
iforgotpassword
> with a custom data packing method that is optimized for streaming directly from CD to the hard disk without any seeking
This is nice. I've always wondered why they don't do this with the core parts of the os and then only extract additional components and drivers. But maybe back then the core was only a few MB and it wouldn't have helped so much…
I remember the setup taking ages. With 9x I don't think any install ever lasted longer than a year, so I did this a lot. :)
BloodOverdrive
Interesting. Will try.
CursedSilicon
I debated building something like this for a couple years with my "Ultimate Windows 98 PC" [1]
I found that I could take the machine to vintage computer events and it would (generally!) behave the entire event. I'd then take it home and put it back on the shelf for a few months. After I'd bring it back down to use it again, it'd throw a fit and usually require a reinstall! It's not disk rot since I use SSD's throughout
While this hasn't happened (this time) it's a constant looming concern, particularly when pressed for time to get something up and running for an event.
[1] https://www.youtube.com/watch?v=YETxI4rA_gs
Animats
Is there something that lets you install Windows 7 64 bit as a new install? That's the last version before ads and other unwanted features.
jonplackett
Fun fact: I (re)installed windows 98 so many times due to crashes, slowness, viruses etc that even now, 20 years later, I remember every digit of the 25 digit activation key.
RedShift1
This may install fast but it certainly looks hard to get going with it…
piokoch
Who on earth would like to install that?
I can understand installing Win 95, sentiments, blah, blah, first "real" windows MS system (Win 3.X was still some kind of windows manager on top of DOS).
But 98?
Maybe let's go hardcore and go with Win 98ME, the worst operating system ever (with Vista as a strong second-place contender), at least we can experience random blue screens, which were the major feature introduced by 98ME, and that surely should be replicated by a simulator, to feel those old vibes.
aussieguy1234
After getting blue screened one too many times with Windows 98, I ordered a Red Hat Linux CD.
I never went back to Windows and still use Linux to this day, nowadays with NixOS.
tpoacher
Running Win98 is still the most reliable way to get Discworld Noir to actually run; a gem of a game, made almost useless by the aggressive DRM practices of the time.
Bookmarking this for future use :)
zb3
For those who don't want to install:
https://copy.sh/v86/?profile=windows98
submeta
No offence to Windows lovers, but my God is this ugly. Current versions of Windows look great. But back then Windows looked horrible. Apple managed to produce beautiful interfaces back then, as they do now.
smusamashah
This reminds of the Ghost (was it Norton Ghost?) tool. I use to experiment with the file system and try out many many all kinds of softwares from Internet and software CDs. Those CDs use to come with 100s of softwares of all kind. I use to buy them and then try out every single one of them. I use to maintain an index, using IYF, to find a software in any of those CDs.
Anyway these softwares use to have there crack/patch tools with them (with music and effects and whatnot). These cracks often had virus or trojen in them. I have bored my windows many many times. Ghost helped with that immensely. I had 1 or 2 fresh install with basic setup ghost backup always available. After every bork, it only took a minute to restore my windows to fresh clean state. Kaspersky was the best anti virus back then, no other tool repaired my corrupted softwares like it. Norton anti virus use to scream only after getting infected itself.
We have it lot easy now.
klaussilveira
We need one of these for the Raspberry Pi, but native. And old monitor + pi inside would be an amazing retro PC build. I have it running on DosBox, but it's not that great.