日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

FAT文件系統(tǒng)組織結構

 動靜極致 2019-06-14

硬盤的DOS管理結構:

扇區(qū)=128*(2的N次方)

磁道=柱面

容量=磁頭×磁道×每道扇區(qū)×每扇區(qū)字節(jié)

   簇是DOS最小單位,。當創(chuàng)建一個很小的文件時,如是一個字節(jié),則它在磁盤上并不是只占一個字節(jié)的空間,而是占有整個一簇。DOS視不同的存儲介質(如軟盤,硬盤),不同容量的硬盤,簇的大小也不一樣。簇的大小可在稱為磁盤參數(shù)塊(BPB)中獲取。簇的概念僅適用于數(shù)據(jù)區(qū)。簇是DOS進行分配的最小單位,不同的存儲介質,不同容量的硬盤,不同的DOS版本,簇的大小也不一樣。

物理扇區(qū)編號(柱面/磁頭/扇區(qū),起始柱面0,起始磁頭0,起始扇區(qū)1,bios內置中斷程序)

絕對扇區(qū)編號(數(shù)字,起始扇區(qū)為0,普通人的編法)

DOS扇區(qū)編號(數(shù)字,起始扇區(qū)為0,操作系統(tǒng)采用)

邏輯扇區(qū)(同上)

絕對扇區(qū)以及相對扇區(qū)又叫DOS扇區(qū)只是一個數(shù)字

使用相對扇區(qū)編號時,DOS是從柱面0磁頭1扇區(qū)1開始,柱面0磁頭0扇區(qū)1-柱面0磁頭0扇區(qū)17(設每磁道17個扇區(qū))沒有相對扇區(qū)又叫DOS扇區(qū)編號,只能調用BIOS訪問。

第一個DOS扇區(qū)編號為0,該磁道上剩余的扇區(qū)編號為1到16(設每磁道17個扇區(qū)),然后是磁頭號為2,柱面為0的17個扇區(qū),形成的DOS扇區(qū)號從17到33。直到該柱面的所有磁頭。然后再移到柱面1,磁頭1,扇區(qū)1繼續(xù)進行DOS扇區(qū)的編號,即按扇區(qū)號,磁頭號,柱面號(磁道號)增長的順序連續(xù)地分配DOS扇區(qū)號。

DH:第一個DOS扇區(qū)的磁頭號

DC:第一個DOS扇區(qū)的柱面號

DS:第一個DOS扇區(qū)的扇區(qū)號

NS:每磁道扇區(qū)數(shù)

NH:磁盤總的磁頭數(shù)

則某扇區(qū)(柱面C磁頭H扇區(qū)S)的相對扇區(qū)號RS為:

RS=(C-DC)×NH×NS+NS(H-DH)+(S-DS)

若已知RS,DC,DH,DS,NS和NH則

S=(RS MOD NS)+DS

H=((RS DIV NS)MOD NH)+DH

C=((RS DIV NS)DIV NH)+DC

DOS磁盤區(qū)域的劃分

  高級格式化好的硬盤,整個磁盤按所記錄數(shù)據(jù)的作用不同可分為主引導記錄(MBR:Main Boot Record),Dos引導記錄(DBR:Dos Boot Record),文件分配表(FAT:File Assign Table),根目錄(BD:Boot Directory)和數(shù)據(jù)區(qū)。前5個重要信息在磁盤的外磁道上,原因是外圈周長總大于內圈周長,也即外圈存儲密度要小些,可靠性高些。

MBR位于硬盤第一個物理扇區(qū)(絕對扇區(qū))柱面0,磁頭0,扇區(qū)1處。由于DOS是由柱面0,磁頭1,扇區(qū)1開始,故MBR不屬于DOS扇區(qū),DOS不能直接訪問。MBR中包含硬盤的主引導程序pre-boot和硬盤分區(qū)表dpt和55aa組成。分區(qū)表有4個分區(qū)記錄區(qū)。記錄區(qū)就是記錄有關分區(qū)信息的一張表。它從主引導記錄偏移地址01BEH處連續(xù)存放,每個分區(qū)記錄區(qū)占16個字節(jié)。

硬盤的0柱面、0磁頭、1扇區(qū)稱為主引導記錄MBR,該記錄占用512個字節(jié),它用于硬盤啟動時將系統(tǒng)控制權轉給用戶指定的的某個活動主分區(qū)。

MBR的內容是在硬盤分區(qū)時由分區(qū)軟件(如FDISK)寫入該扇區(qū)的,MBR不屬于任何一個操作系統(tǒng),不隨操作系統(tǒng)的不同而不同,即使不同,MBR也不會摻雜操作系統(tǒng)的性質,具有公共引導的特性。但安裝某些多重引導功能的軟件或LINUX的LILO時有可能改寫它;它先于所有的操作系統(tǒng)被調入內存并發(fā)揮作用,然后才將控制權交給活動主分區(qū)內的操作系統(tǒng)。

MBR由三部分構成:

1.主引導程序pre-boot代碼,占446字節(jié)

2.硬盤分區(qū)表DPT,占64字節(jié)

3.主引導扇區(qū)結束標志AA55H占2個字節(jié)

1.主引導程序代碼從偏移0000H開始到偏移01BDH結束的446字節(jié);主引導程序代碼包括一小段執(zhí)行代碼。啟動PC 機時,系統(tǒng)首先對硬件設備進行測試,成功后進入自舉程序INT 19H;然后讀系統(tǒng)磁盤0柱面、0磁頭、1扇區(qū)的主引導扇區(qū)MBR的內容到內存指定單元0:7C00 首地址開始的區(qū)域,并執(zhí)行MBR程序段。

主引導代碼實現(xiàn)下列功能:

  1.掃描分區(qū)表查找活動分區(qū);

  2.尋找活動分區(qū)的起始扇區(qū);

  3.將活動分區(qū)的引導扇區(qū)讀到內存;

  4.執(zhí)行引導扇區(qū)的運行代碼。

  如果主引導代碼未完成這些功能,系統(tǒng)顯示下列錯誤信息:

  Invalid partition table

  Error loading operating system

  Missing operating system

二、硬盤分區(qū)表DPT是從偏移01BEH開始到偏移01FDH結束的64字節(jié);

硬盤分區(qū)表分為四小部分,每一小部分表示一個分區(qū)的信息,占16字節(jié)。在這里我們可以看出,硬盤的總分區(qū)數(shù)為什么不能大于4。其中可激活分區(qū)數(shù)不得大于3,擴展分區(qū)數(shù)不得大于1,當前活動分區(qū)數(shù)必須小于等于1。分區(qū)表的每一分區(qū)的第0個字節(jié)是自舉標志,其值為80H時,表示該分區(qū)是當前活動分區(qū),可引導,其值為00H時,表示該分區(qū)不可引導。第4字節(jié)是分區(qū)類型。每一分區(qū)的第1至第3字節(jié)是該分區(qū)起始地址。其中第1字節(jié)為起始磁頭號(面號);第2字節(jié)的低6位為起始扇區(qū)號,高2位則為起始柱面號的高2位;第3字節(jié)為起始柱面號的低8位。因此,分區(qū)的起始柱面號是用10位二進制數(shù)表示的,最大值為2^10 = 1024,因邏輯柱面號從0開始計,故柱面號的顯示最大值為1023。同理,用6位二進制數(shù)表示的扇區(qū)號不會超過2^6 - 1 = 63;用8位二進制數(shù)表示的磁頭號不會超過2^8 - 1 = 255。每一分區(qū)的第5至第7字節(jié)表示分區(qū)的終止地址,各字節(jié)的釋義與第1至第3字節(jié)相同。這里我們假設一種極端的情況:如果讓第5至第7字節(jié)的所有二進制位都取1,就獲得了柱面號、磁頭號和扇區(qū)號所能表示的最大值,從而得到最大絕對扇區(qū)號為:1024 × 256 × 63 = 16,515,072這個扇區(qū)之前的所有物理扇區(qū)所包含的字節(jié)數(shù)為:16,515,072 × 512Bytes ≈ 8.46×109Bytes = 8.46GB。

  由此可知硬盤的容量設計為什么會有8.4GB這一檔,分區(qū)表每一分區(qū)的第1至第3字節(jié)以及第5至第7字節(jié)的數(shù)據(jù)結構已經不能滿足大于8.46GB的大容量硬盤的需要??紤]到向下兼容的需要,業(yè)界并未對從DOS時代就如此定義的硬盤分區(qū)表提出更改意見,否則改動所牽涉的面太廣,會造成硬件和軟件發(fā)展上的一個斷層,幾乎無法被業(yè)界和用戶所接受。硬盤廠商解決這一問題的方法是定義了新的INT 13服務擴展標準。新的INT 13服務擴展標準不再使用操作系統(tǒng)的寄存器傳遞硬盤的尋址參數(shù),而使用存儲在操作系統(tǒng)內存里的地址包。地址包里保存的是64位LBA地址,如果硬盤支持LBA尋址,就把低28位直接傳遞給ATA接口,如果不支持,操作系統(tǒng)就先把LBA地址轉換為CHS地址,再傳遞給ATA接口。通過這種方式,能實現(xiàn)在ATA總線基礎上CHS尋址的最大容量是136.9 GB,而LBA尋址的最大容量是137.4GB。新的硬盤傳輸規(guī)范ATA 133規(guī)范又把28位可用的寄存器空間提高到48位,從而支持更大的硬盤。分區(qū)表每一分區(qū)的第8至第11字節(jié)表示該分區(qū)的起始相對扇區(qū)數(shù)(即該扇區(qū)之前的絕對扇區(qū)個數(shù)),高位在右,低位在左;第12至第15字節(jié)表示該分區(qū)實際占用的扇區(qū)數(shù),也是高位在右,低位在左;分區(qū)表這類數(shù)據(jù)結構的表達方式與機器中數(shù)據(jù)的實際存儲方式在順序上是一致的,即低位在前,高位在后。因此,在從16進制向十進制作數(shù)值轉換時,需將字段中的16進制數(shù)以字節(jié)為單位翻轉調位,用4個字節(jié)可以表示最大2^32個扇區(qū),即2TB=2048GB。系統(tǒng)在分區(qū)時,各分區(qū)都不允許跨柱面,即均以柱面為單位,這就是通常所說的分區(qū)粒度。在未超過8.4GB的分區(qū)上,C/H/S的表示方法和扇區(qū)數(shù)的表示方法所表示的分區(qū)大小是一致的。超過8.4GB的/H/S/C一般填充為FEH/FFH/FFH,即C/H/S所能表示的最大值;有時候也會用柱面對1024的模來填充。不過這幾個字節(jié)是什么其實都無關緊要了。擴展分區(qū)中的每個邏輯驅動器都存在一個類似于MBR的擴展引導記錄(Extended Boot Record,EBR)。擴展引導記錄包括一個擴展分區(qū)表和扇區(qū)結束標志55AA。一個邏輯驅動器中的引導扇區(qū)一般位于相對扇區(qū)32或63。如果磁盤上沒有擴展分區(qū),那么就不會有擴展引導記錄和邏輯驅動器。第一個邏輯驅動器的擴展分區(qū)表中的第一項指向它自身的引導扇區(qū);第二項指向下一個邏輯驅動器的EBR,如果不存在進一步的邏輯驅動器,第二項就不會使用,而被記錄成一系列零。如果有附加的邏輯驅動器,那么第二個邏輯驅動器的擴展分區(qū)表的第一項會指向它本身的引導扇區(qū),第二個邏輯驅動器的擴展分區(qū)表的第二項指向下一個邏輯驅動器的EBR。擴展分區(qū)表的第三項和第四項永遠都不會被使用。擴展分區(qū)表項中的相對扇區(qū)數(shù)是從擴展分區(qū)開始的扇區(qū)到該邏輯驅動器中第一個扇區(qū)的扇區(qū)數(shù);占用的扇區(qū)數(shù)是指組成該邏輯驅動器的扇區(qū)數(shù)目。

    有時候在磁盤的末尾會有剩余空間,由于分區(qū)是以1柱面的容量為分區(qū)粒度的,那么如果磁盤總空間不是整數(shù)個柱面的話,不夠一個柱面的剩下的空間就是剩余空間了,這部分空間并不參與分區(qū),所以一般無法利用。

