Solaris 9 のインストールと設定 / Ultra 30

$Id: ultra30-software.html,v 1.1 2003/03/19 05:21:41 aamine Exp $

「コンピュータ、ソフトなければただの箱」と昔の人は言いました。 Ultra 30 にもソフトウェアを入れることにします。 ちなみに筆者は Solaris は初めてなのであまり信じないほうがいいでしょう。

OS (1) 準備

IA Solaris なんてのもあるけども、 やっぱ Sparc なら Solaris、Solaris なら Sparc でしょ。 Solaris 9 は Sun から無料でダウンロードできるのでこれを入れる。 ちなみに全部で最低でも CD 3 枚分、1GB くらいはダウンロードしないと いけないので高速回線じゃないと死ぬよ。 gzip されてるので、ダウンロードしたら解凍してそのまま CD-R に焼けば準備完了。 できたのは以下の 3 枚。

ところで、家の Ultra 30 にはフレームバッファ (グラフィックアダプタ) が入ってない。 つまりモニタがつなげない。ということは、必然的にシリアル経由で操作することになる。 こういうとこがワークステーションは便利なんだよなあ。

シリアル接続するには、フツーの RS232C のクロスケーブルを買ってきてつなぐだけ。 Sparc 側にシリアルが複数ある場合は、コネクタに A・B と書いてあるので A のほうにつなぐ。 またアダプタは D-Sub 15 ピン。PC98 と同じものなので、 「PC98 用」と書いてあるケーブルを買ってくればそのまま使える。

と偉そうに書いているものの、実際には何度か試してみて失敗している。 最初なんてなぜかパラレルのコネクタにつないでて、何も表示されなくて泣きそうになった。 あとはストレートケーブルでつないでしまうというのもありがちだな。

シリアル接続のためのソフトウェアは、Linux なら kermit とかを使う。 Windows なら teraterm。ハイパーターミナルでもいいはずだけど 試したらなんでかうまくいかなかった。kermit の場合は次のように打てば OK。

set modem type none
set line /dev/ttyS0
set carrier-watch off
set parity none
set stop-bits 2
connect

ようするに 9600baud、8bit、パリティなし。 これも最初 parity none を指定するのを忘れて酷いめにあったりした。

OS (2) Solaris 9 インストール

キーボードをつながずに電源を入れると勝手にシリアルがコンソールになり、 ファームウェアが次のように応答してくる。

Screen not found.
Can't open input device.
Keyboard not present.  Using ttya for input and output.

Sun Ultra 30 UPA/PCI (UltraSPARC-II 248MHz), No Keyboard
OpenBoot 3.9, 256 MB memory installed, Serial #*******.
Ethernet address *:*:*:*:*:*, Host ID: ********.


ok

このマシンにはテスト用に Solaris 2.6 が入っているので、 このまま放っておくとブートしてしまう。 そこで BREAK シグナルを送ってブートを止める。 Sun キーボードだと Stop + A らしいが kermit の場合は Ctrl-\ + B で BREAK が送れる。

「ok」ってのがプロンプトで、help と打つとちゃんとヘルプが出たりする。 そんで boot がブート用コマンドだということがわかったので、 勘で boot cdrom と打ってみよう (もちろん CD-ROM ドライブに Solaris のインストール CD を入れとく)。 すると……

ok boot cdrom
Boot device: /pci@1f,4000/scsi@3/disk@6,0:f  File and args: 
SunOS Release 5.9 Version Generic_112233-03 64-bit
Copyright 1983-2002 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.
Configuring /dev and /devices
Using RPC Bootparams for network configuration information.
Skipping interface hme0
Searching for configuration file(s)...
Search complete.

The Solaris Installer can be run in English, or any of the following languages:

 1) English                            6) Japanese
 2) German                             7) Korean
 3) Spanish                            8) Swedish
 4) French                             9) Simplified_Chinese
 5) Italian                           10) Traditional_Chinese
