win2000启动菜单实现windows全家福

发表于:2007-05-25来源:作者:点击数: 标签:
Q:为什么要用win2000的多启动菜单而不用其它第三方的多启动软件? A:win2000(包括NT4)的多启动菜单位于系统活动分区的启动区,容易管理,出错或染毒后可以简单用软盘启动机器,然后sys c:就恢复了系统启动区。另外,我们知道,硬盘最重要的是位于0道的分

    Q:为什么要用win2000的多启动菜单而不用其它第三方的多启动软件?
  A:win2000(包括NT4)的多启动菜单位于系统活动分区的启动区,容易管理,出错或染毒后可以简单用软盘启动机器,然后sys c:就恢复了系统启动区。另外,我们知道,硬盘最重要的是位于0道的分区表,如果因为反复的读写分区表而使分区表出现坏道的话,那么硬盘基本上等于报废。而分区的系统区却是随着分区位置和大小的不同而处于不同的位置。所以即使硬盘出现了坏道,也不影响它的使用。

  Q:win2000的启动菜单可以支持安装多少个系统吗?

  A:这个问题可不好回答,如果你的硬盘分区时划出三个主分区,另外加上N个扩展分区,那win2000所支持的系统可就不好估量了。但这不是我们讨论的重点,我们讨论的是在同一硬盘上安装dos6.22,win32,win95,win98,winme,winnt4,win2000.或者还可以加上winxp.

  Q:以前的多系统软件都需要重新分区(主要是分出几个主分区),而我的硬盘只有一个主分区和一个扩展分区,能用win2000的多系统吗?

  A:可以。我们知道,NT4和NT5(win2000)可以安装在扩展分区,但它们的启动菜单只支持从逻辑分区上启动win2000,并不支持启动逻辑分区上的其它系统。而且,微软的产品都有一个特点,总是认为它启动的分区是活动分区(就是我们常说的c盘),所以,大部分资料介绍的微软全家福都是备分各个操作系统的c盘启动软件,通过文件的覆盖替换实现。这总让人觉得不满意,能不能如win95进入dos6.22那样,仅仅靠文件的改名来实现呢?是什么原因造成了这个笨办法呢?

  其实这个问题很简单。因为微软的产品的启动文件中有一个叫做IO.sys的,它的位置必须是活动分区的第一个文件,所以为个这个第一,前面的方法必须通过覆盖才能保证它的第一。

  所以,我们的目的就是要让win2000支持从逻辑分区启动其它的windos,并且通过简单的文件改名来实现微软全家福。

  A:你说得那么好听,如何做呢?

  Q:进入实战前我们先假设你现在的硬盘结构是由微软的标准fdisk分的区,即一个C盘和数个逻辑盘。c:盘装win98(或者是winme),d:盘安装win2000这样一个标准的结构。(什么,你还没装win2000?不要紧,不装win2000同样也可以实现我前面提到的多windos共存。这个技巧对于安装了win2000后又用以前的win9x克隆恢复C盘,丢了win2000启动菜单的朋友同样适用。不过话要一句句讲,请耐心看下去。)

  1.我们的第一个分区C:做成dos6.22,win32,win95共存。

  这个就不用我多说了吧,win9X本身就支持这三个系统共存。简单说一下就是拷入dos6.22的系统文件到c盘根目录,并命名IO.dos,MS.dos,config.dos,autoexec.dos,将win95的IO.sys在c盘根目录复制一分,命名为IO.w40,并设置MSdos.sys的BootMulti=1。

