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, andLASTDRIVEwere applied automatically without requiring entries inConfig.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.