Skip to content

MikanOSをRustで製作したいプロジェクトです

License

Notifications You must be signed in to change notification settings

not-elm/mikanos-rs

Repository files navigation

MikanOS-rs

uchanさんによって執筆されたゼロからの OS 自作入門の中で製作するMikanOSをRustで挑戦するプロジェクトです。

進捗や実装時のメモはZennに挙げています。

環境構築

setup.shを実行してください。

ブートローダーの実行方法

makeコマンドでビルドと実行ができます。

make

make debugでGDBを使用したデバッグ実行ができます。

make debug

Clionの場合、実行設定でRemoteDebugを追加し、下記項目の通り設定することでデバッグ実行の設定ができます。

  • Debugger
    • GBDのbinaryがあるディレクトリのパス(WSL上で実行する場合、WSL内のGDBを指定する必要があります。)
  • Target remote args
    • tcp::1234
  • Symbol file
    • kernel.elfへのパス

終了する際はQemuモニタ上で下記コマンドを使用してください。

qemu> q

Test

テストは下記コマンドで実行できます。

make test

テストビルドの際はカーネルのターゲットディレクトリをクリーンする必要があるため、少々時間がかかります。

Dockerfileについて

開発環境構築用に、Dockerコンテナを起動し、コンテナ内で開発する方法を検討していましたが、 Clionでは VscodeのDevContainerのような拡張機能が見つからなかっため、使用していません。
一応Dockerfileとdocker-compose.ymlは残しています。

MikanOSのビルドメモ

この項目はMikanOSのビルド方法をメモしただけなので、MikanOS-rsとは関係ありません。

#edk2
source edksetup.sh
build

$HOME/osbook/devenv/qemu.sh $HOME/edk2/Build/MikanLoaderX64/DEBUG_CLANG38/X64/Loader.efi

Day02a

Qemu上でHelloWorldをする!

Day02b

メモリーマップの情報をファイルに出力する!

Day03a

カーネルファイルをロードして、エントリーポイントを呼び出す!

Day03b

GraphicOutputProtocolを使い、ブートローダーからピクセルを描画する!

Day03c

カーネルからピクセルを描画する!

Day04c

ピクセルライターを作成する!

Day05a

'A'という文字を描画する!

Day05c

フォントを列挙したオブジェクトファイルから文字を描画する!

Day05e

コンソール制御をする機構の作成をする!

Day05f

println!マクロの実装をする!

Day06

マウスドライバを実装する!

Day07

マウスを割り込みに対応させる!

Day08

メモリ管理を実装する!

Day09

重ね合わせ処理を実装する!

Day10

簡易的なウィンドウを作成する!

Day11

Apicタイマの割り込み処理を実装する!

Day12

キーボード入力を実装する!

Day13a

コンテキストスイッチを手動で出来るようにする!

Day13b

タイマ割り込み内でコンテキストスイッチを出来るようにする!

Day13d

タスクを3つ以上生成できるようにする!

Day14

タスクに優先順位を設定する!

Day15

ターミナルのUIを作成する!

Day16

ターミナルにコマンドを実装する!

About

MikanOSをRustで製作したいプロジェクトです

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages