IO.SYS is the DOS BIOS of all versions of MS-DOS and Windows 9x. It contains the default MS-DOS device drivers (hardware interfacing routines) and the DOS initialization program. It is responsible and essential for every version of MS-DOS and Windows 9x to boot.
IO.SYS in some OEM releases (especially non PC-compatible ones) have different names such as
IBMBIO.COM however they all perform the same task. IBM PC DOS and DR-DOS use the file
IBMBIO.COM. The name of this file is not important as long as the boot sector loads it.
RHSA attributes so it cannot be deleted or executed easily.
IO.SYS in Windows 9x has three parts (DOS BIOS, DOS Kernel and a bitmap). Some Emergency Boot Disks created by Windows 9x uses the file name
WINBOOT.SYS. Similarly, FreeDOS uses a combined system file as well, but names it
Boot sequence[edit | edit source]
In the IBM PC bootup sequence, the first sector of the boot disk is loaded into memory and executed. If this is the DOS boot sector, it loads the first three sectors of
IO.SYS into memory and transfers control to it.
- Loads the rest of itself into memory.
- Initializes each default device driver in turn console, disk, serial port, etc..). At this point, the default devices are available.
- Loads the DOS kernel and calls its initialization routine. The kernel is stored in
MSDOS.SYSwith MS-DOS and in
IO.SYSwith Windows 9x. At this point, normal file access is available.
WINBOOT.INIwith Windows 9x.
- Processes the
CONFIG.SYSfile, in MS-DOS 2.0 and higher.
- Processes the
COMMAND.COMor other shells if specified. (In Windows 9x, it automatically loads
- Displays the boot screen in Windows 9x. If
LOGO.SYSis present, it is used as the boot screen. Otherwise, the bitmap in
Disk layout requirements[edit | edit source]
- The two first entries of the root directory must be
MSDOS.SYS, in that order. (Except for Windows 9x)
IO.SYSmust be the first file stored in the FAT directory table for files. (Except for Windows 9x)
- The files
MSDOS.SYSmust be contiguous. (Except for Windows 9x)
- MS-DOS 3.30 allows sector 4 and higher to be fragmented
- MS-DOS 5.00 allows the first 3 sectors of
IO.SYSto be allocated anywhere (as long as they are contiguous).