位置: 编程技术 - 正文

谈win2003与win2008启动原理及双启动的故障解决方法(win7和2008r2)

编辑:rootadmin

推荐整理分享谈win2003与win2008启动原理及双启动的故障解决方法(win7和2008r2),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:win2003和2008的区别,win2003和2003r2,win2008与win7,win2003和2003r2,windows2008和2012哪个好,win7和2008r2,win7和2008r2,win2008r2比win7流畅,内容如对您有帮助,希望把文章链接给更多的朋友!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Winlogon进程

Msgina.dll文件

Netlogon服务

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

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

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

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

PBR:分区引导记录 Partition Boot Record

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

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

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

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

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

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

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

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

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

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

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

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

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

/copy 复制存储中的项。

/create 在存储中新建项。

/delete 删除存储中的项。

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

谈win2003与win2008启动原理及双启动的故障解决方法(win7和2008r2)

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

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

参考图形:

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

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

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

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

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

然后输入命令:bootsect sys /nt 就会重建PBR的相关信息!

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

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

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

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

方法:

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

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

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

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

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

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

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

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

最后EXIT退出!

重新启动,不必再手动选择从光盘启动系统也会自动从光盘启动,再进入“修复计算机模式”会自动出现下图所示:

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

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

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

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

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 ”

具体操作如图所示:

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

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

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

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

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

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

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

双击BCDautofix.exe 如图所示:

然后重新启动计算机:

出现:

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

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

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

windows 系统模拟蓝屏的实现方法 在Windows运维过程中,经常会遇到问题,需要故障重现,以下是模拟操作系统蓝屏的方法,a)当问题再次发生,我们可以收集fullmemorydump.配置的具体方法

怎么测试Windows系统中的服务器端口是否开放? 在工作中处理服务器故障问题的时候,经常需要检测一下Windows的服务器业务端口是否开放,是否能正常在外面通讯。下面小编与大家分享一下如何在wind

微软补丁星期二不再公开分享补丁预告 仅向高级消费者公开 十多年来作为补丁星期二项目的常规部分,微软会提前分享预先通知服务(ANS),对本月即将上线的补丁大致内容进行预告,粗略了解补丁的大致内容

标签: win7和2008r2

本文链接地址:https://www.jiuchutong.com/biancheng/354955.html 转载请保留说明!

上一篇:windows已阻止此软件因为无法验证发行者的解决办法(windows10已经阻止此软件)

下一篇:windows 系统模拟蓝屏的实现方法(windows模拟器(可安装电脑软件))

  • 只拿了营业执照十年无办税好注销吗
  • 小规模增值税减免会计账务处理
  • 当月开票没有收到钱
  • 印花税的计税依据为各种应税凭证上所记载的计税金额
  • 开业前的其他费用
  • 商贸企业购进商品怎么做成本
  • 未开业零升报企业是否做年度汇算清缴申报
  • 农产品销售发票可以抵扣吗?
  • 预收账款和预付账款什么时候用
  • 建筑业开票金额与审定金额之间的关系
  • 公司注销地税时其他应收款要缴纳个人所得税吗?
  • 物业费需不需要物价局审批
  • 消费税的纳税义务人
  • 户外拓展费用入什么科目
  • 打开我的电脑提示该文件没有与之
  • unsupportedfirsthd解决办法
  • 电子专用发票没有发票代码
  • 如何用u盘装系统知乎
  • 惠普笔记本电源适配器
  • w10系统安装office
  • php数组函数实现机选双色球
  • 实例简介php的一般过程
  • 工厂返费能拿到吗
  • 退货红冲发票要收回原发票吗
  • Win10 KB5005033 给某些用户带来了新问题的解决方法
  • 将自产的应税消费品对外捐赠
  • win10如何给文件夹上锁
  • 公司为员工发放生日福利
  • win10默认网关不可用总掉线解决方法
  • 银行存款日记账与银行对账单之间的核对属于
  • 提供劳务收入如何核算
  • php制作简单的表单代码
  • 购买支票费用计入
  • 减值准备对方科目不能是固定资产
  • 普通发票被退回怎么处理
  • PHP自定义函数返回两个数中大的那个
  • 44岁就没有月经了正常吗
  • 大学生web前端期刊有哪些
  • php第三方支付
  • 专用发票抵扣联是什么意思
  • 估价入库怎么记账
  • 上个月未开票本月怎么算
  • 增值税普通发票几个点
  • ps调色的作用
  • 速动资产扣除应纳税所得
  • 应收账款逾期无法偿还
  • 挂靠到运输公司的车转让给个人如何交增值税
  • 缴纳以前年度房产税分录
  • 税控盘的作用是什么
  • 预付账款和应付账款怎么合并
  • sql server s
  • 应收账款余额贷方
  • 企业财务费用为负好不好
  • 利润的敏感性分析怎么做?
  • 房屋租赁费属于变动成本吗
  • 待抵扣增值税退税
  • 印花税计入相关资产成本吗
  • 企业收到的财政性补贴要交企业所得税吗
  • 支付金额小于发票怎么办
  • 建安企业增值税预缴
  • 主营业务成本可以设明细科目吗
  • 外购货物分配给股东
  • 应交土地增值税的三种情况
  • ghost读取不到硬盘
  • linux网络协议栈内核分析
  • linux常用命令top
  • xp开机chkdsk
  • macbook 如何设置safari的搜索引擎
  • centos中netspeeder网络加速/优化器的安装方法
  • win7任务栏显示预览窗口
  • win10系统无法登陆
  • [置顶] 关于在vs2013中配置opengl红宝书第八版环境
  • javascriptjs
  • js创建元素
  • jquery validate
  • 批处理应用实例
  • angular1
  • unity如何成一组
  • 安卓中的HTTP编程
  • jquery1
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设