$Id: simh-43q-nnb.html,v 1.3 2004/07/30 06:58:49 mochid Exp $

SIMH VAX エミュレーターで 4.3BSD-Tahoe を動かす(非 NetBSD 環境用)

4.3BSD-Tahoe に対する NetBSD の互換機能を使わずに、 4.3BSD-Quasijarus0a を SIMH VAX に導入する方法を解説します。 最低限、

必要があるのですが、MS-Windows では後者が少しホネかと思います。 Linux はクリアできます。

SIMH を動かすのに NetBSD 環境を用意できる場合は こちらのページ を参照下さい。

4.3BSD-Quasijarus0a の正式な配布にこだわらなければ、そのまま SIMH にテープイメージとして割り当ててブートできるらしいファイルが あります。
IT Securty Geek の Download の Retrocomputing の下の quasijarus0a.tap.bz2 です。
これを使えば拡張版 compress をコンパイルする必要はたぶん ないでしょう。


  1. 4.3BSD-Quasijarus 取得
  2. 拡張版 compress のコンパイル
  3. NetBSD/vax インストール CD-ROM イメージ取得
  4. Quasijarus バイナリーをアーカイブ
  5. SIMH の設定
  6. NetBSD/vax ブート
  7. NetBSD のブートローダーで Quasijarus の miniroot 起動
  8. Quasijarus バイナリー展開
  9. リブート

その他情報については NetBSD 環境用のページ を参照下さい。


4.3BSD-Quasijarus 取得

NetBSD 環境用のページ 4.3BSD-Quasijarus 参照。


拡張版 compress のコンパイル

NetBSD 環境用のページ 拡張版 compress のコンパイル 参照。ここの パッチ

    % cat /etc/redhat-release           
    Red Hat Linux release 6.2 (Zoot)
な環境(古〜いですが)でコンパイルできることを確認しています。


NetBSD/vax インストール CD-ROM イメージ取得

NetBSD/vax のインストール CD-ROM イメージを下記等より取得します。

    ftp://ftp.jp.netbsd.org/pub/NetBSD/iso/1.6.1/vaxcd.iso 
    NetBSD ミラーサイト一覧 ISO イメージのミラー


Quasijarus バイナリーをアーカイブ

SIMH と NetBSD/vax インストールカーネルの両方で扱えるディスクは 最大 4 台なので、Quasijarus の圧縮を解いた 3 ファイルのうち rootdump と usr.tar をひとつの TAR ファイルにまとめます。

> tar cvf ru.tar rootdump usr.tar

SIMH の設定

4 台のドライブに下記のようにファイルを割り当てます。この 定義をしたファイルを nnb.conf とします。

miniroot は単独でドライブにアサインしますが、ラベルを書き込みますので miniroot.dkimg というファイルとしてコピーします。

    rq0  0.dkimg          導入対象のディスク、150MB 以上
    rq1  miniroot.dkimg   miniroot。Quasijarus 仮ブート時のルートファイルシステム
    rq2  vaxcd.iso        NetBSD/vax のインストール CD
    rq3  ru.tar           rootdump, usr.tar を含む TAR

NetBSD/vax ブート

nnb.conf を使い、最初は NetBSD/vax の インストール CD からブートします。

pkgsrc から SIMH を入れた場合は実行ファイル名が simh-vax です。

> vax nnb.conf

VAX simulator V3.0-2
    :
