用win2000啟動菜單實現windows全家福

來源:互聯網
上載者:User
用win2000啟動菜單實現windows全家福
作者:轉自yesky.com 閱讀:386 次 時間:2004-6-11 來源:海科數位 - 資料中心
 

  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。

  http://www.newhua.com.cn/down/bootpa22.zip     http://202.99.172.24/down/bootpa22.zip    http://members.aol.com/gvollant/bootpa22.zip。

  重建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)寫入磁碟片的引導區即可。由於相對來說作用不大,所以就不作詳細介紹了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.