- 相關推薦
用fdisk重建dos硬盤主引導記錄
硬盤主引導記錄遭到破壞,使硬盤無法正常工作,這是硬盤最常見的故障之一。這種情況的出現,主要是由于病毒感染、人為的錯誤操縱或系統忽然掉電等意外情況引起的。目前,硬盤已經成為微機系統最重要的硬件資源。假如硬盤主引導記錄遭到破壞,會給用戶帶來極其嚴重的損失。因此,研究一種為用戶所接受的,能迅速、安全、有效地重建硬盤主引導記錄的方法是十分必要的。
一、主引導記錄的結構和功能
1.主引導記錄的結構
ms-dos操縱系統,其硬盤主引導記錄是由fdisk.com在給硬盤分區時創建的。一個完整的硬盤主引導記錄共有512個字節,在硬盤中占一個扇區,該扇區位于硬盤的0面0道1扇區。該記錄分為主引導程序區、硬盤分區表和硬盤賦權標識三個部分。前1bdh字節為主引導程序區,F在的主引導程序一般占用dah左右字節,后面為零字節。這主要是兼顧到其它操縱系統、多個操縱系統共存以及為將來擴展留有余地。從1beh~1fdh為硬盤分區表,可建四個分區表,每個表16個字節,記載每個分區的信息,最后兩個字節存放硬盤賦權標志-a
a55h。
2.分區表的結構
分區表的組成見分區表的內存布局及填寫示例。除相對扇區和實用扇區占4個字節外,其余均為1個字節。自舉標志和系統標志是記錄分區性質的參數。當某一分區被指定為激活分區時,該處標志為80h,而其它分區的該標志為00h。四個分區表內只能有一個80h標志。系統標志說明該分區操縱系統的類型。不同系統有不同的代碼,dos系統標志說明有四個,三個是分區代碼(01h,04h,06h代表不同dos版本),一個是擴展分區代碼(05h)。
@@07a08300.gif;附表 分區表的內存布局及填寫示例@@
3.主引導記錄的功能
主引導記錄主要提供硬盤賦權標識、硬盤分區信息、系統主引導程序三種功能。
用硬盤啟動系統時,主引導記錄的三種功能全部提供,而用軟盤啟動時,僅提供前兩種功能。
二、重建主引導記錄的原理和方法
1.目前重建主引導記錄的方法及其缺點
目前使用較廣泛的重建主引導記錄的方法有以下幾種。
(1) 預先備份主引導記錄,當主引導記錄被破壞后,直接重建。這種方法簡單、方便,但對沒有預先備份的用戶是行不通的。
(2) 從相同型號及具有相同分區的硬盤上讀取主引導記錄,寫到被破壞的硬盤上,達到重建的目的。這種方法也比較簡單、方便,但相同型號的硬盤特別是具有相同分區的主引導記錄很不輕易找,而且對有多個分區的硬盤來說,假如用戶忘記每個分區的大小,就不能重建。
(3) 用手工計算的方法重建主引導記錄。這種方法靈活性大,適應范圍廣,但非常麻煩,輕易出錯,而且對于不太熟悉硬盤主引導記錄結構、對操縱系統本身不是非常熟悉的用戶來說,使用起來也非常困難。
2.用fdisk.com重建主引導記錄的原理和實現
當硬盤的主引導記錄被破壞以后,很多用戶采用fdisk.com重建主引導區,但在重建的過程中,會徹底破壞硬盤的原有數據。這是由于在創建過程中,對dos分區的dos引導區、fat表區以及文件目錄區進行了格式化和寫零操縱,以確保format.com能順利進行dos系統格式化。因此,在fdisk.com創建主引導區的過程中,假如能阻止其對dos主引導區和fat表以及文件目錄區進行格式化和寫零操縱,就可以在不破壞原來硬盤數據的情況下,重建dos主引導記錄。
根據上面的要求,可以用一段駐留程序實現。它的具體功能是攔截13h號中斷,取消所有對硬盤格式化操縱和除對硬盤主引導區(0面0道1扇區)以外的所有寫操縱。
ch13.asm程序:
code segment
assume cs:code,ds:code,es:code
org 100h
start:jmp begin
int-13:db 04h dup(0)
recei:cmp ah,05h
jnz chk1
chan:mov ah,00h
chk1:cmp ah,03h
jnz pass
cmp ax,0301h
jnz chan
cmp cx,0001h
jnz chan
cmp dx,0080h
jnz chan
pass:pushf
call cs:dword ptr[int-13]
iret
begin:jmp begin1
disp1:db 0dh,0ah,''程序駐留成功!'', 0dh,0ah,24h
disp2:db 0dh,0ah,''程序已經駐留!'', 0dh,0ah,24h
begin1:mov ax,3513h
int 21h
cmp bx,offset recei
jnz load
mov ax,es
cmp ax,100h
jl load
mov ax,cs
mov ds,ax
mov es,ax
mov ah,09h
lea dx,disp2
int 21h
int 20h
load:mov cs:word ptr[int-13],bx
mov ax,es
mov cs:word ptr[int-13 02h],ax
cli
mov ax,cs
mov ds,ax
lea dx,recei
mov ax,2513h
int 21h
sti
lea dx,disp1
mov ah,09h
int 21h
int 27h
code ends
end start
三、重建的具體操縱
1.程序的天生
將ch13.asm程序用masm編譯并連接天生exe文件,再用exe2bin將其轉化為com文件,將它拷到一張帶dos引導系統的軟盤上,dos版本最好與硬盤原來的dos版本相同,同時,再拷進該版本下的fdisk.com文件和chkdsk.com文件。
2.主引導區的重建
用該軟盤啟動微機,運行chkdsk.com,該程序會駐留內存并給用戶提示。然后,就可以用fdisk.com重建主引導區。
(1) 單個分區的主引導區的重建
運行fdisk.com文件,把硬盤分成一個盤即可。
(2) 有dos擴展分區的主引導區的重建
對于有dos擴展公區的硬盤,用戶若記得每個分區的大小,可直接運行fdisk.com文件分盤,若用戶不知道分區大小,那么需將整個硬盤分成一個盤,然后運行chkdsk.com文件,得到原來dos主分區(即c盤大小),然后運行fdisk.com文件正確分盤。
下面用一個具體例子說明。一臺386微機,硬盤大小為200mb,操縱系統為dos6.2,硬盤分為c盤(80mb)、d盤(80mb)、e盤(40mb),由于忽然斷電,丟失主引導記錄,且分區大小不知道。重建按以下幾步進行。
(1) 預備一張dos6.2的系統引導盤,并在該盤中拷進fdisk.com,chkdsk.com(6.2版)和ch13.com文件。
(2) 用該盤啟動微機,先運行chk13.com文件,再運行fdisk.com文件,把整個硬盤分成一個盤(c盤200mb)。
(3) 重新用該盤啟動微機,啟動后可進進c盤。
(4) 運行chkdsk.com,檢查c盤大小,可查出c盤原來的大小為80mb。
(5) 運行ch13.com文件,再運行fdisk.com,刪除c盤,重新建立一個80mb的c盤,再將剩下的120mb分成dos擴展分區,并全部分給邏輯d盤(不必再分e盤)。這樣,丟失的硬盤(c盤、d盤、e盤)就全部恢復。
留意:
(1) 對有些較低的dos版本,其fdisk.com文件分盤時,是按磁道數分盤的,用戶可按照下面的公式來計算多個分區的磁道數。
分區所占磁道數=總磁道數
【用fdisk重建dos硬盤主引導記錄】相關文章:
基于IDE硬盤的大容量語音記錄儀03-20
DOS用戶界面的設計03-20
DOS下DSP播音的編程03-03
基于Perl的DoS工具設計與實現03-10
基于嵌入式操作系統VxWorks的SCSI硬盤高速記錄系統03-18
在 DOS 下使用Windows *.WAV 文件03-03
淺論硬盤維修方法03-18
DOS界面下通用圖形編輯軟件的設計03-06
硬盤系統在播出領域的應用03-18