Jump to content

Multi-boot Windows 9x with current GNU/Linux


Recommended Posts

Hi @UCyborg. I had graphic problems, not unsolvable. My 20 year old systems need xorg.conf files or snippets that take experimentation. Each graphic driver has it's own options. One system needed a switch from Openbox to Fluxbox because of screen lag. On another it was necessary to switch out an old ATI card for old NVIDIA.

Personally i use GNU/Linux for '2D' and videos, Windows gamers should probably multi-boot. For me running a DOS or Windows game in GNU/Linux (DOSBox, Wine, Steam) is a waste of time - use the correct OS for the application. I know Steam is quite GNU/Linux friendly, so maybe running it with newer hardware is okay.

Most display/login managers have configuration options, shouldn't be hard to fix. My personal systems use a Window Manager without a login manager. So i just boot to TTY (text), enter username/password, then 'startx'. Xorg is still used here extensively, works fine. Haven't trialed Wayland, query whether it works on my old hardware. Nouveau is used lots here, no real problems but you and i have different graphic uses.

With GRUB2 running 'sudo os-prober' dumps additional OS' found to terminal, example below. Previous GRUB releases identified my Windows 98 install correctly. Probably not many users now multi-boot with this old Windows. I could report a bug or manually modify the boot menu entry but i'm lazy, it still identifies a Windows release. Fortunately Windows 2000 and Windows XP still show correctly.
/dev/sda1:MS-DOS 5.x/6.x/Win3.1:MS-DOS:chain

Then 'sudo update-grub' automagically updates /boot/grub/grub.cfg and the MBR (previous location). The 'sudo grub-install ..' command specifies which partition or MBR to install boot function. It can also be installed to all MBRs if desired.

Using 32-bit hardware narrows the field. Thankfully my favourite distributions still support it and i'm transitioning to 64-bit. Debian the 'Universal Operating System' probably runs on more architectures than any other OS.

My 64-bit hardware runs 64-bit GNU/Linux and 64-bit software when available, example web browser. Here Windows XP 32-bit runs nice on my 64-bit hardware. To each their own i guess. Funny so many years after 64-bit release we're still having these conversations (1970s supercomputers, late 1990s more common).

For those terminal adverse, good luck, only half joking. Many distributions are user friendly - run installer from CD / USB and press Enter 10x to accept defaults. Probably won't be long though before using a terminal, personal preference anyway. Even the friendliest GUI distributions, like Puppy Linux, eventually require poking around under the hood.

For some the 'apropos your_query' command (search manual page names and descriptions) is useful to find system commands and information and auto-complete is your friend. Most commands have a man(ual) page. Note running something like 'man grub2' won't work, as manuals are often split into specific commands. For example, run 'apropos grub' to identify the 'grub-install' command, then 'man grub-install' to read up on it's purpose and usage. Of course the internet knows all and most distributions have decent forums.
Link to comment
Share on other sites

21 hours ago, Wunderbar98 said:

For me running a DOS or Windows game in GNU/Linux (DOSBox, Wine, Steam) is a waste of time - use the correct OS for the application.

Great strides have been in recent years in that area. Few years back when DXVK was brand new, I could run one of my favorite Win9x era games - Drakan: Order of the Flame on Linux through WINE with almost the same performance as on Windows, only few frames off, but that's to be expected with 2 chained wrappers, dgVoodoo2 was translating DirectDraw/Direct3D 6 to Direct3D 11 and DXVK was translating Direct3D 11 to Vulkan. Note that on Windows with graphics hardware having good Direct3D 11.1 support, using dgVoodoo2 alone often speeds up rendering compared to using native old Direct3D libraries. Performance is quite a big deal if you're also pushing old games beyond their limits, like increasing drawing distance since they may not be as good at it so a boost in other areas help and you can't really influence much how well engine renders a lots of things unless you're very smart with a lot of time on your hands and manage to re-implement its engine that can do it better than the old one.

Before that, with WINE default Direct3D to OpenGL library, performance was always poor. New development obviously requires recent enough GPU with Vulkan support. That was an example of old game being improved, you can also find videos of people running graphically rich games with decent performance such as GTA V. WineHQ might be misleading for some titles as it happens that people who contribute don't note all details or don't have the knowledge of certain technicalities, I remember Call of Duty 1, which is supposed to run great, being an old OpenGL game, had a weird problem that mouse started lagging badly when there were slight frame fluctuations and people discussing the problem were talking about DirectInput, even though the game doesn't use it.

