$Id: ultra30-software.html,v 1.1 2003/03/19 05:21:41 aamine Exp $
「コンピュータ、ソフトなければただの箱」と昔の人は言いました。 Ultra 30 にもソフトウェアを入れることにします。 ちなみに筆者は Solaris は初めてなのであまり信じないほうがいいでしょう。
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 を指定するのを忘れて酷いめにあったりした。
キーボードをつながずに電源を入れると勝手にシリアルがコンソールになり、 ファームウェアが次のように応答してくる。
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 はどうしても マウントしないといけない。そのためにここで設定しておく。 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>