hama_duのブログ

ノンジャンル記事置き場

「30日でできる!OS自作入門」を読了、オリジナルOSの開発について書く

緒言

これから僕がちまちま作っているオリジナルOS開発の過程について書いていきたいと思う。
せっかくやっていることなので、やはり公開してフィードバックをもらえたらな、と思ったので。
本日は導入のみで、次回から実際の開発について詳しく述べる。

「30日でできる!OS自作入門」について

「30日でできる!OS自作入門」は、アセンブラC言語を駆使して
OSを自作してしまおう!という趣旨の本である。
プートプログラムの作成から、メモリ管理、キーボードやマウスからの情報の読み取り、
マルチタスクシステム、アプリケーションの起動、APIの作成・・・などなどを
本の内容にしたがって少しずつ自分で手を動かしてOSを作っていく、といった内容である。
昨年から気になっていた本だが、ついに手に取る機会が訪れた。


30日でできる! OS自作入門

30日でできる! OS自作入門

きっかけ

というのも、大学の情報学科ではオペレーティングシステムの授業があるのだが、
その授業では「通常コース」か「実践コース」かが選べるようになっている。
「実践コース」をとった場合、授業への出席*1や課題の提出義務は無い。
その代わり、上記の本を学習し、本の内容に加えてOSとしての完成度を高めたものを学期末に先生へ提出する必要がある。
僕は課題を出すのが面倒であったため、「実践コース」を選んだ。


結果、なんとか12月半ばぐらいに学習を終えることができた。
しかし、大変なのはここからで、単位をとるためには本で作成したOSを改造し、
多機能なOSとして完成度を高めなくてはならない。
だが、本で作成するOSには未完成、未実装である部分もあり、改造のしがいはある。
具体的には、

などなど、である。

どんなOSを作るか

本で作成しているサンプルOSは、どちらかというとWindowsライクなOSである。
デスクトップがあり、タスクバー(使われてないが)があり、コマンドプロンプトっぽいものがある。

僕は、CUIベースの、どちらかというとUNIXに近いシステムを作ろうと思っている。なぜなら・・・

  1. ウィンドウシステムのプログラミングが面倒。学期末に間に合うかどうか微妙。
  2. 1.が省けるため、OS開発の本質であるファイルシステムやディスクへの読み書きなどに時間が割けそう。
  3. 最悪、オープンソースなのでアイデアをいただける。ネット上にも情報が落ちていそう。

したがって、本の後半で出てくる

  1. グラフィック関連のAPI
  2. ウィンドウの切り替え
  3. 日本語表示

などはおそらく今回作成するOSには必要ないため、
これからの開発は21日目の終わりの成果物(harib18g)をベースに行うことにした。

これから

とりあえずファイルシステム、とそれにまつわる各種コマンド(cd, mv, rm, ls等)を作成しようと思う。
lsに相当するものは本でも例示されていたが、ディレクトリ等の概念が無いので書き直す予定。

*1:一応2/3出席は必要なのか?不安なので授業への出席はしている