2023年11月26日发(作者:)

WindowsXP pro sp2 (Windows2000) 启动过程

按下计算机电源按钮——进入操作系统桌面:

.预启动

按动计算机启动按钮后,首先通电进行自检,并由BIOS(即基本输入输出系

)完成基本硬件配置。然后读取硬盘的MBR(主引导记录),检查硬盘分区表以

确定引导分区,并将引导分区上的操作系统引导扇区调入内存中执行,此时即执行

NTLDR(操作系统加载器)文件。

.启动

1.首先进行初始化——NTLDR会把处理器转换为32位保护模式,根据实

验它还包含“Windows系统选择菜单“Windows高级选项菜单(就是按F8

那一溜选项菜单)中显示的内容.

2.读取文件。该文件作用是使系统在启动过程中出现选择菜单,

由用户选择希望启动的操作系统。如果选择启动 Windows2000/XP,NTLDR会继

续引导进行以下过程;如果选择为非Windows2000/XP系统,NTLDR则会读取系

统引导扇区副本 转入启动相应系统。

* 其中BOOT LOADER即操作系统加载器,指定系统选择菜单默认等待时间

和默认引导的操作系统。可手工修改或在控制面板中修改。为保险起见,建议在

控制面板中修改。依次选择控制面板-〉系统-〉高级->启动和故障恢复,即可更

改相关设置。

3.系统加载文件。由它来检测机器硬件,如并行端口、显

示适配器等等,并将收集到的硬件列表返回NTLDR用于以后在注册表中注册保

存。

4.如果Windows2000/XP有多个硬件配置文件,此时会出现选择菜单,等待用

户确定要使用的硬件配置文件,否则直接跳过此步,启用默认配置。

* 硬件配置文件是指保存计算机特定硬件配置的系统文件。可以创建多个不

同的硬件配置文件以满足计算机在不同场合的应用。可以依次选择控制面板-

系统->硬件-〉硬件配置文件作出修改。

.装载内核

引导过程开始装载Windows2000/XP内核。这个文件位于

Windows2000/XP安装文件夹下的SYSTEM32文件夹中。随后,硬件抽象层(HAL)

被引导进程加载,完成本步骤。

* 硬件抽象层(HAL):隐藏特定平台的硬件接口细节,为操作系统提供虚拟硬

件平台,使其具有硬件无关性,可在多种平台上进行移植。

.初始化内核

内核完成初始化,NTLDR将控制权转交Windows2000/XP内核,后者开始装载

并初始化设备驱动程序,以及启动WIN32子系统和WINDOWS2000/XP服务。

.用户登录

开始登录进程。WIN32子系统启动,并由它启动LOCAL

SECURITY AUTHORITY()

,WINDOWS2000/XP会继续配置网络设备和用户环境。最后,伴随着微软之声

和我们熟悉的个性化桌面,WINDOWS2000/XP的启动过程终于完成

认真看完这个也许你会有收获的:

Windows启动过程介绍

相信不少人碰到过装了个什么东西之后,重启Windows就发现起不来了。所以,

想把Windows启动过程中作了些什么事情,分哪些stages做个介绍。

这里要介绍的是Windows 2k/xp/2k3系列的启动过程,nt系列么,很类似。

虽然Windows是非开源的,不过还是有不少资料可以参考的,还包括MS的那

publicsymbol如果有机会可以试试Kernellive debug那么相信还是能

看到不少东西的。

Windows的启动过程么,主要包括以下几个部分:

1. Master Boot Record (MBR)

2. Boot sector

3. Ntldr (这个可能有人会觉得眼熟,是不是碰到过启动的时候说找不到Ntldr呢?;)

4.

5. Smss

6. Winlogon

7. Service control manager (SCM)

OK

1. MBR & Boot Sector

物理硬盘是以扇区(sector)为单位来寻址的。Windows的安装程序会在安装的时候,将一

些内容写入你

安装系统的那个硬盘的第一个扇区。这块内容就称为Master Boot Record(MBR).

MBR包括两块内容:

(1). Boot code;

(2). Partition table;

Boot code,也就是启动代码。这段代码是在系统启动的时候,BIOS完成了自检过程,选择

