2015-12-18

DECstation 5000/200にディスクレス環境としてNetBSD/pmax 1.5.3をインストール

DECstaion 5000/200にディスクレス環境としてNetBSD/pmax 1.5.3をインストールしました。このマシンは本体にHDDを内蔵することができません。HDDを外付けしてSCSIケーブルで繋がなければなりませんが、必要な機材を持っていないので必然的にディスクレス環境になります。また1.5.3がリリースされたのは2002年7月22日なので相当旧いバージョンですが、このバージョンでないとネットワークブートができませんでした。なんとか原因を調査して最新バージョンにしたいと思います。

DECstation 5000/200はCPUにMIPS R3000 25MHzを使用しています。 DECstation3100m30とはアーキテクチャが違うので単純な比較はできませんが、相対性能で数倍から10倍弱ほど高速になると思われます。
KN02-AA V5.3c
?TFL: #0 PMAGB-BA PATT: 5:  Red screen Test
>>cnfg
 7: KN02-AA  DEC      V5.3c    TCF0  (128 MB)
 6: PMAD-AA  DEC      V5.3a    TCF0  (enet: 08-00-2b-xx-yy-zz)
 5: PMAZ-AA  DEC      V5.3b    TCF0  (SCSI = 7)
 0: PMAGB-BA DEC      V1.1     TCF0  (HX -- d=8 )
NetBSD/pmaxをディスクレス環境で使うにはサーバ側にtftpとbootpdの設定が必要です。サーバにはNetBSD/i386 6.1.5を使用しました。

tftpの設定をおこないます。
  1. /etc/inetd.confを編集して、tftpのエントリのコメントを外します。
  2. tftpで読み込むカーネルを準備します。NetBSD/pmax 1.5.3の配布ファイルに含まれるファイル(NetBSD-1.5.3/pmax/binary/kernel/nfsnetbsd.gz)を所定のディレクトリ(/tftpboot)に圧縮を解いて置いておきます。シンボリックリンクにしたら起動しなかったので、実際にファイルをコピーして置いてあります。ファイル名は/tftpboot/NetBSD-pmax-1.5.3-nfsnetbsdとしました。

bootpdの設定をおこないます。
  1. /etc/inetd.confを編集して、bootpsのエントリのコメントを外します。
  2. /etc/bootptabに以下の設定を追加します。拡張性を意識したためにエントリが分離しています。
    # NetBSD/pmax 1.5.3
    .netbsdpmax153:\
            :ht=ether:\
            :sm=255.255.255.0:\
            :sa=192.168.1.222:\
            :bf=NetBSD-pmax-1.5.3-nfsnetbsd:\
            :bs=auto:
    # DECstation 5000/200
    ds5201nb:\
            :ha=08002BXXYYZZ:\
            :ip=192.168.1.142:\
            :rp=/usr/local/diskless/NetBSD-1.5.3/pmax/ds5201nb:\
            :tc=.netbsdpmax153:
以上の設定が済んだら、サーバ側にディスクレス環境を整えます。まずNetBSD/pmax 1.5.3の配布ファイルを展開します。
# find /usr/local/NetBSD/NetBSD-1.5.3/pmax/binary/sets -type f
/usr/local/NetBSD/NetBSD-1.5.3/pmax/binary/sets/BSDSUM
/usr/local/NetBSD/NetBSD-1.5.3/pmax/binary/sets/CKSUM
/usr/local/NetBSD/NetBSD-1.5.3/pmax/binary/sets/MD5
/usr/local/NetBSD/NetBSD-1.5.3/pmax/binary/sets/SYSVSUM
/usr/local/NetBSD/NetBSD-1.5.3/pmax/binary/sets/base.tgz
/usr/local/NetBSD/NetBSD-1.5.3/pmax/binary/sets/comp.tgz
/usr/local/NetBSD/NetBSD-1.5.3/pmax/binary/sets/etc.tgz
/usr/local/NetBSD/NetBSD-1.5.3/pmax/binary/sets/games.tgz
/usr/local/NetBSD/NetBSD-1.5.3/pmax/binary/sets/kern.tgz
/usr/local/NetBSD/NetBSD-1.5.3/pmax/binary/sets/man.tgz
/usr/local/NetBSD/NetBSD-1.5.3/pmax/binary/sets/misc.tgz
/usr/local/NetBSD/NetBSD-1.5.3/pmax/binary/sets/text.tgz
/usr/local/NetBSD/NetBSD-1.5.3/pmax/binary/sets/xbase.tgz
/usr/local/NetBSD/NetBSD-1.5.3/pmax/binary/sets/xcomp.tgz
/usr/local/NetBSD/NetBSD-1.5.3/pmax/binary/sets/xcontrib.tgz
/usr/local/NetBSD/NetBSD-1.5.3/pmax/binary/sets/xfont.tgz
/usr/local/NetBSD/NetBSD-1.5.3/pmax/binary/sets/xmisc.tgz
# cd /usr/local/diskless/NetBSD-1.5.3/pmax/ds5201nb
# find /usr/local/NetBSD/NetBSD-1.5.3/pmax/binary/sets -type f -name '[^x]*.tgz' | xargs -n1 tar xfpz
展開したディレクトリで変更を加えます。ここでは、サーバ側のディレクトリ/usr/local/diskless/NetBSD-1.5.3/pmax/ds5201nbが、ディスクレス環境でクライアントとなるNetBSD/pmaxのルートディレクトリになります。
  1. コンソールデバイスを作成します。
    # mknod dev/console c 0 0
  2. タイムゾーンを設定します。ここではシンボリックリンクを張るので、リンク元が絶対パス指定されていても、これはサーバ側のファイルを指定しているわけではありません。
    # ln -sf /usr/share/zoneinfo/Asia/Tokyo etc/localtime
  3. スワップファイルを作っておきます。
    # mkdir  /usr/local/diskless/NetBSD-1.5.3/pmax/ds5201nb/swap
    # dd if=/dev/zero of=/usr/local/diskless/NetBSD-1.5.3/pmax/ds5201nb.swap bs=1m count=256
  4. etc/hostsに必要なエントリを適宜追加しておきます。
  5. etc/ifconfig.le0を編集してネットワーク情報を定義します。
    inet 192.168.1.142 netmask 255.255.255.0 broadcast 192.168.1.255
  6. etc/resolv.confを編集して必要な情報を定義します。
    domain ******.jp
    nameserver 192.168.1.1
  7. etc/rc.confに以下の情報を追加します。
    hostname="ds5201nb"
    defaultroute="192.168.1.1"
    nfs_client=YES
    auto_ifconfig=NO
    net_interfaces=""
  8. etc/fstabを編集します。OpenBSD/vaxではスワップの設定があると起動できませんでしたが、NetBSD/pmaxでは必要でした。
    192.168.1.222:/usr/local/diskless/NetBSD-1.5.3/pmax/ds5201nb.swap        none    swap sw,nfsmntpt=/swap
    192.168.1.222:/usr/local/diskless/NetBSD-1.5.3/pmax/ds5201nb             /       nfs  rw 0 0
以上の設定が済んだらシングルユーザモードで起動し、デバイスファイルを作成します。
>>boot 6/tftp
1137008+47888+256748
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001
    The NetBSD Foundation, Inc.  All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
    The Regents of the University of California.  All rights reserved.

NetBSD 1.5.3 (INSTALL) #0: Thu Jul  4 09:58:15 EST 2002
    root@medusa.thistledown.com.au:/usr/obj/NetBSD/src15/sys/arch/pmax/compile/INSTALL
DECstation 5000/200 (3MAX)
total memory = 128 MB
avail memory = 116 MB
using 1664 buffers containing 6656 KB of memory
mainbus0 (root)
cpu0 at mainbus0: MIPS R3000 CPU (0x220) Rev. 2.0 with MIPS R3010 FPC Rev. 3.0
cpu0: 64KB Instruction, 64KB Data, direct mapped cache
tc0 at mainbus0: 25 MHz clock
(略)
nfs_boot: trying DHCP/BOOTP
nfs_boot: BOOTP server: 192.168.1.222
nfs_boot: my_addr=192.168.1.142
nfs_boot: my_mask=255.255.255.0
root on 192.168.1.222:/usr/local/diskless/NetBSD-1.5.3/pmax/ds5201nb
WARNING: clock gained 42 days -- CHECK AND RESET THE DATE!
Enter pathname of shell or RETURN for sh:
Terminal type is rcons.
We recommend creating a non-root account and using su(1) for root access.
# exit
eval: Can't open /dev/null
Setting tty flags.
chmod: /dev/tty[pqrs]*: No such file or directory
Setting sysctl variables:
Starting network.
Hostname: ds5201nb
add net 127.0.0.0: gateway 127.0.0.1
Configuring network interfaces:.
add net default: gateway 192.168.1.1
Building databases...
Starting syslogd.
Checking for core dump...
savecore: /netbsd: kvm_openfiles: /dev/mem: No such file or directory
Nov 14 04:48:33 ds5201nb savecore: /netbsd: kvm_openfiles: /dev/mem: No such file or directory
Mounting all filesystems...
Clearing /tmp.
Checking quotas: done.
Setting securelevel: kern.securelevel: 0 -> 1
swapctl: /swap is readable by the world
swapctl: adding 192.168.1.222:/usr/local/diskless/NetBSD-1.5.3/pmax/ds5201nb.swap as swap device at priority 0
Updating motd.
starting local daemons:.
Starting inetd.
Starting cron.
Sat Nov 14 04:48:58 JST 2015

NetBSD/pmax (ds5201nb) (console)

