我的编程空间,编程开发者的网络收藏夹
学习永远不晚

谈win2003与win2008启动原理及双启动的故障解决方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

谈win2003与win2008启动原理及双启动的故障解决方法

      最近经常有学生询问Win2008的启动相关问题以及早期Windows版本与vista或win2008并存时的启动问题,现在可以说正是处于操作系统新旧版本的过滤时期,这类问题会在一定时间内越来越多,所以本人就写了这篇文章来谈论一下新版操作系统的启动原理以及如何解决新旧两种操作系统并存时的故障。

我们还是先来看一下WinXP/2003的启动过程,这个启动过程其实还是挺复杂的,我在此画了一个草图:

谈win2003与win2008启动原理及双启动的故障解决方法

     当然这个图并没有把整个启动过程中所涉及到的细节都描述出来,但主要部分已经有了,我们在此不进行详细描述,例如:系统自检成功后读取MBR中的前446个字节的引导信息等,这些不是咱们今天讨论的重点,我们只说说较为重要的几点:

其中最为重要一步就是NTLDR:这个程序位于C盘根目录下如图所示:

clip_image004

     NTLDR:全称为NTOS Loader,操作系统加载程序。它的主要作用是解析Boot.ini文件,通过读取Boot.ini文件,使系统在启动过程中出现选择菜单,由用户选择希望启动的操作系统。除了NTLDR我们可以看到在C盘根目录下还有一个boot.ini文件,这个文件在xp/2003中也是相当有分量的一个家伙!

     BOOT.INI:简称为启动菜单文件,这个文件中存放了我们当前机器中操作的配置信息,安装了几个操作系统?分别位于哪个分区?给用户的选择提示是什么?默认选择时间是多长?等等。

     NTLDR除了读取BOOT.INI文件中的启动配置信息之外还会加载并执行C盘根目录下的NTDETECT.COM文件,收集系统的硬件信息,NTDETECT.COM文件会调用BIOS中的内容来得到基本的硬件信息返回NTLDR以供操作系统使用,并将此信息保存到注册表中。

     如果上述操作没有问题就会再现我们比较熟悉的进度条了!

     然后就是加载Windows的内核文件:NTOS,全称为:NTOSKRNL.EXE文件以及它所依赖的模板文件,如图所示:

clip_image006

     再往下就会将程序的执行权交给NTOSKRNL.EXE,下面的工作就由NTOSKRNL.EXE负责了!NTOSKRNL.EXE程序会通过调用一系统的函数,这也是整个启动过程中最复杂的地方,也是最容易出现问题的地方,如果这一部分没有问题,那么就会生成系统的第一个进程:SMSS

     SMSS:会话管理子系统 Session Manager SubSystem 这是第一个用户态的进程。会执行一些注册表中某些表键中所定义的操作:如bootexecute、pendingfilerenameoperations、paging file等创建会创建出 CSRSS系统服务器进程和Winlogon登录进程。

     CSRSS:Client/Server Runtime Server Subsystem作用:客户端服务子系统,用以控制Windows图形相关子系统,是用户模式Win32子系统的一部分。csrss代表客户/服务器运行子系统而且是一个基本的子系统必须一直运行。csrss用于维持Windows的控制。

      Winlogon:Windows登录进程,主要作用是启动LSASS进程(Local Security Authority Subsystem Service);如果是XP还会启动Logonui进程,如果是Win2003就不会生成logonui;出现登录提示框,提示用户输入用户名和密码,然后将些信息交给LSASS进行验证,如果通过就会创建一个访问令牌,最后由userinit程序执行用户登录和初始化脚本,至此,出现桌面后,我们的启动工作就完成了。但在winlogon对用户进行验证的同时还会启动services相关系统服务。

     Winlogon的过程其实还是很复杂的,因为中间涉及到用户的认证和授权的问题,在此还是想简单说一说,我们登录系统的方式主要交互式登录、系统登录、网络登录、服务登录和批处理登录。用到最多的有交互式登录、系统登录、网络登录和服务服务,当然用户最熟悉的肯定是交互式登录,也就是人坐在电脑前,与你的爱机直接面对面的“交流”!那么咱们就把交互式登录的过程大体说一下:

     首先Winlogon作为登录进程首先出现,准备一个用户登录的环境。然后开始加载一个DLL文件:MSGINA.DLL,此文件作用是在屏幕上出现一个“Ctrl+Alt+Del”的界面,提示用户输入用户名和口令, 然后将收到的信息交给下一个进程:LSASS进程,进行用户身份的认证,当然这里又会有很多问题:工作组用户的认证、单域用户的认证、不同域用户的认证等等,但不论是哪一种情况,都必须由LSASS进程负责认证。其中会涉及到一个服务:Netlogon,此服务主要是验证NTLM的登录、认证。如果是域的环境会帮助客户机更新主机的DNS记录以及定位域控制器,这也就是我们在联系域控制器不成功时为什么重新启动netlogon这个服务的原因!我们抛开过旧的操作系统不谈,那么工作组环境一般使用的认证协议为:NTLM协议,如果是域环境使用的认证协议为:Kerberos V5协议。

     NTLM:使用的是挑战/响应模式,过程如下:

     首先是客户端发出一个连接请求,请求对方对自己的身份进行认证。但没有传具体口令。

     服务器端会给随机发送一个8字节的挑战信息,如:1234567812345678,然后将这个挑战信息和当前session关连起来。

     客户端收到挑战信息后进行如下工作:a.根据自己的明文口令经过md4哈希后得到一个16字节的口令散列值;b.然后利用刚才得到的散列值将准备登录的服务器名或者是域名等信息再次进行md5加密得到第二次的hash散列值;c.然后再利用第二次的散列值把8个字节的挑战信息再次进行md5加密,又得到一个16字节散列值;d.最后将这个值作为响应传给服务器。

     最后服务器端怎么做,才知道你是不是一个合法用户呢?因为服务器是有你的口令明文的,利用你的口令明文也做相同的操作,如果结果匹配,就认为对方是一个合法的用户!

     Kerberos V5主要是对用户的身份进行验证并为用户颁发用于访问网络服务的票证,适合于域等开放环境。认证过程是一个很复杂的过程,在此我只能是简单说说而已。

