Win2000ディスクの編集(2)

  

ディスクの編集操作の1つはマスターブートレコードに対する操作です。今回はパーティションテーブルに対する操作について説明します。

まず、パーティションとパーティションテーブルの背景。

ハードディスクの0シリンダ0セクタ1セクタの512バイトのメインブートレコードの後のパーティションテーブル格納場所。メインブートセクタに格納されるパーティションテーブル情報の先頭位置は固定されており、セクタの2BEHから連続して格納されており、1つのパーティションのレコード情報は合計16バイトを占め、パーティションテーブルまではセクタまでカウントダウンする。 3番目のバイトは終了します(最後の3番目のバイトを含む)。合計64バイトなので、ハードディスクは最大4つのパーティションに分割できます。実際には、区画の数が4より少ない場合、使用されていない区画レコード位置区画コマンド・プログラムは自動的に0で埋められます。

各パーティションレコードの16バイトの意味は次のとおりです。(パーティションテーブルアドレスオフセットで示されます)

オフセットの意味レコード長(バイト)
00Hブートインジケータ1 01Hパーティションブートレコードヘッド番号1 02Hパーティションブートレコードセクタ番号1 03Hパーティションブートレコードシリンダ番号1 04Hシステムインジケータ1 05HパーティションエンドヘッドNo. 1 06Hパーティション終了セクタ番号1 07Hパーティション終了シリンダ番号1 08Hパーティション4の前の総セクタ数0CHパーティション4に割り当てられたセクタ数

表のブートインジケータは、パーティションをブートできるかどうかを示し、80Hの場合はブート可能、00Hの場合はブートできませんFDISKを使用する過程で、パーティションをアクティブにする操作があります本質的にはバイトを書き込むことです。 80Hです。システムインジケータは、そのパーティションがどのパーティションフォーマットに属しているかを示し、01HはFAT16を示します。

各パーティションは論理ドライブに分割できるため、アクティブ化の本質はどの論理ドライブをアクティブにするかです。たとえば、多くのコンピュータは、約10Gの物理ハードディスクを2つのパーティションに分割してから、最初のパーティションを2つの論理ドライブCとDに分割し、論理ドライブCを起動可能にするようにアクティブ化します。論理ドライブDはアクティブ化できなくなりました。 2つのオペレーティングシステムをインストールする場合は、最初に論理ドライブを2番目のパーティションに分割してから、そのパーティション内のいずれかの論理ドライブをアクティブにする必要があります。

ハードディスクのパーティションテーブルで実行できる操作は以下の通りです:a。ハードディスクのステータスが変化していないときにパーティションテーブルの情報を読み、保存するにはどうすればいいですか? b。パーティションテーブルに障害が発生した後、破損したパーティションテーブルをバックアップパーティションテーブルに置き換える方法を教えてください。 c。使用可能なパーティションテーブルのバックアップがない場合、パーティションテーブル情報を手動で再構築する方法その中でも、最も難しい、もちろん最も技術的に必要なことは、手動でパーティションテーブルを再構築することです。

ヘルプドキュメントには、DiskProbeはFAT32をサポートしていないと明記されているので、DiskProbeはFAT32パーティションテーブルを操作できません。この観点から、その機能はかなり制限されています。ただし、ヘルプドキュメントに記載されているツールの中には実際のものとは異なる機能を持つものがあることを以前に発見したので、ヘルプドキュメントの引数をあまり真剣に受け止めることはできません。 FAT32に関する実験はありません。 FAT32ハードドライブをお持ちの場合は、自分で試すことができます。

パーティションテーブルの障害を解決するステップでは、まずマスターブートレコードのパーティションテーブル情報を確認します。

2番目に、パーティションテーブル情報を取得する方法

パーティションテーブルをバックアップするか見ているかに関係なく、まずパーティションテーブル情報を取得する必要があります。手順は次のとおりです。

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で入力されます。この数もデフォルトです。次に、「読み取り」をクリックしてセクター情報を読みます。
上記の6つのステップは実際にはメインのブートレコードセクタを読み込んでいます。


7. [表示]メニューの[パーティションテーブル]をクリックします。パーティションテーブル情報をすぐに表示するためのダイアログボックス

8.パーティションテーブルインデックスのリストボックスでパーティションテーブルの番号をダブルクリックすると、図中の対応するパーティションテーブル情報が自動的に変更されます。この図から、パーティションテーブル情報は、パーティション開始ヘッド番号とパーティション終了ヘッド番号と、パーティション開始セクタ番号とパーティション終了セクタ番号と、パーティション開始シリンダ番号とを含んでいることがわかる。そしてシリンダ番号の終わり;

9.パーティションテーブルはファイルとして保存されるべきだと言われるべきですが、その領域は64バイトであり、メインブートレコードは同じセクタ内に共存するのが一般的です。マスターブートレコードと同じファイルに保存します。
10. dosを使用するデバッグツールを使用する場合、このセクターの内容を読み取り、画面をコピーして印刷するアセンブラーを書くことができますメインブートセクターの内容を紙に保存することができます。分析と参照の目的のために。アセンブリ言語を使用しているため、この方法には制限があり、すべてのwindows 9.xシリーズまたはdosが使用可能です。 DOSの下でタイプする:Debug Enter
(以下のコードは手動で入力される、スペースは省略できないことに注意する)
-a0 mov bx 100 mov dx 80 int 13 int 3 3 -g = 0

