ゼロからのハイパーバイザ自作入門
無料で読める本
本書では、64-bit ARM (ARMv8/AArch64) アーキテクチャを前提としたハイパーバイザの仕組みをできるだけ分かりやすく解説し、実際にラズベリーパイ4やQEMUで動作するハイパーバイザ (Type1) を自作する方法を解説しています。 ソースコード: https://github.com/HidenoriMatsubayashi/evisor ⬛︎ 注意 本書はまだ作成中(現在5章を作成中)ですが、モチベーション維持のために公開している状態です(章立てなど今後変わる可能性ありです)。内容は随時更新していますので、気になる方はウォッチやコメント等をお願いします。 ⬛︎ 学べること ・ハイパーバイザとその仕組みと原理 ・64-bit ARM (ARMv8/AArch64) アーキテクチャの仮想化支援機構 ・自作ハイパーバイザの作り方 ⬛︎ コミュニティ 質問や間違い指摘など本書に関わる内容であれば自由にコメントOK https://zenn.dev/hidenori3/scraps/0cf5b683b0839e ⬛︎ 価格 本書は無料にしていますが、役に立った!という方は「バッジを贈って応援」や「いいねボタンをポチッ」してくれたら嬉しいです ⬛︎ その他 ・間違った内容があればコメントください。修正します ・追加して欲しい内容などリクエストはコメントをお願いします ・本書のカバー画像は生成AIで作成
Chapters
Chapter1: 概要
ハイパーバイザとは
ハイパーバイザの種類
完全仮想化と準仮想化
ハイパーバイザによる CPU コアの割り当て
ハイパーバイザの基本的な仕組み
Chapter2: ハードウェアによる仮想化支援機構
CPUの動作モード
ハイパーバイザコール命令
CPU タイマ仮想化概要
Arm Generic Timer の仮想化の仕組み
メモリ仮想化の概要
割り込みの仮想化
その他のハードウェア仮想化
Chapter3: 開発環境の構築
Host PCのOS/CPU要件
ツールチェーンのインストール
QEMU インストール
Raspberry Pi の準備
実際にハイパーバイザを動かしてみる
ソースコードのツリー構造
Chapter4: 起動処理の実装
コンピュータの基本的な構成
システム起動の流れ
QEMU の起動とメモリマップの仕様
Raspberry Pi4 の起動とメモリマップの仕様
リンカスクリプトの基本
リンカスクリプトの実装
スタートアップルーチンの実装
printf 関数の実装
シリアル出力ドライバの実装
作成中: CMake ビルドスクリプトの構築
ハイパーバイザのメイン関数の実装
Chapter5: メモリ管理の実装
Chapter6: 割り込み制御の実装
ChapterX: ゲストOS用メモリ管理の実装
MMU Stage2 メモリ仮想化
ChapterX: タスク管理とスケジューラの実装
ChapterX: 参考文献
Community
Author
Topics