Top

はじめに

本書をお手に取っていただきありがとうございます。

本書は自作OSにNICドライバを実装し、イーサネットフレームの受信とオレオレイーサネットフレームの送信を行ってみる本です。

本書でNICドライバを搭載することで自作OSのアーキテクチャとしては図1のようになります。

本書まででできあがるOSのアーキテクチャ図

図1: 本書まででできあがるOSのアーキテクチャ図

本書の構成

本書は以下の2章構成です。

第1章で、まずPCIからNICを制御するためのレジスタ情報を取得します。

第2章では、NICのレジスタを通してイーサネットフレームの受信と、オレオレイーサネットフレームの送信を試します。

なお、本書ではイーサネットフレームのフォーマットの解釈にまでは踏み込みません。あくまでもNICのドライバとして、NICが受信したイーサネットフレームのバイナリ列をドライバ側で用意したバッファに格納することと、ドライバ側で用意したバッファから独自のバイナリ列を「オレオレイーサネットフレーム」としてNICからの送信ができればOKとします。

また、この本では筆者のPCを対象に、筆者がNICのデバドラを作る上で行ったことをまとめています。対象マシンのNICを把握するところから始めていますので、ご自身で試す際は同様のやり方でご自身のNIC向けデバドラを書いてみてください。とは言え、本書で扱う範囲はIntel製NICの共通仕様の範囲内なので、他のマシンでも大差は無いと思います。

開発環境・動作確認環境

筆者が開発や動作確認を行っている環境を以下に記載します。

言語としては、C言語と一部アセンブラを使う程度なので、一般的なLinux環境であれば問題ないと思います。

本書のPDF版/HTML版やソースコードの公開場所について

これまでの当サークルの同人誌同様、本書もPDF版/HTML版は以下のページで無料で公開しています。

サンプルコードは以下のGitHubリポジトリで公開しています。

サンプルコードのリポジトリ内はディレクトリで分かれています。各ディレクトリが以降の各項あるいは各節で作るものです。各項/節の冒頭で「この項/節のサンプルディレクトリはXXです。」と紹介しますので適宜参照してみてください。

なお、ビルド方法は本書のパート1を参照してください。また、パート2でブートローダーにも手を加えています。実行の際はブートローダーも必要なので、そちらも併せてご参照ください。

付録サンプルコードについて

「A」から始まるディレクトリは参考用の付録サンプルコードです。今回は「A00」から「A02」の大きく3つの付録があります。


Top