三、主引導扇區(qū)的最后兩個字節(jié)(偏移1FEH和偏移1FFH),其值為AA55H,它表示該扇區(qū)是個有效的引導扇區(qū),可用來引導硬磁盤系統(tǒng)。

分區(qū)引導扇區(qū)DBR(DOS BOOT RECORD)是由FORMAT高級格式化命令寫到該扇區(qū)的內容;DBR是由硬盤的MBR裝載的程序段。DBR裝入內存后,即開始執(zhí)行該引導程序段,其主要功能是完成操作系統(tǒng)的自舉并將控制權交給操作系統(tǒng)。每個分區(qū)都有引導扇區(qū),但只有被設為活動分區(qū)的DBR才會被MBR裝入內存運行。

DBR主要由下列幾個部分組成:

  1.跳轉指令,占用3個字節(jié)的跳轉指令將跳轉至引導代碼。

  2.廠商標識和DOS版本號,該部分總共占用8個字節(jié)。

  3.BPB(BIOS Parameter Block, BIOS 參數(shù)塊)。

  4.操作系統(tǒng)引導程序。

  5.結束標志字,結束標志占用2個字節(jié),其值為AA55

  DBR中的內容除了第5部分結束標志字固定不變之外,其余4個部分都是不確定的,其內容將隨格式化所用的操作系統(tǒng)版本及硬盤的邏輯盤參數(shù)的變化而變化。

  一、FAT32的分區(qū)引導扇區(qū)

  為了使加載文件的操作更加靈活,加上FAT32文件系統(tǒng)采用"活動"的FDT表,,同時考慮到引導程序的代碼量和為今后發(fā)展保留適當?shù)挠嗔?,F(xiàn)AT32文件系統(tǒng)分區(qū)引導扇區(qū)占據(jù)了6個扇區(qū),只有前3個扇區(qū)作為系統(tǒng)的分區(qū)引導扇區(qū),其余3個扇區(qū)保留暫未使用。分區(qū)引導扇區(qū)對于操作系統(tǒng)的啟動和磁盤文件的訪問具有至關重要的作用;引導程序代碼的損壞將導致操作系統(tǒng)不能正常啟動,磁盤讀寫參數(shù)的破壞將造成存儲在磁盤上的文件不能正常讀寫。

  由于分區(qū)引導扇區(qū)的重要性,F(xiàn)AT32文件系統(tǒng)在在第一個分區(qū)引導扇區(qū)的6個扇區(qū)后的6個扇區(qū)里保留了分區(qū)引導扇區(qū)的備份,在啟動時操作系統(tǒng)可以對兩份引導扇區(qū)進行比較,以便選擇正確的引導扇區(qū)來引導系統(tǒng)。由于在磁盤正常工作過程中系統(tǒng)不再對引導扇區(qū)的程序和數(shù)據(jù)進行修改,因此備份的分區(qū)引導扇區(qū)損壞的可能性非常小。

分區(qū)引導扇區(qū)的第一個扇區(qū)的前三個字節(jié)是一條跳轉指令,然后是8個字節(jié)長的OEM ID(廠家標識)和版本號,其后是簡稱為BPB的BIOS參數(shù)塊(BIOS Parameter Block)。對于FAT32其各部分的意義如下表:

偏移地址 長度(字節(jié)) 意義

0BH 2  每個扇區(qū)的字節(jié)數(shù),常取512。

0DH 1  每簇扇區(qū)數(shù);可以是1, 2, 4, 8, 16, 32, 64, 128,取決于文件系統(tǒng)格式及分區(qū)大小。

0EH 2  為操作系統(tǒng)保留的扇區(qū)數(shù);FAT32時多為十進制的32,F(xiàn)AT16時為1,有的格式化工具可能將它設為36或63。

10H 1  FAT表的個數(shù);常取2。

11H

 2

 在FAT16中存放系統(tǒng)根目錄中允許登記的目錄項個數(shù),F(xiàn)AT32中用于標注系統(tǒng)采用的是否為FAT32文件系統(tǒng)。其值為0000H表示磁盤使用FAT32文件系統(tǒng)。

13H

 2

 值為00H,為保持兼容性而保留,未使用。

15H

 1

 磁盤介質標志,硬盤為F8。

16H

 2

 未使用,值為00H。

18H

 2

 每個磁道的扇區(qū)數(shù)。

1AH

 2

 磁盤的磁頭數(shù)。

1CH

 4

 分區(qū)前隱藏扇區(qū)的個數(shù)。

20H

 4

 邏輯磁盤中的扇區(qū)總數(shù)。

24H

 4

 每個FAT表所占的扇區(qū)數(shù)。

28H

 2

 FAT表鏡像標志,值為0表示系統(tǒng)保存2份互為備份的FAT表,值為1表示系統(tǒng)僅保存1份FAT表。

2AH

 2

 文件系統(tǒng)的主次版本(保留)。

2CH

 4

 磁盤根目錄的起始簇號。

30H

 2

 文件系統(tǒng)參數(shù)的扇區(qū)號,通常位于引導扇區(qū)的下一個扇區(qū)。

32H

 2

 備份分區(qū)引導扇區(qū)的邏輯扇區(qū)號。

34H

 12

 保留,未使用。

40H

 1

 中斷13呼叫的預設值,指明訪問的設備;軟盤為00H,硬盤為80H。

41H

 1

 用于中斷13呼叫。

42H

 1

 磁盤讀寫參數(shù)擴展標志,其值為29H。

43H

 4

 格式化時隨機產生的磁盤卷的序列號。

47H

 11

 格式化時人工輸入的磁盤卷標號。

52H

 8

 文件系統(tǒng)的標識號(FAT32)。

  從偏移0x5A開始的數(shù)據(jù)為操作系統(tǒng)引導代碼。這是由偏移0x00開始的跳轉指令所指向的,此段指令在不同的操作系統(tǒng)上和不同的引導方式上,其內容也是不同的。

  扇區(qū)的最后兩個字節(jié)存儲值為0x55AA的DBR有效標志,對于其他的取值,系統(tǒng)將不會執(zhí)行DBR相關指令。

分區(qū)引導扇區(qū)的第2個扇區(qū)作為文件系統(tǒng)相關參數(shù)存儲標識扇區(qū)(圖七),

除了保存扇區(qū)的標識信息(RraA(00H)和rrAa(1E4H))外,還可能在偏移地址1E8H處存儲了文件系統(tǒng)有關的信息。其中扇區(qū)偏移地址1E8H~1EBH的4個字節(jié)存儲了邏輯磁盤中未使用的簇數(shù),通常用于快速計算邏輯磁盤的剩余空間(典型的操作是在資源管理器狀態(tài)欄上列出的"可用磁盤空間"參數(shù)),而1ECH~1EFH 4個字節(jié)給出了邏輯盤中下一個可以分配給文件使用的空閑簇的簇號,這樣操作系統(tǒng)可以不訪問FAT表就直接獲得磁盤剩余空間和可以分配的簇號。

  分區(qū)引導扇區(qū)的第3個扇區(qū)則存儲了引導扇區(qū)的后一部分引導系統(tǒng)的程序代碼(圖八)。

二、NTFS的分區(qū)引導扇區(qū)

  對于NTFS分區(qū)來說,分區(qū)引導扇區(qū)DBR只占用一個扇區(qū)(圖五),并且在該分區(qū)的最后一個扇區(qū)做了備份;NTFS的引導扇區(qū)也是完成引導和定義分區(qū)參數(shù),NTFS分區(qū)的引導扇區(qū)不是分區(qū)的充分條件,它要求必須MFT中的系統(tǒng)記錄如$MFT等正常該分區(qū)才能正常訪問。其BPB參數(shù)如下表所示:  偏移地址

 長度(字節(jié))

 常用值

 意  義

0x0B

 2

 0x0002

 每扇區(qū)字節(jié)數(shù)

0x0D

 1

 0x08

 每簇扇區(qū)數(shù)

0x0E

 2

 0x0000

 保留扇區(qū)

0x10

 3

 0x000000

 總為0

0x13

 2

 0x0000

 NTFS未使用,為0

0x15

 1

 0xF8

 介質描述

0x16

 2

 0x0000

 總為0

0x18

 2

 0x3F00

 每磁道扇區(qū)數(shù)

0x1A

 2

 0xFF00

 磁頭數(shù)

0x1C

 4

 0x3F000000

 隱藏扇區(qū)數(shù)

0x20

 4

 0x00000000

 NTFS未使用,為0

0x28

 8

 0x4AF57F0000000000

 扇區(qū)總數(shù)

0x30

 8

 0x0400000000000000

 $MFT的邏輯簇號

0x38

 8

 0x54FF070000000000

 $MFT Mirr的邏輯簇號

0x40

 4

 0xF6000000

 每MFT記錄簇數(shù)

0x44

 4

 0x01000000

 每索引簇數(shù)

0x48

 8

 0x14A51B74C91B741C

 卷標

0x50

 4

 0x00000000

 檢驗和

[ 本帖最后由 伐木者 于 2007-6-19 20:11 編輯 ]

附件: 您所在的用戶組無法下載或查看附件本文來自:創(chuàng)幻論壇 http://www.

UID55456帖子9783 精華45 積分47222 威望0 金幣0  閱讀權限18 性別男 來自有樹砍的地方 在線時間8494 小時 注冊時間2004-5-16 最后登錄2010-4-5 查看詳細資料

 TOP

【推薦】權威專家推薦漲停股票請點擊獲取

伐木者

魏武王常所用論壇

超級版主

電腦家園區(qū)總版主

積分47222 威望0  注冊時間2004-5-16     

發(fā)短消息 加為好友  沙發(fā) 大 中 小 發(fā)表于 2007-6-17 20:55 只看該作者

How It Works --- Master Boot Record (主啟動記錄)

本文是介紹MBR的反編譯程序的。MBR是放在硬盤的0柱面,0磁頭(head),1扇區(qū)的

那一段區(qū)。MBR是由FDISK程序創(chuàng)建的。所有操作系統(tǒng)的FDISK程序都會創(chuàng)建類似的MBR

記錄。MBR是多個分區(qū)的前提,每個MBR中包括了四個分區(qū)表記錄。在您的計算機加電

之后,INT19被調用了。一般來說,INT19先從第一個軟盤驅動器中讀啟動扇區(qū)記錄。

如果在軟盤中找到了啟動的扇區(qū),那么這個扇區(qū)的數(shù)據(jù)就被讀入到內存的0000:7c00

地址上,INT19也跳到了這個地址上。但是,如果沒有在軟盤中找到這個扇區(qū)的話,INT

19就從第一個硬盤中去讀。同樣,如果成功的話,也會把MBR導入到相同的內存地址

0000:7c00,INT19也會跳這個地址。MBR中包括的一段小程序是定出在分區(qū)表中的活動分

區(qū)。這樣的活動分區(qū)找到之,那個分區(qū)的啟動扇區(qū)也被讀入到0000:7c00地址,MBR程序

也轉移到了這個地址。每一個操作系統(tǒng)都有固定的啟動扇區(qū)的格式。在啟動扇區(qū)里的程

序要能定出操作系統(tǒng)啟動程序的位置(或是核心本身,或者是一個啟動管理器),然后

將它讀入內存。

另:在Ctrl-Alt-Del鍵被按下時,INT19也會被調用。在大多數(shù)系統(tǒng)中,Ctrl-Alt-Del三?nbsp;

鍵同時按下表示熱啟動您的計算機,回到INT19調用前的狀態(tài)。

=====

數(shù)據(jù)存放的位置:

   MBR程序放在偏移為0000的位置。

   MBR消息放在偏移為008b的位置。

  分區(qū)表放在偏移為00be的位置。

  簽名放在偏移為00fe的位置。

關于誰干什么事的總結:

   如果一個活動分區(qū)找到了,這個分區(qū)的啟動數(shù)據(jù)被讀入到0000:7c00的位置,MBR程

序也跳到0000:7c00的位置。這段程序找到指向分區(qū)表的入口,入口描述的是這段分區(qū)是