コマンドを使用して内容を表示し、プリンタがオンラインになったら、キーボードのPrintScreenボタンを押して画面を表示します。その時表示されていた内容は紙に完全に印刷されていました。しかし、私はこの方法がNTFSパーティションで利用可能かどうかをテストしていません。

友人の中には、Windows 2000は非常に高度なセキュリティ要件を備えたシステムで、メインブートセクタを直接読み取るためにアセンブリ内でINT13割り込みが呼び出されることがあります。それは成功しますか、それともセキュリティに影響を与えますか?セキュリティはオペレーティングシステムとそのオペレーティングシステムで実行されているファイルに対するセキュリティであり、メインブートセクタはどのオペレーティングシステムにも属していないため、つまり、マシンがマスターブートレコードコードを実行している場合は不要です。オペレーティングシステムはまだメモリに組み込まれていません、すべてがまだ現れていません、もちろんそれは安全です。したがって、これはデータファイルのセキュリティと矛盾しません。

3番目に、バックアップパーティションテーブル(またはメインブートセクタ情報)を使用して破損したパーティションテーブルを復元する方法:

1.最初にプログラムDiskProbeを実行します。
2.メニューのドライブで、マウスをクリックします。物理ドライブ
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、実際の2つの数字が入ります。これもデフォルトです。次に、「読み取り」をクリックしてセクター情報を読みます。
7.表示メニューで、パーティションテーブルをクリックします。現在のパーティションテーブル情報の表示
8.パーティションテーブルインデックスのリストボックスで、修復するパーティションテーブルの番号をダブルクリックすると、ダイアログボックスの下部に対応するパーティションテーブル情報がすぐに表示されます。 (これらの情報は間違いなく修理前の値ではありません)。上記の操作はパーティションテーブルの読み込みやマスターブートレコードの読み込みと似ていますが、以下の方が重要です。9.ダイアログボックスのパラメータに新しい値を入力します。これらの新しい値は、バックアップパーティションテーブル情報ファイルを確認した後に取得する必要があります。もちろん、バックアップパーティションテーブルファイルからパーティション情報に直接変換することもできます。編集時にダイアログ形式を使用したくない場合は、上記の方法で表示をバイト形式に変換することができ、バイト形式では選択されたパーティション情報のみが表示され、その他の部分(マスターブートレコードを含む)は0です。 10.セクタメニューで、Writeをクリックします。11. Write Sectorダイアログボックスが表示されます。開始セクタの開始セクタで0を選択してから、Write itをクリックします。保存します。

12.はいをクリックすると、元のデータを上書きする操作が完了します。

4つ目は、パーティションテーブルを手動で再構築する

この方法では、ユーザーがパーティションの構造に精通している必要があります。ハードディスクのパーティションが少ないほど、パーティションの状況は比較的簡単です。パーティションが大きくて複雑な場合は、難しすぎます。単純な状況でも、この方法を最後の手段として使用しないでください。

パーティションデータの計算でパーティションテーブルを手動で作成することは困難です。計算の前に知る必要があるデータは次のとおりです。ハードディスクのシリンダ数、ヘッド数、およびトラックあたりのセクタ数。このデータは、ハードドライブのラベルに簡単に記載されています。

まず、0気筒の0ヘッド(フェイス)1セクターはどのパーティションにも属しておらず非表示になっているため、最初のパーティションは0気筒の1ヘッド1セクターから始まる必要があります。現在のハードディスクは比較的大きく、一般に1トラックあたり63セクタ、各セクタは512バイトで、シリンダの数とヘッドの数はハードディスクの容量によって異なります。計算時には、最初に容量が選択され、必要な容量に基づいて、最初の区画の末尾のセクター番号、ヘッド番号、およびシリンダー番号が計算されます。埋められる最後の値は16進数に変換されます。直前の終了位置のすぐ隣には、2番目のパーティションの開始位置が続きます。以降も同様です。ヘッドの数は磁気面の数と等しいと理解することができ、シリンダの数は1つの磁気面上で分割することができるトラックの数と理解することができる。従って、磁気面の容量は512×63(セクタ)×シリンダ数である。たとえば、最初のパーティションは最初の125個の磁気面(またはヘッド)を使用し、次のパーティションは126番目の磁気面(またはヘッド)から開始する必要があります。それから容量は= 512 * 63 * 125 *シリンダー数です。セクター内のシリンダー数もこれと同じです。より詳細な計算については、関連情報を参照してください。計算されたデータはパーティションテーブルに書き込まれ、その動作は上記と同じです。

V.問題への注意

1.上記はパーティションの手動による再構築ではなく、手動で新しいパーティションを作成することをお勧めします。危険は大きいです。そしてNTFSをテストしませんでした。 2.元のパーティションが復元された場合は、誤ったパーティションテーブルを入力すると元のデータが失われるため、手動での再構築はお勧めできません。
3.計算では結果を16進数に変換する必要があります。添付ファイルで電卓を使用できます。 (機能に設定)。

Copyright © Windowsの知識 All Rights Reserved