uchan note

プログラミングや電子工作の話題を書きます

MikanOSの歴史

この記事は 自作 OS アドベントカレンダー 2019 の 2 日目の記事です。

MikanOS

筆者(uchan_nos)はここ数年,教育用 OS である MikanOS(ミカノス)を作っています。 MikanOS は「未完」と「蜜柑」を掛けた名前です。

MikanOS は教育用 OS と言っている通り,将来は大学などの授業で採用されたらいいなあと思って作っています。 今のところ 2020 年 12 月から 2021 年 1 月に東工大で開催する予定の自作 OS 講義のサンプルとして採用を予定しています。 (この講義については 筆者の宣伝ツイート を参照してください)

この記事は MikanOS 製作の進捗を過去から現在までまとめてみるものです。

USB ドライバに苦しむ 1 年半

2017 年 8 月初旬に xHCI ホストコントローラドライバを作り始めたらしい形跡が。この時,まさか 1 年半も xHCI に手を焼くことになろうとは思っていないのでありました。

USB 3.0 ホストドライバ自作入門 の出版を示唆しているのでしょうか。

2018 年に入ると,Command Ring はひとまず終わって Transfer Ring のプログラミングに突入したようです。 Command Ring は xHCI 自体とやり取りする仕組みで,Transfer Ring は各 USB デバイスとのやり取りを担当します。

機械に文句を言うようになりいよいよ頭がおかしくなってきました。 もう嫌になって半年ぐらい MikanOS から距離を置きます。

久々に xHCI ドライバ開発を再開するのが 2019 年 6 月。 USB 機器は 1 つずつ初期化しないとうまくいかないことをこの時点で知ります。

まもなく実機で USB キーボードやマウスが動くようになったようです。

MikanOS 大航海時代

xHCI ドライバが片付くと目に見える進捗が生まれやすくなります。2019 年 7 月からは怒涛の進捗発表モード。

関係ないですが紅茶が好きなのでアフタヌーンティーに行ってきました。 この店は目黒にあります。めっちゃいい店でした。また行きたい。

8 月下旬になっても進捗発表が継続します。

タイマーの使い方は Local APICタイマー入門 を参照するといいと思います。 動画付きで進捗発表すると分かりやすくていいですね。

LIFEBOOK や GPD Micro PC,AMD FX-8800P を積んだ A10N-8800E というマザーボードなどで動作が確認されていきます。

訳あって USB キーボードを意図的に無効にしていたのをここで有効化します。 文字入力できるようになると一気に OS っぽくなりますね。

マルチタスク時代

MacBook Air でも MikanOS が動作しました。(動作できたよっていうだけのツイートなのにめっちゃ反応もらったのは Apple の強さか…)

ウィンドウのアクティブ・非アクティブが切り替わるのカッコいいと思いませんか?

筆者は馬刺しが大好きです。

デバッグに地味に役立つ履歴機能(575)

FAT32 ファイルシステムを解釈してファイルリストが出せるようになったので ls コマンドを付けました。 いやあ,ファイルリストが出たらなんか感動しちゃいました。

ここが今現在の最新状態です。この後 2019 年 11 月 23 日にオープンソースカンファレンス 2019 東京・秋に出展しました。

まとめ

  • 2017 年 8 月に xHCI ドライバの実装を始める。(おそらくほぼ同時期に MikanOS の最初期のソースコードが生成されたと思われる)
  • 2019 年 6 月に xHCI ドライバが実機で安定動作する。
  • 2019 年 11 月にアプリがページング使って動作する。