バックナンバーはこちら。
https://www.simulationroom999.com/blog/In-vehicle-external-storage-backnumber/
はじめに
FatFsのファイル上シミュレーションの話。
ディスクイメージを読み解く。
登場人物
博識フクロウのフクさん
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
FatFs Win32 ファイル上シミュレーションのディスクイメージ
前回、「FatFs Win32 ファイル上シミュレーション」をしたわけだが、
projectフォルダにPhysicalDrive1ってファイルが出来ているはずだ。
あ!ホントだ!
ファイルが出来てる。
これがディスクイメージだ。
ということは、僕たちはこれを直接バイナリエディタで見ていけば良いって感じかな?
そうなるね。
MBR(Master Boot Record)の確認
まずはMBRことMaster Boot Recordの確認だ。
Master Boot Record?
以下は、Wikipediaからの引用だ。
マスターブートレコード(Master Boot Record、略称MBR)とは、PC/AT互換機に於いて、単数または複数のパーティションに分けられたディスクのパーティション外に存在する先頭セクタでブートセクタの一種である。PC/AT互換機では、BIOSがセクタ長が512バイトで先頭1セクタのみのロードしか保証しないため、サイズは512バイトである。0(先頭)~445(446バイト)にブートストラップローダ、440~444(4バイト)にDisk MBR signature、446~509(64バイト)にパーティションテーブル、510~511(2バイト)にブートシグニチャがある。
Wikipediaより(https://ja.wikipedia.org/wiki/%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%96%E3%83%BC%E3%83%88%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89)
うーん。
パーティションが定義されてるってことになるのかな・・・。
そうそう。
今回の場合はパーティションは一個しかないので、MBRの中の一個のパーティションテーブルエントリを参照することで、そのパーティションの先頭セクタが分かる。
まずは、そのパーティションの先頭セクタを特定しないと始まらないってことか。
パーティションテーブルエントリの確認
とりあえず、バイナリエディタでMBR確認する。
MBRは必ず0セクタに配置される。
なんかほとんど00hだね?
先頭にはMBR_bootcodeという446byteの領域があって、内容としてはシステム依存ではあるが、一般的には00hで埋めるようだ。
ということは、その446byteの次から始まってるのが、重要な情報ってことか。
重要なのはPT_SystemとPT_LbaOfs。
PT_Systemはそのパーティションのファイルシステムで、今回の場合はFAT32になってる。
PT_LbaOfsはBPBことBIOS Parameter Blockが埋まってるセクタを示す。
今回の場合だと0x3Fで63セクタ目にBPBが居るようだ。
BPB?
BIOS Parameter Block?
まぁそのFATの詳細情報が埋まってるところだな。
内容については次回説明しよう。
まとめ
まとめだよ。
- FatFs Win32 ファイル上シミュレーションのディスクイメージを確認。
- PhysicalDrive1で生成されている。
- MBR(Master Boot Record)を確認
- FAT32であることを確認。
- BPB(BIOS Parameter Block)が63セクタ目にあることを確認。
バックナンバーはこちら。
コメント