研究目的
- ブートが高速で、コンパクトなカーネルを実装する。
- Codesegment と Datasegment をカーネルに実装するにあたって、メモリ管理の役割とどう合致するのかを検証する。
- 上記を確認したら CbC を用いて、動作が軽く落ちにくいカーネルを実装する。
- モデル検証に対応し、エラー予測を可能にする
- カーネルパニックをなくす
- Mach-O を ELILO でロードし、64bit で動作可能にする
ELILO のレジスタの状態
CR0
- PGbit ON : ページングが enable されている
- PEbit ON : Protect mode (32 bit mode) が enable
CR4
- PAEbit ON : ページングが 32bit 以上を使用
- PSEbit ON : 32bit ページングでの 4Mbyte page を enable
CR3
- Page directory base にアドレス
CS
- GDT のセグメントの番号
- requested privirege level は最大(全権限をもつ)
ELILO のレジスタの状態[2]
現在の状態
- GDT は動いている
- long mode(compatibility mode/64bit mode)
- EFI の仕様でレジスタへの書き込みを許してないのではないか
- 4M byte のページテーブル
- ページングは enable だが、EFI のマニュアルには physical address = virtual address とある
ELILO で Mach-O するためにするべきこと
- ELILO は x86-64 ように bzImaze と plain loader を持っている
- Mach-O 用ローダを追加
- 一度使用するローダを登録して、使用するか決める
- 登録したローダを使う