Help us understand the problem. What is going on with this article?

FAT12,FAT16の構造(予約領域編)

More than 1 year has passed since last update.

はじめに

ファイルシステムについて学び始めたばかりなので最近見かけない学びやすそうなFAT16
について勉強していったので自分用のメモとしてまとめました。

FATファイルシステムについて

FATファイルシステムは最初にMS-DOSでサポートされていたファイルシステムで様々なリムーバブルディスクで使用されているファイルシステムです。
FATというのはFile Allocation Tableの略称でディスク内でのファイルの位置、データの割り当てられた領域を管理するシステムのことを言います。
FAT12、FAT16、FAT32の数字はFAT領域で扱うデータ長のことです。
FATファイルシステムは情報が格納されている場所をセクタ番号で表します。

領域について

FATファイルシステムには基本的に下記のような3~4個の領域があります。

  • 予約領域 ←今回はこの領域についての話です!
  • FAT領域
  • ルートディレクトリ領域(FAT32ではこの領域はありません)
  • データ領域

※FATファイルシステムのデータ構造は全てリトルエンディアンです。

予約領域

最初のセクタに格納されているのは予約領域です。
予約領域にはBPB(BIOS Parameter Block)やブートストラップコード等が書かれています。
BPBにはセクタ長や1クラスタのセクタ数、各領域の開始位置などの値が格納されていて、各領域のサイズが計算できるようになっています。
この領域を見るときに注意することは、ブートシグネチャは予約領域の最後の2バイトが0xAA55なのではなく、オフセット0x01FEは0x55、0x01FFが0xAAと決まっていることです。
資料によっては、予約領域の最後の2バイトにブートシグネチャが格納されていると書かれていることがありますが、間違いなので注意してください。
1セクタに格納されるバイト数は互換性のために512バイトが推奨されていますが、ハードウェアによって、バイト数が512より大きい場合は1024、2048、4096のどれかになります。もし512バイトよりも、1セクタのバイト数が大きかったとしても、ブートシグネチャのオフセットは変わりません。
ですが、シグネチャが正しく設定されている場合には、終わり2バイトが0xAA55でも問題ありません。

フィールド名の先頭にBSが書かれているのはブートセクタ内のフィールド、BPBが表記されているものはBPB内のフィールドです。

FAT12/16とFAT32ではここから内容が変わっていきます。

参考資料

http://elm-chan.org/docs/fat.html
http://free.pjc.co.jp/fat/mem/fatm161.html

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした