Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/not-elm/mikanos-rs
MikanOSをRustで製作したいプロジェクトです
https://github.com/not-elm/mikanos-rs
Last synced: 17 days ago
JSON representation
MikanOSをRustで製作したいプロジェクトです
- Host: GitHub
- URL: https://github.com/not-elm/mikanos-rs
- Owner: not-elm
- License: apache-2.0
- Created: 2023-02-07T14:26:17.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2023-12-01T02:54:02.000Z (12 months ago)
- Last Synced: 2024-02-11T10:34:36.436Z (9 months ago)
- Language: Rust
- Homepage:
- Size: 9.99 MB
- Stars: 6
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# MikanOS-rs
uchanさんによって執筆された[ゼロからの OS 自作入門](http://zero.osdev.jp/)の中で製作するMikanOSをRustで挑戦するプロジェクトです。
進捗や実装時のメモは[Zenn](https://zenn.dev/elm)に挙げています。
## 環境構築
setup.shを実行してください。
## ブートローダーの実行方法
makeコマンドでビルドと実行ができます。
```shell
make
```make debugでGDBを使用したデバッグ実行ができます。
```shell
make debug
```Clionの場合、実行設定でRemoteDebugを追加し、下記項目の通り設定することでデバッグ実行の設定ができます。
- Debugger
- GBDのbinaryがあるディレクトリのパス(WSL上で実行する場合、WSL内のGDBを指定する必要があります。)
- Target remote args
- tcp::1234
- Symbol file
- kernel.elfへのパス終了する際はQemuモニタ上で下記コマンドを使用してください。
```qemu
qemu> q
```## Test
テストは下記コマンドで実行できます。
```shell
make test
```テストビルドの際はカーネルのターゲットディレクトリをクリーンする必要があるため、少々時間がかかります。
## Dockerfileについて
開発環境構築用に、Dockerコンテナを起動し、コンテナ内で開発する方法を検討していましたが、
Clionでは VscodeのDevContainerのような拡張機能が見つからなかっため、使用していません。
一応Dockerfileとdocker-compose.ymlは残しています。## MikanOSのビルドメモ
この項目はMikanOSのビルド方法をメモしただけなので、MikanOS-rsとは関係ありません。
```shell
#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
ターミナルにコマンドを実装する!