The Boot Sequence
At power on, a computer: ¨
performs the power on self test, or POST. ¨ Begins
the Plug and Play device initialization (NOTE: If the BIOS is not plug and play compatible,
no further PnP steps are performed at this stage, the PnP devices are enumerated in protected mode.) An ISA Plug and Play
compatible system BIOS POST performs the following sequence of steps: ¨
Disable
all configurable devices known to the system BIOS. ¨
Identify
all Plug and Play ISA devices. ¨
Construct
initial resource map of allocated resources. ¨
Enable
Input and Output Devices. ¨
Configure
the Initial Program Load (IPL) device. ¨
Perform
ISA ROM scan. ¨
Enable
Plug and Play ISA and other configurable devices. ¨
Initiate
the Interrupt 19H IPL sequence. ¨
Operating
system takes over resource management. ¨
The
last thing the BIOS does is to point to the boot sector on the disk, from here
the Master Boot Record is read into memory. ¨ loads the active boot sector
from the bootable partition and transfers control to it. ¨ the MBR code can also report
some errors. The code found in the active boot sector, which is
specific to the current operating system, is referred to as the DOS Boot Record
(but should probably be called the Windows Boot Record in this scenario). The
DBR then: ¨
Verifies
that the OS files are present in the root directory ¨
Parses
the BIOS Parameter Table to locate IO.SYS ¨
Loads
IO.SYS into memory and transfers control to it. IO.SYS then: ¨
parses
some options in MSDOS.SYS and loads compression if it is present ¨
parses
CONFIG.SYS and AUTOEXEC.BAT (if present), loads HIMEM, SETVER and IFSHLP, then
sets defaults for PATH, FILES, BUFFERS, etc. ¨
parses
Registry keys that include boot instructions ¨
starts
WIN.COM ¨
WIN.COM
starts VMM32.VXD ¨
VMM32
loads all .VXD’s that were bound into it at setup ¨
At
the time in dosmgr_init time, switches to protect mode ¨
Many
remaining Ring 0 init processes are completed ¨
SHELL.VXD
loads KERNEL16. ¨
KERNEL16
makes the DPMI calls necessary to create the 16-bit System VM in Ring3, then
returns control to SHELL.VXD ¨
SHELL.VXD
loads the first page of KERNEL32 in to the System VM, then starts KERNEL32 ¨
KERNEL32
starts running ¨
KERNEL16
loads GDI16 ¨
All
other Ring 3 drivers are loaded in a specific order by KERNEL16 (keyboard,
mouse, etc.), ending with third-party drivers from SYSTEM.INI (if present) ¨
KERNEL32
loads GDI32 ¨
KERNEL32
loads USER16 and USER32 ¨
USER
loads MSGSRV32, which calls wnet_init ¨
MSGSRV32
loads user-specified executables from
HKLM\Software\Microsoft\Windows\CurrentVersion\RunServices ¨
MSGSRV32
starts MPREXE.EXE, which puts up login dialog box while executables continue to
run ¨
User
logs in, networking components validate with server and obtain any user
profiles from server ¨
MSGSRV
then starts EXPLORER.EXE and the user interface opens ¨
EXPLORER.EXE
opens separate threads for the taskbar, the desktop and the messaging queue for
the shell, plus any threads that were open at the last shutdown ¨
EXPLORER.EXE
then starts any remaining user-specified executables in the Registry, then any
from the Startup folder The system is now ready to
use. Plug and Play initialization:
The MBR code:
¨ relocates
itself (a backward-compatibility requirement),
¨ finds a
bootable partition,