开发者社区> 科技小能手> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Windows XP \Windows 2003启动过程的学习及故障分析处理(六c)

简介:
+关注继续查看
Windows XP \Windows 2003启动过程的学习及故障分析处理
         (六C)
细述引导文件(C)——boot.ini
boot.ini
通过前面的学习,我们知道NTLDR最重要的功能是:寻找、装载ntoskrnl.exe并准备运行之。具体是怎么找到ntoskrnl.exe的呢?这就必须依赖boot.ini文件。boot.ini文件位置与NTLDR一样,处于启动(引导)分区的根目录中。下图就是我的计算机boot.ini文件内容,它是很有代表性的,如果您只在C盘装的单系统Windows xp,boot.ini就和下图应该是一模一样。

         

 boot.ini文件内容包括了那些呢?我们试着解读。通过boot.ini我们可以知道计算机中装了几个操作系统,默认运行的是哪一个?多系统选择屏幕等待时间多长?最重要的是让我们(更确切的说是让NTLDR)知道,各个操作系统在计算机磁盘的哪个分区上(multi(0)disk(0)rdisk(0)partition(1)\WINDOWS就是物理地址,partition(1)通常就是C盘,partition(2)通常就是D盘,以此类推),以便您选择了某个操作系统后,NTLDR能准确寻找其系统文件(中的ntoskrnl.exe),顺利的继续后面的启动过程,最终建立该操作系统。

 
boot.ini文件内容对于装有多操作系统的计算机特别重要。对于单操作系统似乎不那么重要,我曾经做过实验,把boot.ini删除了,在启动过程中,屏幕出现了“Boot.ini文件非法或不存在,那么NTLDR将会尝试从默认系统卷启动系统”的提示,但最终还是能够启动系统!
  
 如果计算机装有多操作系统,启动过程中会出现一个多系统选择菜单的画面,你可以选择您想进入的那个操作系统(操作系统的名称就是Boot.ini里面“”的内容,如“"Microsoft Windows XP"”)如果您不做选择,在等待时间时间(由Boot.ini里面的default确定)到了以后,便进入默认(time out所确定的,我的计算机是三秒)的系统。如果装有一个操作系统,则不会出现系统选择画面而直接进入。
       
boot.ini文件内容我们可以查看。 通过“开始——运行——msconfig ——Boot.ini”就可以查看boot.ini,在此还可以做些调整,如改变默认进入的操作系统。我们也可以通过
“我的电脑——属性——高级——启动和故障恢复——编辑”,打开修改boot.ini文件内容。
其实最简单的方法,直接双击C盘中的boot.ini就可以查看修改boot.ini文件内容。

         

boot.ini不仅有固定的格式,还有一些参数可以选择,如/fastdetect 参数在指定的通信端口处禁用 NTDETECT 串行和并行端口设备检测。如果你未指定通信端口,此参数会在所有的串行和并行端口上禁用检测noexecute=optin参数表示仅针对操作系统组件(包括 Windows 内核与驱动程序)启用 DEP等。我们这里主要以恢复正常的启动为目的,不做过深的研究。

 虽然boot.ini可以修改,但我不推荐一般人对其动手动脚,除非你是高手。
 
boot.ini是安装系统时生成的。他的生成有点意思——当你装多系统的时候,他会自动修改。比如,你先在计算机C盘安装了一个"Microsoft Windows 2000",形成的boot.ini如下

         

 接着你又在计算机D盘安装了一个"Microsoft Windows xp"时,不会再形成的第二个boot.ini(注:也不会形成的第二个NTLDR和NTDETECT.COM),而是在原来的做了改变,在[operating systems]增加了一条,如下

        

 这样,安装后启动计算机时,就出现操作系统选择菜单了,你可以自由选择其中一个,不会有问题。这里也是这里也是计算机启动过程中第二个分岔处(还记得吗,BIOS阶段引导设备的选择是第一个分岔处)。

如果你的第一个安装的操作系统是"Microsoft Windows 98",以后安装是"Microsoft Windows xp",此时不仅boot.ini自动做了修改,还会自动生成一个叫BOOTSECT.DOS(DOS的引导区副本) ,计算机启动,当你选择"Microsoft Windows 98"时,系统将从NTLDR——BOOTSECT.DOS——IO.SYS——MSDOS.SYS——CONFIG.SYS——Command.com——AUTOEXEC.BAT等DOS内核系统启动的程式进行。
 
这里要注意多系统安装时的先后顺序问题:
必须先安装低版本操作系统,再安装高版本的操作系统!如果你已经安装了一个高版本的操作系统,那么如果再想安装一个低版本的操作系统,那么低版本的操作系统在安装后会出现无法进入原来高版本的操作系统的故障。问题的原因高版本的引导文件被低版本的覆盖了,这样顺序是不能形成正确的boot.ini文件。另外,低版本的NTLDR和NTDETECT.COM不能识别高版本操作系统的NTOSKRNL.EXE,从而造成系统不能正常启动。
 
现在win7引导方式不同于Windows xp,但可以向下兼容低版本的微软的操作系统。当Microsoft Windows xp与win7双系统安装时,也必须低版本操作系统(Windows xp),再安装高版本的操作系统(win7)!如果先安装win7后安装Windows xp操作系统,在安装后会出现只能进入Windows xp,无法进入原来win7操作系统的故障不过可以用小软件BCDautofix V1.0.3.exe修复一下就能解决问题。
 
 
boot.ini可能出现的故障现象及处理方法:
现象:屏幕提示“Boot.ini文件非法或不存在,那么NTLDR将会尝试从默认系统卷启动系统”
处理方法:如果是单系统,可以不做什么处理,系统最终能启动成功。在多系统时,重建Boot.ini可利用微软的系统安装盘引导进入“恢复控制台”(RECOVERY CONSOLE),运行“Bootcfg/rebuild”命令,这是官方提供的解决方案。
也可以利用第三方相关软件(参见下图“系统引导生成/修复工具”“NT系统启动高级修复”等软件,现在许多维修PE多有这些或者类似的软件,这些东东来自民间高手,很好使,效果也不错,比微软的用RECOVERY CONSOLE修复更方便,中文界面,基本就是点点鼠标,不用你记忆输入那些命令),进入PE环境运行,进行重建或修复Boot.ini
 

           

  

           

现象:屏幕提示下面两图之一,

 

     

 

     

 处理方法:(这两个界面经常会碰到)从提示的字面意思说的是WINDOWS\system32中的Ntoskrnl、Hal.dll损坏或丢失,但也可能是Boot.ini问题,设置不对。我做过实验,我的系统文件实际是在C盘,我故意把我的Boot.ini从原来的正确C盘改为D盘,启动失败了,就出现上面的提示。想想也是,系统文件实际是在C盘,C盘里有Ntoskrnl、Hal.dll等,D盘当然找不到这些文件,所以报丢失。

出现这两种提示,问题可能出在WINDOWS文件夹里,也可能是Boot.ini问题,也就是说同一种症状,引起的原因并不是唯一的,这就要求我们运用相关知识与经验,逐个排查。
具体处理方法同上。
 
 
                                                                   (待续)

 


本文转自madin10000 51CTO博客,原文链接:http://blog.51cto.com/20100823/1064241

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
在Windows Server系统上配置静态IP
在Windows Server系统上配置静态IP的方法
0 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
ECS运维指南之Windows系统诊断
立即下载
TAKING WINDOWS 10 KERNEL
立即下载
《云服务器运维之Windows篇》
立即下载