怎樣被啟動的。啟動程序用這些數(shù)據(jù)來決定用來啟動的驅動器和這個驅動器分區(qū)在硬盤上

的位置。

    如果沒有找到這樣的活動分區(qū)入口,ROM BASIC會轉入INT 18的調用。所有其他的錯

誤導致系統(tǒng)的掛起,可以看HANG的標記。

注意(非常之重要):

 ?。保┗顒臃謪^(qū)入口的第一個字節(jié)的內容是80h。在INT13被調用之前,這個字節(jié)被導

入到DL寄存器中。當INT13被調用時,DL表示的是BIOS的設備號碼。因為這個原因,由MBR

程序讀的啟動扇區(qū)只能從BIOS設備號碼為80的硬盤中讀入。這便是為什么不能從任何硬盤

啟動的原因。?nbsp;

 ?。玻㎝BR程序是用基于INT 13h (ah=02h)的中斷的CHS來讀取活動分區(qū)的啟動扇區(qū)位置

的?;顒臃謪^(qū)的啟動扇區(qū)內的位置是在分區(qū)表內用CHS格式表明的。如果這個驅動器小于

528M,這個CHS一定要是(L-CHS,見BIOS TYPES文檔)。在LBA中沒有任何地址是有用的。

(另一個LBA不能解決>528M問題的原因)   這點大家別信,西西。

====

   這是一張整個MBR記錄的表(hex 和ascii格式)

OFFSET 0 1 2 3  4 5 6 7  8 9 A B  C D E F  *0123456789ABCDEF*

000000 fa33c08e d0bc007c 8bf45007 501ffbfc *.3.....|..P.P...*

000010 bf0006b9 0001f2a5 ea1d0600 00bebe07 *................*

000020 b304803c 80740e80 3c00751c 83c610fe *...<.t..<.u.....*

000030 cb75efcd 188b148b 4c028bee 83c610fe *.u......L.......*

000040 cb741a80 3c0074f4 be8b06ac 3c00740b *.t..<.t.....<.t.*

000050 56bb0700 b40ecd10 5eebf0eb febf0500 *V.......^.......*

000060 bb007cb8 010257cd 135f730c 33c0cd13 *..|...W.._s.3...*

000070 4f75edbe a306ebd3 bec206bf fe7d813d *Ou...........}.=*

000080 55aa75c7 8bf5ea00 7c000049 6e76616c *U.u.....|..Inval*

000090 69642070 61727469 74696f6e 20746162 *id partition tab*

0000a0 6c650045 72726f72 206c6f61 64696e67 *le.Error loading*

0000b0 206f7065 72617469 6e672073 79737465 * operating syste*

0000c0 6d004d69 7373696e 67206f70 65726174 *m.Missing operat*

0000d0 696e6720 73797374 656d0000 00000000 *ing system......*

0000e0 00000000 00000000 00000000 00000000 *................*

0000f0 TO 0001af SAME AS ABOVE

0001b0 00000000 00000000 00000000 00008001 *................*

0001c0 0100060d fef83e00 00000678 0d000000 *......>....x....*

0001d0 00000000 00000000 00000000 00000000 *................*

0001e0 00000000 00000000 00000000 00000000 *................*

0001f0 00000000 00000000 00000000 000055aa *..............U.*

====

  這是MBR的反編譯程序:

  這個扇區(qū)被導入到內存的0000:7c00位置,但是它又馬上將自己重定位到0000:0060的

位?nbsp;

。

BEGIN:   #    NOW AT 0000:7C00, RELOCATE

0000:7C00 FA            CLI                     #禁止中斷

0000:7C01 33C0          XOR     AX,AX           #設置堆棧段地址為0000

0000:7C03 8ED0          MOV     SS,AX

0000:7C05 BC007C        MOV     SP,7C00         #設置堆棧指針為7c00

0000:7C08 8BF4          MOV     SI,SP           #SI = 7c00

0000:7C0A 50            PUSH    AX

0000:7C0B 07            POP     ES              #ES = 0000:7c00

0000:7C0C 50            PUSH    AX

0000:7C0D 1F            POP     DS              #DS = 0000:7c00

0000:7C0E FB            STI                     #開中斷

0000:7C0F FC            CLD                     #清除方向

0000:7C10 BF0006        MOV     DI,0600         #DI = 0600

0000:7C13 B90001        MOV     CX,0100         #移動 256 個word (512 bytes)

0000:7C16 F2            REPNZ                   #把 MBR 從 0000:7c00

0000:7C17 A5            MOVSW                   #移動到0000:0600

0000:7C18 EA1D060000    JMP     0000:061D       #跳至NEW_LOCATION

NEW_LOCATION:# NOW AT 0000:0600

0000:061D BEBE07      MOV     SI,07BE           #指向入口的第一個字節(jié)

0000:0620 B304        MOV     BL,04             #有4個入口

SEARCH_LOOP1: # 查找活動分區(qū)

0000:0622 803C80      CMP     BYTE PTR [SI],80  #是不是活動分區(qū)?

0000:0625 740E        JZ      FOUND_ACTIVE      #是,棧指針指向7c00

0000:0627 803C00      CMP     BYTE PTR [SI],00  #是不是不活動分區(qū)?

0000:062A 751C        JNZ     NOT_ACTIVE        #跳轉至NOT_ACTIVE

0000:062C 83C610      ADD     SI,+10            #增量表指針加16

0000:062F FECB        DEC     BL                #減少計數(shù)

0000:0631 75EF        JNZ     SEARCH_LOOP1      #循環(huán)

0000:0633 CD18        INT     18                #跳至 ROM BASIC

FOUND_ACTIVE: # 找到了活動分區(qū)

0000:0635 8B14        MOV     DX,[SI]           #設置DH/DL為INT 13

0000:0637 8B4C02      MOV     CX,[SI+02]        #設置CH/CL為INT 13

0000:063A 8BEE        MOV     BP,SI             #保存表指針

SEARCH_LOOP2: # 確定是一個活動分區(qū)

0000:063C 83C610      ADD     SI,+10            #增量表指針加16

0000:063F FECB        DEC     BL                #減少計數(shù)

0000:0641 741A        JZ      READ_BOOT         #如果表結束,跳轉

0000:0643 803C00      CMP     BYTE PTR [SI],00  #是不是非活動分區(qū)

0000:0646 74F4        JZ      SEARCH_LOOP2      #是,循環(huán)

NOT_ACTIVE:   #  多于一個活動分區(qū)

0000:0648 BE8B06      MOV     SI,068B           #顯示 "Invld prttn tbl"

DISPLAY_MSG:  #  顯示消息循環(huán)

0000:064B AC          LODSB                     #取得消息的字符

0000:064C 3C00        CMP     AL,00             #判斷消息的結尾

0000:064E 740B        JZ      HANG              #

0000:0650 56          PUSH    SI                #保存SI

0000:0651 BB0700      MOV     BX,0007           #屏幕屬性

0000:0654 B40E        MOV     AH,0E             #顯示一個字符

0000:0656 CD10        INT     10

0000:0658 5E          POP     SI                #恢復SI

0000:0659 EBF0        JMP     DISPLAY_MSG       #循環(huán)

HANG:         #掛起系統(tǒng)

0000:065B EBFE        JMP     HANG              #停在這兒

READ_BOOT:   #讀活動分區(qū)的數(shù)據(jù)

0000:065D BF0500      MOV     DI,0005        #INT 13 的嘗試次數(shù)

INT13RTRY:   #INT 13的重試循環(huán)

0000:0660 BB007C      MOV     BX,7C00

0000:0663 B80102      MOV     AX,0201           #讀入一個扇區(qū)

0000:0666 57          PUSH    DI                #保存DI

0000:0667 CD13        INT     13                #把扇區(qū)讀入0000:7c00

0000:0669 5F          POP     DI                #重存DI

0000:066A 730C        JNB     INT13OK           #沒有INT 13,跳轉

0000:066C 33C0        XOR     AX,AX             #調用INT 13 ,硬盤重置

0000:066E CD13        INT     13

0000:0670 4F          DEC     DI                #DI--

0000:0671 75ED        JNZ     INT13RTRY         #如果非零,重試

0000:0673 BEA306      MOV     SI,06A3           #顯示"Errr ldng systm"

0000:0676 EBD3        JMP     DISPLAY_MSG       #跳轉至顯示循環(huán)

INT13OK: #INT 13 出錯

0000:0678 BEC206      MOV     SI,06C2            #"missing op sys"

0000:067B BFFE7D      MOV     DI,7DFE            #指向簽名

0000:067E 813D55AA    CMP     WORD PTR [DI],AA55 #簽名是否正確?

0000:0682 75C7        JNZ     DISPLAY_MSG        #不正確,跳至顯示消息循環(huán)

0000:0684 8BF5        MOV     SI,BP              #設置SI

0000:0686 EA007C0000  JMP     0000:7C00          #跳轉至啟動扇區(qū),SI指向分區(qū)

表入

?nbsp;

#這兒是消息

0000:0680 ........ ........ ......49 6e76616c *           Inval*

0000:0690 69642070 61727469 74696f6e 20746162 *id partition tab*

0000:06a0 6c650045 72726f72 206c6f61 64696e67 *le.Error loading*

0000:06b0 206f7065 72617469 6e672073 79737465 * operating syste*

0000:06c0 6d004d69 7373696e 67206f70 65726174 *m.Missing operat*

0000:06d0 696e6720 73797374 656d00.. ........ *ing system.     *

#無用的數(shù)據(jù)

0000:06d0 ........ ........ ......00 00000000 *           .....*

0000:06e0 00000000 00000000 00000000 00000000 *................*

0000:06f0 00000000 00000000 00000000 00000000 *................*

0000:0700 00000000 00000000 00000000 00000000 *................*

0000:0710 00000000 00000000 00000000 00000000 *................*

0000:0720 00000000 00000000 00000000 00000000 *................*

0000:0730 00000000 00000000 00000000 00000000 *................*

0000:0740 00000000 00000000 00000000 00000000 *................*

0000:0750 00000000 00000000 00000000 00000000 *................*

0000:0760 00000000 00000000 00000000 00000000 *................*

0000:0770 00000000 00000000 00000000 00000000 *................*

0000:0780 00000000 00000000 00000000 00000000 *................*

0000:0790 00000000 00000000 00000000 00000000 *................*

0000:07a0 00000000 00000000 00000000 00000000 *................*

0000:07b0 00000000 00000000 00000000 0000.... *............    *

#分區(qū)表從0000:07be開始。每一個分區(qū)表入口是16個字節(jié)這個表定義了一個單個的主分

區(qū)并

是活動分區(qū)。

0000:07b0 ........ ........ ........ ....8001 *            ....*

0000:07c0 0100060d fef83e00 00000678 0d000000 *......>....x....*

0000:07d0 00000000 00000000 00000000 00000000 *................*

0000:07e0 00000000 00000000 00000000 00000000 *................*

0000:07f0 00000000 00000000 00000000 0000.... *............    *

#最后兩個字節(jié)一定包括了55aah的數(shù)據(jù)。

0000:07f0 ........ ........ ........ ....55aa *..............U.*

本文來自:創(chuàng)幻論壇 http://www.

分區(qū)表的格式

偏移    意義   占用字節(jié)數(shù)

   00 引導指示符 1B

   01 分區(qū)引導記錄的磁頭號 1B

   02 分區(qū)引導記錄的扇區(qū)和柱面號 2B

   04 系統(tǒng)指示符 1B

   05 分區(qū)結束磁頭號 1B

   06 分區(qū)結束扇區(qū)和柱面號 2B

   08 分區(qū)前面的扇區(qū)數(shù) 4B

   0C 分區(qū)中總的扇區(qū)數(shù) 4B

4個分區(qū)中只能有1個活躍分區(qū),即C盤。標志符是80H在分區(qū)表的第一個字節(jié)處。若是00H則表示非活躍分區(qū)。

例如:

80 01 01 00 0B FE 3F 81 3F 00 00 00 C3 DD 1F 00

00  00 01 82 05 FE BF 0C 02 DE 1F 00 0E 90 61 00

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

