PC Boot Process
The PC boot process varies depending on the OS being loaded. For DOS, Windows 3.x, and Windows 9x, booting requires some form of DOS. Windows 2000 loads differently using a separate NT Loader (NTLDR) program.
The DOS loading sequence is:
- POST in ROM
- BOOT program on fixed disk
- IO.SYS (or IBMBIO.COM)
- MSDOS.SYS (or IBMDOS.COM)
- WIN.COM or DOS user application programs
- Windows 9x registry
During a DOS/Windows boot, the PC first performs the POST procedure. This mainly determines which PC components are installed and quickly checks their basic operation. POST does not, however, perform a comprehensive system test.
The next step is either to load the cold boot loader program from the MBR of the fixed disk or to run the ROM cold boot loader to load DOS from a floppy disk. The cold boot loader program is a very simple program that loads the IO.SYS program from the disk or from the fixed disk. (Some viruses use this cold boot loader program to infect PCs.)
IO.SYS performs the main loading and I/O functions. It first loads MSDOS.SYS and then processes the CONFIG.SYS file commands. Device driver programs are loaded and matched to the PC hardware components. After the CONFIG.SYS file has been processed, IO.SYS loads the DOS command interpreter program. Control is turned over to COMMAND.COM, and it then processes the AUTOEXEC.BAT file. AUTOEXEC.BAT loads programs, establishing the DOS operating environment. TSR programs like DOSKEY.EXE are loaded in AUTOEXEC.BAT. After the commands in AUTOEXEC.BAT have been processed, applications programs are run.
When DOS is being used to boot into Windows, the first application run is WIN.COM, the Windows loader program. WIN.COM processes the commands in the SYSTEM.INI file to load the hardware drivers for Windows. Finally, WIN.COM processes the commands from the WIN.INI file to load Windows TSR programs and to set up the Windows applications environment.
When loading Windows 3.x, all memory resident and network software are loaded first before starting Windows. It is the same with other hardware components used by a Windows PC workstation. For example, our PC workstation that is on a network and runs a scanner must have both the scanner and the network software started before Windows is initiated.
Windows 9x changes this because it loads the networking and other driver programs as part of Windows 9x. Windows 9x can use CONFIG.SYS and AUTOEXEC.BAT for backward compatibility with older DOS and Windows software. However, CONFIG.SYS and AUTOEXEC.BAT are not required for newer Windows 32-bit applications and often can be eliminated from the booting process. Similarly, WIN.INI and SYSTEM.INI provide backward compatibility for Windows 16-bit applications. They are still used to load and configure a small portion of the Windows 9x operating environment. The registry controls the main loading functions for Windows 9x. The registry loads device drivers and completes the Windows 9x operating environment configuration. It is responsible for configuring the user's desktop display, determining virtual memory configuration, allocating disk cache, and much more.
The Windows 2000 loading procedure differs from the DOS/Windows loading procedure because DOS is not required to load Windows 2000. This provides enhanced security for Windows 2000 because it is possible to better control and limit access to fixed disk drive files. The Windows 2000 loading sequence is comprised of seven steps or segments:
POST in ROM, which is identical to Windows 9x boot process
Boot initialization and operating system detection
Boot strap loading, using the following root directory files:
On a multiple operating system boot, PCs use:
Large SCSI or EIDE drive systems also use:
Some files may be in a WINNT directory on another drive. These files include:
NTLDR loads device drivers needed to launch the KRNL and does the following:
Forces CPU into 32-flat memory (protected) mode
Starts the file system (FAT or NTFS)
Uses BOOT.INI to provide the OS load menu
NTDETECT.COM finds hardware and determines configuration.
NTLDR loads the NTOSKRNL and Hardware Abstraction Layer (HAL) software.
User logon for security reasons requires users to press CTRL + ALT + DELETE and enter an authorized username and password either to log on to the local PC or to a network domain.
Similar to DOS and Windows 9x, Windows 2000 uses the cold boot loader program on fixed disk to load the NTLDR program. Windows 2000 uses its registry to perform the boot process.
The Role of CONFIG.SYS
The CONFIG.SYS file loads the basic hardware driver programs used by the PC. It tailors DOS to the specific hardware in the PC. It also is used to establish the memory management programs DOS and Windows use in accessing the HIMEM, upper memory blocks and extended/expanded memory areas of the PC. CONFIG.SYS can be used by Windows 9x to provide backward compatibility to earlier DOS and Windows programs.
The Role of AUTOEXEC.BAT
The AUTOEXEC.BAT file loads TSR programs and configures the operating environment for DOS and Windows software. It points to the subdirectories where temporary files are stored for both Windows and DOS. Windows uses temporary files for both programs and temporary data storage. Similarly, AUTOEXEC.BAT can be used by Windows 9x to provide backward compatibility to earlier DOS and Windows programs. It is also helpful in loading some TSR programs, such as DOSKEY, globally for any command prompt windows that are opened when Windows is running.
Study Break: Stepping Through the AUTOEXEC.BAT
Here is a neat trick where you can step through each different component that loads from your AUTOEXEC.BAT.
Simply reboot your machine, and, as your machine is booting, hold down the F8 key.
If your machine has an AUTOEXEC.BAT, you will be able to choose if you would like to load the statement or not.