注意,c盘的格式必须为fat16(如果你打算放弃dos6.22,也可以用fat32。上面所说的就不用改啦。)


  2.将win98的克隆备分还原到d盘,将winme克隆备分还原到e盘,没克隆你就慢慢装吧。

  为了保证做好的c盘,请用安装方式在D盘和E盘安装win9x的同志先保留下c盘的IO.sys,msdos.sys安装完成后用它们覆盖同名的文件。并做win98和winme的启动盘(克隆的同志就不做了)做好后用相应的启动盘启动系统,sys d: ; sys e:分别传送系统到对应的逻辑分区。

  3.安装win2000到F盘,有克隆的同志还是可以用克隆。没克隆的同志也可以不做那高达四张的win2000启动盘,win2000采用NTFS格式还是fat32就随你啦。

  如果安装过程中你的分区不够用了请用pqmagic划它几个出来。

  好啦,现在原料已齐,就等下锅。先启动一次看看。前面采用克隆安装win2000在E盘的同志只能启动c盘的win95,而用安装方式的朋友可以启动c盘的win95和E盘的win2000.现在就进入重点:

  一:恢复win2000多启动选单前的准备工作

  win2000启动菜单没丢失的同志可以跳过这一步。只做增添的相关选项。

  恢复win2000多启动选单要用到一个工具,bootpart。它是一个专门用来修改Windows NT多重开机选单的免费软件。BootPart除了能事后把Dos、Windows 9x加到NT多重开机选单中外,就连OS/2Multiboot、Linux Partitions(with Lilo)或者是软盘开机功能的加入也没有问题喔!(软件是那么介绍的。)

  这里就有朋友要问了,即然bootpart已经有了修改NT的多重开机功能,还用写这篇文章干啥?哈哈,问题出在bootpart只支持加入fat16的分区和非fat格式的分区。而我们现在的大硬盘只有用fat32才管理得过来。另外,bootpart也不支持从NT启动菜单中加入第二硬盘,并且,它也不支持从逻辑硬盘启动系统。我们用bootpart只是用它的重建NT启动菜单功能。

  bootpart可以从华军软件园的磁盘工具中下载。文件大小24K。

    重建NT启动菜单之前,有件事是要先做的。从win2000安装盘或安装有win2000的机器上拷贝下NTLDR , NTDETECT.COM ,BOOTFONT.BIN(可以不用,只是菜单是英文而以。)到你的c盘根目录。然后用windows的记事本编一个boot.ini到你的c盘根目录。内容如下:
  [boot loader]
  timeout=10
  default=C:\
  [operating systems]
  multi(0)disk(0)rdisk(0)partition(4)\WINNT="Microsoft Windows 2000 Professional" /fastdetect
  C:\="Microsoft Windows95"
  c:\win98.bin="Microsoft win98"
  c:\winme.bin="Microsoft winme"
  C:\floop.bin="floop"


  这里顺便说一下boot.ini的相关设置问题。timeout=预设启动菜单停留在默认系统上的时间,单位为秒。


  default=为默认启动的系统。有朋友装win2000后此项为
  default=multi(0)disk(0)rdisk(0)partition(4)\WINNT
  请用;号注释掉这一行并添加default=c:\以方便启动windos。

  multi(0)指硬盘接口为非scsi接口,大多数朋友的硬盘接口都是IDE接口,所以不用变它。disk(0)指win2000启动菜单装在你的第一个IDE接口上,如果你有双硬盘,你是从第一IDE接口硬盘安装,而win2000又装在第二IDE接口上,则此项设为disk(1)。

  partition(4)指win2000所安装的分区号,1指C盘,2指D盘,3指E盘,我们的win2000装在F盘,则用partition(4)。注意,由于又硬盘有磁盘交错或者你的系统设有隐藏分区,以上partiton号以dos下启动后各系统所在的盘符为准。

  想用win2000的启动菜单而又不想装win2000的朋友只需在上述boot.ini中删除有关winnt的那两行就可以了。

  二:增添系统各分区的相应启动文件。

  我们知道,win2000之所以能双启动,是因为它重写了dos的引导记录,并把原来c盘的dos引导记录备份为boosect.dos,从而实现引导c盘的windos的。所以,除了这个bootsect.dos,我们还需要引导d盘win98的引导备份win98.bin(这个名字是我随便取的,你也可以取成你喜欢的名字,只要能和boot.ini中对应就可以。)e盘的引导备分winme.bin,软盘的引导备分floop.bin。

  做这几个文件需要用到norton2000的diskedit(611K),因为它支持fat32格式的磁盘。diskedit可以在norton2000的安装目录下直接找到。

  从windos退到纯dos下,启动diskedit。diskedit跳出个选单说现在运行在只读模式,回车后进入。选择object下的drive,选择c:,再按ALT+B,选择BOOT  Record,读出硬盘C:区的dos引导记录。然后按ALT+T选择TOOL下的Write Object to ,然后它弹出的一个where do you wish to write boot record on drive c: to a file 的警告,在其下的file:中输入bootsect.dos,Drive:中输入C:,就完成了对C盘BOOT区的备份工作。

  重复以上操作,备分下你机器D:盘E:盘A:盘的dos引导记录,并命名为win98.bin、winme.bin、floop.bin,文件请都放在c盘根目录下。

  由于这一步我们是在只读模式下做的,不会对硬盘做任何修改,所以操作是安全的。


    三:增添win2000启动菜单


  这一步对于已经有了win2000启动菜单的朋友可以不做。

  增添win2000启动菜单也可以用diskedit,方法是找一台装有win2000的机器(不过要求是对方的计算机的C盘同你的C盘格式相同,即fat16对fat16;fat32对fat32)用diskedit备分下它的dos引导记录,然后复制下3EH到1FH间的数据(采用fat16时),如果是fat32则复制5AH到1FH间的数据,覆盖掉你c盘主引导记录的相应部分。

  此法有一定的危险性。做错时可能造成你的机器启动不了,所以我不推荐。如果想试试的朋友在做了错误的操作后使硬盘启动不了的话,可以用你的启动盘启动,然后sys c:就可以复原。

  方法二就是用bootpart来操作这一步骤。很简单,在dos下执行

  bootpart winnt boot:c:

  四:对逻辑分区的启动文件做最后修改

  执行完步骤三后,重启机器我们已经能够顺利启动win2000,win95和软盘启动了。但一执行win98,winme就会报错并退回菜单。这是因为win2000不支持从逻辑盘启动系统所造成的。所以,我们现在就进入本文最关键的部分,修改win98.bin和wimme.bin使win2000支持从逻辑盘启动。

  dos下进入diskedit,按alt+t选择其下的configuration(配置),按空格键将第一个选项read only取消,然后按TAB选save。(放心,我们只是对文件作16进制改写操作,即使改错了也没有危险。)

  选择drive c:,按alt+B键读取C盘引导记录,记下big total number of sectors的值,同样,再选drive d:,按alt+B读取D盘引导记录,也记下big total number of sectors的值。注意,记录此值时你得先确保special hiddle secters的值是63才能做,如果不是请先退出并用sys传送系统到d盘和e盘。

  为说明清楚,我现在假设你的这两个值如下:

  c: big total number of sectors= 1959867 
  d: big toral number of sectors= 4482072

  我们来做个计算:1959867+63*2=1959993,转成16进制=1DE839,改过游戏的朋友可能都会知道,微机上记录这此数据总是低位在前,高位在后,所以此值我们下面填入win98.bin时该为:39 E8 1D,具体位置是win98.bin的1CH处,原值是3F 00 00,请用diskedit调入win98.bin并做此修改。

  当然,你也可以算出此值后用其它的16进制编辑器修改。比如用你们常用的修改游戏的工具uledit32来做这步工作。

  winme.bin的修改与上面的修改有所不同,应该加上前面的所有sys分区后的big toral mumber of sectors的值。所以,winme.bin的这个值=1959867+4482072+63*2=6442065=624C51H,修改时在winme.bin的1CH处填入51 4C 62


    五:修改完成后,我们来做最后的设置工作以启动逻辑盘D和E的win98、winme进入windos,将D盘、E盘的系统文件msdos.sys,command.com更名为msdos.98,command.98(D盘)、msdos.me、command.me(E盘),并拷贝到系统的根目录。为便于切换,请不要设置这些文件的只读,隐藏属性。对于msdos.sys这个文件,还要修改其中的相应盘符,换成你现在你的win98和winme的安装盘符。由于相对简单,就不举例了。


  (1)在c:盘根目录下建autoexec.98,autoexec.me两个文件,内容如下:
  c:\autoexec.98
    @echo off
    set windir=d:\windows
    set winbootdir=d:\windows
    set comspect=d:\windows\command.com
    set path=d:\windows;d:\windows\command
    set temp=d:\windows\temp
    set tmp=d:\windows\temp
    del c:\err
  ;这是作为以后防止重复执行变换文件加的,请在你的所有autoexec.bat文件中加入此行,c盘没有autoexec.bat也请建一个,并加入这一行。

  autoexec.me的修改仿此进行。如果你有config.sys也请做类似乎修改。

  (2)在安装的各个系统的桌面上建立以下切换文件的快捷方式
  1.Chang95.bat
    @echo off
    if exist err goto end
    @echo errflag > c:\err         
    ;创建err标志文件,以免重复执行chang*.bat引起系统文件混乱。
    if exist c:\flag95 goto end
    ;检查标志文件,以辩明当前所在的系统。
    if exist c:\flag98 goto flag98
    if exist c:\flagme goto flagme
    @echo falg > flag95
    ;创建当前系统标志文件。

   flag98:
    ren c:\flag98 flag95
    ren c:\msdos.sys msdos.98
    ren c:\command.com msdos.98
    ren c:\config.sys config.98
    ren c:\autoexec.bat autoexec.98
    goto flag95
    ;保存当前98文件系统