08..07..06..05..04..03..
Tests completed.
>>>boot dua2                  ←CD-ROM dua2 (rq2) でブート
(BOOT/R5:0 DUA2
  :
>> NetBSD/vax boot [1.11 Wed Apr  9 05:16:34 UTC 2003] <<
  :

インストーラーが起動しますので、'x', 'Enter' で終了させます。 '#' のプロンプトがあらわれます。


NetBSD のブートローダーで Quasijarus の miniroot 起動

次に、Quasijarus のカーネル、Quasijarus miniroot の ルートファイルシステムでブートさせる用意をします。 最終的な導入先 rq0(ra0) に、仮に NetBSD の ブートローダーと Quasijarus の vmunix を置きます。

rq0(ra0) のラベルは最終的なものになるので、c を含む全ての パーティションがシリンダー境界になるようにします。
disklabel -i の使い方については 「SIMH VAX エミュレーターで NetBSD を動かす」の インストーラーを使わずに手動インストール のラベル付けの項を 参考にして下さい。
'P' で表示される右端の (Cyl. xx - xx) の数字に '*' が付いていると シリンダーをはみ出しているので、size を c 単位で指定し直します。

# mount -o ro /dev/ra1c /mnt2  ←miniroot(rq1) を /mnt2 へ
# disklabel -r -i -I ra0
          ↑a: 16MB, b: 32MB, f: 残り、c もシリンダー境界に合わせる
# newfs /dev/rra0a           ←NetBSD ブートローダー用に newfs 
# mount /dev/ra0a /mnt
# cp -p /mnt2/vmunix /mnt    ←miniroot から Quasijarus カーネルをコピー 
# cp -p /boot /mnt           ←NetBSD /boot をコピー 
# umount /mnt
# disklabel -B -b /usr/mdec/raboot ra0   ←NetBSD ブートローダー書き込み 

# disklabel -r -i -I ra1
           ↑miniroot、Quasijarus 仮起動時のルートファイルシステム 
           ↑a: 4MB, b: 4MB(必須)、c はそのままで OK 

Quasijarus で仮ブート後に、バイナリーアーカイブを展開できるように ra3(rq3) から ru.tar を取り出し、最終導入先の f パーティション(/usr) に 置いておきます。

# newfs -O /dev/rra0f    ←ra0(rq0)、最終的に /usr になる 
# mount /dev/ra0f /mnt
# mkdir /mnt/t
# dd if=/dev/rra3c bs=1m count=30 progress=1 | (cd /mnt/t; pax -rv)
# umount /mnt      ↑バイナリー(ru.tar, rq3)を最終的な /usr/t へ取出 

# halt
    :
sim> boot cpu
>>>boot dua0             ←ブートローダーとカーネルだけの rq0 


>> NetBSD/vax boot [1.11 Wed Apr  9 05:16:34 UTC 2003] <<
>> Press any key to abort autoboot 5..4..3..2..1..0
    :
gennetbsd: boot failed: Device not configured
> boot vmunix            ←Quasijarus カーネル 
    :
root device? ra1         ←miniroot (rq1) 
    :

Quasijarus バイナリー展開

仮ブートしました。Quasijarus カーネルで rq1(ra1) miniroot が ルートファイルシステムの状態です。
最終的なルートパーティション ra0a を上書きし、rootdump を restore します。これで取り出した tar を使って、usr.tar の展開も 行います。

# (cd /dev; sh ./MAKEDEV ra2 ra3)

# newfs /dev/rra0a   ←仮ブートカーネルロードに使った ra0a は上書 
# mount /dev/ra0a /a
# fsck -y /dev/ra0f  ←NetBSD で newfs -O したパーティション 
# mkdir /a/usr
# mount /dev/ra0f /a/usr
# cat /a/usr/t/rootdump | (cd /a; restore xvf -)
    :           ↑最終的なルートファイルシステムを展開 
set owner/mode for '.'? [yn] y

# disklabel ra0 > /tmp/a
# cd /usr/mdec        ↓忘れないうちにブートローダーを書き込み 
# disklabel -r -R ra0 /tmp/a rdboot bootra

# (cd /a/usr; /a/bin/tar xpvf /a/usr/t/usr.tar)
    :           ↑usr.tar を展開 

リブート

/etc/fstab を作成してリブートします。その他については NetBSD 環境用のページ リブート その他 参照。

# /a/bin/sed 's/ra0h/ra0f/;/ra0g/d' /a/etc/fstab.ra80 \
    > /a/etc/fstab     ←fstab.ra80 を元に fstab 作成
             ↑リブート後、手動マウントして vi で編集しても可
# sync; sync; sync 
# /a/etc/halt
    :
sim> boot cpu
>>>boot dua0       ←導入したディスクでブート

mochid@netside.co.jp