VOGONS


First post, by Orkay

User metadata
Rank Member
Rank
Member

Preface.

For those who want to cut to the chase, you can skip this section, as it just highlights everything that leads up to this project.

I'm sure we've all been there - waiting for the brand new disk partition to format, riding through the usual motions of installing Windows 95, scurrying for the right driver/update disks, and losing countless hours that could've been spent playing Diablo. While the traditional method of installing old versions of Windows with a boot floppy and a setup CD will eventually get your computer in the state you want it in after manually installing everything, it's incredibly tedious if you find yourself reinstalling Windows regularly, needing to deploy many computers for a LAN party, or just having little free time to work with. While I personally have more time on my hands than I'd like to admit, I still didn't want to wait through so much of the installation and have to constantly attend one or more computers, so I needed another approach.

Windows NT Server has a nifty program called Network Client Administrator, which can be used to copy the barebones DOS network drivers to a DOS boot floppy and generate client-specific information for it. Each floppy disk would then be inserted into a respective client, boot from it, log in with an account that can read from the Clients share, and run through the installation procedure without the need for a CD-ROM. This works well, but floppy disk access is still very slow. With a few small utilities, I created boot images that prompt for a computer name before loading the network drivers, one for each operating system. With a bunch of PXE-capable network cards handy, booting from a floppy image over TFTP becomes much quicker since it is copied to RAM, though changes to the RAM floppy are not persistent across reboots.

The next point of concern is reducing user intervention while running the setup program. Windows 95 and later operating systems include a built-in mechanism to automate some or all portions of the installation by reading from an answer file, the default being MSBATCH.INF. This file can be typed by hand entirely, or a program on certain Windows 95 CDs called BATCH.EXE can be used to generate one. It's a very useful program, but its limitations require appending to the answer file manually, which in turn requires knowledge of the structure of INF files. By manually adding registry entries, file copying lists, and updates for certain system configuration files, I was able to conduct a near-fully automated installation of Windows 95 complete with updates and drivers for all the detected devices.

Still, the hard drive needs to be reformatted each time a clean installation is to be carried out. The /q switch can be used EXCEPT when you create a brand new partition in FDISK for MS-DOS. If you happen to be formatting a large hard drive, you're going to wait a very long time for it to finish. Third-party partitioning tools like Super Fdisk or GParted do away with the mandatory full format, but I wanted to have my hard drive repartitioned and prepared for an installation automatically.

With some inspiration from an old Linux Gazette article, Core Linux became involved in the setup process. Advanced built-in scripting capabilities opened up new possibilities like automatically determining which DOS network driver to use by reading dmesg, and reading a remote text file to automatically specify a configuration to use based on the network card's MAC address. It required a lot of work over the course of four days, but once I had that set up, I thought I couldn't do much better... but then, a few additional modifications such as copying ALL of the setup files to the hard disk rather than a minimal DOS network client allowed Windows 95 to install even faster with less user intervention. This could do wonders for anyone else who's felt bored from installing Windows on many computers, but the main problem is that it was purpose-built for me only, and is not that user-friendly. A total rewrite of the solution proves to be necessary if I am to release it.

Enter HIERMA!

HIERMA is a set of Linux shell scripts and files I've been working on for the past two weeks so far. Provided you supply your own install CD, extracted drivers, and updates, Hierma will simplify the automation of Windows 9x Setup by preparing the hard disk to boot into a DOS environment that automatically runs your setup program with a total or near-total lack of user intervention up until everything has been installed (see issues section). For novice users, I'm creating a series of dialogs that guide them through the procedure, asking for input wherever necessary.

hiermadev9c.png
Filename
hiermadev9c.png
File size
46.87 KiB
Views
2072 views
File comment
HIERMA basic settings menu
File license
GPL-2.0-or-later

Expert users can run Hierma in a non-interactive mode using an existing database section. I'm not sure exactly how it'll play out, but ideally I'd like it to be done in a variety of ways, like selecting the answer section to use after booting to the program, or having it initiate a certain installation hands-free based on a MAC address specified in the database.

Once I complete this project, I plan to distribute it as a bootable ISO based on Core Linux and as a standalone script set that can run on top of an existing Linux or Unix-like system. The standalone script will be useful if you have one or more secondary hard drives in a system so you can prepare all of them at once. The boot CD will require at least 64MB of RAM installed in your system, so you might need to run it on a different machine if your target system has less than that. Even so, memory modules for old systems are super cheap nowadays, and I would recommend installing 64MB of RAM in Pentium 1 systems, anyway. Both variants will come with a tiny FreeDOS boot image to be used in the installation procedure, but you can also supply your own MS-DOS floppy if desired.

The initial release of Hierma will support all three releases of Windows 95, both editions of Windows 98, and Windows ME.

What does it do? Why should I use it?

