2014年6月19日木曜日

UNIX and 2BSD on PDP11(SIMH) その2

前回からの続きなので前回から読んでること前提です

BSDを入れる前に

BSD関連についてはこちらを参考にした
http://gitter.matrix.jp/simh-for-unix/v6-unix-on-simh/
情報がよくまとまって非常にかりやすいサイトである.

インストールしたUNIXv6に2BSDをインストールする.
また阪大のミラーから
ftp://ftp.ics.es.osaka-u.ac.jp/pub/mirrors/UnixArchive/PDP-11/Distributions/ucb/2bsd.tar.gz
2BSDのtarballを入手.

ftp://ftp.ics.es.osaka-u.ac.jp/mirrors/UnixArchive/PDP-11/Bug_Fixes/V6enb/v6enb.tar.gz
からv6enbを入手し,解凍.cc -o enblock enblock.cとすることでenblockコマンドを作成.

gunzip -d 2bsd.tar.gz | ./enblock > 2bsd.tap
とすることで,tar形式でアーカイブされた2bsdのテープイメージ(simh用形式に変換済み)が手に入る.これを,UNIXv6に入れてアーカイブを解凍するだけ……なのだが問題がある.
tarコマンドはUNIXv7より追加されたコマンドでUNIXv6にはtpコマンドしかない.
tpコマンドも使うとtarにかなりよくにたオプションであることがわかる.

とりあえず,前回の記事にあるSoftwareKitからもってきたUNIXv7のイメージを用いる.
その前に起動スクリプトであるUV7に修正が必要.
2bsd.tapをUV7とかと同じフォルダにコピーしてきて,
UV7に
att tm0 2bsd.tap
att tm1 tape.tap
と書く.これで2bsd.tapはtm0にアタッチされ,tape.tapというテープイメージは新しく作られた上でtm1にアタッチされる.
そして,
# cd /tmp
# tar xv0 tar
# tp rm1 tar
としてやるとtm1にあるtape.tapにtarが書き込まれる.

ちょっとウンチク.
tarのxvは現代のオプションと同様.その後ろファイル名を指定して特定のファイルだけ取り出している.tpのオプションrmも現代のtarのrmと同様で,rはappendでmはmodification-timeだ.もっとも新しいアーカイブを作るときは専らcを使うのでrをつかわない人は多いはず.
後ろの0や1という数字は単純にテープデバイスの番号である.
当時はtarもtpもテープに対するコマンドで,*.tarのようなファイルをつくるわけでなかったからこうだった.後にファイルを作ったりファイルから解凍するときの特殊ケースとして,0や1といった数字の変わりにfオプションを使うようになったがそちらのほうが今では主になってしまっている.

閑話休題

何はともあれ,tape.tapというテープイメージがつくられたので,これをUNIXv6のフォルダに持っていき,起動スクリプトにatt tm0 tape.tapと書いてアタッチしよう.
あとはUNIXv6を起動し
# chdir /tmp
# tp xm0 tar # mv tar /usr/bin
とでもしてやればtape.tapからtarコマンドが取り出され,/usr/binに配置される.これでtarコマンドがUNIXv6に導入された.これで2BSDのインストール準備が整う.

2BSDインストール
とりあえずUNIXv6の起動スクリプトのatt tm0 tape.tapをatt tm0 2bsd.tapにする.
次に,起動してから適当なフォルダ(/mntとか)に2bsdというフォルダをつくり,
# tar x0 bin
とすると2bsd.tarからbinフォルダが解凍される.
あとは,
# chdir bin
# sh install
としインストールスクリプトを走らせると,/usr/bin/ucbにコマンド群がインストールされる.

もしかしてディスクの容量が足りない時は,simhのattでrkNのディスク増やして,mkfsでフォーマットして,mountをしてやれば良い.
/etc/rcに起動時のスクリプト(run command? たぶん今のrc.confとかの原型)があるので,そこにmountコマンドとかを書いてやると起動時にマウントしてくれる.
/etc/fstabは存在しない.

UNIXv6のテープからインストールした時は/usr/share/manにman pageがはいっててもmanコマンドがなく,nroffとかをするしかなかったはずだが/usr/bin/ucb/manが増える.

また,cr3というpagerも増えるのでmanページ等がまともに読めるようになるし,
 他にもviやらMailやらcshやら現在に続くコマンド群が使えるようになる.
問題は,PATHが通っておらず使えないので,まず/bin/cshにインストールされたcshを起動して,set path=(/foo /bar)のような形でPATH環境変数を設定しなければならない.

最後に,viをつかうには/etc/termcapにxtermのtermcapを追加した上で,
sttyで通信速度を9660にする必要がある.

最後に他にいくつか参考になりそうな場所があるサイトたち
2238クラブ,いろいろな過去の情報があつめてある
http://www.tom-yam.or.jp/2238/index.html

日記だけれども有用な情報多し
http://space.geocities.jp/hamesspam/hhwA/100805.html

ここではUNIXv7のテープイメージからインストールの手順紹介されている
http://pcmemo.take-uma.net/unixv7/install-v7-1