パソコン実習室
ハードディスクの構造とパーティション
≪ previous  

Y.ブートセクタ (Boot Sector)

 各パーティション (領域) の先頭セクタをブートセクタと呼び、主に windows で使われる。
 windows の場合、ブートセクタはシステムファイルを読み込むブートコード (IPL:Initial Program Loader) や、ディスクに関する情報のディスクパラメータ等で構成される。 ディスクパラメータは BPB (BIOS Parameter Block) とも呼ばれる。
 LINUX にはブートセクタという概念はなく、副次的なブートローダ (GRUB or LILO) のインストール場所として使われる。  LINUX インストール時にブートローダのインストール場所として MBR を選択すると、ブートセクタには何も記録されない。

Y.1.ブートセクタの構成

 ブートセクタは概ね次のように構成される。  ただし、ディスクパラメータやブートコードのサイズが OS の種類やパージョンによって異なるため、ブートコードの開始位置は一律とはならない。

位置 (offset)適用
0x0000IPL へのジャンプ命令
0x0003ディスクパラメータ  BPB (拡張 BPB を含む)
0x0054(※1)ブートコード  IPL
0x01FEboot signature
(※1) この位置は OS の種類やパージョンによって異なる。
  • IPL へのジャンプ命令 : 3 バイト構成。
    ブートコード (IPL) の offset が 0x0054 の場合、EB 52 90 と記述される。
  • ディスクパラメータ : 次節参照。
  • ブートコード (IPL) : ntldr や bootmgr をロードするプログラム。
  • boot signature : ブートセクタが正当なものであることの署名 (0x55AA) 。

Y.2.ディスクパラメータの構成

 BPB (BIOS Parameter Block) とも呼ばれる。 ディスクパラメータはファイルシステムごとに異なる構成となっている。

Y.2.1.FAT のディスクパラメータ

位置 (offset)適用サイズ(バイト)
0x03OEM 名8
0x0Bセクタ サイズ (512)2
0x0Dセクタ数 / クラスタ1
0x0E予約セクタ数2
0x10FAT 数1
0x11リザーブ4
0x15メディア Descriptor1
0x16セクタ数 / FAt2
0x18セクタ数 / トラック2
0x1Aヘッド数2
0x1C隠しセクタ4
0x20全 Big セクタ数4
0x24Big セクタ数 / FAT4
0x28拡張フラグ2
0x2Aファイルシステムバージョン2
0x2Cルートの最初のクラスタ4
0x30ファイルシステム情報セクタ位置2
0x32バックアップブート セクタ位置 (6)2
0x34リザーブ12
0x40ドライブ ID1
0x41NT のためのリザーブ1
0x42拡張ブートサイン1
0x43シリアル番号4
0x47ボリューム名11
0x52ファイルシステムタイプ (FAT32)8

Y.2.2.NTFS のディスクパラメータ

位置 (offset)適用サイズ(バイト)
0x03OEM 名 (NTFS)8
0x0Bセクタ サイズ (512)2
0x0Dセクタ数 / クラスタ1
0x0E予約セクタ数2
0x10FAT 数1
0x11ルートディレクトリ エントリー数2
0x13全セクタ数2
0x15メディア Descriptor1
0x16セクタ数 / FAT2
0x18セクタ数 / トラック2
0x1Aヘッド数2
0x1C隠しセクタ4
0x20全 Big セクタ数4
0x24未使用4
0x28全 NTFS セクタ数8
0x30MFT (Master File Table) 開始クラスタ8
0x38MFT ミラー 開始クラスタ8
0x40クラスタ数 / FRS4
0x44クラスタ数 / Index ブロック4
0x48シリアル番号4
0x4Cチェックサム4



Z.付録

Z.1.パーティション作成コマンド (ツール) の仕様

コマンド /
ツール
作成可能なファイルシステム複数基本領域の作成論理領域の作成フォーマット未知のパーティションタイプの削除
FAT16FAT32NTFSext2f
fdisk
(DOS, windows)
×××××
ディスクの管理
(win2000 / XP)
×
fdisk
(Linux)
×


Z.2.シリンダ境界規定と第 2 トラック規定

 PC/AT 互換機のハードディスクには、次のような決まりがある。

パーティションはシリンダ境界で作成する。

 "パーティションはシリンダ単位で作成する" という決まりで "シリンダ境界規定" と呼ばれ、 各パーティションには、連続した複数のシリンダがシリンダ単位で割り当てられる。

 大容量のハードディスクではシリンダの値が実際のシリンダを表していない上、8GB を越えた領域では C/H/S の値そのものが不正な値である (U.1.CHS 方式の囲み記事参照)。
しかし、各ベンダーは IBM の仕様を尊重し、パーティションの開始位置をシリンダの先頭 (パーティション開始位置を、ヘッド "0"、セクタ "1") からとしているところが多い。
※ 当然この位置は実際のシリンダの先頭ではなく、中途半端な位置であることが少なくない。

 基本領域および拡張領域の先頭セクタは、それぞれ MBR, EPBR として割り付けられている。
これに続く最初のパーティションに対して "シリンダ境界規定" を適用すると、MBR, EPBR のあるシリンダは先頭の 1 セクタのみが使用されて、残りのセクタは大量のデッドスペースとなってしまう。  そこで、

最初のパーティションのみ 第 2 トラックから始める。

という "第 2 トラック規定" が決められている。 第 2 トラックとはそのシリンダの ヘッド "1"、セクタ "1" を指す。

▼ "第 2 トラック規定" によって先頭パーティションの開始セクタは、(LBA 方式でいえば) 63 に固定される。
   MBR (EPBR) の後ろには 62 セクタ (約 32KB) の未使用領域 (空きセクタ) が存在するわけで、復元やパーティ
   ション操作関連のアプリケーションにはこの未使用領域を利用しているものもある。



≪ previous [[ ハードディスクの構造とパーティション ]]