Simplifying the automation of installing Windows is one key feature of Hierma, but not the only one. When Windows 95 searches its INF or (if DriverPath=1 is set in MSBATCH.INF) setup path for driver INFs, it expects to find the corresponding driver files in whatever the SourcePath setting in the registry is, which is the setup directory itself. This can lead to problems if you have drivers sharing filenames, such as the 3dfx Voodoo series. You'd have to rename some of the files and update the INFs accordingly. Hierma takes care of all of that for you by renaming duplicate files with numeric extensions and updating the destination INFs, or, if the data in two conflicting files match exactly, the new file is skipped. Drivers can be sourced from any directory and/or medium, and Hierma searches for drivers in all subdirectories from there.

hiermadev5a.png
Filename
hiermadev5a.png
File size
346.92 KiB
Views
2072 views
File comment
HIERMA handling duplicate driver files
File license
GPL-2.0-or-later

Another feature of Hierma is the ability to lay everything out for Windows to install updates, programs, and modifications. Since it's not always consistent as to which stages of Windows Setup that specific updates should be applied, I want to make this part as modular as possible. I've yet to create a working prototype for it, but I'm expecting everything to involve a menu or checklist of separate scripts that the user can run to configure a variety of settings like enabling user profiles, showing all files in Explorer with extensions, forcing a specific monitor refresh rate, and updating DST information. I'll also include many premade scripts in Hierma for loading RunOnce and post-Setup updates, including the USB supplement for Windows 95 OSR2 and later DirectX versions. (to reemphasize, non-free software packages like the aforementioned updates will NOT be included, just wanted to make that certain)

I expect to create an interactive disk partitioning dialog as well, which should allow the user to create FAT16, FAT16 LBA, or FAT32 partitions of whichever sizes they please, or create a single partition spanning an entire disk. Of course, partitioning will be completed in a matter of seconds thanks to a set of filesystem utilities available for Linux.

What about Windows 2000, or MS-DOS and Windows 3.1?

I do not plan to support DOS, Windows 3.1x, or Windows NT-based operating systems in the initial release, but I do have them in mind for later releases, along with dual-booting capabilities using SYSLINUX, or maybe GRUB or LILO if you prefer. DOS and NT4 aren't as capable of automatically detecting devices, so additional workarounds will need to be created. If I can find the right utilities to detect all sorts of PCI and ISA devices and their hardware configurations (both PnP and non-PnP), you might be able to get that Sound Blaster card working straight away in your new DOS gaming machine as if Windows 95 detected it.

If any of you are interested in this project, I'll report back with progress updates weekly. I'm looking forward to hearing what you think of this!

Last edited by Orkay on 2019-12-28, 13:03. Edited 1 time in total.

Reply 1 of 13, by DosFreak

User metadata
Rank l33t++
Rank
l33t++

May want to check against this, I've used it for several years and it works well and I've thought about updating it but haven't gotten around to it yet:
http://www.mdgx.com/ubcd/

How To Ask Questions The Smart Way
Make your games work offline

Reply 2 of 13, by Orkay

User metadata
Rank Member
Rank
Member

I've been having trouble getting the UBCD to install on a number of systems I've tried, including two that somehow failed to detect my IDE CD-ROM drives or assign drive letters because they couldn't find LocateCD.386. The one that did work seemed to freeze the keyboard and mouse regularly, though I'm not sure if that's actually a hardware-related problem. Is it meant to work with old hardware like a K6-2 and a PII?

In any case, a few things I think should set Hierma apart from a prebuilt install CD that runs entirely in DOS include the level of modularity I'm wanting to implement, as mentioned earlier with the menu-driven interface. I know the UBCD can be remastered and it's possible to abort installing extra updates upon reaching the desktop, but I want to make it more convenient for users to customize their installation to their liking; not everyone may want to install a service pack or modern programs, maybe they'd want something more vanilla while adding those few tweaks they want and loading all the drivers for their hardware. If you can write shell scripts, you'll be able to add external modifications for Hierma to apply fairly easily, though I do need to rework some of the more frequently used commands into their own scripts so it's not as tedious to create yours.

Apart from that, Hierma might speed up an installation of Windows due to the fact that it copies all of the install files underneath a Linux environment, which I can guess makes use of UltraDMA by default when DOS can't (unless a UDMA driver is loaded). I've yet to see for sure if it installs faster from a CD under Linux, but a proof of concept shows two different kinds of network-based installations I ran; the left computer uses Linux to copy every single setup file to the hard disk over FTP before rebooting, whereas the right computer uses Linux to load a DOS environment equipped with network components to install Windows from a network share. The left computer finished its installation faster.

I'm not sure how much of this project makes sense so far, so I'll just keep working at it and hope I have some new useful function to demonstrate soon.

Reply 6 of 13, by Orkay

User metadata
Rank Member
Rank
Member

I haven't posted any updates in a month because I thought nobody was interested in this project, but I have been making lots of headway into it, to the point where it can now prepare a hard disk for installing Windows 95 and automatically load new drivers at the user's choice potentially without interruption. The same can't be said of Windows 98 and ME since my driver copying script doesn't yet know how to copy catalog files from WDM-compliant drivers, and there's still plenty of bugs in the script set that need to be worked out. A video I made might be able to explain what Hierma does more clearly: https://www.youtube.com/watch?v=_MgNKrff7hg

