この文章では、フリーの PC エミュレーター Bochs の Version 2.0.x 上で EOTA を動かしたときに発生する不都合を回避する方法について簡単に説明します。
フロッピーイメージからの起動時に停止します。それと、ハードディスクイメージからの起動時にフロッピーイメージへのアクセスができません。この二つのトラブルを以下の手順を踏んでバイナリを作成することによって回避できます。
EOTA のソースアーカイブと、honma 氏提供の Bochs2.0.x 用のパッチを入手します。
EOTA のソースアーカイブを展開してパッチを当てます。
$ tar xvzf eota.0.3.5.tar.gz $ cd eota $ patch -p1 < ../eota.0.3.4-bochs2.patch |
さらに eota/kernel/BTRON/device/fd765a/Makefile ファイルの 6 行目の行頭のコメントアウトの `#' を外して DEBUG を有効にします。
$ cd kernel/BTRON/device/fd765a $ vi Makefile |
# -DFDDEBUG ... FDC のデバッグ用マクロ #DEBUG= -DFDDEBUG IDENT=-DTIMER_TEST -DI386 -DIBMPC $(DEBUG) |
# -DFDDEBUG ... FDC のデバッグ用マクロ DEBUG= -DFDDEBUG IDENT=-DTIMER_TEST -DI386 -DIBMPC $(DEBUG) |
続いて eota/sfsboot ディレクトリに移動し、make をします。
$ cd ../../../../sfsboot $ make |
続いて eota/kernel/BTRON/make に移動して make をします。
$ cd ../kernel/BTRON/make $ make |
これで eota/sfsboot/2nd 以下と eota/kernel/BTRON/make 以下にブート部と、カーネルができます。続いて eota/kernel/POSIX/mkfs の mk_sfsboot.sh を実行すれば、ブート部とカーネルその他必要最小限がインストールされた sfsboot.bin ができます。このフロッピーイメージを指定すれば起動できます。
$ cd ../../POSIX/mkfs $ make $ ./mk_sfsboot.sh |
以下は確認です。
$ ls Makefile mk_img.sh mkfs.c mksfs sfsck.c statfs.o init.fm mk_sfsboot.sh mkfs.h sfsboot.bin statfs mk_hdboot.sh mkfd.sh mkfs.o sfsck statfs.c $ ./statfs sfsboot.bin dir / 5 40777 0000 0000 . 160 bytes 5 40777 0000 0000 .. 160 bytes 2 40777 0000 0000 lost+found 40 bytes 2 40777 0000 0000 system 120 bytes 2 40777 0000 0000 dev 380 bytes 1 100666 0000 0000 init.fm 128 bytes 1 100777 0000 0000 test 8152 bytes 1 100777 0000 0000 psauxtst2 9437 bytes |
ハードディスクから起動する場合には eota/kernel/BTRON/make 以下の btron を EOTA の ハードディスクイメージ上に /system/btron386 としてインストールします。