要點:(1)MBR位于硬盤第一個物理扇區(qū)柱面0,磁頭0,扇區(qū)1處。不屬于DOS扇區(qū),

  ?。?)主引導記錄分為硬盤的主引導程序和硬盤分區(qū)表。

6.DBR

  DBR位于柱面0,磁頭1,扇區(qū)1,即邏輯扇區(qū)0。DBR分為兩部分:DOS引導程序和BPB(BIOS參數(shù)塊)。其中DOS引導程序完成DOS系統(tǒng)文件(IO.SYS,MSDOS.SYS)的定位與裝載,而BPB用來描述本DOS分區(qū)的磁盤信息,BPB位于DBR偏移0BH處,共13字節(jié)。它包含邏輯格式化時使用的參數(shù),可供DOS計算磁盤上的文件分配表,目錄區(qū)和數(shù)據(jù)區(qū)的起始地址,BPB之后三個字提供物理格式化(低格)時采用的一些參數(shù)。引導程序或設備驅動程序根據(jù)這些信息將磁盤邏輯地址(DOS扇區(qū)號)轉換成物理地址(絕對扇區(qū)號)。BPB格式

序號 偏移地址 意義

1 03H-0AH OEM號

2 0BH-0CH 每扇區(qū)字節(jié)數(shù)

3 0DH 每簇扇區(qū)數(shù)

4 0EH-0FH 保留扇區(qū)數(shù)

5 10H FAT備份數(shù)

6 11H-12H 根目錄項數(shù)

7 13H-14H 磁盤總扇區(qū)數(shù)

8 15H 描述介質

9 16H-17H 每FAT扇區(qū)數(shù)

10 18H-19H 每磁道扇區(qū)數(shù)

11 1AH-1BH 磁頭數(shù)

12 1CH-1FH 特殊隱含扇區(qū)數(shù)

13 20H-23H 總扇區(qū)數(shù)

14 24H-25H 物理驅動器數(shù)

15 26H 擴展引導簽證

16 27H-2AH 卷系列號

17 2BH-35H 卷標號

18 36H-3DH 文件系統(tǒng)號

DOS引導記錄公式:

文件分配表≡保留扇區(qū)數(shù)

根目錄≡保留扇區(qū)數(shù)+FAT的個數(shù)×每個FAT的扇區(qū)數(shù)

數(shù)據(jù)區(qū)≡根目錄邏輯扇區(qū)號+(32×根目錄中目錄項數(shù)+(每扇區(qū)字節(jié)數(shù)-1))DIV每扇區(qū)字節(jié)數(shù)

絕對扇區(qū)號≡邏輯扇區(qū)號+隱含扇區(qū)數(shù)

扇區(qū)號≡(絕對扇區(qū)號MOD每磁道扇區(qū)數(shù))+1

磁頭號≡(絕對扇區(qū)號DIV每磁道扇區(qū)數(shù))MOD磁頭數(shù)

磁道號≡(絕對扇區(qū)號DIV每磁道扇區(qū)數(shù))DIV磁頭數(shù)

要點:(1)DBR位于柱面0,磁頭1,扇區(qū)1,其邏輯扇區(qū)號為0

  ?。?)DBR包含DOS引導程序和BPB。

   (3)BPB十分重要,由此可算出邏輯地址與物理地址。

7.文件分配表

  文件分配表是DOS文件組織結構的主要組成部分。我們知道DOS進行分配的最基本單位是簇。文件分配表是反映硬盤上所有簇的使用情況,通過查文件分配表可以得知任一簇的使用情況。DOS在給一個文件分配空間時總先掃描FAT,找到第一個可用簇,將該空間分配給文件,并將該簇的簇號填到目錄的相應段內。即形成了“簇號鏈”。FAT就是記錄文件簇號的一張表。FAT的頭兩個域為保留域,對FAT12來說是3個字節(jié),F(xiàn)AT來說是4個字節(jié)。其中頭一個字節(jié)是用來描述介質的,其余字節(jié)為FFH 。介質格式與BPB相同。

第一個字節(jié)的8位意義:

7 6 5 4 3 2?。?0

└─────-┘ │ │ │┌0非雙面

置1 │ │ └┤

│ │ └1雙面

│ │┌0不是8扇區(qū)

│ └┤

│ └1是8扇區(qū)

│┌0不是可換的

└┤

└1是可換的

FAT結構含義

FAT12 FAT16 意義

000H 0000H 可用

FF0H-FF6H FFF0H-FFF6H 保留

FF7H FFF7H

FF8H-FFFH FFF8H-FFFFH 文件最后一個簇

×××H ××××H 文件下一個簇

對于FAT16,簇號×2作偏移地址,從FAT中取出一字即為FAT中的域。

邏輯扇區(qū)號=數(shù)據(jù)區(qū)起始邏輯扇區(qū)號+(簇號-2)×每簇扇區(qū)數(shù)

簇號=(邏輯扇區(qū)號-數(shù)據(jù)區(qū)起始邏輯扇區(qū)號)DIV每簇扇區(qū)數(shù)+2

要點:(1)FAT反映硬盤上所有簇的使用情況,它記錄了文件在硬盤中具體位置(簇)。

  ?。?)文件第一個簇號(在目錄表中)和FAT的該文件的簇號串起來形成文件的“簇號鏈”,恢復被破壞的文件就是根

據(jù)這條鏈。

  ?。?)由簇號可算邏輯扇區(qū)號,反之,由邏輯扇區(qū)號也可以算出簇號,公式如上。

   (4)FAT位于DBR之后,其DOS扇區(qū)號從1開始。

8.文件目錄

  文件目錄是DOS文件組織結構的又一重要組成部分。文件目錄分為兩類:根目錄,子目錄。根目錄有一個,子目錄可以有多個。子目錄下還可以有子目錄,從而形成“樹狀”的文件目錄結構。子目錄其實是一種特殊的文件,DOS為目錄項分配32字節(jié)。目錄項分為三類:文件,子目錄(其內容是許多目錄項),卷標(只能在根目錄,只有一個。目錄項中有文件(或子目錄,或卷標)的名字,擴展名,屬性,生成或最后修改日期,時間,開始簇號,及文件大小。

目錄項的格式

字節(jié)偏移 意義 占字節(jié)數(shù)

00H 文件名 8B

08H 擴展名 3B

0BH 文件屬性 1B

0CH 保留 10B

16H 時間 2B

18H 日期 2B

1AH 開始簇號 2B

1CH 文件長度 4B

目錄項文件名區(qū)域中第一個字節(jié)還有特殊的意義:00H代表未使用

05H代表實際名為E5H

EBH代表此文件已被刪除

目錄項屬性區(qū)域的這個字節(jié)各個位的意義如下: 7?。丁。怠。础。场。病。薄。?

                      未 修 修 子 卷 系 隱 只

                      用 改 改 目 標 統(tǒng) 藏 讀

                        標 標 錄   屬 屬 屬

                        志 志     性 性 性

注意:WINDOWS的長文件名使用了上表中所說的“保留”這片區(qū)域。

要點:(1)文件目錄是記錄所有文件,子目錄名,擴展名屬性,建立或刪除最后修改日期。文件開始簇號及文件長度的一張

      登記表.

  ?。?)DOS中DIR列出的內容訓是根據(jù)文件目錄表得到的。

  ?。?)文件起始簇號填在文件目錄中,其余簇都填在FAT中上一簇的位置上。

9.物理驅動器與邏輯驅動器

  物理驅動器指實際安裝的驅動器。

  邏輯驅動器是對物理驅動器格式化后產生的。

要點:同上。

瀏覽:552  [打印  返回  關閉]

·下一篇:[06-08-28] 挽救硬盤的10個方法(維護硬盤故障)

·上一篇:[06-08-28] 進行電腦維修的幾個簡單步驟

相關文章:[知識,扇區(qū),磁道]

·◎硬盤基本知識(磁道、扇區(qū)、柱面、磁頭數(shù)、簇、MBR、DBR)

·◎主板電容小知識

·◎注冊表基本知識

·◎受用一生的電腦知識

·◎Linux 發(fā)行版和安裝的基本知識

分類欄目

·硬盤

·CPU

·主板

·綜合

·內存

·顯示器

·鼠標鍵盤

·打印機

熱門標簽

·方法(102)

·故障(99)

·技巧(66)

·XP(61)

·病毒(60)

·所有標簽

點擊排行

·硬盤基本知識..

·如何給硬盤加..

·硬盤拷貝三法

·延長壽命:讓硬..

·減少硬盤出故..

 

 當硬盤受到外部強磁體、強磁場的影響,或因長期使用,硬盤盤片上由低級格式化劃分出來的扇區(qū)格式磁性記錄部分丟失,從而出現(xiàn)大量“壞扇區(qū)”時,可以通過低級格式化來重新劃分“扇區(qū)”。但是前提是硬盤的盤片沒有受到物理性劃傷。硬盤低級格式化的功用硬盤低格格式化是對硬盤最徹底的初始化方式,經過低格后的硬盤,原來保護的數(shù)據(jù)將全部丟失,所以一般來說低格硬盤是非常不可取的,只有非常必要的時候才能低格硬盤。當硬盤出現(xiàn)某種類型的壞道時,使用低級格式化能起到一定的緩解或者屏蔽作用。

  邏輯壞道相對比較容易解決,它指硬盤在寫入時受到意外干擾,造成有ECC錯誤。從過程上講,它是指硬盤在寫入數(shù)據(jù)的時候,會用ECC的邏輯重新組合數(shù)據(jù),一般操作系統(tǒng)要寫入512個字節(jié),但實際上硬盤會多寫幾十個字節(jié),而且所有的這些字節(jié)都要用ECC進行校驗編碼,如果原始字節(jié)算出的ECC校正碼和讀出字節(jié)算出的ECC不同,這樣就會產生ECC錯誤,這就是所謂的邏輯壞道產生原因。

物理壞道,磁盤表面物理損壞就是硬性的,這是無法修復的。而由于外界影響而造成數(shù)據(jù)的寫入錯誤時,系統(tǒng)也會認為是物理壞道,而這種物理壞道是可以使用一些硬盤工具(例如硬盤廠商提供的檢測修復軟件)來修復,此外,對于微小的硬盤表面損傷,一些硬盤工具(例如西部數(shù)據(jù)的Data Lifeguard Tools)就可以重新定向到一個好的保留扇區(qū)來修正錯誤。

對于硬盤上出現(xiàn)邏輯壞道或者軟性物理壞道,用戶可以試試使用低級格式化來達到屏蔽壞道的作用,但這里需要指出,屏蔽壞道并不等于消除壞道了,低格硬盤能把原來硬盤內所有分區(qū)都刪除,但壞道卻依然存在,屏蔽只是將壞道隱藏起來,不讓用戶在存儲數(shù)據(jù)時使用這些壞道,這樣能在一定程度上保證用戶數(shù)據(jù)的可靠性,但壞道卻會隨著硬盤分區(qū)、格式化次數(shù)的增長而擴散蔓延。

1、對扇區(qū)清零和重寫校驗值。低格過程中將每個扇區(qū)的所有字節(jié)全部置零,并將每個扇區(qū)的校驗值也寫回初始值,這樣可以將部分缺陷糾正過來。譬如,由于扇區(qū)數(shù)據(jù)與該扇區(qū)的校驗值不對應,通常就被報告為校驗錯誤(ECC Error)。如果并非由于磁介質損傷,清零后就很有可能將扇區(qū)數(shù)據(jù)與該扇區(qū)的校驗值重新對應起來,而達到“修復”該扇區(qū)的功效。這是每種低格工具和每種硬盤的低格過程最基本的操作內容,同時這也是為什么通過低格能“修復大量壞道”的基本原因。另外,DM中的Zero Fill(清零)操作與IBM DFT工具中的Erase操作,也有同樣的功效。

2、對扇區(qū)進行讀寫檢查,并嘗試替換缺陷扇區(qū)。有些低格工具會對每個扇區(qū)進行讀寫檢查,如果發(fā)現(xiàn)在讀過程或寫過程出錯,就認為該扇區(qū)為缺陷扇區(qū)。然后,調用通用的自動替換扇區(qū)(Automatic reallocation sector)指令,嘗試對該扇區(qū)進行替換,也可以達到“修復”的功效。