Reply 7 of 13, by DosFreak

User metadata
Rank l33t++
Rank
l33t++

Don't get discouraged. I'm busy as I'm sure we all are. I plan to look into this project.

Concerning
"Another feature of Hierma is the ability to lay everything out for Windows to install updates, programs, and modifications."
"(to reemphasize, non-free software packages like the aforementioned updates will NOT be included, just wanted to make that certain)"

I'm wondering if approval was granted if these would be allowed like the rloew patches?

How To Ask Questions The Smart Way
Make your games work offline

Reply 8 of 13, by Orkay

User metadata
Rank Member
Rank
Member

I can relate to the whole thing about being busy, having worked on practically nothing but this project every day.

I wrote the original post when I was a bit tired, and may not have been specific enough about what all I'd provide. The core of Hierma is comprised of a set of scripts and self-made text files along with a minimal FreeDOS boot floppy, and, if using the boot CD, a version of Core Linux and the extensions required to carry out Hierma's operations. No third-party update packages are included in the core to keep the program small and versatile, as well as to play it safe regarding whether non-free update packages like Windows 95 OSR2's USB supplement are allowed on Vogons.

Even so, I do plan to create a CD containing a collection of drivers and updates optimized for use with Hierma. Where that'll go, I don't know; I might open a website later on. For now, I'm working on some much needed bugfixes; once I have that done, I'll post the updated version here for everyone to try.

Reply 9 of 13, by Orkay

User metadata
Rank Member
Rank
Member

It took me a while, as I had to implement yet more bugfixes, add a few optimizations, and prepare the whole thing for GNU GPLv2 compliance, but here it is... this build should be reliable enough that you could carry out an installation of Windows 9x with additional drivers successfully.

HIERMA core (includes scripts, a few FreeDOS programs, documentation, bootable ISO, and source code): https://drive.google.com/file/d/1ILJhxO7IVgCm … iew?usp=sharing
Tiny Core 5.4 source code (matches up with the Hierma ISO, zipped separately due to large size): https://drive.google.com/file/d/1lpV4MoDf2KH4 … iew?usp=sharing

This program contains no abandonware, so you will have to supply your own installation materials to use with Hierma. Many features are yet to be implemented, the interface and steps could have a bit more clarity, and the program is not entirely stable, so let me know how it goes. Enjoy!

Reply 10 of 13, by Caluser2000

User metadata
Rank l33t
Rank
l33t

Good effort.

There's a glitch in the matrix.
A founding member of the 286 appreciation society.
Apparently 32-bit is dead and nobody likes P4s.
Of course, as always, I'm open to correction...😉

Reply 11 of 13, by Orkay

User metadata
Rank Member
Rank
Member

Beta 1.2 is now available for download. This version provides many bugfixes and features, including network-based copying from your own FTP server, several internal updates to apply like the United States DST update, and a more versatile optional component menu and temporary boot manager installer. For the boot CD, nearly every core component has been updated as well, including Core Linux 10.1, SYSLINUX 6.03, and every Tiny Core extension. A new boot menu has also been added should you want to only boot Core Linux from the HIERMA CD-ROM. While this release may still not be fully stable, it should serve more of your needs.

Main HIERMA distribution: https://drive.google.com/file/d/1R0dhXkxOECSu … iew?usp=sharing
Tiny Core sources: https://drive.google.com/file/d/1EMyJHeMcqCNu … iew?usp=sharing

To boot HIERMA from the CD, 96MB of RAM must be installed in your system. Otherwise, you can use HIERMA on an existing Linux box to preload your operating system to a user-writable directory or secondary hard disk with your own configuration and drivers. Read up on /doc/quikstrt.txt for a quick guide on using this script.

If anyone is interested in creating public driver servers which take advantage of HIERMA, I would advise against doing so now; when HIERMA assembles a list of drivers from the network, it has to download INFs to grab some information from them and delete the temporary copies, resulting in wasted downloads that you may not appreciate. I'd like to develop another script for creating a cache list which HIERMA can default to so clients can quickly assemble a driver menu with minimal taxation on your server. This may lead to super-long lists depending on how many things you have loaded on your server, so in the next release, I would like to have a driver category menu implemented.

As always, please let me know if you run into any issues with this script.

Reply 13 of 13, by Orkay

User metadata
Rank Member
Rank
Member

That is a known problem with this script; for me, it works correctly in Windows 95, but not in 98/ME.

It may be a very long time before I can address this issue. You may have read this before, but as stated in a recent announcement, I'm planning a second total rewrite of Hierma so all of its operations can be carried out within real mode DOS. Expecting users to have at least 96MB of RAM installed in their systems to run a bootable CD and living with the functional differences of Unix and DOS is too much to ask when someone just wants to install an operating system efficiently. I'll get around to it when I complete this other project I've had in mind for a while, and post an update on Hierma for DOS once substantial progress has been made.