Top

おわりに

本書をお読みいただきありがとうございました!

本書ではついにNICドライバを実装し、これでようやく自作OSも「ネットワーク対応」を謳っても嘘ではない感じになりました。(いや、まだやっぱりだめかな。。)

本書で送信するイーサネットフレーム(というか単なるバイナリ列)は独自のもので、経路上にスイッチングハブやルーターなどがあるとそれを解釈できないため捨てられます。そのため、現状では対向のPC等とは1対1でつなぐか、リピーターハブを介しての接続しかできません。

ただ、この段階でも自作OSとしてやれることは格段に増えたと思います。少なくとも1対1なら対向PCに対して任意のバイナリ列を送ったり、逆に対向PCから任意のバイナリ列を受け取ったりできます。例えば本書で紹介したKOZOSプロジェクトのpkttools*1を使えば、シェルコマンドで任意のパケット(イーサネットフレーム)を送ったり、受信したパケット(イーサネットフレーム)をテキストで出力したりできます。

[*1] http://kozos.jp/software/pkttools.html

なので、例えばシェルスクリプトで「受信したバイナリ列をひたすら保存し続ける」スクリプトを作成し、対向PC側で実行しておけば、自作OS側からオレオレイーサネットフレームでデータを送信するだけで、対向PCを簡易的な外部ストレージとして任意のデータを保存できます。

他にも、「1) 自作OS側からURLを送る」、「2) 対向PC側で"wget URL"を実行しHTMLを取得、テキストとして自作OS側へ送信」、「3) 自作OS側で受け取ったテキストを表示」とすれば、プロトコルスタックを一切持たないのにブラウザっぽいものが実現できることになります*2

[*2] まあ、フォントの制約上、英語のページしかまともに表示できませんが。ただ、対向PC側でwgetではなくウェブページ自体のスクリーンショットを取って、それをBGRA形式の画像へconvertコマンド(ImageMagick)で変換し、画像のバイナリデータを自作OS側へ送るようにすれば、どんなページでも静的なページであれば表示できるようになります。

自作OSは当然ながら自分で実装しなければ何もできないです。ただ、外の世界とお話できる口があれば、外の誰かにお願いできるようになります。NICドライバを作ることによって、このように、自作OS側でまだできないことを外の誰かへオフロード(?)できるので、自作OSとしてNICドライバは早々に作ると、やれることが広がって良いんじゃないかなと思いました。(初歩的なことをやるだけならそんなに難しくないですし)

この本を読んでいただいて、興味が湧けば、ぜひNICドライバ自作にチャレンジしてみてもらいたいと思います。そして、せっかくの自作OSなのだから、汎用OSには無い独自なことをやってみたら面白いんじゃないかなと思います*3

[*3] 自作OSで動くマシン複数台とリピーターハブを用意して、LAN内を自分たちだけしか解釈できないオレオレイーサネットフレームで通信する、とかも面白そうです。なんの役にも立ちませんが(笑)


Top