DOS is a special case since things were done radically different back then so I'd say any software that allows those programs/games to run on different platforms is a gift, eg. you just can't have SoundBlaster 16 on majority of hardware platforms in use today any other way than to emulate it in software.

22 hours ago, Wunderbar98 said:

I know Steam is quite GNU/Linux friendly, so maybe running it with newer hardware is okay.

Steam itself seemed OK to me when I tried it few years back. Proton wasn't a thing back then, today you can apparently install even Windows games through Linux Steam client besides native Linux ones, that's new to me.

22 hours ago, Wunderbar98 said:

Haven't trialed Wayland, query whether it works on my old hardware.

I have the impression that old graphics hardware doesn't play well with compositors, which is required for Wayland. You also need a sort of X Server under Wayland for old stuff and applications that aren't ready for Wayland yet (they call it XWayland).

Found a quite lengthy discussion on the Wayland.

23 hours ago, Wunderbar98 said:

For those terminal adverse, good luck, only half joking. Many distributions are user friendly - run installer from CD / USB and press Enter 10x to accept defaults. Probably won't be long though before using a terminal, personal preference anyway. Even the friendliest GUI distributions, like Puppy Linux, eventually require poking around under the hood.

Tweaker is likely to end up eventually using terminal, even if just for a few small things.

Link to comment
Share on other sites

Hi @UCyborg. My hardware is 10-20 years old and many of my Windows games more than 20 years old. Had to look up Vulkan - you're chatting with the wrong fellow :)

Yes it sounds like good strides but gaming left me behind. Wayland won't be trialed here unless it matures and i get much newer hardware, unlikely on the hardware.

Many years ago, probably now improved, i setup SimCopter in Wine and MechWarrior 2 in Windows XP because i didn't have a DOS or Windows 9x setup. IIRC my hardware was too slow for DOSBox, SimCopter never ran well in Wine and MechWarrior 2 (DOS release) was okay but required additional 3rd party files for Windows XP. Since i'm now blessed with appropriate hardware and OS it's my preference to play natively. My situation is probably rare, most run adequate hardware to make DOSBox trivial. If i haven't mentioned before, SimCopter was enhanced and now runs on Windows 10.

Guess i'm a tweaker but i do think using terminal is inevitable even if just minor, as you indicated. Most members here are computer enthusiasts so doesn't matter. To me not much different than Windows users using DOS or terminal commands, modifying registry entries or browser about:config settings.

The first post was minor edited to correct configuration file data. Note the 'cvt' command can be expanded to get a Modeline for a desired refresh rate, otherwise it defaults to 60 Hz. Just had to use this again on ~12 year old hardware to get desired resolution using Nouveau driver. Examples:

# Modeline based on 60 Hz 'cvt 1152 864':
Modeline "1152x864_60.00" 81.75 1152 1216 1336 1520 864 867 871 897 -hsync +vsync

# Modeline based on 75 Hz 'cvt 1152 864 75':
Modeline "1152x864_75.00" 104.00 1152 1224 1344 1536 864 867 871 905 -hsync +vsync

The dual-boot Windows 7 system i'm setting up is from Acer, which already hogged 3 primary partitions (boot, Windows 7 OS reset files, C: drive). I didn't want to mess with it as the reset files made it convenient to restore C: drive to factory fresh. My preference is to work with primary partitions. The C: drive was shrunk and a new GNU/Linux partition added using a LiveCD with GParted. A swap file was created, rather than adding a separate swap partition, similar to linked information.
Link to comment
Share on other sites

I was reluctant to overwrite MBR on my new dual boot. Fortunately GRUB2 was a champ, automagic boot entries below all work. The actual Windows 7 C: drive is /dev/sda3, booted by Windows 7's /dev/sda2 boot partition.

Devuan GNU/Linux
Windows Recovery Environment (on /dev/sda1)
Windows 7 (on /dev/sda2)
  • Like 1
Link to comment
Share on other sites

  • 3 weeks later...
