玩通透 全面解析Windows双系统引导菜单

2024-04-29 02:58

本文主要是介绍玩通透 全面解析Windows双系统引导菜单,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

现在,使用双系统的朋友可不在少数,在开机时,系统会显示一个双引导菜单让我们选择欲进入的操作系统(图1),如果不选择的话,将会在30秒后自动引导高度条所在的操作系统。不过,你对双引导菜单到底了解多少呢?
  
  

 


  
  一、双引导是如何实现的
  
  当系统加电自检通过后(POST),BIOS将根据用户事先设置的引导顺序从硬盘或软驱或光驱进行启动,例如硬盘启动是首先将主引导记录读入内存,然后将控制权交给主引导程序,再检查分区表的状态,寻找活动的分区,最后再由主引导程序将控制权交给活动分区的引导记录,最后由引导记录加载操作系统。
  
  因此,只要你按照先Windows 9x/ME,再Windows 2000/XP的顺序安装系统,一般情况下即可自动生成双引导菜单,但如果顺序相反的话,双引导菜单可就无法自动生成了。
  
  二、自由摆布双引导菜单
  
  其实,图1所示的系统引导顺序我们完全可以自由调整,包括缺省引导的操作系统、显示操作系统列表的时间、在需要时显示恢复选项的时间等。
  
  在Windows XP/2000中,在桌面上右击“我的电脑”图标,再依次点击“系统→高级”,就可以看到 “启动和故障恢复”对话框(图2),这个对话框可以完成以下设置任务:
  
  

 


  
  1.更改默认的操作系统
  
  只要在“默认操作系统”下拉列表框中选择一个操作系统即可,选择后会看到在""后多出一个“/fastdect”的单词,这说明该操作系统已被设置为默认的引导系统,点击下面的“确定”即可生效。
  
  2.设定显示操作系统列表的时间
  
  在这里你可以自由设定显示操作系统列表的时间或者显示恢复选项的时间,缺省设置是30秒,不过我们可不希望在启动时等待如此之久,因此将它改成了5秒,建议朋友们不要再缩短这个时间,否则可来不及按下F8键了。
  
  三、深入认识双引导菜单
  
  不过,笔者更感兴趣的是上图中的这一句话:要手动编辑启动选项,请单击“编辑”。这个“编辑”按钮下有些什么内容呢?
  
  原来,双启动菜单是由一个名为boot.ini的文本文件所控制,所谓“手动编辑启动选项”也就是说对这个文本文件中进行手工编辑(图3),这里的内容虽不多,但朋友们可能不太容易理解,这里笔者就详细解释一下:
  
  

 


  
  1.[Boot Loader]:引导记录
  
  (1)timeout=5
  
  在你选择默认操作系统之前,“timeout”表示在NTLKR加载默认的操作系统之前可供用户从启动加载程序画面选择操作系统的秒数,如果该值为0,则NTLDR将不显示加载程序画面,而直接启动默认的操作系统,其实它也就是前面所提到的“显示操作系统列表的时间”框。默认值是30秒,这里笔者已经将之调整为5秒。
  
  (2)Default=multi(0)disk(0)rdisk(0)partition(2)WINDOWS
  
  Default当然是指默认(缺省)的意思,也就是系统默认要加载的那个操作系统路径,即系统启动时等待你选择的高亮条部分。但可能有很多朋友对multi(0)、disk(0)、rdisk(0)、partition(1)这些名称很不理解,其实在Windows中,这涉及到ARC的一些知识:
  
  ARC是x86或RISC计算机中用于标识设备的一种动态方法,ARC命名的第一部分是用于标识硬件适配卡/磁盘控制器,典型的ARC名字的构成结构如下所示:
  
  component(x)disk(y)rdisk(z)partition(a)
  
  这里的“component”字段一般只有两种有效值:scsi和multi,代表设备的硬件适配器。scsi当然是指SCSI磁盘,multi则是指除SCSI之外的其它磁盘接口。“x”代表适配器的序号,第一个为0,第二个为1,该值可以一直分配下去,直到所有驱动器分配结束;皔”是指多总线SCSI适配器中的总线号码,对multi而言,该值为0;“z”是指multi适配器上磁盘的序号,对SCSI该值为0;“a”是指磁盘上分区的序号,所有分区都有一个对应号码,从1开始,但不包括0和5。
  
  因此,“Default=multi(0)disk(0)rdisk(0)partition(2)WINDOWS”这行语句的含义就是指默认的操作系统位于一块非SCSI接口的序号为0的硬盘上的第2个分区上。这里的“partition(2)”是计算机中第一个物理硬盘上的第二个分区,实际上就是D盘(笔者将Windows XP安装在D盘,而将Windows 98SE安装在C盘),现在你弄清楚了吧?
  
  2.[Operating System]:操作系统
  
  (1)multi(0)disk(0)rdisk(0)partition(2)WINDOWS="Microsoft Windows XP Professional" /fastdetect
  
  现在就很容易理解了,这行语句是告诉我们:默认的操作系统是D盘上的“Microsoft Windows XP Professional”,即Windows XP。这里的“/fastdetect”是一个使用参数,代表启动时不检查串行口和并行口。
  
  (2)C:="Windows 98SE"
  
  这是第2个操作系统,在启动菜单中显示为“Windows 98SE”。
  
  3.附录:boot.ini文件的使用参数
  
  刚才,我们已经提到“/fastdetect”是一个使用参数,代表启动时不检查串行口和并行口。详细说来,boot.ini文件中还可以使用好多参数呢。但太多的使用参数,它们的含义怎么记得住哟?不要紧,在“命令提示符”下使用“BOOTCFG /?”命令就可以查看所有参数列表及其解释了(图4)。
  
  

 


  
  四、双启动菜单的高级编辑
  
  怎么样,现在你对boot.ini文件的结构和用途弄明白了吧?其实,编辑boot.ini文件和在图2对话框中进行编辑结果是一致的,不同的是如果由于某种原因而无法进入Windows时,你就可以在在DOS下或另一操作系统中手工编辑boot.ini这个文件啦。
  
  1.在DOS或其他操作系统中手工编辑启动选项
  
  简单来说,可以修改的启动选项包括默认操作系统的修改、设置显示操作系统列表的时间、修改启动菜单中操作系统的显示名称等。首先,打开“我的电脑→工具→文件夹选项→查看”,在“高级设置窗口”中去掉“隐藏受保护的操作系统文件”前面的钩然后“确定”;进入C盘根目录就可以找到boot.ini文件了。这里笔者试着将双引导菜单中原来的那行“Windows 98SE”改成了吓人的“Microsoft Windows 2008”(图5),重启后看看,有新意吧?
  
  

 


  
  2.去除手工删除操作系统后留下的尾巴
  
  可能朋友们都有这样的体会,请神容易送神难,当某种情况下不得不手工删除一个操作系统后却发现启动菜单中还保留着那烦人的选项,而且还必须等待30秒,除非你敲下回车键。特别是在安装多操作系统的情况下,我们为了图省事,通过格式化的方法重新安装了某一操作系统,却发现已丢失了那个多重启动菜单,此时该怎么办,难道必须再一次安装另一操作系统吗?
  
  现在,我们只要打开这个boot.ini文件,将已删除的操作系统那行语句删除就万事大吉啦。当然,如果boot.ini文件的属性是只读,请先去除呀,另外请删除时先备份原文件。
  
  3.小小改动,防止他人使用系统
  
  知道了boot.ini文件的原理,我们可以对它进行小小的改动,这样就可以防止他人未经授权使用系统。例如,将boot.ini文件更名或者转移到其他路径下,系统启动时找不到该文件,就会不断报错无法进入;或者也可以对boot.ini文件中的语句进行改动,例如将“Default=multi(0)disk(0)rdisk(0)partition(2)WINDOWS”更改为“Default=multi(0)disk(1)rdisk(0)partition(2)WINDOWS”就可以了。以后自己要使用时,只要改回去即可。不过,新手们还是不要动它,否则,你就只能望屏兴叹了。
  
  五、如何恢复受损的双引导菜单
  
  相信使用双操作系统的朋友一定对双引导菜单是又爱又恨,原因当然是这个双引导菜单经常会莫名其妙地出现各种故障,例如重新安装了Windows 9x或格式化了C盘,这时启动时就不会再看到这个双引导菜单,自然也就无法进入另一个操作系统中,该如何来恢复它呢?
  
  其实,方法简单得很,虽然双引导菜单受到破坏,但另一操作系统的系统文件和配置均未受损,你只要重新运行Windows 2000/XP安装程序,选择“修复”安装,待文件复制结束第一次提示重新启动时选择不启动,然后结束安装,再手工删除硬盘根目录中一些以$开头的文件夹或文件(它们都是在安装过程中产生的临时文件),重新启动后即可恢复引导菜单了。