clip_image008

     首先:客户端通过DNS定位KDC服务器

     其次:客户端用户使用密码或者是其他方式如智能卡向KDC请求票证授予票证(Ticket-Granting Ticket, TGT),这个请求在登录时会自动完成。要获取特定服务的其他票证,需要票证授予票证。票证授予票证类似于护照。与护照一样,票证授予票证可标识您的身份并允许您获取多个“签证”,此处的“签证”(票证)不是用于出国,而是用于远程计算机或网络服务。

     然后:KDC对用户的身份进行验证,如果没有问题可创建票证授予票证,并采用加密形式将其发送回客户机。

     再次:客户机使用其口令来解密票证授予票证(TGT),得到有效的TGT后,客户端使用该TGT票证访问授票服务(TGS)。

     再次:TGS接着向客户端颁发服务票证。

     最后:客户端向所请求的网络服务出示服务票证。服务票证向此服务证明用户的身份。同时也向该用户证明服务的身份。

clip_image010

Winlogon进程

clip_image012

Msgina.dll文件

clip_image014

Netlogon服务

     以上只是用草草几句话把Winxp/2003的启动过程作了一个大体的介绍,从其中我可以看到NTLDR和boot.ini起了重要的作用,这也是和Vista/Win2008的不同之处。下面咱们就来看看Vista/2008的启动过程。

     我们知道在XP/2003中进行操作系统加载的文件是NTLDR,然后再读取boot.ini文件但这两个文件已经到了寿终正寝的时候了!在VISTA以后的操作系统中我们再也见不到亲爱的NTLDR和Boot.ini了!呜。。。。。。

Vista/2008的启动流程,如图所示:

clip_image016

     在这个图中,大家可以看到从系统启动到bios到MBR这一部分内容基本上和早期版本操作系统是一样的,不用多说,那么这个PBR是什么东西呢?

PBR:分区引导记录 Partition Boot Record

由Vista 在安装格式时生成的一段代码,由这段代码去找Bootmgr程序,并将程序的执行权交给Bootmgr。那么这个Bootmgr又是个什么东西?

Bootmgr:启动管理器,相当于XP/2003时期的Ntldr,这个程序可以完成操作系统加载,最主要的作用就是读取BCD中的数据,我们知道在XP/2003中启动配置信息都存放在boot.ini文件中,但到了VISTA/2008以后,启动配置信息就放到了BCD中了!

clip_image018

BCD:Boot Configure Data 引导配置数据,它的作用就是用于存放当前机器上的操作系统信息,安装了多少操作系统,每个操作系统所在分区等等。

当Bootmgr成功从BCD中读取出引导信息后就会显示启动菜单供用户选择,然后Bootmgr会将程序的执行权交给Winload.exe