Well turns out more than 384 MB RAM is still wasteful. Adjusted 'swappiness' on my old 800 MHz system (default 60 down to 50). Running Devuan Beowulf with graphics (Xorg, Openbox, Conky), logged into my old Hotmail account (SeaMonkey v2.49.4) while reading a PDF file (MUPDF) without accessing swap.

This wouldn't be possible without something like NoScript in a full featured browser. Here only 4 JavaScript domains are actually needed to run Hotmail:
- live.com
- msauth.net
- office.net
- office365.com

GMail still allows HTML-only login and usage, so running GMail on this old hardware is quite light.

Seems on old non-SSE2 capable or non-64-bit hardware full featured web browsers will be maxed out with the following. BTW it's still possible to get most everything done with these old browsers for now. This forum (MSFN) renders and works well with this old SeaMonkey blocking all JavaScript, including log in/out and posting messages (sorry Admins).
- SeaMonkey v2.49.4
- Firefox v52 (last proper release)
- Firefox v78.15.0 ESR [1]

[1] Buggy due to some SSE2-required code causing occasional tab crashes. If someone finds a work-around please notify.

My newer 64-bit hardware, which dual boots 32-bit Windows XP nicely, recent routine update bumped Firefox v78 ESR to Firefox v91 ESR.
Link to comment
Share on other sites

2 hours ago, Wunderbar98 said:

- Firefox v52 (last proper release)

I held on to 51 version as long as possible, for version 52 I read Removed support for Netscape Plugin API (NPAPI) plugins other than Flash. Silverlight, Java, Acrobat and the like are no longer supported. in the changelog and said "nope nope nope".

And while I personally don't relate to this one since I've no idea how to manage without PulseAudio on Linux, but:

On Linux, Firefox now requires PulseAudio to play sound and no longer plays sound directly with ALSA.

Source: https://www.mozilla.org/en-US/firefox/52.0/releasenotes/

Link to comment
Share on other sites

Hi @UCyborg, we compute similarly but different, strikes me every time :)

Ha, ha 'nope, nope, nope'. The plugins and extras you listed aren't used here, removal is welcome. If developers could stop adding new fluff that would be welcome too. To me they don't belong in a browser, i use separate applications for specific items. Thanks for pointing it out, some probably want these items. Thankfully Mozilla and SeaMonkey project don't hide old releases.


SeaMonkey (scroll to bottom):

Just personal preference, sound doesn't belong in a browser either, HTML server vs 'content delivery platform'. It's been years since i used Flash or HTML5 video aside from setting up systems for others.

If you don't want PulseAudio a confirmed working alternative is 'apulse'. The last 64-bit system i set up running latest SeaMonkey, configuring the keyboard shortcut and launcher with 'apulse seamonkey' plays sound in YT HTML5 video.
Link to comment
Share on other sites

== Basic Firewall ==

UFW (uncomplicated FireWall) - a front-end for iptables to make managing a Netfilter firewall easier.

Example is Debian-based using 'sudo', may vary by distribution. If 'sudo' is not installed or desired use 'su' (root). By default Devuan GNU/Linux does not enable a firewall, user required to configure.

Install (or 'gufw' for a GUI):
sudo apt-get install ufw

Manual (or search online):
man ufw

Enable, persistent on reboots:
sudo ufw enable

Check status:
sudo ufw status verbose

Default status indicates:
Status: active
Logging: off
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

For typical home use this default configuration is adequate. It blocks anything from coming in, unless the network request was initiated by something going out (ie. user action). Of course outgoing network requests can still be made by backdoors and malicious software. Full-featured web browsers will still 'phone home', for example, unless modified.

A firewall can't protect from all evil, recommend:
- Remove or disable any networking software not utilized
- Use trusted software sources, preferably default repositories
- Minimize exposure to potentially harmful code (eg. browser JavaScript)
- Consider a web browser add-on that by default blocks most JavaScript
- Consider appending /etc/hosts with a block list, example https://someonewhocares.org/hosts/

Additional configuration example below, to block EVERYTHING (in and out):
sudo ufw default deny outgoing

UFW status now shows full lockout, all connection attempts will fail (eg. ping, internet, SSH, Samba).
Status: active
Logging: off
Default: deny (incoming), deny (outgoing), disabled (routed)
New profiles: skip

