2007年 5月 02日 水曜日
Messages in cipher reflected in the looking glass
(JA) Diskless Solaris (x86編) その1:ディスクレスクライアント構築
最近というわけでは無いですが、Sun RayのようなThin Clientとは別にDiskless PC環境というものが利用されていることがあります。
( Sun Ray, Diskless PC にはそれぞれ利点・欠点があるので、
ケースバイケースでしょう。)
Diskless PC(UNIX)環境では主に Linux が用いられていますが、Solarisではできないのか?という質問を受けることもあります。
Solaris における Diskless環境のサポートは、Solaris 8からはじまっています。
ということで、いろいろ実験してみたことをまとめておきたいと思います。
内容が非常に多いので数回にわけて行いたいと思います。
テスト環境での結果ですので、将来的には機能の変更・改善等が本体に行われるかもしれません。
対象は Solaris 10 11/06(サーバはRecommended Patch適用済み)。
サーバは x4200m2, クライアントは w1100z というホスト名にしています。
マニュアルは、docs.sun.com の
Solaris 10 System Administrator Collection - Japanese >> Solaris のシステム管理 (基本編)
第 7 章 ディスクレスクライアントの管理 (手順) : http://docs.sun.com/app/docs/doc/819-0378/6n2qdlvpi?a=view
の
「x86: GRUBベースの起動環境にディスクレスクライアントを追加するための準備方法」を参照しています。
- ディスクレスクライアントプラットフォーム = i386.i86pc.Solaris_10 (instruction-set.machine-class. Solaris-versionという形式になるらしい)
- インストール用Solarisのイメージ : /export/install/sol_10_1106_x86 (要するにインストールサーバのセットアップ先)
- ディスクレスクライアント用のOSイメージ(自動的に選択されるものもあります)
- root(/) = /export/root
- swap = /export/swap
- /usr = /export/Solaris_10/usr_i386.all/usr (/export/exec/Solaris_10_i386.all/usr)
- /opt = /export/Solaris_10/opt
- ロケール = ja
ここでは Solaris 10 11/06 DVDを利用してインストールサーバを構築します。
(ディスクレス環境のセットアップなどにインストールサーバ環境を利用するようです。)
インストールサーバの構築には DVD(CDでも可) に入っている
setup_install_server コマンドを利用します。
# mkdir -p /export/install/sol_10_1106_x86 # cd /cdrom/sol_10_1106_x86/Solaris_10/Tools # ./setup_install_server /export/install/sol_10_1106_x86 Verifying target directory... Calculating the required disk space for the Solaris_10 product Calculating space required for the installation boot image Copying the CD image to disk...
という感じで進んでいきます。
次に先ほどセットアップしたインストールサーバを利用し、
ディスクレスクライアント用のOSイメージの作成を行います。
まず、/etc/default/init の LANG 設定を確認します。 通常、LANG=ja などのような日本語設定になっていると思いますが、 ディスクレスクライアント環境構築用のコマンドが LANG=ja では動きません。 そのため、LANG=C と変更し、再起動します。
LANG=C #LANG=ja
ディスクレスクライアントの設定は /usr/sadm/bin/smosservice
コマンドで行います。
このコマンドの実行前に JAVA_HOME, LD_LIBRARY_PATH を設定する必要があります。
# JAVA_HOME="/usr/j2se" ; export JAVA_HOME # LD_LIBRARY_PATH="/usr/sadm/lib/wbem:/usr/snadm/lib" ; export LD_LIBRARY_PATH
環境変数の設定が済んだら、smosservice add を利用して OSイメージを作成します。
オプションは次の通りです。
- -H host:port : SMC(Diskless Client情報)の管理ホスト。(ここでは x4200m2:898)
- -o os_server :OSイメージのあるサーバ ( ここでは x4200m2 )
- -x mediapath=path :インストール元のイメージ (ここでは /export/install/sol_10_1106_x86 )
- -x platform=platform : インストールするアーキテクチャ (ここでは i386.i86pc.Solaris_10 )
- -x cluster=cluster : インストールするパッケージグループ (SUNWCXallを必ず指定する)
- -x locale=locale : 言語 (ここでは ja)
# /usr/sadm/bin/smosservice add -H x4200m2:898 -- -o x4200m2 -x \ mediapath=/export/install/sol_10_1106_x86 -x platform=i386.i86pc.Solaris_10 \ -x cluster=SUNWCXall -x locale=ja Authenticating as user: root Type /? for help, pressingaccepts the default denoted by [ ] Please enter a string value for: password :: Loading Tool: com.sun.admin.osservermgr.cli.OsServerMgrCli from x4200m2:898 Login to x4200m2 as user root was successful. Download of com.sun.admin.osservermgr.cli.OsServerMgrCli from x4200m2:898 was successful.
OSイメージの削除も smosservice コマンドを利用して行います。
(オプションは delete )
その際、削除対象のプラットフォームを指定する必要がありますが、
プラットフォームの2つめの部分は i86pc ではなく all と指定します。
# /usr/sadm/bin/smosservice delete -H x4200m2:898 -- -x rmplatform=i386.all.Solaris_10
smosservice add での OS インストールでは ARCH=all 指定のパッケージが
インストールされないので、追加します。
マニュアルでは root(/) および /usr 以下の ARCH=all となっているパッケージが
追加されないと書いてありますが、
/opt 以下のもの(SUNWmlibk)も追加されていないようです。
これらも念のために追加しておきます。
ARCH=all のパッケージを調べるには次のようにします。
# cd /export/install/sol_10_1106_x86/Solaris_10/Product
# find ./ -name pkginfo -exec grep -w ARCH=all {} /dev/null \;
./SUNWjdmk-base/pkginfo:ARCH=all
./SUNWjhdem/pkginfo:ARCH=all
./SUNWjhdev/pkginfo:ARCH=all
./SUNWjhdoc/pkginfo:ARCH=all
./SUNWjhrt/pkginfo:ARCH=all
./SUNWmlibk/pkginfo:ARCH=all
パッケージのインストール先は SUNW_PKGTYPE, BASEDIR などで調べられます。
(マニュアルでは SUNW_PKGTYPE=root, SUNW_PKGTYPE=usr で調べています。
BASEDIRで調べた結果のようにSUNWmlibkのみ/optにインストールするパッケージのようです)
# grep -w SUNW_PKGTYPE ./SUNWjdmk-base/pkginfo \ ./SUNWjhdem/pkginfo ./SUNWjhdev/pkginfo \ ./SUNWjhdoc/pkginfo ./SUNWjhrt/pkginfo ./SUNWmlibk/pkginfo ./SUNWjdmk-base/pkginfo:SUNW_PKGTYPE=usr ./SUNWjhdem/pkginfo:SUNW_PKGTYPE=usr ./SUNWjhdev/pkginfo:SUNW_PKGTYPE=usr ./SUNWjhdoc/pkginfo:SUNW_PKGTYPE=usr ./SUNWjhrt/pkginfo:SUNW_PKGTYPE=usr # grep -w BASEDIR ./SUNWjdmk-base/pkginfo \ ./SUNWjhdem/pkginfo ./SUNWjhdev/pkginfo \ ./SUNWjhdoc/pkginfo ./SUNWjhrt/pkginfo ./SUNWmlibk/pkginfo ./SUNWjdmk-base/pkginfo:BASEDIR=/usr ./SUNWjhdem/pkginfo:BASEDIR=/usr ./SUNWjhdev/pkginfo:BASEDIR=/usr ./SUNWjhdoc/pkginfo:BASEDIR=/usr ./SUNWjhrt/pkginfo:BASEDIR=/usr ./SUNWmlibk/pkginfo:BASEDIR=/opt
パッケージがインストールされていないことを確認します。
# pkginfo -R /export/Solaris_10 SUNWjdmk-base \ SUNWjhdem SUNWjhdev SUNWjhdoc SUNWjhrt SUNWmlibk ERROR: information for "SUNWjdmk-base" was not found ERROR: information for "SUNWjhdem" was not found ERROR: information for "SUNWjhdev" was not found ERROR: information for "SUNWjhdoc" was not found ERROR: information for "SUNWjhrt" was not found ERROR: information for "SUNWmlibk" was not found
/usr 以下にインストールされるパッケージの追加用にインストール管理ファイルの作成します。basedir がマニュアルとは違います(x86用に書き換えています)。
# cat >/tmp/admin_usr <<EOF mail= instance=unique partial=nocheck runlevel=nocheck idepend=nocheck rdepend=nocheck space=nocheck setuid=nocheck conflict=nocheck action=nocheck basedir=/usr_i386.all EOF
インストールは下記のように行います。
# pkgadd -R /export/Solaris_10 -a /tmp/admin_usr -d . SUNWjdmk-base
<SUNWjhrt> JavaHelp Runtime(all) 2.0,REV=2004.11.23
<SUNWjhdev> JavaHelp Development Utilities(all) 2.0,REV=2004.11.23
をインストールしようとすると、
No compatible version of Java is installed. checkinstall script suspends
という警告が出てインストールされませんでしたので、JavaHelpパッケージ系はインストールせずに、SUNWjdmk-base のみインストールしています。
つづいてSUNWmlibkのインストールですが、/usrの時と同様に行います。
(インストール管理用ファイルの中身が多少異なります。
# cat >/tmp/admin_opt <<EOF mail= instance=unique partial=nocheck runlevel=nocheck idepend=nocheck rdepend=nocheck space=nocheck setuid=nocheck conflict=nocheck action=nocheck basedir=/opt EOF # pkgadd -R /export/Solaris_10 -a /tmp/admin_opt -d . SUNWmlibk
ここまででOSイメージの作成まで済んだので、今度はクライアント情報の登録を行います。
/etc/hosts にクライアントのエントリを追加します。
192.168.0.100 w1100z
ディスクレスクライアントの情報を登録します。
/usr/sadm/bin/smdiskless add -- -i 192.168.0.100 -e 01:02:03:04:05:06 \ -n w1100z -x os=i386.i86pc.Solaris_10 -x root=/export/root/w1100z \ -x swap=/export/swap/w1100z -x swapsize=512 -x tz=Japan -x locale=ja
オプションは下記の通りです。
- -i : クライアントのIPアドレス
- -e : クライアントのMACアドレス
- -n : クライアントの名前
- -x os=<ostype> : クライアントのOS種別(ここでは i386.i86pc.Solaris_10)
- -x root=<dir> : root(/)ディレクトリ(サーバ上)
- -x swap=<file> : スワップファイル(サーバ上)
- -x swapsize=<int> : スワップファイルの大きさ(MBytes単位)
- -x tz=
: タイムゾーン - -x locale=
: ロケール - -x locale=
x86系でディスクレスクライアントを利用するためには tftp サーバが必要となりますので、サービスの起動を行います。
tftpサーバから提供されるデータはディスクレスクライアントの登録時に自動的に設定されていますので特に追加作業等は必要ありません。
まず、/etc/inetd.conf ファイルの tftp 行を有効にします。
エントリが次のようになっているか確認します。
#でコメントアウトしてある場合は外します。
tftp dgram udp6 wait root /usr/sbin/in.tftpd in.tftpd -s /tftpboot
サービスの起動を行います。
# /usr/sbin/inetconv inetconv: Notice: Service manifest for 100235/1 already generated as /var/svc/manifest/network/rpc/100235_1-rpc_ticotsord.xml, skipped tftp -> /var/svc/manifest/network/tftp-udp6.xml Importing tftp-udp6.xml ...Done
in.tftpd が正しく動作しているか確認します。
# svcs network/tftp/udp6 STATE STIME FMRI online 17:48:28 svc:/network/tftp/udp6:default
x86環境でのディスクレスブートにはDHCPサーバが必要になります。
そのため、DHCPサーバの設定および起動を行う必要があります。
Solaris では DHCP マネージャというGUIベースの設定ツールがありますので、
これを利用して DHCP の設定を行うのが一番簡単でしょう。
DHCPマネージャの起動は以下のように行います。
# /usr/sadm/admin/bin/dhcpmgr
IPアドレスやホスト名は既にサーバの /etc/hosts などに登録されているので
同じものを登録する必要があります。
また、IPアドレスをディスクレスクライアントに対して固定するために
IPアドレスに対して「クライアントID」の設定を行います。
デフォルトでは00となっており、任意のクライアントにIPアドレスを貸し出すことができます。
この部分を 01[MAC Address of diskless client] (01ffeeddccbbaaのような感じ)
に変更することで、固定することができます。
また、dhcpが利用するマクロに対し、以下のオプションを追加する必要があります。
DHCPマネージャの「マクロ」タブからこの情報にアクセスできます。
BootSrvA: server-ip-address BootFile: client-macro
smosservice でディスクレスクライアントを登録すると、/tftpboot に
01[MAC Address of diskless client] という名前でブート用のイメージが自動的に作成されます。
BootFile の項目にはこれを指定します。パスは指定する必要は無く、01[MAC Address of diskless client] のみでかまいません。
smosservice はディスクレスクライアント毎にブートイメージおよび
grub.lst へのリンクを作成しますが、
ディスクレスクライアントの環境が共通する場合、
ひとつのマクロを共有しても特に問題はありませんでした。
ここまででディスクレスクライアントの設定は終了しました。
あとは、クライアントをネットワークブートすることにより、
Diskless Solaris環境が利用できるようになります。
初回起動時は通常のSolarisインストールと同様に設定を行いますので、
起動時に時間がかかります。
また、この時点ではCDEしか利用できません。
次回はGNOMEの利用方法などについて解説します。
Posted at 05:45午後 5 02, 2007 by Yasuhiro Fujitsuki in Linux & Solaris | 投稿されたコメント[2]
Posted by ゆ(ry on 5月月 05日, 2007年 at 06:02 午後 JST #
Posted by thaniwa on 5月月 05日, 2007年 at 10:15 午後 JST #