OSメモ(5)
grub2 のソースコード読み始めた。
最初のセクタを0x7c00にロード
MBRは、ハードディスクの先頭セクタに書かれている512バイトの領域。最初のコードとパーティションテーブルが書かれている。
grub2/grub-core/boot/i386/pc/boot.Sに MBR のコードが書かれている。
appleのassembler は、ローカルラベルに L をつけなければならないため、symbol.h で
#define LOCAL(sym) L_ ## sym
でL_を付け足している。
.file "boot.S"
.fileは、いずれなくなる予定らしい。古い as との互換らしい。
https://ftp.gnu.org/old-gnu/Manuals/gas-2.9.1/html_chapter/as_7.html
HPFS(High Performance Filesystem)というファイルシステムがある。
とりあえず、BIOS Parameter Block(BPB)の後にジャンプしている。
BPBの後すぐに、cli で割り込み無効。
CHSモードと LBAモードがある。ドライブ?かBIOS? が対応してるかは、int 13 で確認できるらしい。
最初のMBRとその次のセクタを読み込んで、0x8000に写すところまで読んだ。