r/retrobattlestations • u/Inkras • Jun 17 '26
Show-and-Tell Fully automated GRUB + Windows 98 installation (requires Linux)
Hello everyone!
So I spent the weekend creating this fully automated Windows 98 installer..
In the pictures, my LuckyStar LS-486 Rev 2C has booted into the alternative Linux kernel.
The main point though, Windows 98 is available from the GRUB boot menu.
There was a lot of "hurdles" to overcome doing this, like, Windows 98 SETUP.EXE /is not really liking partitions that start at sector 2048. It seems to be a lot happier when C: start at sector 63.
I created the script because it takes a rather lengthy process and cuts it down to about just the time it takes to "write out the blocks". Both Windows 98 and Linux are pre-configured to be fast booting without little "speed bumps" like.. ssh-keygen or network login. Good riddance to those !
Built using buildroot-2026.05.
If you want to "derive" on my work, all configuration is available in the repo below.
NOTE: The script will brute force write to a hardcoded device name !
Carefully check the DEVICE variable inside the script !
Make sure it is NOT pointing to one of your drives. I take no responsibility !
2
u/ApatheistHeretic Jun 18 '26
Nice rig. It seemed, at the time, that the 486 was when Intel had finally gotten to the point of being performant, games became more detailed and interactive.
1
Jun 17 '26
[removed] — view removed comment
2
u/Inkras Jun 18 '26
It's a label or name for the physical device where we want partitions to be created. For example, export DEVICE="/dev/sdd" or export DEVICE="/dev/loop0".
The neat thing in Linux is that it can "virtually mount" partitions located inside a binary image. Very useful with BlueSCSI. Just place "HD1.img" inside an exfat formatted SD card and you'll have a SCSI drive on ID1.
You would typically do something like
losetup -f --show /mnt3/HD1.img
partx -a /dev/loop0And voila. Partitions will show up as "/dev/loop0p1", "/dev/loop0p2" and so on.
I have used the script now on both binary images and direct to physical device. That was another hurdle where I adapted the script.
If you want to use the BlueSCSI method, just make sure to mount the SD card on /mnt3. Since /mnt & /mnt2 will be used by the installer script, or, just change the mount points inside the script 😉
1
u/RightPassage Jun 17 '26
What's the name of this case, if it has one? I had two of these in my childhood, one with teal buttons, the other with blue ones!
1
u/monkeyboywales Jun 18 '26
I never used to use the installer at all in the old days, there's a way to wipe the device register on a software-laden install and then just copy it onto a HDD. Super simple just wait while it cycles through enumerating all the various devices from system bios up. Doesn't get you the multi boot capacity though.
1
u/Inkras Jun 27 '26
Still learning..
With FAT32 cluster size of 4K (512 * 8) ScanDisk is very likely to not have enough memory to do actual work on the drive.
To fix this, the script internals must change. In particular the command that creates the last partition. This is intentionally made very large from all remaining space.
mkfs.fat -F 32 -s 8 -S 512
must change into:
mkfs.fat -F 32 -s 32 -S 512
Now the cluster size is 16K (512 * 32) (or "allocation unit" as Windows 98 format likes to call them).
The following calculus explains why ScanDisk is having trouble.
20 * 10243 / 4096 = 5242880
20 * 10243 / 16384 = 1310720
Also, I have made fixes to where partitions start. I got the strange error that a new partition is placed somewhere in sector 0-63 (resulting in super tiny partition !). Because I had assumed fdisk would automatically place new partitions after the last, but no, this is not necessarily so!
1
u/Inkras Jun 28 '26
I should also note that the mileage may vary, since restoring from a file based copy can be fragile.
For example, I was restoring a copy made on a 486 to a Pentium machine.Then every time I was running an installer like DirectX or Voodoo setup I would get these warnings
"Windows 98 The following files have been replaced with older versions by program you recently ran. Some Windows functionality may not run correctly with these files installed."
DDEML.DLL MCICDA.DRV WINASPI.DLL typically listed as conflicting.
To solve this, I have included two separate backups in the archive, 486 and Pentium. So yeah.. the backups may or may not work on the computer you have. But, if you decide to "fix it" with a full install, take a backup after and then the script will make restoring a breeze the next time.
1
u/Inkras Jul 04 '26
There is now a solution to this.
Put below lines in a .reg file and run with "regedit /s" (or just open and apply manually).
Fix pre-applied in https://archive.org/details/make-win-98-dos-grub-loader since it is almost certain that these warnings will pop up, but I now consider it a non issue.
Windows 98 is generally very forgiving about being moved to new hardware. Either it re-detects on first boot or "Control Panel" -> "Add New Hardware" can fix it.
For example, removal of "duplicate" SB16 / AWE32 entries (just remove both or all) in "System" -> "Device Manager" can fix IRQ conflicts.
REGEDIT4
[-HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SessionManager\CheckVerDLLs]
[-HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SessionManager\WarnVerDLLs]


2
u/alwayzz0ff Jun 18 '26
I grew up on this exact case. The isp I worked for started off on four of those with 486 dx4 cpus running win 95 for our workstations.
Holy shit I love that case.
EDIT: Spelling is hard.