了启动设备(

也就是你某个硬盘)然后就将该磁盘的MBR读入内存,并且跳转到MBR所在地址,从而

执行其Boot code.

Partition table,也就是分区表。该表只有4项(entry,因为MSOS允许一个磁盘最多被

分为4个主分

区(primary partition。这里的分区表里面的内容就是这4个分区的相关信息,包括其起始

sector

相应的标志等等。

对于启动过程而言,MBRboot code会搜寻这个分区表,在其中查找带有可启动标志(也

称为Active)的

分区,然后将该分区的第一个sector(也就是Boot sector)读入,并且执行其中的代码。

在安装程序写入Boot sector之前,需要获知其所在分区的文件系统类型(FAT? FAT32?

NTFS?,然后写

入不同的Boot sector为什么对于不同的文件系统需要不同的Boot sector呢?原因在于Boot

sector

任务,就是要载入OS的系统启动文件,而载入文件的过程,是需要文件系统参与的,所以

对应于不同的文

件系统,在Boot sector里面就需要不同的文件系统支持代码,以次来完成系统文件的加载。

对于Windows

启动而言,需要加载的文件为Ntldr

需要补充的是,boot sector里面对于文件系统的支持代码是最小化了的。毕竟boot sector

的大小最多

也就只有512 bytes,要带有完整的文件系统是不大可能的。而且,我们的需求也很简单,

只需要它能够

理解该文件系统,并且能够读取其中的文件就可以了,我们并没有写入文件的需求。

Boot sectorNtldr加载完成之后,就跳转到Ntldr的入口处,接下去的任务,就交给Ntldr

了。这时候,

系统还是运行在16位的实模式下,Ntldr会开启Paging,并转入32为保护模式。

这个过程中,可能碰到的错误信息是下面这个:

对于NTFS文件系统,"BOOT: Couldn't find NTLDRP"

对于FAT文件系统,"NTLDR is missing"

这个错误的意思是Boot sector在分区的根目录下没有找到Ntldr

----------------------------------------------------------------------------------------------------------------------

-

2. NTLDR

NTLDR是一个中间人,在Boot Sector转入NTLDR的时候,系统处于实模式下,这时候

程序访问的任何地址都是实地址,也就是物理地址(虽然这其中还有80x86最基本的分段功

能,学过这个实模式汇编的应该知道),并且,这个地址范围也受限在1M20位地址)以

内。所以,进入NTLDR后最先要做的事情就是转入保护模式,以便于能够完全访问32

地址范围。不过,由于此时没有设置好相应的页表,所以,还不能进行虚实地址转换(也就

是还没有分页的功能)

NTLDR需要初始化一定的页表,然后开启分页。这时候,系统已经进入了Windows的标准

状态(保护模式+分页)前面说到转入保护模式的时候,漏说了一个事情,就是初始化GDT

IDT。这里面,关键的是Windows使用的是Flat Memory Mode,也就是其保护模式下,

所有段的基地址都一样。这点和其内存管理的机制息息相关,这边就先提一下。

虽然系统已经进入了保护模式,不过,此时的NTLDR还需要依赖一些BIOS调用,来访问

磁盘以及显示系统。如果磁盘是SCSI的,而BIOS调用无法访问此类磁盘,那么NTLDR

就加载来替代boot code中的磁盘访问代码。NTLDRBoot Sector类似,也

包含了NTFSFAT文件系统的只读代码,区别么,其稍有进步,就是能访问子目录了。

由于从Windows2000开始,都有了休眠Hibernation)这种关机方式。于是,NTLDR

要检查系统上是否存在有效的 文件,如果有,那么表明最近一次关机是以休眠

的方式关机的。于是,NTLDR就开始走捷径:读入 文件,然后直接跳转到内

核中唤醒休眠的代码,从而启动计算机。

正常启动的情况下,NTLDR读入文件。如果该文件表明有多个可启动选项,于是

就显示启动菜单,供用户选择。

这里又有一个可能的例外,虽然现在这个可能性已经很小了。这个例外就是有DOS的启动

选项(包括Win9xME系列)。这个情况下,NTLDR 加载 文件,转回实模

式,并且跳转到该文件中的MBR代码。这时候,就和最开始启动的状态(读入MBR)一

样了,从而启动相应的OS

在用户选择了启动菜单后,NTLDR还要根据该项的参数做一些相应的操作。对于这些参数

么,这里就不作说明和解释了。

然后我们继续往下走...

NTLDR加载并执行。该程序是一个16位保护模式的程序,通过BIOS调用,

获取系统硬件的信息(比如总线类型啊,系统时间啊,磁盘驱动器啊,并口串口啊等等)

然后将这些信息集中起来,返回给NTLDR,并且这些信息在启动的后期会保存到注册标的

HKLM HARDWARE DESCRIPTION下。

貌似上面的这些工作都是在后台做的,除了那个可能出现的启动菜单外,其他工作都是用户

看不到的。嗯,接下来,就该给用户一些反馈信息了。

NTLDR先清屏,然后显示“Starting Windows”和进度条。这里,2000XP/2003有所不同。

2000会显示黑白屏的进度条,这时候屏幕上还没有Windowslogo XP/2003会显示带

Windows logo的彩屏进度条(哈哈,啥都流行彩屏啊)。需要注意的是,NTLDR在开始

加载任何启动驱动boot driver)之前,进度条一直是空的。