flagme:
    ren c:\flagme flag95
    ren c:\msdos.sys msdos.me
    ren c:\command.com msdos.me
    ren c:\config.sys config.me
    ren c:\autoexec.bat autoexec.me
    goto flag95
    ;保存当前wimme文件系统


   flag95:
    ren c:\msdos.95 msdos.sys
    ren c:\command.95 command.com
    ren c:\config.95 config.sys
    ren c:\autoexec.95 autoexec.bat
    ;修改以作好下次启动win95用。
   end: 

    2.chang98.bat
    @echo off
    if exist err goto end
    @echo errflag > c:\err         
    if exist c:\flag98 goto end
    if exist c:\flag95 goto flag95
    if exist c:\flagme goto flagme

   flag95:
    ren c:\flag95 flag98
    ren c:\msdos.sys msdos.95
    ren c:\command.com msdos.95
    ren c:\config.sys config.95
    ren c:\autoexec.bat autoexec.95
    goto flag98

   flagme:
    ren c:\flagme flag98
    ren c:\msdos.sys msdos.me
    ren c:\command.com msdos.me
    ren c:\config.sys config.me
    ren c:\autoexec.bat autoexec.me
    goto flag98

   flag98:
    ren c:\msdos.98 msdos.sys
    ren c:\command.98 command.com
    ren c:\config.98 config.sys
    ren c:\autoexec.98 autoexec.bat
   end:


