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