Now selectively open only the ports your system needs, basic internet example (HTTP, HTTPS, DNS):
sudo ufw allow out http
sudo ufw allow out https
sudo ufw allow out 53

Now 'sudo ufw status verbose' should show:
Status: active
Logging: off
Default: deny (incoming), deny (outgoing), disabled (routed)
New profiles: skip

To Action From
-- ------ ----
80/tcp ALLOW OUT Anywhere
443/tcp ALLOW OUT Anywhere
53 ALLOW OUT Anywhere
80/tcp (v6) ALLOW OUT Anywhere (v6)
443/tcp (v6) ALLOW OUT Anywhere (v6)
53 (v6) ALLOW OUT Anywhere (v6)

Ports for special needs:

To reset default configuration:
sudo ufw reset
sudo ufw enable
sudo ufw default allow outgoing

Edit: Cleaned up configuration.
Edited by Wunderbar98
Link to comment
Share on other sites

I once put such a giant hosts file on a Samsung Galaxy Mini with 600 MHz ARMv6 CPU. It obliterated its performance to the point it was practically useless.

Link to comment
Share on other sites

I can relate @UCyborg. Can't remember the system, long time ago i had a large hosts file that made browsing non-functional. Now, whether improvements in hardware or software, the hosts file linked above does not perceivably slow down browsing on my 800 MHz system (Windows 98 or Devuan).

Personally i want this stuff out - no foot in the door. There are lots of hosts file compilations available, some are smaller and some longer. The MVPS list, maybe gold standard, is about 425 KB vs 299 KB from someonewhocares. This monster list didn't noticeably slow down this system either.

The list linked above is categorized and editable. Only keep what you want to trim it down, example known advertisement, hijack and spyware sites. A '' hosts file may provide a slight performance benefit.

In Windows 98 and Devuan (maybe all systems don't know) hosts file updates take effect in real time. To check if it's working clear cache and close browser, append ' msfn.org' to the hosts file, save file and attempt to access the site.

If a site suddenly stops working temporarily disable the hosts file entries and retest. Search the file's comments, quite a few entries note potential breakage.
Link to comment
Share on other sites

  • 2 weeks later...

I pondered with hosts file back then since there wasn't/isn't any other obvious ways to block ads on Android. Ever since I don't have any ad ridden app anymore and my browser of choice comes with an ad blocker.

Things are kept simple on my desktop, Windows Firewall off, Windows Defender off, uBlock Origin and NoScript with an old trusted list of many sites I used to visit in the past. Worked well for years, haven't been missing out on anything or had something bad happen online. I don't visit many sites anymore.

Many years ago when we got internet connection for the first time, Windows XP was in use on shared computer and it was filled with crapware rather quickly. I guess there could be multiple factors - IE6, not being behind a NAT, clicking random crap online.

Link to comment
Share on other sites

  • 2 months later...
Sorry for late reply @UCyborg. Interesting you say that, i don't visit many sites anymore either. Got my favourites and wrote some web scraping scripts to efficiently fetch data. When the internet became readily available to us 'public', to me it was the greatest invention of my generation. Now i'm not so sure anymore. Sure there's lots of knowledge and information, wouldn't want to go back, but it's created lots of problems and complications too.

My computing practices change over time too, less uptight about configurations. Aside from hardware firewalls, in Windows 98 a HOSTS file, disable JavaScript (broken anyway) plus a software firewall. In Windows XP a software firewall typically blocks all, web browsing is minimal. In GNU/Linux a HOSTS file, software firewall, most JavaScript blocked, prefer non-JavaScript capable browsers.

Probably stems from my 'dial-up' days, most home systems don't need to be 'connected' all the time. My hardware is powered off when not in use and many tasks are performed offline. In GNU/Linux i don't install a 'network manager', saves installing at least 10-20 packages, the system already has built-in tools.

Since a terminal is always open here, ~/.bashrc alias commands manually bring the network interface up/down:
alias netstart='sudo ifdown eth0 && sudo ifup eth0'
alias netstop='sudo ifdown eth0 && sudo ping -c 2 google.com'

Similarly, alias commands to confirm connection(s), add as many hops as needed:
alias pingy='sudo ping -c 2 router_0_IP && sudo ping -c 2 router_1_IP && sudo ping -c 2 google.com'
alias ping2g='sudo ping -c 2 google.com'

Aside, system updates are manually checked too, results in seconds, updates are efficient:
alias update='sudo apt-get update && sudo apt-get upgrade'
Link to comment
Share on other sites

On 4/17/2022 at 5:40 AM, Wunderbar98 said:

Sure there's lots of knowledge and information, wouldn't want to go back, but it's created lots of problems and complications too.

Internet told me some dark truths I'd never be aware of otherwise. Perhaps I'd be happier if I remained ignorant.

On 4/17/2022 at 5:40 AM, Wunderbar98 said:

most JavaScript blocked, prefer non-JavaScript capable browsers

I don't mind it, I keep it enabled for known sites to not have degraded the experience. But for random sites where I just want to read something and it works without, great, less work for the browser.

Either way, I don't think it's going anywhere. The software I support for the living, at least the client side, is full blown JavaScript, nothing works without it, the server side is C#. The previous iteration, which was a desktop app (web part was an optional addon), was written in Delphi. And that was PITA to support, I got employed there in its last year of support, saw everything from glitches due to corrupted database, glitches due to degrading hardware which the software (RS-485 sequential communication - when one device goes bad, you have a problem communicating with all of them), slowest and apparently messed up Windows XP machines etc.

They told me JS was the easiest and fastest way to get things done on the browser side. Two funny things I heard from the two developers, one said we should use the smallest libraries possible, the other said we should use the biggest ones to make use of available resources. I'm not sure if he was being sarcastic or not. He also said let the client do some work, why should server handle everything.:buehehe:

BTW, since you still keep XP / 9x around, presumably you have Linux configured to interpret CMOS clock as local time?

Some time ago, I switched my Windows installs to interpret it as universal time, which IMHO is the only sane configuration and how Linuxes and other OS handle it by default. XP doesn't cooperate though, the times goes back one or two hours - actual CMOS time (depending whether we're in DST or not) after 1h of uptime and on resuming from standby. Still, at least the hardware clock is left alone with that setting and it works OK for that 1h. :D

