Windows Server 2003 启动过程分析

来源:互联网 发布:北影的明星 知乎 编辑:程序博客网 时间:2024/05/17 21:46
摘要:本文针对Windows Build Version 5.2及之前版本 (包括发型版Windows NT,2000,XP 和 2003,2003 SP1, 2003 SP2)启动过程简单分析,高版本的 Windows 系统 BIOS 引导模式其实也没太大差别,后续针对差异部分在做分析

BIOS:执行开机自检,主要是检测主板、内存条、显卡、硬盘等硬件设备是否正常;
BIOS:自检通过后,将从BIOS指定的启动设备中加载MBR信息,MBR信息物理位置存放在启动硬盘设备的第一个扇区;

MBR:包含少量用于读取硬盘分区表的代码,默认分区表中标识的第一个活动分区为系统卷;
MBR:从系统卷中加载 BOOT SECTOR(系统卷的第一个扇区);



BOOT SECTOR:读取系统根目录(系统环境变量%WINDIR%),加载LTLDR;

LTLDR:读取BOOT.INI,通过BOOT.INI的内容决定启动设备(如果BOOT.INIT文件中有多个启动徐项目,会呈现启动项列表供用户选择);
LTLDR:加载并执行NTDETECT.COM,执行BIOS硬件检测;
LTLDR:加载NTOSKRNL.EXE,HAL.DLL,BOOTVID.DLL,(如果是Build 5.1及以上,还会加载KDCOM.DLL);
LTLDR:加载系统注册表文件(文件位置为:%WINDIR%/SYSTEM32/CONFIG/SYSTEM,对应注册表的HKEY_LOCAL_MACHINE\System);
LTLDR:加载注册表 HKEY_LOCAL_MACHINE\System 中标志为"boot"的的驱动,然后返回控制权给NTOSKRNL.EXE;


 
NTOSKRNL.EXE:加载系统启动图形界面,初始化内核子系统(Kernel SubSystem);
NTOSKRNL.EXE:启动"boot-start"驱动,然后加载并启动"system-start"驱动;
NTOSKRNL.EXE:创建Windows 会话管理器进程(SMSS.EXE);

SMSS.EXE:运行标志为 BootExecute 的程序(如AUTOCHK,检测文件系统是否损坏)
SMSS.EXE:执行上一次系统运行过程中标记为延迟处理的操作,如延迟文件删除、重命名操作(一般发生在系统打补丁重启后,或者用户删除一个正在被系统使用的文件);
SMSS.EXE:初始化页文件(pagefile.sys)以及剩余的注册表项(在这个操作完成之前,由于系统卷上的页文件还没有准备好,bugchecks不会造成内存转储,因此,在此过程之前的BSOD没有对应的MEMORY.DMP文件生成);
SMSS.EXE:启动 Win32 子系统的 Kernel-Mode 部分(WIN32K.SYS);
SMSS.EXE:启动 Win32 子系统的 User-Mode 部分(CSRSS.SYS);
SMSS.EXE:运行 WINLOGON.EXE;

WINLOGON.EXE:运行本地安全认证程序(LSASS.EXE);
WINLOGON.EXE:加载图形用户识别和认证 DLL(默认为 MSGINA.DLL);
WINLOGON.EXE:显示用户登录界面;
WINLOGON.EXE:启动服务控制器(SERVICES.EXE);

SERVICES.EXE:启动所有标识为"automatic"的服务;



备注:
Windows所谓的系统卷(System Volume)是引导程序所在的卷,包含MBR,BOOT SECTOR,NTLDR,NTDETECT.COM 和 BOOT.INI;
所谓的启动卷(Boot Volume)是包含 Windows 目录的的卷,可以是一个逻辑分区;
一般情况下,安装系统的时候系统卷和启动卷都是同一个卷。

参考文档:
《Microsoft Windows Internals 4th Edition》
0 0