2006.10.5更新


１　コンパイル環境

 OS ： WindowsXP + Cygwin
 コンパイラ ： GCC 3.3.6


２　テスト環境

 cpu ： Celeron 300MHz X 2
 メモリー ： 64Mb
 マザーボード ： ABIT BP6
 チップセット ： Intel 440BX
 PS2接続キーボード
 IDEディスク ： QUANTUM FIREBALL_TM3200A
                FUJITSU MPC3032T
 CDドライブ ： ATAPI CDROM DRIVE


３　ソースコードディレクトリ構成

 "/" ┬ kernelソースコード、makeファイル、ライセンス、Readme
     ├ "bin"  ─ バイナリファイルディレクトリ
     ├ "deps" ─ コンパイル時の依存リストファイルディレクトリ
     ├ "dev"  ─ デバイスドライバーソースコード
     ├ "net"  ─ ネットワークドライバー・プロトコルソースコード
     ├ "tools"─ コンパイル補助プログラム
     └ "user" ─ ユーザープログラムコード（詳細は「user/user.txt」を参照）


４　テスト環境の設定

　　テストするには、Linuxがインストールされているテスト機で、以下のように設定することが必要。

(１)　ページングデバイスの設定

○　テスト機をLinuxで立ち上げ、IDEディスクに「fdisk」コマンドでページングデバイス用のパーティションを
　確保し、パーティションタイプIDを'9a'に設定する。
　　バグにより他のパーティションに書き込む危険があるので、できればテスト用のディスクを用意したほうがよい。

○　ソースファイル「config.h」の、定数「PAGING_BACKUP_DEVICE」に、設定したデバイス名を割り当てて、
　コンパイルする。
　　例）設定したパーティションが「hdb6」なら、「#define PAGING_BACKUP_DEVICE "/dev/hdb6"」とする。


(２)　ルートファイルシステム(ext2)デバイスの設定

○　テスト機をLinuxで立ち上げ、IDEディスクに"fdisk"コマンドで、パーティションタイプID'83'の、
　ルートデバイス用のパーティションを確保し、"mkfs"コマンドで、確保したパーティションに、ext2ファイル
　システムを作成する。
　　バグにより他のパーティションに書き込む危険があるので、できればテスト用のディスクを用意したほうがよい。

○　ソースファイル「config.h」の、定数「ROOT_DEVICE」に、設定したルートデバイス名を割り当てて、
　コンパイルする。
　　例）設定したパーティションが「hdb5」なら、「#define ROOT_DEVICE "/dev/hdb5"」とする。

(３)　IPアドレスの設定（"RTL8139"　Ethernet controllerが必要）

○　IPアドレス
　　user/include/sys/user_config.hの「IP_ADDRESSx=IP_ADDR(a,b,c,d)」（'x'はEthernetデバイス番号、
　'a''b''c''d'はIPアドレス）に設定する。

○　サブネットマスク
　　user/include/sys/user_config.hの「IP_SUBNETMASKx=IP_ADDR(a,b,c,d)」（'x'はEthernetデバイス番号、
　'a''b''c''d'はIPアドレス）に設定する。

○　デフォルトゲートウェイ
　　user/include/sys/user_config.hの「IP_DEFAULT_GATEWAY=IP_ADDR(a,b,c,d)」（'a''b''c''d'はIPアドレス）
　に設定する。

○　ＤＮＳサーバー
　　user/copy/etc/resolv.confにＤＮＳサーバーのＩＰアドレスを設定する。

　　なお、対応しているEthernet controllerは"RTL8139"のみです。

　例）IPアドレスが"172.25.0.10"なら「IP_ADDRESS0=IP_ADDR(172,25,0,10)」、
　　　サブネットマスクが"255,255,0,0"なら「IP_SUBNETMASK0=IP_ADDR(255,255,0,0)」、
　　　デフォルトゲートウェイが"172.25.0.1"なら「IP_DEFAULT_GATEWAY=IP_ADDR(172,25,0,1)」とする。
　　　２個目のEthernet controllerに設定するなら、IPアドレスが"172.25.0.20"なら、
　　　「IP_ADDRESS1=IP_ADDR(172,25,0,20)」、「IP_SUBNETMASK1=IP_ADDR(255,255,0,0)」とする。
　　　なお、２個のコントローラの同時制御は未テスト。

(４)　ディレクトリ・設定ファイルのインストール
　　「user/user.txt」を参照。

５　コンパイル方法

(１)　tools/ディレクトリに移動して、"make"でコンパイル補助用実行ファイルを作成する。

(２)　トップディレクトリに移動して、「Make.in」の「GCC=」「LODER=」「LIBGCC=」に、使用するgcc、ld、GCC組み込み関数ライブラリ
　　のパスを設定する。
　　　例）「GCC=/usr/local/bin/i686-elf-gcc」
　　　　　「LODER=/usr/local/bin/i686-pc-elf-ld」
　　　　　「LIBGCC=/usr/lib/gcc-lib/i386-redhat-linux/3.2/libgcc.a」

(３)　"make"でコンパイルする。

(４)　コンパイル環境がLinuxなら、フロッピーをセットして、"make fd"を実行すると、起動用
　　フロッピーが作成される。
　　　コンパイル環境がCygwinなら、事前にフロッピー書き込みツール「rawwritewin」をインストールし
　　（インターネットから入手可能）、"make boot"を実行すると、起動用フロッピーが作成される。


６　シェル、ユーザープログラムの作成について

　シェル、ユーザープログラムの作成・実行については、「user/user.txt」を参照。
