Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> Windows Server系統教程 >> Windows Server教程 >> Win2000磁盤編輯(二)

Win2000磁盤編輯(二)

日期:2017/1/24 11:08:00      編輯:Windows Server教程

    磁盤編輯之一是針對主引導記錄的操作,這次介紹針對分區表的操作。

    一、分區與分區表的背景知識:

  分區表存放位置在硬盤的0柱面0磁面1扇區的512個字節中的主引導記錄之後,分區表信息在主引導扇區中存放的起始位置是固定的,都是從扇區的2BEH處開始連續存放,一個分區的記錄信息共占用16個字節,分區表直到到該扇區倒數第三個字節結束(包括倒數第三個字節在內)。一共64個字節,所以一個硬盤最多可以分成4個分區。實際中如果分區數不滿4個時,不使用的分區記錄位置分區命令程序可以自動以0填充。

  每條分區記錄中的這16個字節含義如下:(以分區表地址偏移來表示)

偏移量  含義  記錄長度(字節)
00H  引導指示符  1
01H  分區引導記錄磁頭號  1
02H  分區引導記錄扇區號  1
03H  分區引導記錄柱面號  1
04H  系統指示符  1
05H  分區結束磁頭號  1
06H  分區結束扇區號  1
07H  分區結束柱面號  1
08H  分區前面的總扇區數  4
0CH  分配給分區的扇區數  4

  表中引導指示符是指該分區是否可以引導,如果為80H,就是可引導的,是00H就是不可引導的,在使用FDISK過程中,有一項激活分區的操作,實質就是將該字節寫為80H。系統指示符是表明該分區屬於哪種分區格式的,01H表示FAT16.

  由於每一個分區都是可再往下劃分邏輯驅動器的,所以,激活的本質是激活哪個邏輯驅動器。例如,很多機器都是將一個10G左右的物理硬盤先劃分為兩個分區,然後將第一分區再劃分成C、D兩個邏輯驅動器,激活邏輯驅動器C為可引導;到這一步特別注意:不可再激活邏輯驅動器D。如果想安裝兩個操作系統,必須先在第二分區中劃分好邏輯驅動器,再激活該分區中的一個邏輯驅動器。

  針對硬盤分區表可進行的操作主要有:a.如何在硬盤狀態完好的時候將分區表信息讀出並保存?b.如何在分區表發生故障後,用備份的分區表來代替損壞的分區表?c.如果沒有可用的分區表的備份,如何手工重建分區表信息?其中難度最大,當然也是技術要求最高的也就是手工重建分區表了。

  在幫助文檔中,明確指出DiskProbe不支持FAT32,所以,DiskProbe對FAT32的分區表不能操作。從這一點說,它的功能受到了相當的限制。但以前曾經發現過,某些工具幫助文檔中介紹的功能與實際具備的功能確實有出入,所以你也不能將幫助文檔中的說法太當真了,但由於我自己機器上不是采用的FAT32分區方法,也就沒有進行針對FAT32的試驗。如果哪位有FAT32的硬盤,可以自己試驗一下。

    解決分區表故障的步驟中,首先是讀取和檢查主引導記錄中的分區表信息。這部分描述:

    二、取得分區表信息的方法

  不論是備份分區表或是僅僅查看一下,都需要先取得分區表信息,其步驟是:

  1. 執行程序:DiskProbe
  2. 在菜單Drives 中,鼠標點擊: Physical Drive.
  3. 在菜單 Open Physical Drive 的對話框中, 以鼠標雙擊你准備顯示分區表的那個驅動器名稱。例如:Physical Drive 0
  4. 在 Handle 0范圍內的 Open Physical Drive 對話框中,點擊 Set Active,之後單擊 OK.
  5. 在菜單的 Sectors一項中,點擊 Read一項。.
  6. 在接下來出現的 Read Sectors 對話框中輸入將要讀取的起始扇區和扇區號, 即Starting Sector一項填寫0, Number of Sectors 一項中填寫1,實際這兩個數字也是默認值。然後點擊Read,讀取扇區信息。
以上這六步驟實際就是讀取主引導記錄扇區;


  7. 在View菜單中,點擊 Partition table。立即顯示分區表信息的對話框

    8. 要在 Partition table index 的列表框中,用鼠標雙擊分區表的號碼,圖中相應的分區表信息會自動變化。 從圖中可以也看出來:分區表信息和上面表中是相對應的,有:分區起始磁頭號和分區結束磁頭號;分區起始扇區號和分區結束扇區號;分區起始柱面號和分區結束柱面號;

  9. 按說應當將分區表保存為一個文件,但由於只有區區64個字節,並且和主引導記錄共存在同一個扇區中,一般也就將它與主引導記錄一並進行保存到同一個文件中。
  10. 如果使用你會使用dos的debug工具,可以編寫一段匯編程序,將這個扇區的內容讀取出來,用拷貝屏幕的方式進行打印,可以將主引導扇區的內容保存在紙上,作分析參考之用。由於采用了匯編語言,所以這種方法局限性小,所有windows9.x系列或dos均可用。在dos下鍵入:Debug 回車
(以下代碼手工輸入,注意空格不可省略)
  -a0
  mov ax 201
  mov bx 100
  mov cx 1
  mov dx 80
  int 13
  int 3
  -g=0

  然後用命令:-d100顯示內容,在打印機聯機狀態下,按下鍵盤的PrintScreen鍵,就可以將屏幕上當時顯示的內容完全打印到紙上。但我沒有試驗這個辦法的在NTFS分區下是否可用。

  可能有的朋友會有這樣的疑問:windows2000是對安全性要求非常高的系統,不使用口令而在匯編中調用INT13中斷,來直接讀取主引導扇區。會不會成功或者影響安全性呢?這種擔心是多余的,因為安全性是針對操作系統和運行在操作系統之上的文件而言的,而主引導扇區並不屬於任何操作系統,即機器在執行主引導記錄代碼的時候,操作系統還沒有在內存中建立起來,一切都還沒有顯現,當然是安全的。所以,這和保證數據文件安全並不矛盾。

    三、如何用備份的分區表(或主引導扇區信息)來恢復損壞的分區表:

  1. 首先執行程序:DiskProbe.
  2. 在菜單Drives 中,鼠標點擊: Physical Drive.
  3.  在菜單 Open Physical Drive 的對話框中, 以鼠標雙擊你准備修理分區表的那個驅動器名稱。例如:Physical Drive 0
  4. 在 Handle 0范圍內的 Open Physical Drive 對話框中,點擊 Set Active,之後單擊 OK.
  5.  在菜單的 Sectors一項中,點擊 Read一項。
  6. 在接下來出現的 Read Sectors 對話框中輸入將要讀取的起始扇區和扇區號, 即Starting Sector一項填寫0, Number of Sectors 一項中填寫1,實際這兩個數字也是默認值。然後點擊Read,讀取扇區信息。
  7. 在View菜單中,點擊 Partition table。顯示當前的分區表信息
  8. 要在 Partition table index 的列表框中,用鼠標雙擊准備維修的分區表的號碼,選定後,對話框下半部分立即顯示相應的分區表信息。(這些信息肯定是沒有修理之前的數值了)。上面這些操作與讀取分區表甚至與讀取主引導記錄的操作都是大同小異,但以下的就比較關鍵了:
  9. 在對話框中各個參數中填寫入新的數值。這些新的數值應當是查對備份分區表信息文件後取得的。當然也可以是從備份的分區表文件直接轉換為分區信息。如果編輯時不想使用對話框形式,可用上面介紹的方法將顯示轉換為字節形式,在字節形式下,僅顯示選定的分區信息,其它部分(包括主引導記錄)都是0。
  10. 在Sectors(扇區)菜單中 ,鼠標點擊:Write.
  11. 這時將出現 Write Sector 對話框, 在起始扇區的 Starting sector一項中選0,然後點擊 Write it 保存。

  12. 點擊 Yes,這時就完成了覆蓋原來數據的操作。

    四、手工重建分區表

  這種方法需要使用者非常熟悉分區結構,最好硬盤分區較少,分區情況也比較簡單。如果分區多而復雜,難度太大。即使簡單的情形,不到萬不得已也不要用這種方法。

  手工建立分區表主要難在分區數據的計算上。計算之前需要已知的數據有:硬盤的柱面數,磁頭數,每磁道的扇區數。這些數據在硬盤標簽上可以很容易地查找出來。

  首先,因為0柱面0磁頭(面)1扇區不屬於任何分區而且是隱藏的,所以第一個分區應當從0柱面1磁頭1扇區開始。現在的硬盤都比較大,常見的是每磁道63扇區,每個扇區是512字節,柱面數和磁頭數則隨著硬盤容量的增大而不同。計算時先選定容量,根據需要的容量,推算出第一分區結束的扇區號、磁頭號和柱面號。最後填寫的值要轉換為16進制。緊鄰上一個結束位置,就是第二分區的起始位置,依此類推,直至結束。磁頭數可以理解為與磁面數相等,柱面數可以理解為一個磁面上可劃分的磁道數。這樣,一個磁面的容量就是512*63(扇區)*柱面數。例如第一分區要用到最前面的125個磁面(或磁頭),下一分區必須從第126磁面(或磁頭)開始。則容量是=512*63*125*柱面數。扇 區數柱面數推算也和這相仿。 更詳細的計算請參考有關資料。算出的數據填寫在分區表中,其操作同上。

    五、注意問題

  1. 上面介紹的,與其說是手工重建分區,不如說是手工新建分區。危險性很大。且沒有針對NTFS試驗過。
  2. 如果是恢復原有分區,不推薦手工重建,因為一旦輸入錯誤的分區表,將丟失原有數據。
  3. 計算必須將結果轉換為16進制,可以使用附件中的計算器。(設置為函數型)。

Copyright © Windows教程網 All Rights Reserved