OpenBSD for Sparc

Install

98/3/2,3,4,9,12,19,20,21,23,27,4/4,5,6,7,10,5/6,8,20,28


Index


環境

OpenBSD 2.2 (UNIX User 3月号 CD-ROM,vol35 - 2.0 vol43 - 2.1 vol48 - 2.2)

SCSIはSunOS上で、sd3(ID0),sd0(ID3)と認識されている。
元々、SunOS 4.1.2が入っている。gzipとGNU tarが必要。


準備1:HDD割り当て領域を計画

 全部で1Gあるんだけど、片方の500Mをとりあえずインストールの為に使う。 これをパーティーションに分ける。パーティーションは以下の通り。


 なんか、仮システム組むのに50Mくらい食うので、それなりの容量をdに割り当てたい。 スワップは適当で良いでしょう。このマシンはWWWサーバになるので、80Mくらいあればok? /とかインストール/tmpはそんなにいらないでしょう。30Mくらいづつ割り振っておく?fはその残りね。
 そして、フォーマットする際に開始シリンダとブロック数の入力を求めてくる。それで容量を決めるわけだ。そこで必要になるのがHDDのシリンダ数とヘッダ数とセクタ数。 Fujitsu M2624SAだと、1427シリンダ、11ヘッダ、64セクタである。
 これらとブロック数の関係を以下のとおりとする。

総ブロック数=総シリンダ数×総ヘッダ数×総セクタ数
例:1004608ブロック=1427シリンダ×11ヘッダ×64セクタ

1シリンダ=総ヘッダ×総セクタ=1シリンダあたりのブロック数
例:1シリンダ=11ヘッダ×64セクタ=704ブロック

1ブロック=512バイト

※だいたい、パーティーションをシリンダ単位で区切って割り振ったほうが扱いやすく無駄がない。

 よって、だいたい以下のとおりに割り振る


準備2:HDDをformat

 上で設計した通りにパーティションを割り振る。

 formatコマンドでHDDをformatする。まず、HDDが複数ある場合は、選択する。

# format
Searching for disks...done

AVALIABLE DISK SELECTIONS:
   0.sd1 at esp0 slave 8
     sd1: 
   1.sd3 at esp0 slave 0
     sd3: 
Specify disk (enter its number): 1

 既存のHDDにいれるので、ジオメトリ情報は入っている。ない場合は、設定する。
 その後、menuへと移る。

selecting sd1: 

FORMAT MENU:
   disk       - select a disk
   type       - select (define) a disk type
   partition  - select (define) a partition table
   current    - describe the current disk
   format     - format and analyze the disk
   repair     - repair a defective sector
   show       - translate a disk address
   label      - write label to the disk
   analyze    - surface analyze
   defect     - defect list management
   backup     - serch for backup labels
   quit
format>
 HDDをformatするので、formatと入力する。本当によいか聞いてくるので、yをいれる。その後formatが始まる。SparcStation ELC,500M SCSIで約40分。

format> format
Ready to format. Formatting cannot be intarrupted.
and take 8 minutes (estimated). Continue? y
Beginning format. The current time is Tue Mar  3 07:35:42 1998

Formatting...done

Verifying  media...
        pass 0 - pattern = 0xc6dec6de
   1426/10/54

        pass 1 - pattern = 0x6db6db6d
   1426/10/54

Total of 0 defective blocks pepaired
format>
 終わったら、いよいよパーティーションを割り振る。pertitionと入れて、pertitionメニューに移る。

format> partition
PARTITION MENU:
   a      - change `a' partition
   b      - change `b' partition
   c      - change `c' partition
   d      - change `d' partition
   e      - change `e' partition
   f      - change `f' partition
   g      - change `g' partition
   h      - change `h' partition
   select - select a predefind table
   name   - name the current table
   print  - display the current table
   label  - write patition map and label to the disk
   quit