login: root
Nov 14 04:49:07 ds5201nb login: ROOT LOGIN (root) ON console
Copyright (c) 1996, 1997, 1998, 1999, 2000
        The NetBSD Foundation, Inc.  All rights reserved.
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
        The Regents of the University of California.  All rights reserved.
Nov 14 04:49:07 ds5201nb login: ROOT LOGIN (root) ON console

NetBSD 1.5.3 (INSTALL) #0: Thu Jul  4 09:58:15 EST 2002

Welcome to NetBSD!

Terminal type is rcons.
We recommend creating a non-root account and using su(1) for root access.
ds5201nb# cd /dev
ds5201nb# sh MAKEDEV all
これでDECstation 5000/200にディスクレス環境のNetBSD/pmax 1.5.3が出来上がりました。 この時のブートメッセージは以下のとおりです。
KN02-AA V5.3c    (PC: 0x80053c14, SP: 0xc9152e30)
>>boot 6/tftp
1137008+47888+256748
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001
    The NetBSD Foundation, Inc.  All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
    The Regents of the University of California.  All rights reserved.

NetBSD 1.5.3 (INSTALL) #0: Thu Jul  4 09:58:15 EST 2002
    root@medusa.thistledown.com.au:/usr/obj/NetBSD/src15/sys/arch/pmax/compile/INSTALL
DECstation 5000/200 (3MAX)
total memory = 128 MB
avail memory = 116 MB
using 1664 buffers containing 6656 KB of memory
mainbus0 (root)
cpu0 at mainbus0: MIPS R3000 CPU (0x220) Rev. 2.0 with MIPS R3010 FPC Rev. 3.0
cpu0: 64KB Instruction, 64KB Data, direct mapped cache
tc0 at mainbus0: 25 MHz clock
ibus0 at tc0 slot 7 offset 0x0
mcclock0 at ibus0 addr 0x1fe80000: mc146818 or compatible
dc0 at ibus0 addr 0x1fe00000
le0 at tc0 slot 6 offset 0x0: address 08:00:2b:xx:yy:zz
le0: 32 receive buffers, 8 transmit buffers
asc0 at tc0 slot 5 offset 0x0 (bus speed: 25 MHz) : target 7
sfb0 at tc0 slot 0 offset 0x0: 1280x1024x8
Beginning old-style SCSI device autoconfiguration
boot device: le0
root on le0
nfs_boot: trying DHCP/BOOTP
nfs_boot: BOOTP server: 192.168.1.222
nfs_boot: my_addr=192.168.1.142
nfs_boot: my_mask=255.255.255.0
root on 192.168.1.222:/usr/local/diskless/NetBSD-1.5.3/pmax/ds5201nb
WARNING: clock gained 42 days -- CHECK AND RESET THE DATE!
Enter pathname of shell or RETURN for sh:
Terminal type is rcons.
We recommend creating a non-root account and using su(1) for root access.
# exit
Setting tty flags.
Setting sysctl variables:
Starting network.
Hostname: ds5201nb
add net 127.0.0.0: gateway 127.0.0.1
Configuring network interfaces:.
add net default: gateway 192.168.1.1
Building databases...
Starting syslogd.
Checking for core dump...
savecore: can't find device 0/0
Nov 14 04:53:30 ds5201nb savecore: can't find device 0/0
Mounting all filesystems...
Clearing /tmp.
Checking quotas: done.
Setting securelevel: kern.securelevel: 0 -> 1
swapctl: /swap is readable by the world
swapctl: adding 192.168.1.222:/usr/local/diskless/NetBSD-1.5.3/pmax/ds5201nb.swap as swap device at priority 0
Updating motd.
starting local daemons:.
Starting inetd.
Starting cron.
Sat Nov 14 04:53:55 JST 2015

NetBSD/pmax (ds5201nb) (console)

login: root
Last login: Sat Nov 14 04:49:07 2015 on console
Nov 14 04:54:03 ds5201nb login: ROOT LOGIN (root) ON console
Copyright (c) 1996, 1997, 1998, 1999, 2000
        The NetBSD Foundation, Inc.  All rights reserved.
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
        The Regents of the University of California.  All rights reserved.

Nov 14 04:54:03 ds5201nb login: ROOT LOGIN (root) ON console
NetBSD 1.5.3 (INSTALL) #0: Thu Jul  4 09:58:15 EST 2002

Welcome to NetBSD!

Terminal type is rcons.
We recommend creating a non-root account and using su(1) for root access.
ds5201nb# df
Filesystem                                                                    1K-blocks     Used    Avail Capacity  Mounted on
192.168.1.222:/usr/local/diskless/NetBSD-1.5.3/pmax/ds5201nb  53765658  1793006 49284370     3%    /
192.168.1.222:/usr/local/diskless/NetBSD-1.5.3/pmax/ds5201nb.swap                       53765658  1793006 49284370     3%    /swap

0 件のコメント:

コメントを投稿