OS自作の会 1日目

先日、(公開するのを忘れいてた。。)先月OS自作の会を開催したので、そのレポート&忘備録です(やったことを書いておかないとすぐ忘れることが判明!!)

なぜOSを自作しようと思ったのか

Cpython インタプリンタソースコードを眺めいたところ、システムコールなどがでてきてOSの仕組みに興味をもち、自作OSで有名なこの緑本を購入しました。 Amazon CAPTCHA

PyladiesTokyoのmeetup後の2次会で話したところ、なんとこの緑本を持っている方がすでに2名いて、話が盛り上がり、皆でやろうということになりました。なぜなら分厚くで、難しそうで一人では挫折しそうだったからです;;

ということで、8月10日にRaspberry piもくもく会を一緒に主催している @yuzuafroさん、会社の同僚の @meganehouseを誘って、第一回を開催しました!

第1回は、お盆の時期にもかかわらず5名あつまりました。

OS会の進め方

  • 各個人がそれぞれ本にしたがってもくもく進めていく
  • わからないところは、他の人に聞いてわかる人が答える
  • 皆がわからないところは、皆で調べる
  • 自分がつまったところはSlackで共有する。(他の人も同じところでつまる可能性があるため)

自分がやったところまでの忘備録

環境構築

  • 本はWindowsをベースにしているのでmacで環境構築&作成したOSを動作させるためには、以下参考に環境構築をする必要あります。 基本的には上記ページのREADMEの通りにやればOKです。

github.com

アセンブラでimgファイルを作成する

とりあえず、 hello world の部分のみ変更して、make runしてみる。

  • 本では、著者作の「nask」というアセンブラを使用している。これは「Nasm」という有名なアセンブラを真似て作成されている。
  • 基本的には以下手順でimgファイルを作成する(macの場合)

  • 本にはさらっとかかれているアセンブラですが、ここである程度理解しておかないと厳しそうです、

2週目(8-14日目)の概要に以下のようにかかれている通り、

1章で苦労したかいがあって気がつけばたくさんの財産を手に入れています。C言語の基本文法もほぼマスターし終わって、アセンブラもこの本の要求レベルに到達してしまっています。

1週目で、C言語アセンブラをマスターし終わる想定ですw

私の知識はというと、下記くらい。

Cやアセンブラを全くやったことのない人は、この本だけでは厳しいかもしれません^ ^;。

その場合以下が参考になるようです。(by @meganehouser) https://www.amazon.co.jp/dp/B078J4TNT1/

ただ、一通り本をやってからじっくり学んでも大丈夫そうです。

その他参考&メンバーが共有してくれた内容(一部抜粋)

tech.nikkeibp.co.jp

おわりに

  • 参加者全員、第1章の環境構築をしてエミュレータhello, world をするところまではできました!
  • 早い人は、第8章まで進んでいました!
  • 難しいけど皆でやれば怖くない!

実は本日第2回を開催しています!

IPLをアセンブラで書いた経験がある方や、RTOSを作ることを職業にしている方も加わってくれ、頼もしい! くじけそうだけど、頑張ろう。