ゼロからのOS自作入門 で開発するOS (MikanOS) の 開発環境が設定された Docker イメージ.
github.com/uchan-nos/mikanos-build リポジトリで解説されているツール, ファイルを収録しています.
Docker ではじめる "ゼロからのOS自作入門" | Zenn
- ⭐ 最終章終了時のMikanOSのビルド, 実行を確認! (github.com/uchan-nos/mikanos)
- ⭐ Docker for ( Windows (WSL2, Hyper-V) | Mac (Intel, M1) ), Linux に対応! (たぶん)
- ⭐ X11対応!ホストのX11 Serverに簡単接続!
- ⭐ VSCode Devcontainer対応! (github.com/sarisia/mikanos-devcontainer)
- ⭐ M1 Mac ネイティブ対応!
arm64
イメージあります!
Image | Tags | Arch |
---|---|---|
ghcr.io/sarisia/mikanos |
latest |
linux/amd64 , linux/arm64 |
ghcr.io/sarisia/mikanos |
vnc |
linux/amd64 , linux/arm64 |
VSCode Devcontainer を使うことで, コンテナを用いた完全な作業環境を簡単に設定することができます.
詳細は github.com/sarisia/mikanos-devcontainer を参照してください.
--privileged
をつけてください!ビルドスクリプトの mount
ができません!
$ docker run --privileged --user vscode -it ghcr.io/sarisia/mikanos /bin/bash
vscode ➜ ~ $
適宜コンテナ内で頑張ったり, ホストのディレクトリをマウントしたりしてお使いください.
ghcr.io/sarisia/mikanos:vnc
イメージを提供しています. VNC イメージを利用することで,
ホスト環境に X11 Server を用意することなく, MikanOS の動作確認をすることが可能です.
また, GitHub Codespaces を利用することで, ブラウザのみでコーディング&動作確認を
完結することができます.
VSCode Devcontainer を推奨しています. 詳細は mikanos-devcontainer の ドキュメントを参照して下さい.
それ以外の場合は, 通常のイメージと同様の使い方が可能です. コンテナ起動時に自動で noVNC が
起動し, コンテナ実行中は常に常駐します. QEMU を実行する際に, オプションとして -vnc :0
を指定することで,
ブラウザから http://localhost:6080
を開いて動作確認ができます.
noVNC のポートなどを変更する際は, 以下の環境変数を設定して下さい.
Environment Variable | Default | Note |
---|---|---|
NOVNC_PORT |
6080 |
noVNC Webクライアントと WebSocket API のポート番号 |
VNC_PORT |
5900 |
QEMU が待ち受ける VNC ポート番号. デフォルトでは 5900 + <ディスプレイ番号> となります. 例えば, QEMU を -vnc :1 オプションで起動した場合, VNC_PORT は 5901 です. |
(参考) QEMU_OPTS |
QEMU を実行する際の追加オプション. ~/osbook/devenv/run_image.sh 内で展開されます. -vnc :0 などと設定しておくと便利です. |
可能です. linux/arm64
アーキテクチャに対応したイメージを用意しています.
ただし, X64 向けにブートローダをビルドするため, クロスコンパイル関連の設定が必要です.
ゼロからのOS自作入門 2.2節で生成される /$HOME/edk2/Conf/tools_def.txt
に対し, 当リポジトリの tools_def.txt.diff
を参考に, 設定を変更して下さい.
その他の手順は, 書籍に従います.
エミュレータを用いた互換動作
書籍と違う設定を行うことに抵抗がある, もしくは前述の方法が上手く行かない場合は,
明示的に linux/amd64
イメージを互換レイヤを通して利用することが可能です.
ただし, 互換レイヤを通すことでパフォーマンスは大きく劣化し, コンパイル時や QEMU を用いたテスト動作時の速度は遅くなります.
互換レイヤを用いるには, ghcr.io/sarisia/mikanos:amd64
イメージを取得した後,
コンテナ実行時に --platform linux/amd64
を指定して実行してください:
$ docker run --platform linux/amd64 --privileged -it --user vscode ghcr.io/sarisia/mikanos:amd64 /bin/bash
正常な動作を確認しました. ドキュメント に従い WSLg を設定した後, X11 のソケットをコンテナ内にバインドして下さい:
$ docker run --privileged -it --user vscode --mount type=bind,source=/tmp/.X11-unix,target=/tmp/.X11-unix ghcr.io/sarisia/mikanos /bin/bash
当 Dockerfile のライセンスは MIT です.
ただし, 当 Dockerfile からビルドされるコンテナイメージ, 及び配布された ビルド済みイメージに含まれる著作物のライセンスは, それぞれの固有のライセンスに 従います.
Twitter (@A1ces) や Issues で教えてくださると嬉しいです!