3. changme.bat
    @echo off
    if exist err goto end
    @echo errflag > c:\err         
    if exist c:\flagme goto end
    if exist c:\flag95 goto flag95
    if exist c:\flagm8 goto flagme


   flag95:
    ren c:\flag95 flagme
    ren c:\msdos.sys msdos.95
    ren c:\command.com msdos.95
    ren c:\config.sys config.95
    ren c:\autoexec.bat autoexec.95
    goto flagme

   flag98:
    ren c:\flag98 flagme
    ren c:\msdos.sys msdos.98
    ren c:\command.com msdos.98
    ren c:\config.sys config.98
    ren c:\autoexec.bat autoexec.98
    goto flagme

   flagme:
    ren c:\msdos.me msdos.sys
    ren c:\command.me command.com
    ren c:\config.me config.sys
    ren c:\autoexec.me autoexec.bat
    end:

  这里说明一下这几个批处理文件的用法。第一次使用时,请用windows的新建命令在c盘根目录下建一个flag95的文件,再执行chang98等。如果不想建,请执行chang95一次,重启机器就不用手动建这个文件了。

  至此,win2000启动windos各个系统的多菜单我们已经成了。下次启动机器,你就可以通过选单进入你想操作的系统啦。

  Q:win2000的多启动菜单支持启动第二硬盘的windos系统吗?
  A: 可以,只需要将第二硬盘的hda.bin引导文件的24H处改为81H(原值是80H),其它的不用修改。但因为windows只认c:盘是主盘,所以启动不了第二硬盘的windos,按上面的四:对逻辑分区的启动文件做最后修改的法则相应修改就可以了。

  Q:我想把win2000的多启动做到软盘上,可以吗?
  A: 当然可以,读入c盘的主引导记录,存为文件1,改24H处为00H,备用。然后读入软驱引导区,复制从00H到3DH的内容,写入文件1的00H-3DH间。只取文件1前面的512字节(00H-1FH)写入软盘的引导区即可。由于相对来说作用不大,所以就不作详细介绍了。

 

 

原文转自:http://www.ltesting.net