3、對扇區(qū)的標識信息重寫。在多年以前使用的老式硬盤(如采用ST506接口的硬盤),需要在低格過程中重寫每個扇區(qū)的標識(ID)信息和某些保留磁道的其他一些信息,當時低格工具都必須有這樣的功能。但現(xiàn)在的硬盤結構已經大不一樣,如果再使用多年前的工具來做低格會導致許多令人痛苦的意外。難怪經常有人在痛苦地高呼:“危險!切勿低格硬盤!我的硬盤已經毀于低格!”

4、對所有物理扇區(qū)進行重新編號。編號的依據(jù)是P-list中的記錄及區(qū)段分配參數(shù)(該參數(shù)決定各個磁道劃分的扇區(qū)數(shù)),經過編號后,每個扇區(qū)都分配到一個特定的標識信息(ID)。編號時,會自動跳過P-list中所記錄的缺陷扇區(qū),使用戶無法訪問到那些缺陷扇區(qū)(用戶不必在乎永遠用不到的地方的好壞)。如果這個過程半途而廢,有可能導致部分甚至所有扇區(qū)被報告為標識不對(Sector ID not found, IDNF)。要特別注意的是,這個編號過程是根據(jù)真正的物理參數(shù)來進行的,如果某些低格工具按邏輯參數(shù)(以 16heads 63sector為最典型)來進行低格,是不可能進行這樣的操作。

5、寫磁道伺服信息,對所有磁道進行重新編號。有些硬盤允許將每個磁道的伺服信息重寫,并給磁道重新賦予一個編號。編號依據(jù)P-list或TS記錄來跳過缺陷磁道(defect track),使用戶無法訪問(即永遠不必使用)這些缺陷磁道。這個操作也是根據(jù)真正的物理參數(shù)來進行。

6、寫狀態(tài)參數(shù),并修改特定參數(shù)。有些硬盤會有一個狀態(tài)參數(shù),記錄著低格過程是否正常結束,如果不是正常結束低格,會導致整個硬盤拒絕讀寫操作,這個參數(shù)以富士通IDE硬盤和希捷SCSI硬盤為典型。有些硬盤還可能根據(jù)低格過程的記錄改寫某些參數(shù)。

我們經常使用的DM中的Low level format命令進行的低級格式化操作,主要進行了第1條和第3條的操作。速度較快,極少損壞硬盤,但修復效果不明顯。另外在Lformat工具中,進行了前三項的操作。由于同時進行了讀寫檢查,操作速度較慢,可以替換部分缺陷扇區(qū)

  常見低格工具有l(wèi)format、DM及硬盤廠商們推出的各種硬盤工具等。

匯編語言低格,用Debug匯編語言進行低級格式化

  低級格式化硬盤能完成銷毀硬盤內的數(shù)據(jù),所以在操作前一定要謹慎。硬盤低格有許多方法,例如直接在CMOS中對硬盤進行低格,或者使用匯編語言進行硬盤低格。匯編是比較低級的一種編程語言,它能非常方便地直接操作硬件,而且運行效率很高,如果軟件系統(tǒng)中需要直接操作硬件時,經常使用的就是匯編語言。使用匯編也可以對硬盤進行低級格式化,它比DM等工具軟件顯得更為靈活,具體應用時就是使用debug程序,而具體操作就是在debug環(huán)境下,調用存放在BIOS 中的低級格式化程序(CMOS中直接低格硬盤調用的也是此段低格程序)。實現(xiàn)方法通常有如下三種:

  (1)、直接調用BIOS ROM中的低格程序

  在很多計算機的BIOS ROM中存放著低格程序,存放地址從C8005H地址開始,具體操作如下:

  A:\>Debug

  -G C800 :0005(這時屏幕顯示信息(不同版本的BIOS顯示的信息可能不同),回車后提示:)

  Current Interleave is 3 select new interleave or Return for current(這是要求用戶選擇交叉因子,按回車表示取默認值3,也可輸入新的交叉因子值,硬盤的交叉因子一般是3,所以直接回車即可。屏幕接著提示:)

  Are you dynamically configuring the drive-answer YN t

  Press“Y”to begin formatting the drive C: with interleave 03(鍵入“Y”后開始對硬盤進行低格)

  Formatting ……(完成后詢問是否處理壞磁道)

  Do you want to format bad track-answer YN?

  若沒有則用“N”回答。屏幕顯示:

  Format Successful,system will new restart,Insert Dos diskette indrive A:

  插入系統(tǒng)盤到A驅動器,即可進行分區(qū),高級格式化等操作來安裝系統(tǒng)了。

  (2)、通過調用INT 13H中斷的7號功能對硬盤進行低格

  操作如下:

  A:\>DEBUG

  -A 100

  -XXXX:0100 MOV AX,0703;(交叉因子為3)

  -XXXX:0103 MOV CX,0001;(0磁道0扇區(qū)起)

  -XXXX:0106 MOV DX,0080;(C盤0磁道)

  -XXXX:0109 INT 13

  -XXXX:010B INT 3

  -XXXX:010D

  -G 100

  這樣硬盤就被低格了。

  (3)、調用INT 13H中斷的5號功能

  對硬盤調用INT 13H中斷的5號功能只低格0面0道1扇區(qū),而不必低格整個硬盤,從而使低格在很短的時間內完成。具體操作如下:

  ADEBUG

  -A 100

  -XXXX:0100 MOV AX,0500;(調用5號功能)

  -XXXX:0103 MOV BX,0180;(設置緩沖區(qū)地址)

  -XXXX:0106 MOV CX,0001;(0磁道1扇區(qū)起)

  -XXXX:0109 MOV DX,0080;(C盤0磁道)

  -XXXX:010B INT 13

  -XXXX:010D INT 3

  -E 0180 0 0 0002;(寫入?yún)?shù))

  -G 100

DM低級格式化方法

  用DM進行低級格式化

  DM的全名是Hard Disk Management Program,它能對硬盤進行低級格式化、校驗等管理工作,可以提高硬盤的使用效率??偟膩碚f,DM具有如下幾個功能:硬盤低級格式化、分區(qū)、高級格式化、硬盤參數(shù)配置及其它功能。

  在實際應用時,dm工具跟普通DOS命令(如fdisk或format)一樣,它的命令格式為:ADM [參數(shù)] 。其中的參數(shù)可取以下值:

  M DM軟件以手工方式進入,如無該參數(shù),DM以自動方式運行,依次執(zhí)行INITIALIZE. PARTITIONG. PREPARAFION。

  C DM軟件以彩色方式執(zhí)行,即運行于彩色顯示器上。

  P DM軟件以PCXT方式管理硬盤。

  A DM軟件以PCAT方式管理硬盤。

  2 DOS 2.XX版本方式。

  3 DOS 3.XX版本方式。

  4 DOS 4.XX版本方式(僅DM 5.01版有此參數(shù))。

  V DM運行于可改變簇長度、根目錄項方式。

  在實際使用中常用以下兩種方式啟動:

  1、ADM (自動方式。初始化硬盤時很多參數(shù)都用默認值幾乎不要人工干預)。

  2、ADM (手動方式。作格式化時一些參數(shù)要人工指定)。

  啟動dm工具后,用戶就可以根據(jù)自己的需要選擇相應的操作,由于它也是以DOS用戶界面的形式存,所以使用起來也十分簡捷、明了。

其它低級格式化方法

  除了上面介紹的兩種低格工具外,還有許多其它低級格式化方法。

  1、CMOS中直接操作

  如果主板支持,用戶可以直接在CMOS對硬盤進行低級格式化,這種方法非常簡單、方便,因此如果可能的話,筆者推薦使用這種方法進行硬盤低格。具體操作方法:在開機時根據(jù)系統(tǒng)提示進入CMOS Setup(如果是Award等BIOS,會提示按DEL進入CMOSSetup,如果是Intel主板,一般是按F2進入CMOS Setup),接著在CMOS菜單內選擇low formatted HardDisk Drive選擇,然后根據(jù)程序提示進行待低格硬盤,同時回答一些程序提問即可進行硬盤低級格式化。

  2、lformat.com程序低格硬盤

  除了dm工具外,還有一款比較常見的低格程序是lformat.exe,它是由邁拓公司推出的低級格式化硬盤工具。在DOS狀態(tài)下運行 lformat.exe后,程序即啟動警告界面。在該畫面中說明的大概意思是,如果用戶使用這個工具時,硬盤內所有數(shù)據(jù)將丟失,因此推薦在運行它之前備份必要的數(shù)據(jù),同時推薦移走所有其它硬盤。如果用戶忘記備份數(shù)據(jù),而希望退出該程序,則可以按除Y之外的任意鍵即可,如果用戶確認對硬盤進行低格,請按 “Y”鍵。

  如果選擇了“Y”后,程序將要求用戶選擇硬盤或者就對當前硬盤進行低格,接著,問答幾個提問,即可開始硬盤低級格式化過程。

編輯本段低格,高格及快格的區(qū)別

類型    主要工作    特點    備注

低級格式化  介質檢查;磁盤介質測試;劃分磁道和扇區(qū);對每個扇區(qū)進行編號(C/H/S);設置交叉因子。 只能在DOS環(huán)境或自寫的匯編指令下進行,低級格式化只能整盤進行。

高級格式化

清除數(shù)據(jù)(寫刪除標記);檢查扇區(qū);重新初始化引導信息;初始化分區(qū)表信息;    可以在DOS和操作系統(tǒng)上進行,只能對分區(qū)操作。高級格式化只是存儲數(shù)據(jù),但如果存在壞扇區(qū)可能會導致長時間磁盤讀寫。  DOS下可能有分區(qū)識別問題。使用Format命令格式化不會自動修復邏輯壞道,如果發(fā)現(xiàn)有壞道,最好使用SCANDISK或WINDOWS系統(tǒng)的磁盤檢查功能、還有其它第三方軟件進行修復或隱藏,邏輯壞道既可以通過磁盤檢查也可以通過低格解決,這取決于是扇區(qū)的哪個部分出現(xiàn)了錯誤。

快速格式化  刪除文件分配表;不檢查扇區(qū)損壞情況;    可以在DOS和操作系統(tǒng)上進行,只能對分區(qū)操作。

硬盤MBR全面分析

主板芯片和CPU收到了不符合規(guī)定的電流,將自動產生一個RESET信號,在主板沒有收到電源的Power Good信號之前,重復RESET信號

BIOSJMP指令,跳轉到真正的BIOS啟動程序處

BIOS開始加電自檢(Power-On Self Test, POST),若成功執(zhí)行INT 19h(SYSTEM - BOOTSTRAP LOADER)

BIOS開始尋找顯卡,找到的話將執(zhí)行顯卡的BIOS。接著顯卡初始化,將顯示一段顯卡信息

BIOS開始執(zhí)行所有其他設備的BIOS,包括軟驅,硬盤等

BIOS顯示啟動信息

BIOS開始額外的檢測。一般有內存檢測,如果內存有問題,將顯示錯誤消息

BIOS探測所有的硬件,將顯示硬盤/光區(qū)信息等

BIOS給出一個已知硬件的列表

BIOS按照設置的驅動器順序找驅動器,如果驅動器存在的話繼續(xù)找啟動扇區(qū),軟驅/硬盤的啟動扇區(qū)都在0柱0頭1扇區(qū)(cylinder 0, head 0, sector 1)

將啟動扇區(qū)讀到內存0000:7c00處,接著INT 19h開始執(zhí)行0000:7c00處代碼

 如果找不到驅動器,系統(tǒng)顯示錯誤信息并停止。通常是"No boot device"或"NO ROM BASIC -SYSTEM HALTED"

磁盤的啟動扇區(qū)就是主引導記錄(Master Boot Record),包括0柱0頭1扇區(qū)的512個字節(jié),它的任務是完成BIOS到操作系統(tǒng)的交接。

MBR的大體結構:

偏移 內容

0000 MBR程序代碼

01BE 分區(qū)表

01FE 結束標志

分區(qū)表結構

BYTE

1 如果是引導分區(qū),就是80H,如果不是,就是00H

2-4 是該分區(qū)的起始扇區(qū)號