这篇关于玩通透 全面解析Windows双系统引导菜单的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/944948

相关文章

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

Golang HashMap实现原理解析

《GolangHashMap实现原理解析》HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持高效的插入、查找和删除操作,:本文主要介绍GolangH... 目录HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持

Windows 上如果忘记了 MySQL 密码 重置密码的两种方法

《Windows上如果忘记了MySQL密码重置密码的两种方法》:本文主要介绍Windows上如果忘记了MySQL密码重置密码的两种方法,本文通过两种方法结合实例代码给大家介绍的非常详细,感... 目录方法 1:以跳过权限验证模式启动 mysql 并重置密码方法 2:使用 my.ini 文件的临时配置在 Wi

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

Python利用ElementTree实现快速解析XML文件

《Python利用ElementTree实现快速解析XML文件》ElementTree是Python标准库的一部分,而且是Python标准库中用于解析和操作XML数据的模块,下面小编就来和大家详细讲讲... 目录一、XML文件解析到底有多重要二、ElementTree快速入门1. 加载XML的两种方式2.

Java的栈与队列实现代码解析

《Java的栈与队列实现代码解析》栈是常见的线性数据结构,栈的特点是以先进后出的形式,后进先出,先进后出,分为栈底和栈顶,栈应用于内存的分配,表达式求值,存储临时的数据和方法的调用等,本文给大家介绍J... 目录栈的概念(Stack)栈的实现代码队列(Queue)模拟实现队列(双链表实现)循环队列(循环数组

java解析jwt中的payload的用法

《java解析jwt中的payload的用法》:本文主要介绍java解析jwt中的payload的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java解析jwt中的payload1. 使用 jjwt 库步骤 1:添加依赖步骤 2:解析 JWT2. 使用 N

Python中__init__方法使用的深度解析

《Python中__init__方法使用的深度解析》在Python的面向对象编程(OOP)体系中,__init__方法如同建造房屋时的奠基仪式——它定义了对象诞生时的初始状态,下面我们就来深入了解下_... 目录一、__init__的基因图谱二、初始化过程的魔法时刻继承链中的初始化顺序self参数的奥秘默认

Windows Docker端口占用错误及解决方案总结

《WindowsDocker端口占用错误及解决方案总结》在Windows环境下使用Docker容器时,端口占用错误是开发和运维中常见且棘手的问题,本文将深入剖析该问题的成因,介绍如何通过查看端口分配... 目录引言Windows docker 端口占用错误及解决方案汇总端口冲突形成原因解析诊断当前端口情况解

Java 正则表达式URL 匹配与源码全解析

《Java正则表达式URL匹配与源码全解析》在Web应用开发中,我们经常需要对URL进行格式验证,今天我们结合Java的Pattern和Matcher类,深入理解正则表达式在实际应用中... 目录1.正则表达式分解:2. 添加域名匹配 (2)3. 添加路径和查询参数匹配 (3) 4. 最终优化版本5.设计思