The Role of Io.sys in Starting Windows 98

In Microsoft Windows 98, the Io.sys file served as the foundational real-mode operating system kernel responsible for bootstrapping the computer. Located in the root directory of the primary boot drive, this hidden system file initialized basic hardware, loaded critical memory managers and default system drivers, processed user configuration settings, and ultimately handed over control to the 32-bit graphical user interface of Windows 98.

Bootstrapping and Hardware Initialization

When a Windows 98 PC powered on, the system BIOS performed the Power-On Self-Test (POST) and loaded the Master Boot Record (MBR). The volume boot record then located and loaded Io.sys into memory.

Upon execution, Io.sys took control from the BIOS and initialized low-level hardware devices, including the CPU, system timers, interrupt controllers, and basic input/output components. It established the real-mode MS-DOS 7.1 environment necessary to load the rest of the operating system.

Pre-loaded Default Drivers

Unlike earlier versions of MS-DOS where drivers had to be manually declared in configuration files, the Windows 98 version of Io.sys integrated several essential drivers directly into its own binary. To streamline the startup process and prevent system failures, Io.sys automatically loaded:

  • HIMEM.SYS: Manages extended memory (XMS), allowing Windows to access memory beyond the initial 1 MB real-mode barrier.
  • IFSHLP.SYS: The Installable File System Helper, required to support 32-bit file access and long filenames.
  • SETVER.EXE: Compatibility utility that reported specific MS-DOS version numbers to legacy programs.
  • Default System Directives: Preset values for FILES, BUFFERS, STACKS, and LASTDRIVE were applied automatically without requiring entries in Config.sys.

Parsing Configuration Files

After setting internal defaults, Io.sys read the plain-text Msdos.sys file. In Windows 98, Msdos.sys was no longer a binary file; instead, it contained boot settings such as BootGUI, BootMenu, and Logo.

If BootGUI=1 (the default setting), Io.sys prepared the system to launch the Windows graphical environment. Before launching the GUI, Io.sys processed any user-defined commands found in Config.sys and executed Autoexec.bat via the real-mode command processor (Command.com).

Transition to Protected Mode

Once real-mode processing and device initialization were complete, Io.sys executed Win.com. This launched the Virtual Machine Manager (Vmm32.vxd) and core system drivers, switching the processor from 16-bit real mode into 32-bit protected mode. At this stage, Windows 98 took full control of the hardware, and the primary role of Io.sys was complete until the next reboot.