系统卷(System Volume):
Master Boot Recorder (MBR)、Boot Sector、NTLDR(NT Boot Loader)、NTDETECT.COM
BOOT.INI、SCSI DRIVER
启动卷(Boot Volume):
System Files: %SystemRoot%、Ntoskrnl.exe、Hal.dll,etc
启动过程:
1、系统加电,读取主引导扇区(MBR)
MBR中包含了读取分区表的代码
X86系统的分区表有四个条目
第一个标识为活动的分区为系统卷(System Volume)
MBR加载系统卷中的引导扇区
2、引导扇区(NT相关的):读取系统卷根目录并加载NTLDR
注:MRB和引导扇区都是在系统安装时写入的
通过默认的磁盘定位来进行读取,不需要文件系统干预
3、NTLDR(黑屏)
把系统从16位切换到32位,并开启内在分页(page)
如果启动卷(Boot Volume)是SCSI磁盘,则使用Ntbootdd.sys(在系统卷上)进行I/O操作
读取并分析Boot.ini文件:
Boot.ini selections points to boot drive
Specifies OS boot selections and optional switches(most for debugging/troubleshooting) that passed to
Kernel during boot
如果Boot.ini有多个条目,NTLDR显示选择菜单
如果用户选择启动64位Windows系统,NTLDR将CPU期换到64位模式
注:NTLDR启动后,如果在系统根目录下发现有Hiberfil.sys文件且该文件有效,那么NTLDR将读取Hiberfil.sys文件
里的信息并让系统恢复到休眠以前的状态,这里并不处理boot.ini文件
在双启动的情况下,如果用户选择DOS,则NTLDR加载BOOTSECT.DOS(供DOS使用的引导区副本)
关于Boot.ini可以参见 support.microsoft.com
完成Boot.ini引导选择后,用户可以按F8键进入高级启动模式
Last known Good,sate modes,hardware profile,Debugging mode
NTDETCT.COM执行以进行硬件和BIOS信息检测
启动后期会将检测结果保存到注册表 HKLM/Hardware/Description
NTLDR加载注册表SYSTEM hive(对应HKLM/System,组成注册表的多个独立文件的任何一个文件都叫hive),引导
驱动程序Ntoskrnl.exe,Hal.dll,并将控制权转交给Ntoskrnl.exe的入口函数
Boot Driver:critical to boot process(e.g. boot file system driver)
注:在启动早期,Windows内核还没有完全初始化,这里仅仅加载最基本的驱动程序
NTLDR会加载启动卷(System Volume)文件系统驱动,以只读的方式访问系统启动需要的其他文件和子目录
4、Ntoskrnl(屏幕显示Windows启动徽标)
通过两阶段来完成内核子系统的初始化
第一阶段完成对象定义(process、thread、driver,etc)和核心数据结构初始化
第二阶段完成对象初始化和子系统启动
注:这两个阶段由随后成为"System Idle Process"的内核系统进程来完成
I/O Manager按顺序加载"boot-start"驱动程序和"system-start"驱动程序
最后,Ntoskrnl创建会话管理器进程(Session Manager)(Windows/System32/Smss.exe,首个用户态进程)
注:每个驱动程序的信息都保存在注册表中
HKLM/SYSTEM/CurrentControlSet/Services
1 for driver 2 for file system driver others are win32 services
0=boot 1=system 2=auto 3=manual 4=disable
命令行提示符下查询:Driverquery [ /v ]
5、Smss.exe
运行BootExcute中指定的程序,如autochk、chkdsk等
处理"Delaved move/rename"命令(由于系统文件保护,软件或系统补丁更新后需重启的原因及操作)
初始化paging files和其余的注册表项
加载并初始化内核模式中的Win32子系统(win32k.sys)
启动Csrss.exe(Win32子系统在用户模式的部分)
启动Winlogon.exe
6、Winlogon.exe
启动LSASS(Local Security Authority)
加载GINA(Grapical Identification and Authentication)并等待用户登录
默认GINA是Msgina.dll,可以自行开发GINA来实现基于生物信息的用户登录(如果指纹识别等)
启动Services.exe(后台服务管理器)
7、Services.exe
启动所有标识为自动启动的win32服务程序