Microsoft Windows 98 SE in Virt-Manager

Mit den Standardeinstellungen von Virt-Manager funktioniert klappt die Installation von Windows 98 SE nur selten: Windows bleibt beim Booten stehen, zeigt Bluescreens, Programme stürzen ab. Oft lässt sich Windows zum Starten bewegen, wenn man beim Booten schnell „F8“ drückt und dann alle Fragen mit „J“ bestätigt. Aber selbst dann fehlen alle emulierten PCI-Geräte. Und es ist langsam. Sehr langsam. Außerdem funktioniert der Sound nicht. Auch gibt es keine Netzwerkunterstützung und die Bildschirmauflösung ist auf 640×480 Pixel bei 16 Farben beschränkt. Alles in allem nicht sehr zufriedenstellend.

Aber es geht besser!

Voraussetzungen

Du brauchst:

  • Windows 98 SE-CD-ROM (deutsche Version) als ISO-Datei
  • Patcher9x als Diskettenimage („….boot.ima“ herunterladen). Patcher9x behebt Abstürze mit schnellen CPUs.
  • Treiber für Grafikkarte: vmdisp9x (Variante „…-driver-3d-win98.zip“ herunterladen)
  • Treiber für Intel E1000-Netzwerkkarte (Download)
  • WinFuture Update-Pack 3.04b DE (Download)

Virtuelle Maschine vorbereiten


Im Virt-Manager eine neue virtuelle Maschine anlegen. Die Dialoge wie folgt beantworten:

  1. Die „Architektur“ ist „x86_64“, und wir wollen ein „Lokales Installationsmedium“ nutzen.
  2. Als „Installationsmedium“ das Windows-98SE-ISO-Image auswählen, bei der Frage nach dem Betriebssystem Haken bei „abgekündigte Betriebssysteme anzeigen“ setzen, „Windows 98“ auswählen.
  3. Die „Speichergröße“ auf 512 MByte stellen (bei mehr RAM wird für den stabilen Betrieb ein Patch benötigt), die „Anzahl der CPUs“ auf 1. Im Jahr 1999 waren 64-128 MByte RAM üblich.
  4. Ein „Datenträger-Image“ mit höchstens 128 GByte Größe anlegen. Im Jahr 1999 hatte eine Durchschnittsfestplatte um die 10 GByte Kapazität,
  5. Haken setzen bei „Konfiguration bearbeiten vor Installation
  6. Virtuelle Hardware:
    • Übersicht„: Sicherstellen, dass bei Chipsatz „i440FX“ und bei Firmware „BIOS“ steht.
    • Boot-Optionen„: Haken bei „IDE CDROM 1“ setzen.
    • NIC„: Als Gerätemodell „e1000“ auswählen.
    • Tablett„: Gerät entfernen. Ansonsten funktioniert später unter Windows das Maus-Scrollrad nicht.
    • Sound„: In das Textfeld „Modellsb16 eintippen. Die virtuelle Soundblaster-Karte belegt die Ressourcen Port 220, IRQ 5, DMA 1 und wird von Windows brav automatisch richtig erkannt.
    • Video„: Als Modell „VGA“ auswählen.
  7. Installation beginnen„!

Windows 98 SE installieren

Zuerst muss die virtuelle Festplatte partitioniert und formatiert werden.
Anschließend werden die Win98SE-Installationsdateien auf die virtuelle Festplatte kopiert: Zum einen müssen die Installationsdateien vor der Installation gepatcht werden, zum anderen bittet Windows sonst nervig oft, die Installations-CD einzulegen.

Festplatte partitionieren

  1. Von Windows-CD booten, im Bootmenü auswählen „Von CD-ROM starten„, „Computer mit CD-ROM-Unterstützung starten
  2. fdisk starten, „Primäre DOS-Partition erstellen“ (1), „Soll der maximal verfügbare Speicherplatz….„: J

Festplatte formatieren

  1. VM neu starten. Im Bootmenü wie eben auswählen „Von CD-ROM starten„, „Computer mit CD-ROM-Unterstützung starten
  2. d:\win98\format c:

Installationsdateien patchen

  1. Die Windows-Installationsdateien auf die Festplatte kopieren (dauert ein paar Sekunden bis Kopiervorgang startet): d:\tools\oldmsdos\xcopy /s d:\win98 c:\w98se.cd\
  2. Patcher9x-DIskettenimage in’s virtuelle Diskettenlaufwerk einlegen
  3. Mit a:\patch9x -auto c:\w98se.cd die Installationsdateien patchen lassen.

