OSメモ(5)

grub2 のソースコード読み始めた。

最初のセクタを0x7c00にロード

BIOS → ブートセクタ → ブートローダカーネル

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に写すところまで読んだ。