フリーSolarisでここまでやれる! |
山森丈範 YAMAMORI Takenori ●yamamori |
さて,筆者の場合は少し違う方法をとりました. かなり特殊な事例だと思いますが,筆者はふだん, SunOS4.1.4 をメインで使用していて,これを NFS/NIS を始めすべてのサーバにしています. そして,その他のマシンはすべてディスクレスマシンとして,しかも複数の OS をマルチブートするという方法をとっています. ディスクレスでマルチブートされる OS には,Solaris2.5.1/2.6 もあり,また NetBSD/sparc, OpenBSD/sparc, Linux/sparc, NetBSD/hp300 等もあります.
今回の Free Solaris 7 も,ディスクレスクライアントの一員になります. ディスクレスだからといって設定は難しくありません. トラブル時にはサーバ側からファイル操作できる等の利点があり, むしろローカルディスクでのブートよりも簡単です.
ここでは,実際の筆者の環境に沿って,SunOS4.1.4 をブートサーバにして Free Solaris 7 をディスクレスブートする方法を例にとって紹介します.もちろん,Linux, NetBSD, OpenBSD, FreeBSD など他の OS をブートサーバにすることもでき,その場合もやることは基本的には同じです. ただし,Linux の場合は rarpd が無く,RARP がカーネル自体に実装されているなど,ちょっと違う点があるので注意してください.
作業は以下の手順になります.
ブートサーバ | Solaris 7(CD-ROMミニルート) | Solaris 7(本番Diskless) | |
---|---|---|---|
hostname | server | cdrominst | client |
IP address | 192.168.1.3 | 192.168.1.252 | 192.168.1.65 |
Ethernet address | --- | 08:00:20:XX:XX:XX | |
NFS root | --- | server:/cdrom/Solaris_2.7/Tools/Boot | server:/diskless/solaris2.7/root/client |
さて,ここで今回のインストールのポリシーを御説明しましょう. ここまでの文章で気づかれたかも知れませんが,今回の (今回も) インストールでは,いわゆるインストーラを全く使用しません. (pkgadd コマンドは使う) すべて,自分で納得しながら手作業で進めます. この方が,OS そのものの構成や,そのブートの仕組みにじかに触れることができ,個人で趣味で使う OS としての Free Solaris の趣旨にも則ることができると思います.
さらに,もうひとつ条件を加えました. インストール対象のマシンは,モニターもキーボードも付いていないもので, Ethernet と RS-232C 以外は手足が無いマシンとします. (ただし,あとでモニターとキーボードを繋いで X11R6.4 を立ち上げたりはします)
クライアントマシンの ttya
からクロスケーブルで,ブートサーバのたとえば ttyb
に接続します.そして,ブートサーバ上の xterm 内で tip
を起動して,シリアルポートを開けば,
これがクライアントマシンのコンソールになります.なお,Sun のマシンでは,
NVRAM
の設定を特に変更しなくても,本体にキーボードが繋がっていないと,自動的に
ttya がシリアルコンソールになります.
(注:tip の使い方)
08:00:20:xx:xx:xx cdrominst #08:00:20:xx:xx:xx client |
左側のイーサネットアドレスは,これから Solaris 7 をインストールするクライアントマシンのものです. 同じアドレスで2行書き,まずは1行目のホスト名 cdrominst でブートして,その環境で本番 NFS ルート上にファイルを展開し,その後に,1行目の方をコメントアウトして, 本番のホスト名 client でブートします.
サーバマシン上で rarpd が動いていなければ
# rarpd -a
で起動してください.
Solaris 2.x では,ネットワークブート時に tftp で読み込まれるファイルは inetbootという名 前のファイルで,これは Solaris 2.x の ELF 形式ではなく,SunOS 4.x の a.out 形式のファイルです.
まずはこのファイルを CD-ROM から取り出さなくてはなりません.Solaris 7 の OS の入った CD-ROM をブートサーバの /cdrom にマウントし,
/cdrom/Solaris_2.7/Tools/Boot/usr/platform/sun4c/lib/fs/nfs/inetboot
から取り出します.(PATH 中の sun4c は,インストールするクライアントのカーネルアーキテクチャーによって 読み替えて下さい. 筆者の場合は SPARCstation2 なので sun4c です).なお,カーネルアーキテクチャを知るには uname -m または arch -k コマンドを実行します.詳細は man arch をご参照下さい.
inetboot をブートサーバの /tftpboot 以下にコピーし,クライアントマシンに割り当てる IP アドレスの16進名を用いたファイルとシンボリックリンクします (cdrominst,client の2つともシンボリックリンクします)
# umask 22 # mkdir /tftpboot # cd /tftpboot # cp -p /cdrom/Solaris_2.7/Tools/Boot/usr/platform/sun4c/lib/fs/nfs/inetboot . # chmod 444 inetboot # ln -s inetboot C0A801FD.SUN4C # ln -s inetboot C0A80141.SUN4C(注:Intel版のネットワークブート)
/etc/inetd.conf の中の,
tftp dgram udp wait root /usr/etc/in.tftpd in.tftpd -s /tftpboot
という行を見つけ,コメントアウトされている場合はそのコメントを外し, 次のように実行します.
# kill -HUP <inetdのプロセスID>
cdrominst \ root=server:/cdrom/Solaris_2.7/Tools/Boot \ install=server:/cdrom client \ root=server:/diskless/solaris2.7/root/client |
bootparamd が動いていなければ
# rpc.bootparamd
で起動します.
192.168.1.252 cdrominst 192.168.1.65 client |
今回は NIS を使用しているので,NIS makeします.
# cd /var/yp # make
/diskless -root=cdrominst:client /cdrom -ro,root=cdrominst |
必ず CD-ROM をマウントしてから "exportfs -a" します.
# mount /cdrom # exportfs -a
これで,Solaris 7 がネットワーク越しに CD-ROM からブート可能です.クライアントマシンの電源を入れ,ok プロンプトから
ok boot net -s
でブートします.
Select a Language 0) English 1) German 2) Spanish 3) French 4) Italian 5) Swedish ? |
ok setenv boot-device net boot-device = net ok |