Windows installieren

Installation starten mit:
c:
cd w98se.cd
setup /ie /p j

Der Schalter „/ie“ überspringt die Erstellung einer Notfall-Bootdiskette, „/p j“ schaltet die ACPI-Unterstützung für damals nicht zertifizierten Systemen ein.
Die Installation jetzt nach alten Erinnerungen aus der Jugend oder diversen Youtube-Tutorials durchführen. Recht viel falsch machen kann man nicht.

Nach der Installation

Patcher9x in autoexec.bat eintragen

Gleich werden Treiber und Updates installiert.
Updates können die von Patcher9x gepatchten Windows-Dateien überschreiben, wodurch Windows nicht mehr startet.
Um dies zu verhindern, einfach Patcher9x in AUTOEXEC.BAT eintragen, so dass vor jedem Windows-Start für gut gepatchte Windows-Dateien gesorgt wird.

Also alle Dateien vom Patcher9x-Diskettenimage in ein Verzeichnis auf der Festplatte kopieren (z.B. C:\PATCH9X), in Windows den Editor starten („Start“, „Programme“, „Zubehör“, „Editor“), C:\Autoexec.bat öffnen, und an’s Dateiende anfügen: C:\patch9x\patch9x -auto c:\windows\system

Treiber und Updates auf Festplatte kopieren

Um im aktuellen Zustand (kein Netzwerk!) Dateien auf die VM zu bekommen, gibt es zwei Möglichkeiten:
Aus den Dateien eine ISO-Datei erstellen, oder die virtuelle Festplatte in Linux mounten und die Dateien draufkopieren. Ich mache Letzteres:

  1. VM herunterfahren
  2. Festplattenimage (bei mir windows98.qcow2) in ein Verzeichnis mounten:
    mkdir /tmp/win98
    guestmount --add /var/lib/libvirt/images/windows98.qcow2 --mount /dev/sda1 /tmp/win98
  3. vmdisp9x-Treiber entpacken und auf Festplattenimage kopieren (z.B. in’s Verzeichnis /tmp/win98/vmdisp)
  4. e1000-Treiber entpacken und auf Festplattenimage kopieren (z.B. in’s Verzeichnis /tmp/win98/e1000)
  5. WinFuture Update-Pack entpacken und auf Festplattenimage kopieren (z.B. in’s Verzeichnis /tmp/win98/up)
  6. Festplattenimage wieder aushängen (umount /tmp/win98)
  7. Und VM wieder starten

DMA-Modus für Festplatte & CD-ROM einschalten

Die nächsten Schritt gehen viel schneller, wenn statt des langsamen PIO-Modus der DMA-Modus aktiviert ist:

  1. Start„, „Einstellungen„, „Systemsteuerung„, „System„.
  2. In „System“ den Reiter „Geräte-Manager“ wählen, „Laufwerke“ ausklappen, das einzige Laufwerk auswählen, „Eigenschaften„, Reiter „Einstellungen„: Haken bei „DMA“ setzen.
  3. Selbiges für „CD-ROM“ wiederholen
  4. Neustart.

Grafiktreiber vmdisp9x installieren

  1. Start„, „Einstellungen„, „Systemsteuerung„, „Anzeige„.
  2. In „Anzeige“ den Reiter „Einstellungen“ wählen, „Weitere Optionen„, Reiter „Grafikkarte„, „Ändern„, „Eine Liste der Treiber…“, „Diskette„, C:\VMDISP auswählen.
  3. Neustart.
  4. In „Anzeige“ gewünschte Auflösung und Farbtiefe auswählen. Geht ohne Neustart.

Netzwerktreiber e1000 installieren

  1. Start„, „Einstellungen„, „Systemsteuerung„, „System„.
  2. In „System“ den Reiter „Gerätemanager“ wählen, rechte Maustaste auf den gelb markierten „PCI Ethernet Controller„, und den Treiber aus C:\e1000\win98\pro1000\win98se installieren.
  3. Neustart.

Winfuture Update-Pack installieren

  1. C:\UP\sesp30b4-de.exe starten (Komponenten nach eigenem Geschmack auswählen)
  2. Neustart

