Version 0.4 (NBUG例会 2024年12月版)
- nono または実機で動く OpenBSD/luna88k または NetBSD/luna68k (以下、LUNAと書きます)
- 以下のファイルを https://www.nk-home.net/~aoyama/tmp/fuzix/ に置いておきますので、LUNAに持っていってください。
ファイル名 | サイズ | 内容 |
---|---|---|
fuzix.bin | 43KB | FUZIXカーネルイメージ |
lunaxp-disk.img | 19MB | FUZIXディスクイメージ |
xpfe-0.1.0.tar.gz | 4.9KB | サポートプログラムのソース |
以下、OpenBSD/luna88k での実行例を示しますが、NetBSD/luna68k 10.0 でも同様に動作します。
LUNA上に持っていった xpfe-0.1.0.tar.gz を展開し、xpfe-0.1.0 ディレクトリの中で makeします。実行バイナリは xpfe です。
luna88k% tar zxf xpfe-0.1.0.tar.gz
luna88k% cd xpfe-0.1.0
luna88k% make
cc -O2 -pipe -MD -MP -c xpfe.c
cc -O2 -pipe -MD -MP -c xpdisk.c
cc -O2 -pipe -MD -MP -c xpload.c
cc -O2 -pipe -MD -MP -c xprtc.c
cc -O2 -pipe -MD -MP -c xptty.c
cc -o xpfe xpfe.o xpdisk.o xpload.o xprtc.o xptty.o
luna88k%
LUNAにはメインCPU・XP・NIC(AMD LANCE Am7990)が共用している3ポートRAMが128KBあり、XP用のメモリとして通常その半分の64KBが割り当てられています。しかしFUZIXを動かすには64KBではメモリが不足するため、以下のいずれかの方法でNICに割り当てているメモリをXPで使用します。
LUNAのOS(OpenBSD/luna88k, NetBSD/luna68k)でNICに割り当てるメモリを半分の32KBにします。
カーネルコンフィグファイル(/usr/src/sys/arch/luna88k/conf/GENERIC など)に、以下のオプションを追加してください。(GENERIC のコンフィグファイルには、あらかじめコメントアウトされた形で記述されています)
option TRI_PORT_RAM_LANCE_SIZE=0x8000
その後カーネルを再構築し、そのカーネルで起動します。GENERIC カーネルを変更する場合の操作例を示します。
luna88k# cd /usr/src/sys/arch/luna88k/conf
luna88k# vi GENERIC <-- 上記 option を追加します
luna88k# cd ../compile/GENERIC
luna88k# make config && make && make install
luna88k# shutdown -r now
/usr/src/sys/arch/luna68k/dev/if_le.c で定義されている TRI_PORT_RAM_LANCE_SIZE の値を0x8000に変更してカーネルを再構築し、そのカーネルで起動してください。(NetBSDユーザならこの説明で分かりますよね(^_^))
#define TRI_PORT_RAM_LANCE_SIZE 0x10000 /* 64KB */
↓
#define TRI_PORT_RAM_LANCE_SIZE 0x8000 /* 32KB */
カーネル再構築をしない場合、一時的にLUNAのネットワークインターフェースを無効にしてからFUZIXを起動します。当然ですが、無効にしている間はネットワークは使用できません。
luna88k# ifconfig le0 down
FUZIXの終了後、再度ネットワークインターフェースを有効にしてください。
luna88k# ifconfig le0 up
対応方法1または2でLUNAの準備ができたらFUZIXを起動します。
/dev/xp を使うにはroot権限が必要なので、コンパイルしたサポートプログラム xpfe はrootで実行します。xpfe の引数は2つで、第1引数がFUZIXカーネルイメージ、第2引数がFUZIXディスクイメージです。今回は第1引数を fuzix.bin、第2引数を lunaxp-disk.img としてください。
正常に起動したら bootdev: で入力待ちになりますので、1 または hda1 を入力後 Enter を押してください。init が起動して login: プロンプトが表示されます。
login: プロンプトが表示されたら root でログインしてください。パスワードは設定されていません。
/bin, /usr/bin, /usr/games あたりにコマンドやプログラムがありますので試してみてください。
また、マンデルブロ集合のプログラム /root/mandelbrot を入れましたのでお楽しみください。
※マンデルブロ集合のプログラムは @DragonBallEZ さんの ASCIIART のソース(C 整数型)を修正して使わせていただきました。https://kyo-ta04.github.io/memo/
luna88k# ./xpfe ../fuzix.bin ../lunaxp-disk.img
XP binary loaded, type '^\' to detach.
FUZIX version 0.5
Copyright (c) 1988-2002 by H.F.Bower, D.Braun, S.Nitschke, H.Peraza
Copyright (c) 1997-2001 by Arcady Schekochikhin, Adriano C. R. da Cunha
Copyright (c) 2013-2015 Will Sowerbutts <[email protected]>
Copyright (c) 2014-2024 Alan Cox <[email protected]>
Devboot
128KiB total RAM, 64KiB available to processes (15 processes max)
Enabling interrupts ... ok.
0000 : - OK (39360 blocks)
hda: hda1 hda2 (swap) hda3
bootdev: 1
Mounting root fs (root_dev=1, ro): OK
Starting /init
31 buffers added
init version 0.9.1
Checking root file system.
^ ^
n n Fuzix 0.5
>@<
Welcome to Fuzix
m m
login: root
Welcome to FUZIX.
# uname -a
Fuzix 0.5 lunaxp
# pwd
/root
# ./mandelbrot
124111111111111111224422222333334568BC67443322222211112331111000000000000000000
11111111111111111122222222233344598C 77943333222221111111110000000000000000000
111111111111112222222233324444556 955633332211111111100000000000000000000
111111111211112222222333465685778 976554444222211111100000000000000000000
11111112222222233333334457 AB9 787B5452111111111100000000000000000
11112222222222333333444667 532233111111111000000000000000
11111222333444444444555A 96443324211111110000000000000000
12222223345D6657 6555679 AA43322211111110000000000000000
222233334569 8C E8789 B43322111111110000000000000000
223333345578D E 43322211111111111100000000000
3344444789A 5 3322111111111111100000000000
5555658A C6433222222111111111100000000000
975443322221111111111100000000000
5555658A C6433222222111111111100000000000
3344444789A 5 3322111111111111100000000000
223333345578D E 43322211111111111100000000000
222233334569 8C E8789 B43322111111110000000000000000
12222223345D6657 6555679 AA43322211111110000000000000000
11111222333444444444555A 96443324211111110000000000000000
11112222222222333333444667 532233111111111000000000000000
11111112222222233333334457 AB9 787B5452111111111100000000000000000
111111111211112222222333465685778 976554444222211111100000000000000000000
111111111111112222222233324444556 955633332211111111100000000000000000000
11111111111111111122222222233344598C 77943333222221111111110000000000000000000
124111111111111111224422222333334568BC67443322222211112331111000000000000000000
Start: Sat Oct 05 14:13:23 2024
End : Sat Oct 05 14:14:18 2024
#
- date コマンド実行時にJSTで時刻表示するには、環境変数 TZ の値を JST+9 に設定します。
現在の構成ではユーザプロセス用メモリが32KBですので、大きなプログラムは動きません。
# cpp
/usr/bin/cpp: too big
#
FUZIXを終了するには、プロンプトで shutdown と入力してください。正しくシャットダウンされると XP halted. が表示されます。その後 Control-\ を入力すると xpfe が終了し、LUNAのシェルに戻ります。
# shutdown
Halted.
XP halted. <---- この後'Control-\'を入力するとシェルに戻ります
luna88k#
何らかの理由で正しくシャットダウンできなかった場合、次回起動時に fsck が走ります。何か聞かれたら y を入力してください。fsck 後は再起動が必要ですので、”XP halted.” が表示されたら一度 xpfe を終了して、再度実行してください。
- FUZIX for LUNA XPソース https://github.com/ao-kenji/FUZIX/tree/ao-kenji-lunaxp
- xpfe https://github.com/ao-kenji/xpfe/
青山 健治 / Kenji Aoyama
X(旧Twitter) @ao_kenji
Mastodon @[email protected]