この文書には改定版が存在します。こちらを参照してください。改訂版
TangConsoleDCJ11MEMに2.11BSDをインストールする方法を簡単に説明します。要点だけ書きますので、きちんとした手順書にはなっていません。ご承知おきください。
前提条件
Windows 11とLinux(WSL上で動作するUbuntu) での操作を前提に説明します。読者はそれぞれの環境でのコマンド実行などについては特に説明を要しないものとします。
環境構築
LinuxでSIMHとretro-fuseをインストールします。retro-fuseはソースからビルドします。
参照する情報
- 2.11BSDの文書 211bsd-setup.pdf
- SIMHに2.11BSDをインストールする手順 Installation of 2.11BSD on SIMH
- retro-fuseの使い方 retro-fuse/wiki
用意するもの
- 2.11BSDの配布ファイル 2.11BSD
- Pmod0に接続するmicroSDカードインタフェース
- 2.11BSDのソースコードに適用するパッチ bsd211.patch
概略手順
- SIMHをインストール
- SIMHに2.11BSDをインストール
- retro-fuseをインストール
- TangConsoleDCJ11MEMに2.11BSDをインストール
- インストールしたdiskイメージを書き換える
詳細手順
上記概略手順の4.と5.についてはもう少し詳しく説明します。
テープイメージの作成
2.11BSDの配布ファイルがある場所で以下のコマンドでテープイメージを作成します。
dd if=mtboot of=211bsd.img conv=notrunc
dd if=mtboot of=211bsd.img conv=notrunc seek=1
dd if=boot of=211bsd.img conv=notrunc seek=2
dd if=disklabel of=211bsd.img conv=notrunc seek=65536
dd if=mkfs of=211bsd.img conv=notrunc seek=131072
dd if=restor of=211bsd.img conv=notrunc seek=196608
dd if=icheck of=211bsd.img conv=notrunc seek=262144
dd if=root.dump of=211bsd.img conv=notrunc seek=327680
dd if=file6.tar of=211bsd.img conv=notrunc seek=393216
dd if=file7.tar of=211bsd.img conv=notrunc seek=458752
dd if=file8.tar of=211bsd.img conv=notrunc seek=524288
インストール
テープから起動してルートファイルシステムをmkfs, restorします。
@100000g
100026
@0g
73Boot from tm(0,0,0) at 0172522
: tm(0,2)
Boot: bootdev=0402 bootcsr=0172522
Mkfs
file system: rk(0,0)
rk(0,0,0) disklabel missing/corrupt
file sys size [0]: 3072
bytes per inode [4096]:
interleaving factor (m; 2 default):
interleaving modulus (n; 100 default):
isize = 768
m/n = 2 100
Exit called
73Boot from tm(0,0,2) at 0172522
: tm(0,3)
Boot: bootdev=0403 bootcsr=0172522
Restor
Tape? tm(0,5)
Disk? rk(0,0)
Last chance before scribbling on disk. End of tape ### ここでRETを入力
73Boot from tm(0,0,3) at 0172522
: rk(0,0)unix
Boot: bootdev=03000 bootcsr=0177404
2.11 BSD UNIX #115: Sat Apr 22 19:07:25 PDT 2000
sms1@curly.2bsd.com:/usr/src/sys/GENERIC
panic: iinit
no fs on dev 6/0
syncing disks... done
006102
@
オリジナルのカーネルではルートファイルシステムがマウントできないのでpanicします。
置き換えるファイルの作成
カスタマイズされたカーネルとRK11用のブートブロックを作成します。
- SIMHのディスクイメージをretro-fuseでマウント
- ソースコードにパッチを適用
- ディスクイメージをアンマウント
- SIMHを起動
- カーネルとブートブロックをビルド(SIMHで作業、手順は後述)
- SIMHを終了
- SIMHのディスクイメージをretro-fuseでマウント
- ビルドしたカーネルとブートブロックをホストにコピー
- ディスクイメージをアンマウント
- 2.11BSDがインストールされたmicroSDカードイメージを取得
- カードイメージ上のRK11のディスクイメージをretro-fuseでマウント
- カーネルをコピー
- ディスクイメージをアンマウント
- ブートブロックをディスクイメージに書き込む
1024 conv=notruncディスクイメージをmicroSDカードに書き戻せば準備完了です。
カーネルとブートブロックのビルド手順
カーネルとブートブロックのビルド手順は以下の通りです。
# cd /usr/src/sys/conf
# ./config SMALL
# cd ../SMALL
# make all
# cd ../mdec
# make
最初のmakeでカーネル(unix)が、次のmakeでブートブロック(rkuboot)が生成されます。
補足
2.11BSDを動かすためにはFPGAの実装の変更が必要です。オリジナルからforkした、こちらのリポジトリを参照してください。forkしたリポジトリ