5 標志字節(jié),比如05表示擴展分區(qū)

6-8 該分區(qū)的終止扇區(qū)號

9-12 該分區(qū)已使用的扇區(qū)數(shù)

13-16 該分區(qū)總共占用的扇區(qū)數(shù)

這是從我的硬盤上提取的MBR(硬盤是Maxtor的金鉆20G,netfay的電腦早過時了:P),不同型號的硬盤MBR稍有不同,不過功能都是一樣的

0000 33 C0 8E D0 BC 00 7C FB-50 07 50 1F FC BE 1B 7C 3.....|.P.P....|

0010 BF 1B 06 50 57 B9 E5 01-F3 A4 CB BE BE 07 B1 04 ...PW...........

0020 38 2C 7C 09 75 15 83 C6-10 E2 F5 CD 18 8B 14 8B 8,|.u...........

0030 EE 83 C6 10 49 74 16 38-2C 74 F6 BE 10 07 4E AC ....It.8,t....N.

0040 3C 00 74 FA BB 07 00 B4-0E CD 10 EB F2 89 46 25 <.t...........F%

0050 96 8A 46 04 B4 06 3C 0E-74 11 B4 0B 3C 0C 74 05 ..F...<.t...<.t.

0060 3A C4 75 2B 40 C6 46 25-06 75 24 BB AA 55 50 B4 :.u+@.F%.u$..UP.

0070 41 CD 13 58 72 16 81 FB-55 AA 75 10 F6 C1 01 74 A..Xr...U.u....t

0080 0B 8A E0 88 56 24 C7 06-A1 06 EB 1E 88 66 04 BF ....V$.......f..

0090 0A 00 B8 01 02 8B DC 33-C9 83 FF 05 7F 03 8B 4E .......3.......N

00A0 25 03 4E 02 CD 13 72 29-BE 59 07 81 3E FE 7D 55 %.N...r).Y..>.}U

00B0 AA 74 5A 83 EF 05 7F DA-85 F6 75 83 BE 2E 07 EB .tZ.......u.....

00C0 8A 98 91 52 99 03 46 08-13 56 0A E8 12 00 5A EB ...R..F..V....Z.

00D0 D5 4F 74 E4 33 C0 CD 13-EB B8 00 00 80 08 10 16 .Ot.3...........

00E0 56 33 F6 56 56 52 50 06-53 51 BE 10 00 56 8B F4 V3.VVRP.SQ...V..

00F0 50 52 B8 00 42 8A 56 24-CD 13 5A 58 8D 64 10 72 PR..B.V$..ZX.d.r

0100 0A 40 75 01 42 80 C7 02-E2 F7 F8 5E C3 EB 74 B7 .@u.B......^..t.

0110 D6 C7 F8 B1 ED CE DE D0-A7 A1 A3 B0 B2 D7 B0 B3 ................

0120 CC D0 F2 CE DE B7 A8 BC-CC D0 F8 A1 A3 00 BC D3 ................

0130 D4 D8 B2 D9 D7 F7 CF B5-CD B3 CA B1 B3 F6 CF D6 ................

0140 B4 ED CE F3 A1 A3 B0 B2-D7 B0 B3 CC D0 F2 CE DE ................

0150 B7 A8 BC CC D0 F8 A1 A3-00 C8 B1 C9 D9 B2 D9 D7 ................

0160 F7 CF B5 CD B3 00 00 00-00 00 00 00 00 00 00 00 ................

0170 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................

0180 00 00 00 8B FC 1E 57 8B-F5 CB 00 00 00 00 00 00 ......W.........

0190 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................

01A0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................

01B0 00 00 00 00 00 2C 44 63-B5 D7 B5 D7 00 00 80 01 .....,Dc........

01C0 01 00 0B FE 7F FD 3F 00-00 00 3F 04 7D 00 00 00 ......?...?.}...

01D0 41 FE 0C FE FF FF 7E 04-7D 00 7D 9B E5 01 00 00 A.....~.}.}.....

01E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................

01F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 55 AA ..............U.

由于程序代碼從0000:7C00開始,下面看反編譯的結果(經過修改)

7C00 33C0 XOR AX,AX ;AX=0

7C02 8ED0 MOV SS,AX ;SS=0

7C04 BC007C MOV SP,7C00 ;SP=7C00

7C07 FB STI ;中斷允許

7C08 50 PUSH AX

7C09 07 POP ES ;ES=0

7C0A 50 PUSH AX

7C0B 1F POP DS ;DS=0

7C0C FC CLD ;字符串操作方向:從低到高

7C0D BE1B7C MOV SI,7C1B ;源地址 DS:SI=0000:7C1B

7C10 BF1B06 MOV DI,061B ;目的地址 ES:DI=0000:061B

7C13 50 PUSH AX

7C14 57 PUSH DI

7C15 B9E501 MOV CX,01E5 ;共1E5h個字節(jié)

7C18 F3 REPZ

7C19 A4 MOVSB ;將MBR從0000:7C00移動到0000:0600

7C1A CB RETF ;跳轉到0000:061B處

PARTITION_SEARCH_LOOP:

061B BEBE07 MOV SI,07BE ;SI指向分區(qū)表的開始

061E B104 MOV CL,04 ;循環(huán)4次,硬盤最多4個主分區(qū)

0620 382C CMP [SI],CH

0622 7C09 JL ACTIVE_PARTITION_FOUND

;分區(qū)是活動分區(qū)

0624 7515 JNZ INVALID_PARTITION_TABLE

;無效的分區(qū)表

0626 83C610 ADD SI,+10 ;每個分區(qū)占用16個字節(jié),SI指向下一個分區(qū)

0629 E2F5 LOOP PARTITION_SEARCH_LOOP

062B CD18 INT 18 ;分區(qū)表搜索完,無活動分區(qū),INT 18h=DISKLESS BOOT HOOK

ACTIVE_PARTITON_FOUND:

062D 8B14 MOV DX,[SI] ;下面的搜索保證只存在一個活動分區(qū),否則分區(qū)表無效

062F 8BEE MOV BP,SI ;找到的引導分區(qū)標志和開始地址分別存入DX,BP

ONLY_ONE_ACTIVE_PARTITON_SEARCH_LOOP:

0631 83C610 ADD SI,+10

0634 49 DEC CX

0635 7416 JZ GOOD_PARTITION_TABLE ;搜索完畢,剩下的分區(qū)中無活動分區(qū),分區(qū)表正常

0637 382C CMP [SI],CH

0639 74F6 JZ ONLY_ONE_ACTIVE_PARTITON_SEARCH_LOOP ;如果還有活動分區(qū)則繼續(xù)向下執(zhí)行

INVALID_PARTITION_TABLE:

063B BE1007 MOV SI,0710 ;SI指向要顯示的錯誤信息處

HANG_MACHINE_LOOP:

063E 4E DEC SI

DISPLAY_ERROR_MESSAGE_LOOP:

063F AC LODSB

0640 3C00 CMP AL,00

0642 74FA JZ HANG_MACHINE_LOOP

;到字符串尾時進入死循環(huán),停止運行

0644 BB0700 MOV BX,0007

0647 B40E MOV AH,0E

0649 CD10 INT 10 ;顯示錯誤信息

DISPLAY_ERROR_MESSAGE_LOOP_ALIAS:

064B EBF2 JMP DISPLAY_ERROR_MESSAGE_LOOP

GOOD_PARTITION_TABLE:

064D 894625 MOV [BP+25],AX

;tmpvar=BP+25處清零,作為臨時變量

0650 96 XCHG SI,AX ;SI=0

0651 8A4604 MOV AL,[BP+04]

;讀分區(qū)類型入AL

0654 B406 MOV AH,06

0656 3C0E CMP AL,0E ;類型 WIN95: DOS 16-bit FAT, LBA-mapped

0658 7411 JZ TYPE_WIN95_DOS_16BIT_FAT_LBA

065A B40B MOV AH,0B

065C 3C0C CMP AL,0C ;類型 WIN95 OSR2 32-bit FAT, LBA-mapped

065E 7405 JZ TYPE_WIN95_OSR2_32BIT_FAT_LBA

0660 3AC4 CMP AL,AH ;類型 WIN95 OSR2 32-bit FAT

0662 752B JNZ TYPE_DEFAULT

0664 40 INC AX ;AX=0B0C

TYPE_WIN95_OSR2_32BIT_FAT_LBA:

0665 C6462506 MOV BYTE PTR [BP+25],06

;tmpvar=06

0669 7524 JNZ TYPE_DEFAULT

;這里有點問題,這個轉移應該肯定不成立?

TYPE_WIN95_DOS_16BIT_FAT_LBA:

066B BBAA55 MOV BX,55AA

066E 50 PUSH AX

066F B441 MOV AH,41

0671 CD13 INT 13 ;int 13h擴展功能的檢測,IBM/MS INT 13 Extensions - INSTALLATION CHECK

0673 58 POP AX

0674 7216 JB INT13H_EXTENSION_UNSUPPORTED

;CF=1 - 不支持int 13h擴展功能

0676 81FB55AA CMP BX,AA55 ;BX不為AA55 - 不支持int 13h擴展功能

067A 7510 JNZ INT13H_EXTENSION_UNSUPPORTED

067C F6C101 TEST CL,01 ;CL不為1 - 不支持int 13h擴展功能

067F 740B JZ INT13H_EXTENSION_UNSUPPORTED

0681 8AE0 MOV AH,AL ;AH=0E

0683 885624 MOV [BP+24],DL

;tmpvar=DL,引導分區(qū)標志

0686 C706A106EB1E MOV WORD PTR [06A1],1EEB

;改06A1處指令為PUSH DS; JMP NEW_LOCATION_1

INT13H_EXTENSION_UNSUPPORTED:

068C 886604 MOV [BP+04],AH

;如果支持的話置分區(qū)類型為0E(類型 WIN95: DOS 16-bit FAT, LBA-mapped)

;否則為06(類型 DOS 3.31+ 16-bit FAT over 32M)

TYPE_DEFAULT:

068F BF0A00 MOV DI,000A

READ_SECTOR_LOOP:

0692 B80102 MOV AX,0201

0695 8BDC MOV BX,SP ;BX設置為7C00

0697 33C9 XOR CX,CX ;CX=0

0699 83FF05 CMP DI,+05

069C 7F03 JG NEW_LOCATION_0

069E 8B4E25 MOV CX,[BP+25]

NEW_LOCATION_0:

06A1 034E02 ADD CX,[BP+02]

06A4 CD13 INT 13 ;將活動分區(qū)的起始扇區(qū)讀到0000:7C00

NEW_LOCATION_1:

06A6 7229 JB READ_SECTOR_ERROR

;CF=1 - 錯誤

06A8 BE5907 MOV SI,0759

06AB 813EFE7D55AA CMP WORD PTR [7DFE],AA55

;扇區(qū)結束標志是否正確?

06B1 745A JZ READ_SECTOR_SUCCEEDED

;正確

06B3 83EF05 SUB DI,+05 ;DI=DI-5

06B6 7FDA JG READ_SECTOR_LOOP

06B8 85F6 TEST SI,SI

06BA 7583 JNZ DISPLAY_ERROR_MESSAGE_LOOP:

;顯示錯誤信息:缺少操作系統(tǒng)

06BC BE2E07 MOV SI,072E

06BF EB8A JMP DISPLAY_ERROR_MESSAGE_LOOP_ALIAS

;顯示錯誤信息:加載操作系統(tǒng)時發(fā)生錯誤。

070D EB74 JMP CONTINUE_KOAD_OS

0783 8BFC MOV DI,SP

;DI=7C00

0785 1E PUSH DS

0786 57 PUSH DI

0787 8BF5 MOV SI,BP

0789 CB RETF ;轉到執(zhí)行0000:7C00處的語句,即操作系統(tǒng)的引導程序

硬盤主引導記錄(MBR)及其結構

硬盤的0柱面、0磁頭、1扇區(qū)稱為主引導扇區(qū),F(xiàn)DISK程序寫到該扇區(qū)的內容稱為主引導記錄(MBR)。該記錄占用512個字節(jié),它用于硬盤啟動時將系統(tǒng)控制權交給用戶指定的,并在分區(qū)表中登記了的某個操作系統(tǒng)區(qū)。