Select the language you want to use to run the installer:

うまくいってしまった。せっかくなので 6) の日本語でやってみる。 シリアル接続だからと言って特に問題はなかった。 内容も Linux とか FreeBSD をインストールしたことがあれば特に迷うところはない。 Linux しか使ったことがない人は、Solaris では「パーティション」は「スライス」 と呼ぶことを覚えておくとよいかもしれない。 ついでに言うとスライス 2 はディスク全体を表すので使ってはいけない。 と『Solaris システム管理入門』に書いてあった。

この後はインストールするパッケージを選んで、スライスを切れば終わり。 パッケージは「開発者構成」とかいろいろあったけど、 買ってきた Ultra 30 はディスクが 2GB しかないのでとりあえず最小構成にしとく。 と言うか、2 時間くらいかけてパッケージを全部選んだあとに「ディスクが足りない」 と言われて、泣く泣く最小に戻した。ちなみに最小だと 200MB くらい。

それと Solaris では /tmp などが tmpfs というファイルシステムで 実装されていて、スワップ領域からスペースを取るようになってる。 だからスワップ領域が結構デカいし、必ず取らないといけない。 Solaris 9 だと「最低 382MB は取れ」と言われた。 今回は、さっき言ったとおりディスクが小さいので最小の 382MB で逝くことにする ちなみに今日知ったことだけども、Linux 2.4 にも tmpfs がある。

残りのスライスへのディスク配分もかなり迷うところだけども、 後でもう一台ディスクを追加することにして、スライスは切らないことにした。

ディスクの状況 (これはいろいろインストールした後)

ultra30:~ % df -h
Filesystem             size   used  avail capacity  Mounted on
/dev/dsk/c0t0d0s0      1.6G   478M   1.0G    31%    /
/proc                    0K     0K     0K     0%    /proc
mnttab                   0K     0K     0K     0%    /etc/mnttab
fd                       0K     0K     0K     0%    /dev/fd
swap                   561M    16K   560M     1%    /var/run
swap                   560M     0K   560M     0%    /tmp
/export/home/aamine    1.6G   478M   1.0G    31%    /home/aamine

あ、そうだ、タイムゾーンは「Japan」にするのが正しいみたい。 最初「+9」としてしまってハマった。

それとネットワークの知識がちょっとはないと困るかもしれない。 まあ Solaris 使おうってのに IP の知識が全然ないってことはないと思うけど……。

アカウントを作る

インストールしてまずすることと言えば。 ……そりゃもちろん telnet 接続 (つーか TCP) に切り替えることでしょ! シリアル接続 (9600baud) は遅くて泣ける。

インストールのときにちゃんとネットワークを設定しておけば telnetd (inetd) は動いているので、ユーザアカウントだけ作れば telnet で入れる。 そこでまずはユーザアカウントを作らないといけない。

アカウントを作るには、普通に useradd でいける。 ただし初期設定だと /home は automountd の管理下にあるため使えない。 そこで、

# unmount /home
# vi /etc/auto_master   # /home のエントリを消す

として /home のコントロールを取り戻す。

だけど今回はなんか automount が面白かったので活用してみることにした。 この場合、/export/home/XXX を作って /home/XXX にループバックマウントする。 そうすると /export/home/XXX でも /home/XXX でも全く同じに使えるようになる。 設定はこんな感じ。

ultra30:~ % cat /etc/auto_master
+auto_master
/net            -hosts          -nosuid,nobrowse
/home           auto_home       -nobrowse
/xfn            -xfn

ultra30:~ % cat /etc/auto_home
*       localhost:/export/home/&

/etc/auto_home では「*」とかのワイルドカードが使えるので便利だ。 詳細は automount(1M) に書いてある。

CD-ROM をマウント

