Windows 98 System.ini Device Driver Configuration
During the era of Microsoft Windows 98, the System.ini
file functioned as a fundamental configuration file responsible for
initializing low-level hardware, loading Virtual Device Drivers (VxDs),
and maintaining backward compatibility with legacy 16-bit software.
While the Windows Registry served as the primary configuration
repository for Windows 98, System.ini remained a vital
bridge for hardware management during the early boot process, directly
defining how the operating system interfaced with essential peripherals,
display adapters, and multimedia devices.
The Hybrid Architecture and Legacy Support
Windows 98 was built upon a hybrid 16-bit and 32-bit architecture, relying on MS-DOS for system bootstrap before transitioning into 32-bit protected mode. Because of this dual nature, the operating system required a way to bridge legacy hardware configurations established in Windows 3.x and Windows 95 with modern Plug and Play hardware.
While the Windows Registry dynamically managed Plug and Play devices
and the newer Windows Driver Model (WDM) architecture,
System.ini provided a static, text-based fallback
mechanism. If a device driver was not configured via the Registry, or if
the system operated in Safe Mode, Windows 98 parsed
System.ini to ensure core hardware interfaces could still
function.
Key Sections for Driver Configuration
Device drivers in System.ini were arranged into
standardized sections, primarily within plain-text INI blocks:
[boot]: This section declared core system-level drivers required to initialize the graphical user interface (GUI). Key driver directives included:display.drv: Specified the display driver (e.g.,pnpdrvr.drvor the fallbackvga.drv).mouse.drv: Handled the primary pointing device interface.keyboard.drv: Defined the keyboard layout and translation routines.system.drv: Pointed to the central system hardware driver interface.comm.drv: Controlled serial communication ports.
[386Enh]: This section handled the 32-bit protected-mode environment and was the primary location for loading static Virtual Device Drivers (VxDs). Lines beginning withdevice=explicitly instructed the operating system to load drivers into memory at boot time. For instance, entries likedevice=*vshareor references to custom third-party files such asdevice=network.vxdensured peripheral controllers, network cards, and specialized expansion cards were initialized before user-mode applications launched.[drivers]and[drivers32]: These sections loaded audio and multimedia drivers, such as MIDI mappers, wave audio drivers, and video compression codecs, maintaining compatibility for legacy 16-bit and 32-bit multimedia applications.
Role in Troubleshooting and Safe Mode
Because System.ini was a human-readable text file stored
in the C:\WINDOWS directory, it served as a primary tool
for hardware troubleshooting. Administrators and technicians frequently
utilized utilities such as Sysedit or the System
Configuration Utility (MSConfig) to view and modify
System.ini.
If a corrupted display driver caused a system crash or prevented
Windows from loading the desktop, users could boot into MS-DOS or Safe
Mode and manually alter the display.drv= line in
System.ini to point to a generic driver (such as
vga.drv). This bypassed broken driver files and allowed the
system to boot successfully so the issue could be resolved.
Coexistence with the Windows Registry
In Windows 98, device driver configuration had largely transitioned
to the Registry, located in SYSTEM.DAT. However,
System.ini retained execution priority for static system
drivers. If a conflict arose between a setting in
System.ini and a setting in the Registry,
System.ini often took precedence for low-level components
specified in the [boot] and [386Enh] sections.
This design ensured that older hardware without Plug and Play or
Registry-aware installers could continue to operate reliably throughout
the life cycle of Windows 98.