1.MBR的讀取

    硬盤的引導記錄(MBR)是不屬于任何一個操作系統(tǒng),也不能用操作系統(tǒng)提供的磁盤操作命令來讀取它。但我們可以用ROM-BIOS中提供的INT13H的2號功能來讀出該扇區(qū)的內容,也可用軟件工具Norton8.0中的DISKEDIT.EXE來讀取。

用INT13H的讀磁盤扇區(qū)功能的調用參數(shù)如下:

入口參數(shù):AH=2 (指定功能號)

AL=要讀取的扇區(qū)數(shù)

DL=磁盤號(0、1-軟盤;80、81-硬盤)

DH=磁頭號

CL高2位+CH=柱面號

CL低6位=扇區(qū)號

CS:BX=存放讀取數(shù)據(jù)的內存緩沖地址

出口參數(shù):CS:BX=讀取數(shù)據(jù)存放地址

錯誤信息:如果出錯CF=1 AH=錯誤代碼

用DEBUG讀取位于硬盤0柱面、0磁頭、1扇區(qū)的操作如下:

A>DEBUG

-A 100

XXXX:XXXX MOV AX,0201 (用功能號2讀1個扇區(qū))

XXXX:XXXX MOV BX,1000 (把讀出的數(shù)據(jù)放入緩沖區(qū)的地址為CS:1000)

XXXX:XXXX MOV CX,0001 (讀0柱面,1扇區(qū))

XXXX:XXXX MOV DX,0080 (指定第一物理盤的0磁頭)

XXXX:XXXX INT 13

XXXX:XXXX INT 3

XXXX:XXXX (按回車鍵)

-G=100 (執(zhí)行以上程序段)

-D 1000 11FF (顯示512字節(jié)的MBR內容)

2.MBR的組成

一個扇區(qū)的硬盤主引導記錄MBR由如圖6-15所示的4個部分組成。

·主引導程序(偏移地址0000H--0088H),它負責從活動分區(qū)中裝載,并運行系統(tǒng)引導程序。

·出錯信息數(shù)據(jù)區(qū),偏移地址0089H--00E1H為出錯信息,00E2H--01BDH全為0字節(jié)。

·分區(qū)表(DPT,Disk Partition Table)含4個分區(qū)項,偏移地址01BEH--01FDH,每個分區(qū)表項長16個字節(jié),共64字節(jié)為分區(qū)項1、分區(qū)項2、分區(qū)項3、分區(qū)項4。

·結束標志字,偏移地址01FE--01FF的2個字節(jié)值為結束標志55AA,如果該標志錯誤系統(tǒng)就不能啟動。

0000-0088

Master Boot Record 主引導程序

主引導

程序

0089-01BD

出錯信息數(shù)據(jù)區(qū)

數(shù)據(jù)區(qū)

01BE-01CD

分區(qū)項1(16字節(jié))

分區(qū)表

01CE-01DD

分區(qū)項2(16字節(jié))

01DE-01ED

分區(qū)項3(16字節(jié))

01EE-01FD

分區(qū)項4(16字節(jié))

01FE

55

結束標志

01FF

AA

                      圖6-15 MBR的組成結構圖
3.MBR中的分區(qū)信息結構
    占用512個字節(jié)的MBR中,偏移地址01BEH--01FDH的64個字節(jié),為4個分區(qū)項內容(分區(qū)信息表)。它是由磁盤介質類型及用戶在使用FDISK定義分區(qū)說確定的。在實際應用中,F(xiàn)DISK對一個磁盤劃分的主分區(qū)可少于4個,但最多不超過4個。每個分區(qū)表的項目是16個字節(jié),其內容含義如表6-19所示。
表6-19 分區(qū)項表(16字節(jié))內容及含義

存貯字節(jié)位

內容及含義

第1字節(jié)

引導標志。若值為80H表示活動分區(qū),若值為00H表示非活動分區(qū)。

第2、3、4字節(jié)

本分區(qū)的起始磁頭號、扇區(qū)號、柱面號。其中:
    磁頭號——第2字節(jié);
    扇區(qū)號——第3字節(jié)的低6位;
    柱面號——為第3字節(jié)高2位+第4字節(jié)8位。

第5字節(jié)

分區(qū)類型符。
    00H——表示該分區(qū)未用(即沒有指定);
    06H——FAT16基本分區(qū);
    0BH——FAT32基本分區(qū);
    05H——擴展分區(qū);
    07H——NTFS分區(qū);
    0FH——(LBA模式)擴展分區(qū)(83H為Linux分區(qū)等)。

第6、7、8字節(jié)

本分區(qū)的結束磁頭號、扇區(qū)號、柱面號。其中:
    磁頭號——第6字節(jié);
    扇區(qū)號——第7字節(jié)的低6位;
    柱面號——第7字節(jié)的高2位+第8字節(jié)。

第9、10、11、12字節(jié)

本分區(qū)之前已用了的扇區(qū)數(shù)。

第13、14、15、16字節(jié)

本分區(qū)的總扇區(qū)數(shù)。

4.MBR的主要功能及工作流程
    啟動PC機時,系統(tǒng)首先對硬件設備進行測試,測試成功后進入自舉程序INT 19H,然后讀系統(tǒng)磁盤0柱面、0磁頭、1扇區(qū)的主引導記錄(MBR)內容到內存指定單元0:7C00地址開始的區(qū)域,并執(zhí)行MBR程序段。
    硬盤的主引導記錄(MBR)是不屬于任何一個操作系統(tǒng)的,它先于所有的操作系統(tǒng)而被調入內存,并發(fā)揮作用,然后才將控制權交給主分區(qū)(活動分區(qū))內的操作系統(tǒng),并用主分區(qū)信息表來管理硬盤。
MBR程序段的主要功能如下:
·檢查硬盤分區(qū)表是否完好。
·在分區(qū)表中尋找可引導的“活動”分區(qū)。
·將活動分區(qū)的第一邏輯扇區(qū)內容裝入內存。在DOS分區(qū)中,此扇區(qū)內容稱為DOS引導記錄(DBR)。
MBR引導程序段的執(zhí)行流程如圖6-16所示。



                                 
硬盤邏輯驅動器的分區(qū)表鏈結構
    硬盤是由很多個512字節(jié)的扇區(qū)組成,而這些扇區(qū)會被組織成一個個的“分區(qū)”。
硬盤的分區(qū)規(guī)則是:一個分區(qū)的所有扇區(qū)必須連續(xù),硬盤可以有最多4個物理上的分區(qū),這4個物理分區(qū)可以時個主分區(qū)或者3個主分區(qū)加一個擴展分區(qū)。在DOS/Windows管理下的擴展分區(qū)里,可以而且必須再繼續(xù)劃分邏輯分區(qū)(邏輯盤)。
從MS-DOS3.2問世以后,用戶就可以在一個物理硬盤驅動器上劃分一個主分區(qū)和一個擴展分區(qū),并在擴展分區(qū)上創(chuàng)建多個邏輯驅動器,也即我們常說的一個物理盤上多個邏輯盤。
舉一個例子,一個10G的硬盤,安裝Windows,有C:、D:、E:三個邏輯盤,那么它的分區(qū)情況可以是如下的方式:
分區(qū)一:主分區(qū)2GB,格式化為C:盤。
分區(qū)二:擴展分區(qū)8GB。它被再劃分為兩個各4GB的邏輯盤,格式化為以D:和E:盤。
在一個劃分有多個主分區(qū)的硬盤上,則可安裝多個不同的操作系統(tǒng)。如Windows、Linux、Solaris等。每個操作系統(tǒng)自己去管理分配給自己的分區(qū)。但是,每個操作系統(tǒng)對分區(qū)的操作方式是不同的。對于DOS/Windows來說,它能夠把它所能管轄的一個主分區(qū)和一個擴展分區(qū)格式化,然后按照C:、D:、E:邏輯盤的方式來管理。而Linux則不同,它是把“分區(qū)”看作一個設備,既沒有“擴展分區(qū)”的概念,也沒有“邏輯盤”的概念。
1.邏輯盤的鏈接關系
在FAT文件系統(tǒng)中,硬盤的邏輯盤字符用字符C:、D:、E:、...、Z:來表示。主分區(qū)一般被格式化成C:盤,從D:盤開始的邏輯盤是建立在擴展分區(qū)之上的。在系統(tǒng)進行讀寫操作時,DOS首先查看主引導記錄(MBR)中的分區(qū)信息表,分區(qū)項將指向活動主分區(qū)的DOS引導記錄(DBR)。
MBR中的分區(qū)表位于0柱面、0磁頭、1扇區(qū)內,以位移1BEH開始的第一分區(qū)表作為鏈首,有表內的鏈接表項指示下一分區(qū)表的物理位置(xx柱面、0磁頭、1扇區(qū)),在該位置的扇區(qū)內同樣位移1BEH處,保存著第2張分區(qū)表,依次類推,直至指向最后一張分區(qū)表的物理位置(yy柱面、0磁頭、1扇區(qū))。因該分區(qū)表內不存在鏈接表項,即作為分區(qū)表鏈的鏈尾。如圖6-17所示。
   硬盤                      第一個虛擬              第二個虛擬                   第三個虛擬  
MBR分區(qū)表                    MBR分區(qū)表               MBR分區(qū)表                    MBR分區(qū)表

定義C:盤

------------>

定義D:盤

----------->

定義E:盤

------------>

定義F:盤

描述剩余空間

描述剩余空間

描述剩余空間

描述剩余空間

未用

未用

未用

未用

未用

未用

未用

未用

55AA

55AA

55AA

55AA

圖具有4個邏輯盤的分區(qū)鏈表示意圖
舉例來說,本來位于柱面0、磁頭0、扇區(qū)1上的分區(qū)表的每一項記錄和主分區(qū)的DBR之間有一對應的關系,但是,如果在擴展分區(qū)中建立了多個邏輯盤,例如D:、E:、F:,該分區(qū)表中的分區(qū)項可指向第一個邏輯盤:,但對于其它的邏輯盤,則就沒有這種對應關系了。為能夠查找擴展分區(qū)中的多個邏輯盤,DOS系統(tǒng)可做如下安排:
·如果硬盤只有一個主分區(qū),即是將整個硬盤作為一個邏輯盤C:,則分區(qū)命令FDISK只在硬盤的柱面0、磁頭0、扇區(qū)1上建立一個MBR。
·如果硬盤被劃分成2--4個分區(qū),則FDISK除了在柱面0、磁頭0、扇區(qū)1上建立一個MBR之外,還在擴展分區(qū)的每個邏輯盤的起始扇區(qū)上都建立一個虛擬MBR,每一個虛擬MBR用于擴展分區(qū)上的一個邏輯盤。
·擴展分區(qū)的第一個扇區(qū)不是用于一個邏輯盤的DBR,而是指向一個“擴展的”分區(qū)表,即第一個虛擬的MBR。該邏輯盤DBR扇區(qū)的起點應為虛擬MBR的下一個磁道1扇區(qū)。
這些MBR中的各個分區(qū)表鏈接成一個如圖6-17所示的分區(qū)表鏈。這是一個硬盤具有4個表項所描述的內容。
DOS就是用這種方法來使一個擴展分區(qū)看起來象是有多個硬盤。
從圖中可以看到,位于磁盤柱面0、磁頭0、扇區(qū)1上MBR的分區(qū)表指向基本分區(qū)及擴展分區(qū)中的第一個邏輯盤。