I boot into XP occassionally as a sort of trip back through time. It'd be nice if someone looked into universal time issue, but it seems there's more interest in getting unsupported hardware / software working, something I'm not really interested in doing. I bet UTC issue is much less hopeless than new hardware / software. When this hardware goes, it goes, no more XP on bare metal I guess.

Edited by UCyborg
Link to comment
Share on other sites

Hi @UCyborg, ignorance is bliss for sure, agree JS in't going away but i don't like it. Personally i think developers should be given older hardware so they focus on site performance. What takes just a couple seconds longer on latest hardware can take minutes on an older system. I don't mean older like ancient, i mean hardware that people in the real world still need to use every day if they can't afford to buy a new system every 1-5 years. To me any performance gain is a plus/plus, customers log in/out faster, get the information they need and aren't left frustrated by the experience.

System time has been an issue here multi-booting between new and old operating systems. UTC is good but doesn't seem to cooperate well with the old operating systems. Sometimes the OS clocks essentially fight each other, hard to tell correct time between OS boots, even causing difficulties updating GNU/Linux repositories.

What i do now for these multi-boots is basically run from the BIOS clock, good old fashioned way. Daylight savings time changeover date has changed since old Windows releases, so disable 'auto adjust for daylight savings time' in the old Windows OS'. In these old Windows OS i also disable the ability to sync time over internet, if this feature is available, as many of my Windows OS don't go online, some do and some don't.

In GNU/Linux NTP and TZDATA are installed. Run 'dpkg-reconfigure tzdata' to update the timezone. Then change /etc/adjtime from 'UTC' to 'LOCAL'. Reboot system and manually update the BIOS date and time. Then cold fresh boot into every OS on the system to confirm they are using the correct time. In GNU/Linux also confirm /etc/adjtime still indicates LOCAL.

It's a minor hassle, BIOS clock needs to be manually adjusted twice a year for daylight savings time and periodically if time drifts. At least all the OS' know the correct approximate time (within one minute or so).

Above is from rough notes but 3 new multiboot installs last few months and everything is good.
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    • No registered users viewing this page.

  • Create New...