ゼロからの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)
Image | Tags |
---|---|
ghcr.io/sarisia/mikanos |
latest |
VSCode Devcontainer を使うことで, コンテナを用いた完全な作業環境を簡単に設定することができます.
詳細は github.com/sarisia/mikanos-devcontainer を参照してください.
--privileged
をつけてください!ビルドスクリプトの mount
ができません!
$ docker run --privileged --user vscode -it ghcr.io/sarisia/mikanos /bin/bash
vscode ➜ ~ $
適宜コンテナ内で頑張ったり, ホストのディレクトリをマウントしたりしてお使いください.
多分できます (実機を持っていないので確認できていません).
最新の Docker Desktop for Mac Apple Silicon Tech Preview を
導入し, コンテナ実行時に --platform linux/amd64
を指定して実行してください:
$ docker run --platform linux/amd64 --privileged -it --user vscode ghcr.io/sarisia/mikanos /bin/bash
ネイティブイメージについて
ghcr.io/sarisia/mikanos:latest
はネイティブの linux/arm64
イメージも持っていますが,
いくつか問題があり, 推奨されません:
-
ベースイメージが異なる
本来のベースイメージ
mcr.microsoft.com/vscode/devcontainers/base:ubuntu-20.04
がarm64
イメージを提供していないため, 上記イメージのDockerfile
をセルフビルドしたイメージghcr.io/sarisia/vscode-dev-containers-multilarch:ubuntu-20.04
をベースイメージとしています. -
ブートローダのビルドが上手く行かない
EDK2 を用いた MikanLoaderPkg のビルド時に,
arm64
ホストでamd64
アーキテクチャのバイナリを ビルドするクロスコンパイルが行われますが, 設定が不十分でビルドが通りません. 誰か試して成功した人は 是非手順をご教示ください.
このイメージはデフォルトで環境変数 DISPLAY
を host.docker.internal:0
に設定するため,
Linux ホストの Docker で実行する場合, 追加の設定が必要になります.
Docker Engine 20.10 以降なら, host.docker.internal
を手動でホストにマップできます:
$ docker run --privileged -it --user vscode --add-host=host.docker.internal:host-gateway ghcr.io/sarisia/mikanos /bin/bash
環境変数 DISPLAY
を他に向ける方法もあります:
$ docker run --privileged -it --user vscode --network=host -e DISPLAY=$DISPLAY ghcr.io/sarisia/mikanos /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 で教えてくださると嬉しいです!