圖6-16 MBR引導程序段執(zhí)

 需要指出的是,在以前的磁盤讀取技術水平下,低級格式化是一種損耗性操作,其對硬盤壽命有一定的負面影響。最近一兩年出的硬盤進行低級格式化影響要小的多,因為他不是物理上的操作。因此,許多硬盤廠商均建議用戶不到萬不得已,不可“妄”使此招。當硬盤受到外部強磁體、強磁場的影響,或因長期使用,硬盤盤片上由低級格式化劃分出來的扇區(qū)格式磁性記錄部分丟失,從而出現(xiàn)大量“壞扇區(qū)”時,可以通過低級格式化來重新劃分“扇區(qū)”。但是前提是硬盤的盤片沒有受到物理性劃傷。   硬盤低級格式化的功用硬盤低格格式化是對硬盤最徹底的初始化方式,經過低格后的硬盤,原來保護的數(shù)據(jù)將全部丟失,所以一般來說低格硬盤是非常不可取的,只有非常必要的時候才能低格硬盤。而這個所謂的必要時候有兩種,一是硬盤出廠前,硬盤廠會對硬盤進行一次低級格式化;另一個是當硬盤出現(xiàn)某種類型的壞道時,使用低級格式化能起到一定的緩解或者屏蔽作用。   對于第一種情況,這里不用多說了,因為硬盤出廠前的低格工作只有硬盤工程師們才會接觸到,對于普通用戶而言,根本無須考慮這方面的事情。至于第二種情況,是什么類型的壞道時才需要低格呢?在說明這個關鍵性問題前,先來看看硬盤壞道的類型。

編輯本段產生原因及作用

邏輯壞道

  總的來說,壞道可以分為物理壞道和邏輯壞道。其中邏輯壞道相對比較容易解決,它指硬盤在寫入時受到意外干擾,造成有ECC錯誤。從過程上講,它是指硬盤在寫入數(shù)據(jù)的時候,會用ECC的邏輯重新組合數(shù)據(jù),一般操作系統(tǒng)要寫入512個字節(jié),但實際上硬盤會多寫幾十個字節(jié),而且所有的這些字節(jié)都要用ECC進行校驗編碼,如果原始字節(jié)算出的ECC校正碼和讀出字節(jié)算出的ECC不同,這樣就會產生ECC錯誤,這就是所謂的邏輯壞道產生原因。

物理壞道

  至于物理壞道,它對硬盤的損壞更具致命性,它也有軟性和硬性物理壞道的區(qū)別,磁盤表面物理損壞就是硬性的,這是無法修復的。而由于外界影響而造成數(shù)據(jù)的寫入錯誤時,系統(tǒng)也會認為是物理壞道,而這種物理壞道是可以使用一些硬盤工具(例如硬盤廠商提供的檢測修復軟件)來修復,此外,對于微小的硬盤表面損傷,一些硬盤工具(例如西部數(shù)據(jù)的Data Lifeguard Tools)就可以重新定向到一個好的保留扇區(qū)來修正錯誤。   對于這些壞道類型,硬性的物理壞道肯定是無法修復的,它是對硬盤表面的一種最直接的損壞,所以即使再低格或者使用硬盤工具也無法修復(除非是非常微小的損壞,部分工具可以將這部份壞道保留不用以此達到解決目的)。

低格的作用

  對于硬盤上出現(xiàn)邏輯壞道或者軟性物理壞道,用戶可以試試使用低級格式化來達到屏蔽壞道的作用,但這里需要指出,屏蔽壞道并不等于消除壞道了,低格硬盤能把原來硬盤內所有分區(qū)都刪除,但壞道卻依然存在,屏蔽只是將壞道隱藏起來,不讓用戶在存儲數(shù)據(jù)時使用這些壞道,這樣能在一定程度上保證用戶數(shù)據(jù)的可靠性,但壞道卻會隨著硬盤分區(qū)、格式化次數(shù)的增長而擴散蔓延。   所以筆者并不推薦用戶對硬盤進行低格,如果硬盤在保修期內最好去保修或者找經銷商換一塊,這可以說是最佳解決方案,也是最徹底的解決方案了。如果硬盤過了保修期不讓換,那可以試試低格硬盤,以防止將數(shù)據(jù)存儲到壞道導致數(shù)據(jù)損失。

編輯本段方法

工具低格

  對于如何進行硬盤低格,一般來說是使用低格工具來操作,這個將在下面的章節(jié)中詳細介紹,這里再說一些相關話題。即低格工具跟硬盤檢測工具是有著本質的區(qū)別,低格工具就是對硬盤進行低格的作用,而硬盤檢測工具一般來說是硬盤廠商推出的用來檢測硬盤,及早發(fā)現(xiàn)硬盤錯誤,以提醒用戶備份重要數(shù)據(jù)或者檢修硬盤用的,它不是用于低格硬盤。 而最常見的莫過于使用一些工具軟件來對硬盤進行低格,常見低格工具有lformat、DM及硬盤廠商們推出的各種硬盤工具等。

匯編語言低格

  用Debug匯編語言進行低級格式化   低級格式化硬盤能完成銷毀硬盤內的數(shù)據(jù),所以在操作前一定要謹慎。硬盤低格有許多方法,例如直接在CMOS中對硬盤進行低格,或者使用匯編語言進行硬盤低格。匯編是比較低級的一種編程語言,它能非常方便地直接操作硬件,而且運行效率很高,如果軟件系統(tǒng)中需要直接操作硬件時,經常使用的就是匯編語言。使用匯編也可以對硬盤進行低級格式化,它比DM等工具軟件顯得更為靈活,具體應用時就是使用debug程序,而具體操作就是在debug環(huán)境下,調用存放在BIOS 中的低級格式化程序(CMOS中直接低格硬盤調用的也是此段低格程序)。實現(xiàn)方法通常有如下三種:   (1)、直接調用BIOS ROM中的低格程序   在很多計算機的BIOS ROM中存放著低格程序,存放地址從C8005H地址開始,具體操作如下:   A:\>Debug   -G C800 0005(這時屏幕顯示信息(不同版本的BIOS顯示的信息可能不同),回車后提示:)   Current Interleave is 3 select new interleave or Return for current(這是要求用戶選擇交叉因子,按回車表示取默認值3,也可輸入新的交叉因子值,硬盤的交叉因子一般是3,所以直接回車即可。屏幕接著提示:)   Are you dynamically configuring the drive-answer YN t   PressYto begin formatting the drive C with interleave 03(鍵入“Y”后開始對硬盤進行低格)   Formatting ……(完成后詢問是否處理壞磁道)   Do you want to format bad track-answer YN   若沒有則用“N”回答。屏幕顯示:   Format Successfulsystem will new restart,Insert Dos diskette indrive A   插入系統(tǒng)盤到A驅動器,即可進行分區(qū),高級格式化等操作來安裝系統(tǒng)了。   (2)、通過調用INT 13H中斷的7號功能對硬盤進行低格   操作如下:   A:\>DEBUG   -A 100   -XXXX0100 MOV AX,0703;(交叉因子為3   -XXXX0103 MOV CX,0001;(0磁道0扇區(qū)起)   -XXXX0106 MOV DX,0080;(C0磁道)   -XXXX0109 INT 13   -XXXX010B INT 3   -XXXX010D   -G 100   這樣硬盤就被低格了。   (3)、調用INT 13H中斷的5號功能   對硬盤調用INT 13H中斷的5號功能只低格001扇區(qū),而不必低格整個硬盤,從而使低格在很短的時間內完成。具體操作如下:   ADEBUG   -A 100   -XXXX0100 MOV AX0500;(調用5號功能)   -XXXX0103 MOV BX,0180;(設置緩沖區(qū)地址)   -XXXX0106 MOV CX0001;(0磁道1扇區(qū)起)   -XXXX0109 MOV DX,0080;(C0磁道)   -XXXX010B INT 13   -XXXX010D INT 3   -E 0180 0 0 0002;(寫入?yún)?shù))   -G 100

DM低級格式化方法

  用DM進行低級格式化   DM的全名是Hard Disk Management Program,它能對硬盤進行低級格式化、校驗等管理工作,可以提高硬盤的使用效率。總的來說,DM具有如下幾個功能:硬盤低級格式化、分區(qū)、高級格式化、硬盤參數(shù)配置及其它功能。   在實際應用時,dm工具跟普通DOS命令(fdiskformat)一樣,它的命令格式為:ADM [參數(shù)] 。其中的參數(shù)可取以下值:   M DM軟件以手工方式進入,如無該參數(shù),DM以自動方式運行,依次執(zhí)行INITIALIZE. PARTITIONG. PREPARAFION。   C DM軟件以彩色方式執(zhí)行,即運行于彩色顯示器上。   P DM軟件以PCXT方式管理硬盤。   A DM軟件以PCAT方式管理硬盤。   2 DOS 2.XX版本方式。   3 DOS 3.XX版本方式。   4 DOS 4.XX版本方式(DM 5.01版有此參數(shù))。   V DM運行于可改變簇長度、根目錄項方式。   在實際使用中常用以下兩種方式啟動:   1ADM (自動方式。初始化硬盤時很多參數(shù)都用默認值幾乎不要人工干預)。   2、ADM (手動方式。作格式化時一些參數(shù)要人工指定)。   啟動dm工具后,用戶就可以根據(jù)自己的需要選擇相應的操作,由于它也是以DOS用戶界面的形式存,所以使用起來也十分簡捷、明了。

其它低級格式化方法

  除了上面介紹的兩種低格工具外,還有許多其它低級格式化方法。   1、CMOS中直接操作   如果主板支持,用戶可以直接在CMOS對硬盤進行低級格式化,這種方法非常簡單、方便,因此如果可能的話,筆者推薦使用這種方法進行硬盤低格。具體操作方法:在開機時根據(jù)系統(tǒng)提示進入CMOS Setup(如果是AwardBIOS,會提示按DEL進入CMOSSetup,如果是Intel主板,一般是按F2進入CMOS Setup),接著在CMOS菜單內選擇low formatted HardDisk Drive選擇,然后根據(jù)程序提示進行待低格硬盤,同時回答一些程序提問即可進行硬盤低級格式化。   2、lformat.com程序低格硬盤   除了dm工具外,還有一款比較常見的低格程序是lformat.exe,它是由邁拓公司推出的低級格式化硬盤工具。在DOS狀態(tài)下運行 lformat.exe后,程序即啟動警告界面。在該畫面中說明的大概意思是,如果用戶使用這個工具時,硬盤內所有數(shù)據(jù)將丟失,因此推薦在運行它之前備份必要的數(shù)據(jù),同時推薦移走所有其它硬盤。如果用戶忘記備份數(shù)據(jù),而希望退出該程序,則可以按除Y之外的任意鍵即可,如果用戶確認對硬盤進行低格,請按 Y”鍵。   如果選擇了“Y”后,程序將要求用戶選擇硬盤或者就對當前硬盤進行低格,接著,問答幾個提問,即可開始硬盤低級格式化過程。

編輯本段低格,高格及快格的區(qū)別

  類型 主要工作 特點 備注

低級格式化 介質檢查;磁盤介質測試;劃分磁道和扇區(qū);對每個扇區(qū)進行編號(C/H/S);設置交叉因子。 只能在DOS環(huán)境或自寫的匯編指令下進行,低級格式化只能整盤進行,現(xiàn)在硬盤出廠都是經過低格的,實際使用不到萬不得已不要使用低格。 低級格式化對硬盤有損傷,如果硬盤已有物理壞道,則低級格式化會更加損傷硬盤,加快報廢。低格的時間漫長,比如現(xiàn)在320G硬盤低格可能需要20小時,或更多。

高級格式化 清除數(shù)據(jù)(寫刪除標記);檢查扇區(qū);重新初始化引導信息;初始化分區(qū)表信息; 可以在DOS和操作系統(tǒng)上進行,只能對分區(qū)操作。高級格式化只是存儲數(shù)據(jù),但如果存在壞扇區(qū)可能會導致長時間磁盤讀寫。 DOS下可能有分區(qū)識別問題。使用Format命令格式化不會自動修復邏輯壞道,如果發(fā)現(xiàn)有壞道,最好使用SCANDISKWINDOWS系統(tǒng)的磁盤檢查功能、還有其它第三方軟件進行修復或隱藏,邏輯壞道既可以通過磁盤檢查也可以通過低格解決,這取決于是扇區(qū)的哪個部分出現(xiàn)了錯誤。

快速格式化 刪除文件分配表;不檢查扇區(qū)損壞情況; 可以在DOS和操作系統(tǒng)上進行,只能對分區(qū)操作。快速格式化也只是存儲數(shù)據(jù) DOS下可能有分區(qū)識別問題。另外,似乎Linux系統(tǒng)沒有快速格式化命令。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多