Windows Update reaktivieren

Irgendwer hat das Windows Update nachgebaut.
Grundsätzlich sind alle Updates bereits durch das WinFuture Update-Pack installiert worden, weitere Updates also nicht nötig. Es ist aber faszinierend, im Jahr 2025 über Windows-Update DirectX 9 und den Windows Media Player 9 installieren

Mit dem Internet Explorer http://v4.windowsupdaterestored.com/ aufrufen.
Bei der ersten Zertifikatswarnung im Popup auf den „windowsupdaterestored.com„-Link klicken, und „Zertifikat installieren„. Nachdem man brav alle Warnungen, informationen und Hinweise abgenickt hat, kann man Updates installieren. Auch „Windows Update“ verweist ab jetzt auf http://v4.windowsupdaterestored.com

Alle Updates installiert?

Nachdem man alle verfügbaren Updates installiert hat, kann man patch9x wieder aus der Autoexec.bat entfernen. Das spart ein paar Sekunden beim Starten.

Was sonst?

Unbekannte Geräte im Gerätemanager

Im Gerätemanager werden zwei Geräte als „unbekannt“ angezeigt: Eine „PCI Card“ und ein „PCI Communication Device„.
Ersteres ist der „Virtio memory balloon„, zweiteres die „Virtio console„. Beide werden von Windows 98 SE nicht unterstützt.

Maus ist in MS-DOS Eingabeaufforderung ruckelig!

Patch hier.

Mehr als 512 MByte RAM

Halte ich für unnötig: Windows 9x konnte mit mehr RAM nicht umgehen, deswegen gibt es weder Programme noch Spiele, die mehr als 512 MByte RAM sinnvoll nutzen könnten.
Wer dennoch gerne bis zu 4 GByte nutzen möchte, kann Patchmem von Rudolph R. Loew verwenden: Einfach patchmem.exe starten. Patchmem wird sich beschweren, dass die Dateien, die es patchen möchte, schon von irgendwas anderem (nämlich Patcher9x) gepatcht wurden. Mit Y geht’s weiter.

Festplatten größer als 128 GByte

Auch halte ich für unnötig: Die Windows-Installation braucht nur ein paar hundert MByte, ebenso Spiele und Programme. Falls es dennoch nicht reicht, kann man (Samba-)Netzlaufwerke beliebiger Größe in Windows mit einem Laufwerksbuchstaben versehen.

Aber was weiß ich schon….

  1. ESDI_506.PDR.7z. herunterladen, entpacken.
  2. Unter DOS (echtes DOS, nicht „MS-DOS EIngabeaufforderung“ unter Windows) die im Archiv enthaltenen Datei ESDI_506.PDR nach C:\WINDOWS\SYSTEM\IOSUBSYS\ kopieren. Dabei die vorhandene Datei überschreiben.

Keine Ahnung wie groß eine Festplatte/Partition damit sein darf. 2 TByte? 16 TByte?

USB 2.0

Wozu in einer VM? Egal. Damit geht’s. Die „LITE“-Version reicht.

3D-Grafik

vmdisp9x hat 2D-, aber keine 3D-Beschleunigung. libvirt kann keine 3D-Karten emulieren. PCI-Passthrough funktioniert zwar, aber es gibt nur für wehr wenige historische PCIe-Grafikkarten Win9x-Treiber, und andersherum hat kaum ein modernes Mainboard noch PCI-Slots.

Hier gibt’s eine Soft-GPU. Funktioniert grundsätzlich, ist aber viel zu langsam.

Echtes DOS!

Die VM ist sehr DOS-kompatibel:
Soundblaster 16, VGA-Karte mit VESA 2.0 VBE, und für die E1000-Netzwerkkarte gibt es einen Packet-Driver, der auch noch sehr wenig RAM braucht: Der Packet-Driver findet sich im oben verlinkten Treiberarchiv in dos\pro1000\pktdrvr\e1000pkt.zip.
Das von Intel gelieferte Binary hat den Debug-Modus angeschaltet und zeigt bei Netzwerkzugriffen einen roten Block rechts oben am Bildschirm an. Das hat mich gestört. Deswegen habe ich den Packet-Driver ohne Debugmodus neu gebaut: DRIVERS\E1000PKT\no-debug\1000PKT.COM