partition>

 まず、全体のpartitionである、`c'を割り振る。

partition> c
partition c - starting cyl      0, # blocks        0 (0/0/0)
Enter new starting cyl [0]:  0
Enter new # blocks [1004608, 1427/0/0]:  1004608
partition>

 次に、aからfまでを割り振る。

partition> a
partition a - starting cyl      0, # blocks        0 (0/0/0)
Enter new starting cyl [0]:  0
Enter new # blocks [30976, 44/0/0]:  61952
partition> b
partition b - starting cyl      0, # blocks        0 (0/0/0)
Enter new starting cyl [0]:  88
Enter new # blocks [0, 0/0/0]:  164032
partition> d
partition d - starting cyl      0, # blocks        0 (0/0/0)
Enter new starting cyl [0]:  321
Enter new # blocks [0, 0/0/0]:  164032
partition> e
partition e - starting cyl      0, # blocks        0 (0/0/0)
Enter new starting cyl [0]:  554
Enter new # blocks [0, 0/0/0]:  61952
partition> f
partition f - starting cyl      0, # blocks        0 (0/0/0)
Enter new starting cyl [0]:  642
Enter new # blocks [511808, 727/0/0]:   102784
partition>g
partition g - starting cyl      0, # blocks        0 (0/0/0)
Enter new starting cyl [0]:  788
Enter new # blocks [0, 0/0/0]:   449856
partition>

 割り振ったら、labelを書く。

pertition> label
Ready to label disk, continue?  y

pertition> quit
format> quit


Install用OpenBSDを展開

 singleuser modeでmachineを起動する。

# halt
syncing file systems...done
Halted

Program terminated
ok boot -s

 作成したpartitionのうち、OpenBSD用にdを使う。よって、dをfilesystemを作成しmountする。ディレクトリ名は/nbsd

# newfs /dev/rsd1d
/dev/rsd1d:     164032 sectors in 233 cylinders of 11 tracs, 64 sectors
        84.0MB in 15cyl groups (16 c/g, 5.77MB/g, 2624 i/g)
super-block backups (for fsck -b #) at:
32, 11360, 22688, 34016, 45344, 56672, 68000, 79328, 90656,
101984, 113312, 124640, 135968, 147296, 158624
# mkdir /nbsd
# mount /dev/sd1d /nbsd

 OpenBSDのバイナリセットのうち、baseとetcを展開する。

# mkdir /cdrom
# mount -t hsfs -o ro /dev/sr0 /cdrom
# tar zxvfp /cdrom/OpenBSD/2.2/sparc/base22.tar.gz -C /nbsd
# tar zxvfp /cdrom/OpenBSD/2.2/sparc/etc22.tar.gz -C /nbsd


各file作成

 /dev以下に入る各デバイスファイルを作成する。その際、MAKEDEVファイルの上部(2行目以降)にos=SunOSという一行をいれる。

# cd /nbsd/dev
# vi MAKEDEV
os=SunOS
# sh MAKEDEV all

※2.2のMAKEDEVでsd*等SCSI接続機器が作成されない場合は、2.0のMAKEDEVを利用する。その際、2.2のMAKEDEVのあった場所に上書きするとよい。

 fstabの作成

# cd /nbsd/etc
# cat > fstab
/dev/sd0d	/	ffs	rw 1 1
/dev/sd0b	none	swap	sw 0 0
^D
#

 カーネルを展開する。

# cp /cdrom/OpenBSD/2.2/sparc/bsd /nbsd

 Bootの準備

# cp /boot /mnt/boot
# sync; sync
# /usr/mdec/installboot -vlt /nbsd/boot /usr/mdec/bootsd /dev/rsd1d

 リブートする

# halt

ok boot disk0:d bsd


OpenBSDを展開する。

 新たに、BSD4.4ベースのファイルシステムにするため、本領域を初期化し展開する。 そのため、各パーティーションを/nbsdという仮ディレクトリ下にマウントする。

# mkdir /nbsd

 作成したd以外の各パーティーションを初期化し、マウントする。

# newfs /dev/rsd0a
# mount /dev/sd0a /nbsd
# mkdir /nbsd/usr /nbsd/var
# newfs /dev/rsd0f
# mount /dev/sd0f /nbsd/var
# newfs /dev/rsd0g
# mount /dev/sd0g /nbsd/usr
# newfs /dev/rsd0e
# mount /dev/sd0e /tmp
(2.0の場合、作業用tmpは /var/tmpになる。2.1,2.2は/tmp。)

 各バイナリセットを展開する。

# mount -t cd9660 -o ro /dev/cd0a /mnt
# cd /nbsd
# tar zxvfp /mnt/OpenBSD/2.2/sparc/base22.tar.gz
# tar zxvfp /mnt/OpenBSD/2.2/sparc/etc22.tar.gz
# tar zxvfp /mnt/OpenBSD/2.2/sparc/comp22.tar.gz
# tar zxvfp /mnt/OpenBSD/2.2/sparc/man22.tar.gz
# tar zxvfp /mnt/OpenBSD/2.2/sparc/misc22.tar.gz
# tar zxvfp /mnt/OpenBSD/2.2/sparc/text22.tar.gz
# tar zxvfp /mnt/OpenBSD/2.2/sparc/games22.tar.gz

 新たなfstabを作成し、MAKEDEVもする。

# cd /nbsd/etc
# cat > fstab
/dev/sd0a	/	ffs	rw 1 1
/dev/sd0b	none	swap	sw 0 0
/dev/sd0f	/var	ffs	rw 1 2
/dev/sd0g	/usr	ffs	rw 1 3
^d
#
# cd /nbsd/dev
# sh MAKEDEV all

 ブートローダーをinstall。devが、/dev以外で作成されていると動かない。binstall内のPATH=に/usr/mdecを追加する。

# vi /usr/mdec/binstall
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/mdec
# /usr/mdec/binstall ffs /nbsd
1399+1 records in
1399+1 records out
44794 bytes trnsferred in 1 secs (44794 bytes/sec)
#

 カーネルをcopyして、再起動。

# cp /mnt/OpenBSD/2.2/sparc/bsd /nbsd/bsd
# halt

ok boot disk3 bsd


OpenBSDをSetupする

passwd

 起動したところで、rootで入るが、passwdが設定されていないため、何よりも先に設定する。

# passwd
New passwd :

localtime

 machineの時間を設定する。/etc/localtimeに、machineのある時間帯(ここでは日本標準時)を設定する。

# cd /etc
# rm /etc/localtime
# ln -s /usr/share/zoneinfo/Japan localtime
# date 9803191524

Network

 Networkに接続されているので、各Network設定をする。

 /etc/mynameに自分のdomainnameを記す。

# vi /etc/myname
yggdrasil.cn.thu.ac.jp

 /etc/mygateにrouterのIPを記す。

# vi /etc/mygate
202.34.238.39

 /etc/resolv.confにDNS Serverとdomainを記す。

# vi /etc/resolv.conf
domain cn.thu.ac.jp
nameserver 202.34.238.2

 /etc/hostsに自分のIPを記す。

# vi /etc/hosts
127.0.0.1	localhost localhost.my.domain
202.34.238.11	yggdrasil yggdrasil.cn.thu.ac.jp

 /etc/hostname.le0を作成する。
 Ethernet I/Fに hostsで書いたIPをifconfigで設定してみて、pingが通ったら、fileにする。

# ifconfig -a
lo0: flags=8009
        inet 127.0.0.1 netmask 0xff000000
le0: flags=8863
        inet 202.34.238.11 netmask 0xffffff00 broadcast 202.34.238.255

# ifconfig le0 inet yggdrasil
# ping www.cn.thu.ac.jp
PING bbb.thu.ac.jp (202.34.238.62): 56 data bytes
64bytes from 202.34.238.62: icmp_seq=0 ttl=253 time=3.153 ms
64bytes from 202.34.238.62: icmp_seq=1 ttl=253 time=3.153 ms
--- bbb.thu.ac.jp ping statistics ---
2 packets transmitted, 2 packets raceived, 0% packet loss
round-trip min/avg/max = 2.290/2.721/3.152 ms
# echo "inet yggdrasil" > /etc/hostname.le0

/etc/rc.conf

 /etc/rc.conf内の内容を編集する。参考になるものが無かったので、コメントアウトされている物と、FreeBSD 2.2.5内/etc/rc.conf、OpenBSDのmanとを参考にした。

# set these to "NO" to turn them off.  otherwise, they're used as flags
routed_flags="-q"	# for 'normal' use: routed_flags=-q
mrouted_flags=""	# for 'normal' use: mrouted_flags=""  < multicust routeing
rarpd_flags="-a"	# for 'normal' use: rarpd_flags="-a"
bootparamd_flags=NO	# for 'normal' use: bootparamd_flags=""
rbootd_flags=NO		# for 'normal' use: rbootd_flags=""
sendmail_flags="-bd -q30m"	# for 'normal' use: sendmail_flags="-bd -q30m"
named_flags="-b /etc/namedb/named.boot"		# for 'normal' use: named_flags=""
timed_flags=NO		# for 'normal' use: timed_flags=""  < time server
photurisd_flags=""	# for 'normal' use: photurisd_flags=""  < security ??

/etc/rc.local

 画面が焼きついたりすると泣く(特にSS ELC,SLC)ので、/etc/rc.local内にscreenblankを設定しておく。(2.2では/etc/rcに記述済み)

# Start up the screenblank process
#
if[ -f /usr/sbin/screenblank ]; then
       echo "Starting screenblank process."> /dev/console
       /usr/sbin/screenblank
fi

HDD追加

 今までSunOSの入っていたHDDを、OpenBSD上で/homeに割り当てる。 いいかげんに割り振ってあるので、pertitionも再構築したい。よって、SunOSのInstall CDを利用して、そこからformatコマンドを利用する。

# halt

ok boot cdrom
 SunOSのインストーラーが動くので、そのまま、sd0(ID 3)を選択して、HDDをformatに準じてパーティーションの割り当てを行う。今回は、以下の通り。


 割り当てたらOpenBSDをbootして、sd1g(ID 3)をnewfsする。(sd1aは予備に取っておく)

# newfs /dev/sd1g
newfs: /dev/sd1g: not a character-special device
/dev/sd1g:      942656 sectors in 1339 cylinders of 11 tracks, 64 sectors
        460.3MB in 84 cyl groups (16 c/g, 5.50MB/g, 1344 i/g)
super-block backups (for fsck -b #) at:
 32, 11360, 22688, 34016, 45344, 56672, 68000, 79328, 90656, 101984, 113312,
 124640, 135968, 147296, 158624, 169952, 180256, 191584, 202912, 214240,
 225568, 236896, 248224, 259552, 270880, 282208, 293536, 304864, 316192,
 327520, 338848, 350176, 360480, 371808, 383136, 394464, 405792, 417120,
 428448, 439776, 451104, 462432, 473760, 485088, 496416, 507744, 519072,
 530400, 540704, 552032, 563360, 574688, 586016, 597344, 608672, 620000,
 631328, 642656, 653984, 665312, 676640, 687968, 699296, 710624, 720928,
 732256, 743584, 754912, 766240, 777568, 788896, 800224, 811552, 822880,
 834208, 845536, 856864, 868192, 879520, 890848, 901152, 912480, 923808,
 935136, 
#

 今までの/homeの中身をsd1gをmountして移す。

# mount /dev/sd1g /mnt
# cp -R /home/* /mnt

 /etc/fstabを編集し、sd1gを/homeとする。

# vi /etc/fstab
/dev/sd0a       /       ffs     rw 1 1
/dev/sd0b       none    swap    sw 0 0
/dev/sd0f       /var    ffs     rw 1 2
/dev/sd0g       /usr    ffs     rw 1 3
/dev/sd1g	/home	ffs	rw 1 4

daily output(/var/cron/tabs/root)

 共用spoolにmailを転送したので、/etc/daily等の実行結果である、daily output(weekly,monthly)はrootに送られるとまずい場合がある。その場合、/var/cron/tabs内のrootファイルをいじる(FreeBSDでは、/etc/crontabというファイルになっている)。この中では、いつ、何を動かすかという時限起動を設定できるので、その中に以下の記述があるので、そのrootと記述された部分を任意の管理アカウントに変更する。

#       $OpenBSD: crontab,v 1.7 1997/08/18 06:12:51 deraadt Exp $
#
# /var/cron/tabs/root - root's crontab
#
#minute hour    mday    month   wday    command
# do daily/weekly/monthly maintenance
30      1       *       *       *       /bin/sh /etc/daily 2>&1 | tee /var/log/d
aily.out | mail -s "`/bin/hostname` daily output" root
30      3       *       *       6       /bin/sh /etc/weekly 2>&1 | tee /var/log/
weekly.out | mail -s "`/bin/hostname` weekly output" root
30      5       1       *       *       /bin/sh /etc/monthly 2>&1 | tee /var/log
/monthly.out | mail -s "`/bin/hostname` monthly output" root

 また、/etc/daily内においても、ファイル末尾で/etc/securityを実行し、そのlogをroot宛にmailしている為変更する。

sh /etc/security 2>&1 | mail -s "$host daily insecurity output" root

NIS Cliant

/var/yp/bindingをmkdir
/etc/defaultdomainにNISのドメイン名を指定
heisei-nis
vipwでpasswdファイルの最終行に+:::::0:0:::を追加する
groupの最終行に+:を追加


カーネルの再構築

 SparcStation ELCにはフロッピードライブが付いていないので、不要と判断しカーネルから削るが、BSDではデバイスドライバが一緒になっているのでカーネルを再構築せねばならない。

 雑誌付録のCDROMから、システムのソースファイル部分のみ入ったsrcsys.tar.gzを展開する。

% tar zxvf /mnt/OpenBSD/2.2/srcsys.tar.gz -C /usr/src

 展開後、SUN4Cをコピーしたものを編集し、コンパイルする。
% cd /usr/src/sys/arch/sparc/conf
% cp SUN4C HMX-13
% vi HMX-13

% config HMX-13
% cd ../compile/HMX-13
% make depend
% make
% cp /bsd /bsd.old
% cp ./bsd /bsd
 総じて1時間ぐらいかかる。


Xを展開する

 日本語化されていないコンソールでは、JIS等の文字コードは表示できない。lessにisoパッチをあてても結局はkterm等の日本語コードを表示できる環境が必須である。そこで、Xを入れて国際化クライアントにした上でktermが動く環境の構築が必要になる。
 OpenBSD 2.2には、X11R6.3と同等の環境を提供するXFree86の3.3.1がバイナリで提供されているので、これを利用する。各ftpサイト(特にftp.tut.ac.jp豊橋技科大は日本においてofficial mirrorになっている模様)から持ってきても良いが、UNIX User付属のCDを利用してきているため、これを利用する。OpenBSDのディレクトリの下にXという名のディレクトリがあるので、そこの中身を全て一度任意の場所に移しておこう。

% cd
% mkdir X
% cd X
% cp /cdrom/OpenBSD/2.2/sparc/X11/* ./

 簡単な説明のファイルが添付されています。README,README.sparc,RELNOTES等に目を通しておきましょう。ここでは、README.sparcの通りに行います。

 まず、Xを入れるディレクトリを作成し、各ファイルを展開させるshを動かします。

% cd /usr
% su
# mkdir X11R6
# cd X11R6
# sh /home/arai/X11/preinst.sh
# /home/arai/X11/extract /home/arai/X11/X331*.tgz
# sh /home/arai/X11/postinst.sh

 利用する環境に対応したディスプレィサーバにシンボリックリンクを張ります。今回は、SparcStation ELCというモノクロディスプレィ一体型機ですので、XSunMonoを使用します。

# ln -fs /usr/X11R6/bin/XsunMono /usr/X11R6/bin/X

 各ユーザが、/usr/X11R6/binにパスが通るようにしておきましょう。新規ユーザの為に、/usr/share/skel/dot.cshrcファイルを編集して、パスを書いておくと良いかも知れません。


Xfree86 3.3.1を再コンパイルする

 上記標準添付バイナリを展開しただけでは、日本語の表示はするが国際化されたアプリケーションを動かすとエラーメッセージを頻発する。それは、OpenBSDがlocaleをサポートしていないためです。よって、X上のXlocaleを使用するしか無いようですが、標準配布バイナリのXはXlocaleをサポートしていません。よって、再構築が必要です。詳しくは以下のサイトを読んでください。


雑感

MAKEDEVでデバイス作成できない

 SunOSから、/dev内のファイル群を作成するときに/dev/MAKEDEVを実行するわけだが、どうも2.2や2.1のMAKEDEVはSunOS上で動作しない。 正式には、sd*やcd*等、SCSI接続のデバイスが作成されない。 release-noteに2.0から2.1にする時、MAKEDEVを書き替えた旨が見られるがその為の模様。ELC機種依存なのか、SunOS4.1.2依存なのかは不明。 他で動くのかも不明。

kerberosって?

 インストールした後、何か知らないけどログインするとkerberosが無いぞって言われるんですよ。 kerberosって何?初耳です。man afterbootやman kerberosで読んでみるけれども、何が何やらさっぱり。 調査すると、以下のサイトを発見しました。
Kerberos Notes for Japanese
 日本語で書いてあっても理解が出来なかったので、野放しにすることに決定しました。使わないし。

photurisdって?

 /etc/rc.confで出てくる設定のうちに、デフォルトで入っているもの。色々な所を流し読みした結果、PhoturisとはIPv6でのIP層セキュリティにおける、帯域外鍵管理プロトコルという物であるようだ。 以下の場所に多少説明がある。
36th IETF Report
rfc1825 日本語訳
 と、いうことは、IPv6を使っていない現在は不要なのではないだろうか。FreeBSD 2.2.5では動いていない。害はなさそうなのでそのままだが、manで見るとなにやら設定せねばならなさそうだ。

binstallでエラーが出てbootセクタが入らない

 二度目のブートローダをinstallする際、OpenBSDのbinstallを使うがエラーで入れられなかったときがある。 それは、最初のSunOSの入っていたブートパーティションからboot部分が抜けていないためである。どんな時に起こるかというと、HDDをフォーマットせずパーティションの再割り当てのみでごまかした場合に書き込めないようである。 よって、フォーマットは必須と考えられた。


参考
UNIX USER 1997/2 SPARCアーキテクチャにOPENBSDを
OpenBSD/NetBSD Japanese Environment Setup Guide
OpenBSD
NetBSD/FreeBSD のページ
NetBSD/sparcを使ってみよう
Life with BSD