还有大家可能注意到过的,就是在显示“Starting Windows”的时候,下面还会显示“For

troubleshooting and advanced startup options for Windows, press F8.”,然后进度条出现并开始

滚动(前进)的时候,就没有机会按F8来进入安全模式之类的了。其实想象,这里面还是

有原因的。因为在系统开始加载驱动之前,主要做的事情只是加载内核文件和注册表的

System hive这两个事情和安全模式之类的其他启动方式没有关系,无论是安全模式还是标

准启动,都需要加载这两部分东西。而安全模式和标准模式的区别,在于其加载的驱动有所

不同。所以,一旦Windows开始加载那些boot driver之后,就无法在改变模式了。

NTLDR从显示“Starting Windows”开始,需要经过以下步骤:

1. 加载正确的内核以及HAL(默认为。如果NTLDR在加载这两个

文件的过程中出错,无法完成加载,那么会显示下面这条出错信息:Windows could not start

because the following file was missing or corrupt,并且会告诉你无法加载的文件名。

2. WindowsSystem32ConfigSystem读入System hive

注:hive是指一个包含了注册表中某个子树的文件。

3. System hiveboot driverdriverstart0

SERVICE_BOOT_STARTdriverHKLM

SYSTEMCurrentControlSetServices下面有对应的子键(subkey

4. 加载boot drivers所在分区的文件系统驱动,以便于之后的boot driver的加载。

5. 加载boot drivers。这时候,才会开始更新屏幕上的进度条。对于Windows 2000来说,就

是那个黑白进度条。

6. 设置CPU寄存器,并且跳转到的入口。

好啦,NTLDR的任务总算完成了,接下去就全部交给Ntoskrnl了。当然,在转交控制权的

时候,自然也将对方需要的信息(包括内存布局,硬件信息,System hive等)也都交给

Ntoskrnl,这样,NTLDR才完成了它的使命

C盘根目录文件解析——必须清楚的20个文件(文件夹)20070901 星期六 13:51

WindowsXP pro sp2单系统时,C盘根目录有14个文件和文件夹(其中隐藏11个)XP

VISTA双系统运行时,有20个(其中隐藏16个)。对于这些文件和文件夹,无论是数量,

还是功能,都应当十分了解。

(一)单系统时的文件和文件夹解析

(1)RECYCLER

回收站

(2)Documents and Settings

存放用户配置信息的文件夹

(3)Program Files

应用程序文件夹

(4)System Volume Information

存储系统还原备份信息文件夹。

(5)windows

操作系统文件夹

(6)

操作系统汉化引导菜单文件

(7)

对硬件设备初始化的一个系统级别的文件,然后把这些硬件信息传递给下一个启动步骤,

最终完成操作系统的启动。

(8)ntldr

非常重要的系统文件。启动后它将CPU的控制权交给操作系统。一旦丢失就无法

进入操作系统。

(9)T

DOS在启动会自动运行这个文件,一般在里面装载每次必用的程序,: path(设置

路径)smartdrv(磁盘加速) mouse(鼠标启动)mscdex(光驱连接) doskey(键盘管理)set(

置环境变量)等。

(10)CONFIG.SYS

这个文件是用于系统启动时加载程序用的,DOS时是很重要的。但在的窗口操

作系统下,这个文件一般都不用。

(11)

提供标准硬件的输入/输出接口和DOS的中断调用,功能全面增强,它基本上控

制着全部启动过程,WindowsDOS实模式的核心文件。但它需要根据

设置才能实现正常的启动过程。

(12)

作为系统盘中的核心文件,是系统启动时必不可少的。DOS操作系统时代,

要负责建立、删除以及读写磁盘文件管理,以及内存管理、磁盘和其它系统资源的管理。

(13)

电脑中如果安装有多个操作系统,在电脑加电自检后会出现一个启动菜单,它列

出了在这台电脑上安装的所有的操作系统,用户使用“↑”“↓”键可以选择进入哪个系统。这一

切都源于这个文件,Windows XP主要依赖BOOTINI文件来确定计算机在重启(引导)

过程中显示的可供选取的操作系统类别。

(14)

Windows下的虚拟内存,作用与物理内存基本相似,但它是作为物理内存的

备力量而存在的。也就是说,只有在物理内存已经不够使用的时候,它才会发挥作用。我

们都知道,虽然在运行速度上硬盘不如内存,但在容量上内存是无法与硬盘相提并论的。

运行一个程序需要大量数据、占用大量内存时,内存就会被塞满并将那些暂时不用的数

据放到硬盘中,而这些数据所占的空间就是虚拟内存。

Windows7开机原理及过程解析

1、开启电源

计算机系统将进行加电自检(POST)如果通过,之后BIOS会读取主引导记录(MBR)——

被标记为启动设备的硬盘的首扇区,并传送被 Windows 7建立的控制编码给MBR

这时,Windows接管启动过程。接下来:MBR读取引导扇区-活动分区的第一扇区。此

扇区包含用以启动Windows启动管理器(Windows Boot Manager)程序Bootmgr exe的代码。

2、启动菜单生成

Windows启动管理器读取启动配置数据存储(Boot Confi guration Data store)中的信息。

此信息包含已被安装在计算机上的所有操作系统的配置信息,并且用以生成启动菜单。

3、当您在启动菜单中选择下列动作时

<1> 如果您选择的Windows 7(Windows Vista)Windows 启动管理器

(Windows Boot Manager)%SystemRoot%System32OS

loader——

<2> 如果您选择的是自休眠状态恢复Windows 7 Vista,那么启动管理器将装

并恢复您先前的使用环境。

<3> 如果您在启动菜单中选择的是早期的Windows版本,启动管理器将定位系统

安装所在的卷,并且加载Windows NT风格的早期OS loader()——生成一个由

内容决定的启动菜单。

4、核心文件加载及登录

Windows7启动时,加载其核心文件 ——从注册表中读取设置并

加载驱动程序。接下来将运行Windows会话管理器()并且启动 Windows启动程序

(Wininit exe),本地安全验证()与服务()进程,完成后,您就可以登录您

的系统了。

5、登陆后的开机加载项目

OK,我们进入了Win7系统的登陆画面,地球人都知道,当然,还有很多用户朋友们

Win7优化大师中内置的美化大师把这儿改成了个性化的画面。

当您输入您的用户名和密码,登陆进入您的系统那一刻,硬盘吱嘎的叫声(此处不涉及

SSD型硬盘)和硬盘灯的再次闪亮提醒您:系统正在加载您这个账户的个人专用设置文件,

正在加载当前电脑和当前用户所指定的一些开机启动项目内的软件。这是众多软件(包括木

马病毒)最喜欢的地方,什么QQMSN杀毒软件的不说,连电驴和vagaa和一些播放器等

等啥的也不放过这些地方,毕竟他们要靠这儿来常驻您的桌面右下角和内存之中,方便进行

正当的和不正当的一些工作(此处指的是某些流氓和恶意软件)。当这些加载完毕,您才算真

正进入了您的Windows桌面,日常娱乐和工作生活才得以开始。