このあとパッケージを入れるためにも CD-ROM はどうしても マウントしないといけない。そのためにここで設定しておく。 Solaris/Sparc では CD-ROM のデバイスファイルは伝統的に /dev/dsk/c0t6d0s0 らしい。c0t6d0s0 というのは

という意味。

んで Linux で言う /etc/fstab は /etc/vfstab なので、

/dev/dsk/c0t6d0s0 -             /mnt/cd         hsfs    no      no      ro,nosuid

と追加してみる。これで /mnt/cd にマウントできるようになった。 (ルートディレクトリにベタベタとディレクトリを置くのは嫌いなので /cdrom にはしたくない)

パッケージのインストール

最小構成にしたのでソフトウェアが全然足りない。たとえば less すらない。 コンパイルしようにも cc がない。チマチマと入れていくことにする。

パッケージのインストールには /usr/sbin/pkgadd を使う。 最初 /usr/bin ばっかり探してて見付からないのでちょっとあせった。 ちなみに Solaris の /bin は /usr/bin へのシンボリックリンクで実体がない (でも /sbin はある)。

パッケージを入れるには、/mnt に CD-ROM ドライブをマウントしてるとすると、

# pkgadd -d /mnt/Solaris_9/Product

とする。すると CD-ROM に入ってるパッケージの名前がズラーッと出てくるので 番号を選べばいい。でも 500 もパッケージが並んでると何がなんだかわからないので、 パッケージ名を直に指定するほうが楽かもしれない。そのときは

# pkgadd -d /mnt/Solaris_9/Product パッケージ名

とすれば、いきなりそのパッケージだけがインストールされる。

ではパッケージ名はどうやって探すかというと、 たぶんちゃんとした方法があるんだろうけども俺は知らないので、 CD-ROM のパッケージがあるディレクトリを直接見て探した。 Solaris9/Product/ 以下にパッケージ名と同じ名前のディレクトリがズラズラ並んでて、 その中にある pkgmap にはインストールするファイルが書いてあるし、 pkginfo にはそのパッケージの説明が書いてある。 だから grep とかを駆使すれば欲しいものはたいてい見付かる。

コンパイラを動かす

ああ、それにしても ksh は使いにくい。なんでこんなに使いにくいんだろう。 ファイル名補完は ESC 二回でできるけど、候補が複数あるときに候補を表示してくれないので 非常に使いにくい。まずは zsh を入れよう。 と思ったけどパッケージの zsh は zsh 3.x だった。 最新のが欲しいからコンパイルしよう。

しかし Solaris 9 には cc がない。適切なパッケージを入れておけば /usr/ucb/cc というファイルができるんだけども、 それが使うファイルが入っていないので実行しても結局エラーになる。 コンパイラを手に入れるには Sun のコンパイラを買うか、gcc を使う。 gcc のバイナリは Sun Freeware から取れる (以下は日本のミラー)。

適切なパッケージを持ってきて gzip 圧縮を解凍し、

# pkgadd -d パッケージファイル

とすればいい。

またこの gcc はコンパイラだけで、ld は Sun のものを使うようになっている。 それにもちろん make や ar も必要だから、それは別にパッケージで入れておく必要がある。 SUNWtoo パッケージに ld、SUNWsprot パッケージに as と make が入ってる。 それから、こいつらは /usr/bin じゃなくて /usr/ccs/bin に入っているので、 そっちにパスを通しておく必要もある。

コンパイラが動いてしまえばもうこっちのものだ。 足りなければ自分でコンパイルして入れればいい。 好みのシェル、sudo、GNU ls あたりを入れておくのがよさげである。

デカいものをコンパイルしてみたところ、いろいろヘッダファイルが足りないようだ。 これも適切なパッケージを探して入れておく。SUNWhea とか、いくつかに分かれてる。

これだけでいいのか?

まあ、外向けサーバでなければいいんじゃないですかねえ。 強いて言うと sshd の設定はしたけど。

Copyright (c) 1998-2003 Minero Aoki <aamine@loveruby.net>