Windows启动的幕后过程

来源:互联网 发布:云计算的基本特征 编辑:程序博客网 时间:2024/04/28 19:28
系统卷(System Volume):Master Boot Recorder (MBR)、Boot Sector、NTLDR(NT Boot Loader)、NTDETECT.COMBOOT.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.exe6、Winlogon.exe 启动LSASS(Local Security Authority) 加载GINA(Grapical Identification and Authentication)并等待用户登录 默认GINA是Msgina.dll,可以自行开发GINA来实现基于生物信息的用户登录(如果指纹识别等) 启动Services.exe(后台服务管理器)7、Services.exe 启动所有标识为自动启动的win32服务程序
原创粉丝点击