OS自作の会 1日目
先日、(公開するのを忘れいてた。。)先月OS自作の会を開催したので、そのレポート&忘備録です(やったことを書いておかないとすぐ忘れることが判明!!)
なぜOSを自作しようと思ったのか
Cpython インタプリンタソースコードを眺めいたところ、システムコールなどがでてきてOSの仕組みに興味をもち、自作OSで有名なこの緑本を購入しました。 Amazon CAPTCHA
PyladiesTokyoのmeetup後の2次会で話したところ、なんとこの緑本を持っている方がすでに2名いて、話が盛り上がり、皆でやろうということになりました。なぜなら分厚くで、難しそうで一人では挫折しそうだったからです;;
OS自作しよう会が発足した!#pyladiestokyo
— sugita (@ane45) May 26, 2019
ということで、8月10日にRaspberry piもくもく会を一緒に主催している @yuzuafroさん、会社の同僚の @meganehouseを誘って、第一回を開催しました!
第1回は、お盆の時期にもかかわらず5名あつまりました。
OS会の進め方
- 各個人がそれぞれ本にしたがってもくもく進めていく
- わからないところは、他の人に聞いてわかる人が答える
- 皆がわからないところは、皆で調べる
- 自分がつまったところはSlackで共有する。(他の人も同じところでつまる可能性があるため)
自分がやったところまでの忘備録
環境構築
- バイナリエディタは下記をインストールします。 http://www.suavetech.com/0xed/0xed.html の最新
アセンブラでimgファイルを作成する
とりあえず、 hello world
の部分のみ変更して、make runしてみる。
- 本では、著者作の「nask」というアセンブラを使用している。これは「Nasm」という有名なアセンブラを真似て作成されている。
基本的には以下手順でimgファイルを作成する(macの場合)
本にはさらっとかかれているアセンブラですが、ここである程度理解しておかないと厳しそうです、
2週目(8-14日目)の概要に以下のようにかかれている通り、
1章で苦労したかいがあって気がつけばたくさんの財産を手に入れています。C言語の基本文法もほぼマスターし終わって、アセンブラもこの本の要求レベルに到達してしまっています。
私の知識はというと、下記くらい。
Cやアセンブラを全くやったことのない人は、この本だけでは厳しいかもしれません^ ^;。
その場合以下が参考になるようです。(by @meganehouser) https://www.amazon.co.jp/dp/B078J4TNT1/
ただ、一通り本をやってからじっくり学んでも大丈夫そうです。
その他参考&メンバーが共有してくれた内容(一部抜粋)
hellos.nas、sjisなので、macでvimで開いたら文字化けした。
- ここら辺やったら表示できた。 https://itcweb.cc.affrc.go.jp/affrit/faq/tips/vim-enc
書籍には書かれていないが、CMP命令は比較結果をフラグレジスタに書き込む(EFLAGS)。JE命令はフラグレジスタを見に行ってその値によってEqualかを判定する。
おわりに
- 参加者全員、第1章の環境構築をしてエミュレータで
hello, world
をするところまではできました! - 早い人は、第8章まで進んでいました!
- 難しいけど皆でやれば怖くない!
実は本日第2回を開催しています!
IPLをアセンブラで書いた経験がある方や、RTOSを作ることを職業にしている方も加わってくれ、頼もしい! くじけそうだけど、頑張ろう。