Ochachaで「作って理解するOS」にトライして実際にOSを作ったよ
タイトル通り、春休みにチームOchachaでOS作りに挑戦しました。
チームOchachaは本当はICPC用のチームだったのですが、ハッカソンにつづき遂に低レイヤーにまで手を出すようになりました(^^;
使った本のリンクはこちらになります。
作って理解するOS x86系コンピュータを動かす理論と実装
作って理解するOS x86系コンピュータを動かす理論と実装 | 林 高勲, 川合 秀実 |本 | 通販 | Amazon
第一回 (2/14)
記念すべき第一回目は具体的にどのような感じで本を進めていくのかを決めていきました。通話は全部Discordで、進捗管理はNotionを使うことに決め、みんなでNotionのアカウントの作成をしました。
その後実際にページを作成しました。 初めてのNotionだったのですが、あまりに多機能すぎてビビりました。
私は第一回の時点で本を持っていなかったので、amazonで本を買うところから始まりました。
画像の中央に進め方が書いてありますが、この日は次回までに第一部の2章まで読もうと決めました。ページ数126ページです。 気合を入れて頑張ろうと思います💪
第二回 (2/21)
第二回は宿題の確認と雑談から入りました。
宿題の進捗は、126ページまで読んできたのが1人と、私は2章の途中まで、もう1人は1章が終わったところまででした。(1回目でこれはやばいか?)
ということだったので1章でわからないところや理解を深めたいところを中心に話し合いました。この日は、char型に数値代入してもコンパイルエラーでないことや関節演算子を型側につけるべきか変数型につけるべきかについて話し合いました。
下のスクショのような感じです。
Notionのコードの色付け機能が結構優秀✨
次回までの宿題は3-5章までと、9章までに決めました。 9章が宿題に入ったのは本の前半の方は知識的な内容が多く、 「途中でモチベーションが下がってしまうかもしれない」ということで 実際にちょっとアセンブラを読むことになる9章が入りました。
第三回(2/28)
9章読んだ感想ですが、一応内容はわかるけど8章読んでから9章読んだ方がよかった説ありました。しっかり考えられて作られているのふつーに前から読んだ方がいいですw
今日はこんな感じのことを学びました。 排他処理については本読んでふーんと流していた状態だったのですが、3人で語り合って理解が深まりました。
やっぱり早くOS作りたい気持ちがすごいので今回は6~8章&12章を宿題にしました。12章は環境構築で本はWindows版で書かれているため、詰まらないか少し心配です😓
第四回(3/7)
この日は一人いなかったのでほぼ雑談で終わりましたw
OSはこんな感じでBootプログラムを起動させるコードを書き、起動画面まで作成することができました✌️
この週は10,11,14章を宿題にしました
第五回(3/17)
第五回は読み方の確認とGithubのレポジトリを作りました。(ほぼ雑談) qemu ... キューエム bochs ... ボックス
https://github.com/NamikoToriyama/namiOS
前の週にCPUをゼミで作成した友達がいて、その聞いていました。 CPU作るというのがどういう部分の作業をさしているのか理解することができて、OS作り終わった後にチャレンジしたくなりました。
先週は全体的に進捗がなかったため、14, 15章を宿題にしました。
第六回(3/30)
進捗が全体的に鈍化してきてまずい。
私の方は14,15章を終わらせて、BIOSのブートプログラムを読み込んだ後にプロテクトモードに移行するようなプログラムを書きました。(下の画像)
14章でブートプログラムを書くのですが長い割に画面がそこまで大きく変わらないため、おそらくここを乗り越えるのが一番辛いです。
下はプロテクトモードに移行した画面。 何もコードを書いていないため、真っ黒です。おそらく16章でこの画面に色をつけていくことになるのでしょう。
第七回(3/30)
16章絵がたくさん出て楽しい( ✌︎'ω')✌︎
こんな感じでだいぶOSっぽい見た目になってきました。
なぜかqemuで起動すると変なラインが表示されて画面が綺麗じゃないため、bochsを使うことに決めました。(有識者教えて)
17章の時刻表示したら表記が直った。謎挙動🤔 そして今度はbochsが動かなくなった。
最後に
最後までご覧いただきありがとうございます。 何か沼にはめていただけるものや、おすすめの本などありましたら、ぜひ教えてください。