clip_image020

Winload.exe它的的作用是将核心的系统文件加载到内存并加载基本的驱动程序,还有一个新功能就是支持bitlocker在此不做讨论。winload.exe执行成功后,就将执行权交给了系统的内核文件Ntoskrnl。

clip_image022

     以上是简单把vista/2008的启动过程大体说了一下,而我们今天的重点讲的是BCD这个东西,这是和XP/2003区别最大的地方了!

    刚才我们已经说了BCD保存着启动的相关配置信息,它取代了boot.ini文件,而且存储格式也变化了相当大的变化,以至于我们都不认识它了,它是按照注册表的格式进行保存的,是一个二进制文件,启动成功后也确实要被加载到注册表中,因此也有人说Vista/2008的启动信息存放于注册表中。下面咱们就来认识认识此文件:

BCD文件位于活动分区下的boot文件夹内,如图所示:

clip_image024

clip_image026

    那么这个BCD文件是一个二进制文件,我们就不能像boot.ini文件那样对它直接修改了,必须借此一些工具才可以如:控制面板中的系统、msconfig工具、bcdedit.exe工具、wmi开发接口。但在此功能较强的应该是bcdedit.exe和WMI开发接口,但大家最常用的应该是Bcdedit.exe,这个工具也同一般的外部命令一样位于windows下的system32文件夹下,如图所示:

clip_image028

如果我们直接在命令行下执行bcdedit.exe就是显示操作系统配置条目,如图:

clip_image030

那么如果我们使用 bcdedit.exe /? 这就是显示使用方法:

clip_image032

下面给出bcdedit.exe的常用参数:

/createstore 新建空的启动配置数据存储。

/copy 复制存储中的项。

/create 在存储中新建项。

/delete 删除存储中的项。

/deletevalue 删除存储中的项选项。

/set 设置存储中的项选项值。

下面咱们就以一个实例来讲解一下双启动的故障修复

参考图形:

clip_image035

环境描述:先在C盘安装了一个Win2003,然后又在D盘安装了一个Win2008。

分析:那么C盘现在是系统分区,如果用Win2003启动的话,那么启动分区就是C盘,否则就是D盘。虽然2008现在安装在D盘,但还是要向系统分区也就是C盘修改了三个地方:PBR、Bootmgr、BCD。只要安装了Vista或是2008就一定会向系统分区中修改这三个地方。

故障产生:现在C盘的Win2003因为某种原因需要重新安装,那么原来的三个信息PBR、Bootmgr、BCD都没有了,因此D盘的2008不能启动了。

解决方法:只要还原C盘的PBR以及Bootmgr和BCD文件即可!

方法:使用Win2008的安装光盘进行命令行修复模式或者是第三方的小工具!

然后输入命令:bootsect sys /nt60 就会重

实现过程:利用Win2008安装光秀的命令行修复模式

现在我把C盘的Win2003重新安装一遍。(当然大家用Ghost也可以)安装成功后就直接进入WIN2003,Win2008无法启动!

进入Win2003之后,我们来查看系统分区下的相关文件:

clip_image037

发现只有Ntldr,不见bootmgr和boot文件夹当然也没有BCD信息了!下面我们开始修复:

方法

把载入Win2008的安装光盘。然后启动,如图所示:

clip_image039

点击:修复计算机,出现下图:

clip_image041

显示当前没有找到要修复的操作系统,点击:下一步

clip_image043

点示:命令提示符,出现下图:

clip_image045

出现命令行提示符,但大家注意了这里的盘符是X盘,这是为什么呢?原来这只是一个虚拟出来的盘符,大家可千万不要在此输入修复命令,一定不成功的!我们要切换到真正光盘所在的盘符:

clip_image047

下面我们的操作就在此提示符下进行:

clip_image049

在上图中所用到的命令我已经使用红框做了标记,

其中几个复制命令是为了生成bootmgr以及BCD,bootsect.exe /nt60 SYS是为了更新Win2008的PBR。

最后EXIT退出!

clip_image051

clip_image053

重新启动,不必再手动选择从光盘启动系统也会自动从光盘启动,再进入&ld

clip_image055 clip_image057

选择“修复并重新启动”。重启修复正常后进入Win2008系统。但不能启动Win2003,这是因为BCD中没有Win2003的配置信息,如图所示:

clip_image059

在Win2008系统下用bcdedit.exe 修复双启动菜单,在BCD中加入Win2003的配置信息,相关命令如下:

a. 创建基于ntldr的OS加载器项: /d为用户选择时的提示内容,可以随意输入

bcdedit /create {ntldr} /d “Windows Server 2003”

b. 设置OS所在分区

bcdedit /set {ntldr} device partition=D: (D: 为XP的系统所在分区)

c. 设置OS所使用的ntldr文件位置

bcdedit /set {ntldr} path \ntldr

d. 使此OS项加入到bootmgr界面中

Bcdedit /displayorder {ntldr} –addlast

e. 生成此项的描述信息:

Bcdedit /set {ntldr} description “Windows 2003”

具体操作如图所示:

clip_image061

再次查看就有我们新建的启动项了:

clip_image063

我们可以重新启动计算机,进行测试:

clip_image065

至此,修复操作终于结束了!我的天呀!累死我了!

注意:如果某个节点我们不需要了,也可以删除节点,如:bcdedit –delete {ntldr} -f

那么如果你手头没有Win2008的安装光盘,也可以借助第三方工具来修复和Win2008相关的信息。我在此从网上下载了一个修复工具:BCDautofix,操作起来更为简单!

实现过程:借助第三方工具修复Win2008的启动故障

方法: 从网上下载修复的小工具,如BCDautofix。

双击BCDautofix.exe 如图所示:

clip_image067

clip_image069

clip_image071

然后重新启动计算机:

出现:

clip_image073

进入系统后发现 bootmgr、BCD等信息都已经回来了!

clip_image075

至此修复成功!不行了,坚持不住了,我去睡觉了!。。。。。。。。。。。。 

本文出自 “杜飞” 博客,转载请与作者联系!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

谈win2003与win2008启动原理及双启动的故障解决方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

谈win2003与win2008启动原理及双启动的故障解决方法

最近经常有学生询问Win2008的启动相关问题以及早期Windows版本与vista或win2008并存时的启动问题,现在可以说正是处于操作系统新旧版本的过滤时期,这类问题会在一定时间内越来越多,所以本人就写了这篇文章来谈论一下
2023-06-10

Win7常见启动故障产生的原因及解决方法整理

相信绝大多数朋友都用上了Win7系统了吧,Win7系统虽然比以前其他版本的Windows系统都稳定得多,但是由于安装某些特殊软件或误操作,系统还是会出现各种启动故障。接下来,笔者就来给大家分析一下Win7常见启动故障产生的原因以及如何解决相
2023-06-02

tomcat启动闪退的原因及解决方法

这篇文章主要讲解了“tomcat启动闪退的原因及解决方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“tomcat启动闪退的原因及解决方法”吧!方法/步骤 下面我先跟大家确认一下问题出现的前
2023-06-02

tomcat无法启动的原因及解决方法是什么

Tomcat无法启动的原因有很多,可能是配置文件错误、端口冲突、内存不足、JDK版本不匹配等。解决方法如下:1. 检查配置文件:确保配置文件(如server.xml)中的参数、路径和文件名没有错误。2. 检查端口冲突:确保Tomcat使用的
2023-10-09

MySQL启动不了的原因及解决方法是什么

MySQL启动不了的原因可能有很多,常见的原因及解决方法如下:端口被占用:可能是由于其他程序占用了MySQL默认的端口(3306)。可以通过更改MySQL配置文件(my.cnf)中的端口号来解决。配置文件错误:MySQL的配置文件(my.c
2023-10-24

电脑不启动的原因及解决方法是什么

电脑不启动的原因多种多样,可能是硬件故障、软件问题、电源故障等。以下是一些常见的原因及解决方法:1. 电源故障:检查电源插头是否插好,电源线是否接触良好,尝试更换电源线或电源适配器;2. 内存故障:将内存重新插拔一次,确保插好;尝试更换或重
2023-09-07

linux启动很慢的原因及解决方法是什么

Linux启动慢的原因有很多,常见的包括:1. 系统服务过多:启动时会加载很多系统服务和进程,如果系统服务过多,会导致启动时间延长。解决方法:可以通过禁用一些不必要的服务或者使用更轻量级的替代服务来减少启动时间。2. 硬件配置不足:如果硬件
2023-08-30

win11无法正常启动的原因及解决方法是什么

Win11无法正常启动的原因及解决方法可能有多种。1. 硬件兼容性问题:Win11对硬件有一定的要求,如果硬件不符合要求,可能无法正常启动。解决方法是检查硬件是否符合Win11的要求,并进行相应的升级或更换。2. 设备驱动问题:某些设备驱动
2023-09-07

电脑老是自动重启的原因以及解决方法

电脑自动重启可能有多种原因,以下是一些常见的原因和解决方法:1. 硬件问题:有时候电脑自动重启是因为硬件故障,如过热、电源供应问题、内存损坏等。解决方法包括清理电脑内部的灰尘、检查电源供应是否正常、更换损坏的内存条等。2. 软件问题:某些软
2023-09-07

电脑启动不了的原因及解决方法是什么

电脑启动不了的原因及解决方法有很多,以下是一些常见的原因和解决方法:1. 电源问题:检查电源线是否插紧、电源插座是否正常,尝试更换电源线或者电源适配器。2. 内存故障:如果电脑发出蜂鸣声或者出现蓝屏错误提示,可能是内存故障。尝试重新插拔内存
2023-09-07

Win10 10049无法启动Hyper-V虚拟机的原因及解决方法

安装上Win10预览版10049后,很快就发现Win10自带的虚拟机Hyper-V无法启动。经过收集用户反映的情况,发现这问题并不简单,不过也找到了相应的解决方法。首先,如果你之前在Win10 10041预览版中未开启Hyper-V虚拟机,
2023-06-14

Windows7系统摄像头黑屏无法启动的原因及解决方法

有些Win7用户在使用摄像头时,突然发现摄像头无法正常启动,显示出一个黑屏,这个问题该怎么修复呢?现编程客栈在就让小编来给大家分析一下摄像头黑屏的原因及其解决方法吧。win7摄像头黑屏原因:1、摄像头设备没有插好2、摄像头驱动没有安装正确3
2023-06-10

阿里云服务器MySQL启动不了的原因及解决方法

阿里云服务器(AlibabaCloudServer)是阿里云提供的一种弹性计算服务,可以为用户快速部署和管理虚拟服务器。然而,有时候用户可能会遇到MySQL无法启动的问题。本文将介绍一些可能导致阿里云服务器MySQL启动不了的原因,并提供相应的解决方法。1.MySQL配置文件问题MySQL启动时需要读取配置文件以
阿里云服务器MySQL启动不了的原因及解决方法
2024-01-01

Vista启动提示Bootmgr is compressed的原因以及完美解决方法

1、安装了vista精简版[暗暗制作]系统,立刻被vispythonta的华丽所震撼,更新完所有补js丁后,看着不多的C盘空间,于是立编程刻进行减肥。当对C盘进行了压缩后,恶梦开始了。重启后显示:“BOOTMGR is comp
2023-05-26

sql数据库启动不了的原因及解决方法是什么

SQL数据库启动不了的原因及解决方法可能有很多,以下是一些常见的原因及解决方法:1. 数据库服务未启动:检查数据库服务是否已启动,可以在命令行中输入"services.msc"查看并启动数据库服务。2. 数据库配置错误:检查数据库配置文件是
2023-09-04

Win10系统U盘启动蓝屏无字的缘故及解决方法

Win10系统U盘启动蓝屏无字的缘故及解决方法,一般这样的事情有2种缘故,一种很有可能是由于系统问题,而这类多是因为开发设计阶段导致的兼容问题导致。另一种可能是Bios中的硬盘格式有误导致的。小编将给大家介绍一下解决win10系统U盘启动蓝
2023-07-10

Win8.1系统关闭Secure Boot安全启动后开机画面变红的故障原因及解决方法

win8.1系统中玩一些游戏需要关闭Secure Boot安全启,按照要求关闭Secure Boot安全启以后,开机画面就会显示一个电脑品牌Logo,而且开机画面也会变红,具体现象如下所示:故障原因分析: 因为禁用 Secure Boot
2022-06-04

Win8.1启动进入系统没有开机音乐的原因及解决方法

无法启动摄像头原因分析:Win8.1系统的关机动作默认执行的是深度休眠,而非完全关机,在设置勾选了“播放Windows启动声音”的状态下,并未取消“启用快速启动”功能,所以电脑执行的是从深度休
2022-06-04

Win7旗舰版中3dmax安装后无法正常启动的原因及解决方法

问:我的电脑安装的是win7旗舰版系统,但是在安装了3dmax软件之后,却发现虽然安装上了,但是无法正常启动是怎么回事。 原因解析: 出现这样的问题如果不是兼容性问题的话,那么一般就是由于用户的Windows系统文件安装不全导致的,一般会少
2023-06-06

编程热搜

目录