この節では、ディスクレスクライアントを管理するときに発生する問題と、それらに適用できる解決方法について説明します。
smosservice add コマンドを実行しても、ルート (/) および /usr ファイルシステム内の ARCH=all が指定されているパッケージは、いずれもインストールされません。つまり、これらのパッケージは読み飛ばされます。警告やエラーメッセージは表示されません。これらのパッケージは、新規に作成した Oracle Solaris OS サービスに手動で追加する必要があります。この作業は、Solaris 2.1 OS 以降で発生します。この作業は、SPARC および x86 の両方のクライアントに適用されます。失われるパッケージのリストは、稼働している Oracle Solaris リリースによって異なります。
ここでは、Oracle Solaris OS サービスをサーバー上に作成したあとに、失われた ARCH=all パッケージを検出してインストールする方法について説明します。この手順で取り上げる例は、Solaris 10 6/06 OS を対象としています。
ARCH=all パラメータが指定されたすべてのパッケージを検出します。
Oracle Solaris 10 イメージ用のメディアの Product ディレクトリに移動します。次に例を示します。
% cd /net/server/export/Solaris/s10u2/combined.s10s_u2wos/latest/Solaris_10/Product |
pkginfo ファイルにあるパッケージのうち、ARCH=all パラメータが指定されているパッケージの一覧を表示します。
% grep -w ARCH=all */pkginfo |
引数のリストが長すぎるというエラーメッセージが表示される場合は、次のコマンドを代わりに実行してリストを生成できます。
% find . -name pkginfo -exec grep -w ARCH=all {} /dev/null \; |
このコマンドは、結果の生成に少し時間がかかります。
出力は、次のようになります。
./SUNWjdmk-base/pkginfo:ARCH=all ./SUNWjhdev/pkginfo:ARCH=all ./SUNWjhrt/pkginfo:ARCH=all ./SUNWjhdem/pkginfo:ARCH=all ./SUNWjhdoc/pkginfo:ARCH=all ./SUNWmlibk/pkginfo:ARCH=all
このリストの情報を使用して、/usr ファイルシステムにインストールされているパッケージと、ルート (/) ファイルシステムにインストールされているパッケージを特定できます。
生成されたパッケージリストで、SUNW_PKGTYPE パラメータの値を確認します。
/usr ファイルシステムに属しているパッケージには、pkginfo ファイルで SUNW_PKGTYPE=usr が設定されています。ルート (/) ファイルシステムに属しているパッケージには、pkginfo ファイルで SUNW_PKGTYPE=root が設定されています。この出力では、すべてのパッケージが /usr ファイルシステムに属しています。
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
一時インストール管理ファイルを作成します。
ルート (/) ファイルシステムにインストールされているパッケージと、/usr ファイルシステムにインストールされているパッケージには、それぞれ個別にインストール管理ファイルを作成する必要があります。
/usr ファイルシステムにインストールされている ARCH=all パッケージのために、次の一時インストール管理ファイルを作成します。
# 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_sparc.all EOF # |
ルート (/) ファイルシステムにインストールされている ARCH=all パッケージのために (パッケージが存在する場合)、次の一時インストール管理ファイルを作成します。
# cat >/tmp/admin_root <<EOF mail= instance=unique partial=nocheck runlevel=nocheck idepend=nocheck rdepend=nocheck space=nocheck setuid=nocheck conflict=nocheck action=nocheck EOF # |
失われた ARCH=all パッケージをインストールします。
現在のディレクトリが Oracle Solaris 10 イメージ用のメディアの Product ディレクトリでない場合は、このディレクトリに移動します。次に例を示します。
# cd /net/server/export/Solaris/s10u2/combined.s10s_u2wos/latest/Solaris_10/Product |
pwd コマンドを実行して、現在のディレクトリを確認できます。
/usr ファイルシステム内の失われた ARCH=all パッケージをインストールします。
# pkgadd -R /export/Solaris_10 -a /tmp/admin_usr -d `pwd` [ package-A package-B ...] |
pkgadd コマンドを実行するときに、複数のパッケージを指定できます。
ARCH=all パッケージがインストールされたことを確認します。
# pkginfo -R /export/Solaris_10 [package-A package-B ...] |
ルート (/) ファイルシステム内の失われた ARCH=all パッケージをインストールします。
これらのパッケージが存在しないこともあります。
# pkgadd -R /export/root/clone/Solaris_10/sun4u -a /tmp/admin_root -d `pwd` [ package-X package-Y ...] |
ARCH=all パッケージがインストールされたことを確認します。
# pkginfo -R /export/root/clone/Solaris_10/sun4u [ package-X package- ...] |
失われた ARCH=all パッケージの追加が完了したら、一時インストール管理ファイルを削除します。
# rm /tmp/administration-file |
この例では、失われた ARCH=all パッケージ SUNWjdmk-base を /usr ファイルシステムにインストールする方法を示します。
% uname -a SunOS t1fac46 5.10 Generic_118833-02 sun4u sparc SUNW,UltraSPARC-IIi-cEngine % cat /etc/release Solaris 10 6/06 s10s_u2wos_03 SPARC Copyright 2006 Sun Microsystems, Inc. All Rights Reserved. Use is subject to license terms. Assembled 06 February 2006 % cd /net/ventor/export/Solaris/s10u2/combined.s10s_u2wos/latest/Solaris_10/Product % grep -w ARCH=all */pkginfo Arguments too long % find . -name pkginfo -exec grep -w ARCH=all {} /dev/null \; ./SUNWjdmk-base/pkginfo:ARCH=all ./SUNWjhdev/pkginfo:ARCH=all ./SUNWjhrt/pkginfo:ARCH=all ./SUNWjhdem/pkginfo:ARCH=all ./SUNWjhdoc/pkginfo:ARCH=all ./SUNWmlibk/pkginfo:ARCH=all % grep -w SUNW_PKGTYPE=usr ./SUNWjdmk-base/pkginfo ./SUNWjhdev/pkginfo ... ./SUNWjdmk-base/pkginfo:SUNW_PKGTYPE=usr ./SUNWjhdev/pkginfo:SUNW_PKGTYPE=usr ./SUNWjhrt/pkginfo:SUNW_PKGTYPE=usr ./SUNWjhdem/pkginfo:SUNW_PKGTYPE=usr ./SUNWjhdoc/pkginfo:SUNW_PKGTYPE=usr % grep -w SUNW_PKGTYPE=root ./SUNWjdmk-base/pkginfo ./SUNWjhdev/pkginfo ... % su Password: xxxxxx # cat >/tmp/admin_usr <<EOFmail= instance=unique partial=nocheck runlevel=nocheck idepend=nochec> k rdepend=nocheck space=nocheck setuid=nocheck conflict=nocheck action=nocheck basedir=/usr_sparc.all EOF # pwd /net/ventor/export/Solaris/s10u2/combined.s10s_u2wos/latest/Solaris_10/Product # pkginfo -R /export/Solaris_10 SUNWjdmk-base ERROR: information for "SUNWjdmk-base" was not found # pkgadd -R /export/Solaris_10 -a /tmp/admin_usr -d `pwd` SUNWjdmk-base Processing package instance <SUNWjdmk-base> </net/ventor/export/Solaris/s10u2/combined.s10s_u2wos... Java DMK 5.1 minimal subset(all) 5.1,REV=34.20060120 Copyright 2005 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Using </export/Solaris_10/usr_sparc.all> ## Processing package information. ## Processing system information. Installing Java DMK 5.1 minimal subset as <SUNWjdmk-base> ## Installing part 1 of 1. 2438 blocks Installation of <SUNWjdmk-base> was successful. # pkginfo -R /export/Solaris_10 SUNWjdmk-base application SUNWjdmk-base Java DMK 5.1 minimal subset # rm /tmp/admin_usr |
この節では、ディスクレスクライアントで発生する可能性がある一般的な問題とその解決策について説明します。
問題:/usr ファイルシステムが nobody によって所有されているときにログインを試みると、ディスクレスクライアントから Owner of the module /usr/lib/security/pam_unix_session.so.1 is not root というメッセージが出力される。
対処方法:この問題を修正するには、次の対処方法に従います。
テキストエディタを使用して、ディスクレスクライアントの server:/export/root/client/etc/default/nfs ファイルを変更します。
#NFSMAPID_DOMAIN=domain 行を次のように変更します。
NFSMAPID_DOMAIN=the_same_value_as_in_server's_/var/run/nfs4_domain |
OS サーバーとディスクレスクライアントが同じ nfsmapid ドメインを使用していることを確認します。この情報を確認するには、/var/run/nfs4_domain ファイルを調べます。
ディスクレスクライアントの nfs4_domain ファイル内の値が、OS サーバーの /var/run/nfs4_domain ファイル内の値と異なっている場合は、ディスクレスクライアントのブート後にシステムにログインすることができません。
ディスクレスクライアントをリブートします。
詳細は、『Oracle Solaris カーネルのチューンアップ・リファレンスマニュアル』の第 3 章「NFS チューニング可能パラメータ」および nfsmapid(1M) のマニュアルページを参照してください。
問題:OS サーバーが次の処理に失敗する。
クライアントの RARP (Reverse Address Resolution Protocol) 要求に対する応答
クライアントの bootparam 要求に対する応答
ディスクレスクライアントのルート (/) ファイルシステムのマウント
ファイル環境で次の解決法を適用できます。
OS サーバーの /etc/nsswitch.conf ファイルの hosts、ethers、および bootparams の最初の参照元として files が設定されていることを確認します。
クライアントの IP アドレスが /etc/inet/hosts ファイルに含まれていることを確認します。
Solaris 10 8/07 以降のリリースを実行していない場合、クライアントの IP アドレスが /etc/inet/ipnodes ファイルに含まれていることも確認する必要があります。
この Oracle Solaris リリースでは、/etc/inet/hosts ファイルが、IPv4 エントリと IPv6 エントリの両方を含む単一のファイルとなります。常に同期させる必要がある 2 つの hosts ファイルに、IPv4 エントリを保持する必要はありません。/etc/inet/ipnodes ファイルは、下位互換性のために、 /etc/inet/hosts ファイルへの同名のシンボリックリンクに置き換えられています。詳細は、hosts(4) のマニュアルページを参照してください。
クライアントのイーサネットアドレスが /etc/ethers ファイルに表示されていることを確認します。
/etc/bootparams ファイルにクライアントのルート (/) ディレクトリとスワップ空間への次のパスが含まれていることを確認します。
client root=os-server:/export/root/ client swap=os-server: /export/swap/client |
スワップのサイズは、ディスクレスクライアントの追加時に -x swapsize オプションを指定したかどうかによって異なります。ディスクレスクライアントの追加時に -x dump オプションを指定した場合は、次の行が表示されます。
dump=os-server:/export/dump/client dumpsize=512 |
ダンプサイズも、ディスクレスクライアントの追加時に -x dumpsize オプションを指定したかどうかによって異なります。
OS サーバーの IP アドレスが /export/root/client/etc/inet/hosts ファイルに設定されていることを確認します。
OS サーバーが次の処理に失敗する。
クライアントの RARP 要求に対する応答
クライアントの bootparam 要求に対する応答
ディスクレスクライアントのルート (/) ファイルシステムのマウント
ネームサービス環境で次の解決法を適用できます。
OS サーバーとクライアントのイーサネットアドレスおよび IP アドレスが正しくマップされていることを確認します。
/etc/bootparams ファイルにクライアントのルート (/) ディレクトリとスワップ空間へのパスが含まれていることを確認します。
client root=os-server:/export/ root/client swap=os-server:/export/ swap/client swapsize=24 |
スワップのサイズは、ディスクレスクライアントの追加時に -x swapsize オプションを指定したかどうかによって異なります。ディスクレスクライアントの追加時に -x dump オプションを指定した場合は、次の行が表示されます。
dump=os-server:/export/dump/ client dumpsize=24 |
ダンプサイズも、ディスクレスクライアントの追加時に -x dumpsize オプションを指定したかどうかによって異なります。
ディスクレスクライアントパニック
対処方法:次の内容を確認します。
OS サーバーのイーサネットアドレスが IP アドレスに正しくマップされていることを確認します。システムをあるネットワークから別のネットワークに物理的に移動した場合、システムの新しい IP アドレスを再マップするのを忘れている可能性があります。
クライアントの RARP、TFTP (Trivial File Transfer Protocol)、または bootparam 要求に応答する「同じサブネット」にある別のサーバーのデータベースに、クライアントのホスト名、IP アドレス、およびイーサネットアドレスが存在しないことを確認します。インストールサーバーから OS をインストールするために、しばしばテストシステムがセットアップされます。このような場合、インストールサーバーはクライアントの RARP または bootparam 要求に対して、正しくない IP アドレスを返します。この不正なアドレスにより、間違ったアーキテクチャーのブートプログラムをダウンロードしたり、クライアントのルート (/) ファイルシステムのマウントが失敗したりしている可能性があります。
ディスクレスクライアントの TFTP 要求にインストールサーバー (または以前の OS サーバー) が応答しないことを確認します。このサーバーは不正なブートプログラムを転送しています。ブートプログラムのアーキテクチャーが異なる場合は、クライアントがただちにパニックになります。ブートプログラムが非 OS サーバーから読み込まれた場合、クライアントはそのルートパーティションを非 OS サーバー上に確保し、/usr パーティションを OS サーバー上に確保することがあります。この状況では、ルートおよび /usr パーティションのアーキテクチャーまたはバージョンが競合する場合、クライアントがパニックに陥ります。
インストールサーバーと OS サーバーの両方を使用している場合は、/etc/dfs/dfstab ファイルに次のエントリがあることを確認してください。
share -F nfs -o -ro /export/exec/Solaris_version- \ instruction-set.all/usr |
ここで、version は 8、9、10 であり、instruction-set は sparc または i386 です。
ディスクレスクライアントのルート (/)、/swap、/dump (指定されている場合) の各パーティションに次の共有エントリがあることを確認します。
share -F nfs -o rw=client,root=client /export/root/client share -F nfs -o rw=client,root=client /export/swap/ client share -F nfs -o rw=client,root=client /export/dump/ client |
OS サーバーで次のコマンドを入力し、共有されているファイルを確認します。
% share |
OS サーバーでは、ディスクレスクライアントを追加したときに指定した /export/root/client および /export/swap/client_name (デフォルト)、またはルート、/swap、/dump の各パーティションを共有する必要があります。
次のエントリが /etc/dfs/dfstab ファイルにあることを確認します。
share -F nfs -o ro /export/exec/Solaris_version- instruction-set.all/usr share -F nfs -o rw=client,root=client /export/root/ client share -F nfs -o rw=client,root=client /export/swap/ client |
OS サーバーがディスクレスクライアントの RARP 要求に応答しない
対処方法:クライアントの目的の OS サーバーから、次のクライアントのイーサネットアドレスを使って snoop コマンドをスーパーユーザー (root) として実行します。
# snoop xx:xx:xx:xx:xx:xx |
ブートプログラムをダウンロードしたが、プロセスの初期にパニックが発生した
対処方法:snoop コマンドを使用して、対象の OS サーバーがクライアントの TFTP および NFS 要求に応答するかどうかを確認します。
問題:ディスクレスクライアントがハングアップする
対処方法:OS サーバーで次のデーモンを再起動します。
# /usr/sbin/rpc.bootparamd # /usr/sbin/in.rarpd -a |
ディスクレスクライアントの RARP 要求に対するサーバーの応答が不正である
対処方法:OS サーバーで次のデーモンを再起動します。
# /usr/sbin/rpc.bootparamd # svcadm enable network/rarp |