Solaris のシステム管理 (基本編)

ディスクレスクライアント問題のトラブルシューティング

この節では、ディスクレスクライアントを管理するときに発生する問題と、それらに適用できる解決方法について説明します。

ディスクレスクライアントのインストールの問題

smosservice add コマンドを実行しても、ルート (/) および /usr ファイルシステム内の ARCH=all が指定されているパッケージは、いずれもインストールされません。つまり、これらのパッケージは読み飛ばされます。警告やエラーメッセージは表示されません。これらのパッケージは、新規に作成した Oracle Solaris OS サービスに手動で追加する必要があります。この作業は、Solaris 2.1 OS 以降で発生します。この作業は、SPARC および x86 の両方のクライアントに適用されます。失われるパッケージのリストは、稼働している Oracle Solaris リリースによって異なります。

Procedure失われた ARCH=all パッケージを検出してインストールする方法

ここでは、Oracle Solaris OS サービスをサーバー上に作成したあとに、失われた ARCH=all パッケージを検出してインストールする方法について説明します。この手順で取り上げる例は、Solaris 10 6/06 OS を対象としています。

  1. ARCH=all パラメータが指定されたすべてのパッケージを検出します。

    1. Oracle Solaris 10 イメージ用のメディアの Product ディレクトリに移動します。次に例を示します。


      % cd /net/server/export/Solaris/s10u2/combined.s10s_u2wos/latest/Solaris_10/Product
      
    2. 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 ファイルシステムにインストールされているパッケージと、ルート (/) ファイルシステムにインストールされているパッケージを特定できます。

    3. 生成されたパッケージリストで、SUNW_PKGTYPE パラメータの値を確認します。

      /usr ファイルシステムに属しているパッケージには、pkginfo ファイルで SUNW_PKGTYPE=usr が設定されています。ルート (/) ファイルシステムに属しているパッケージには、pkginfo ファイルで SUNW_PKGTYPE=root が設定されています。この出力では、すべてのパッケージが /usr ファイルシステムに属しています。

  2. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  3. 一時インストール管理ファイルを作成します。

    ルート (/) ファイルシステムにインストールされているパッケージと、/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
      #
  4. 失われた ARCH=all パッケージをインストールします。

    1. 現在のディレクトリが Oracle Solaris 10 イメージ用のメディアの Product ディレクトリでない場合は、このディレクトリに移動します。次に例を示します。


      # cd /net/server/export/Solaris/s10u2/combined.s10s_u2wos/latest/Solaris_10/Product
      

      pwd コマンドを実行して、現在のディレクトリを確認できます。

    2. /usr ファイルシステム内の失われた ARCH=all パッケージをインストールします。


      # pkgadd -R /export/Solaris_10 -a /tmp/admin_usr -d `pwd` [
      package-A package-B ...]
      

      pkgadd コマンドを実行するときに、複数のパッケージを指定できます。

    3. ARCH=all パッケージがインストールされたことを確認します。


      # pkginfo  -R /export/Solaris_10  [package-A 
      package-B ...]
      
    4. ルート (/) ファイルシステム内の失われた ARCH=all パッケージをインストールします。

      これらのパッケージが存在しないこともあります。


      # pkgadd  -R /export/root/clone/Solaris_10/sun4u  -a /tmp/admin_root -d `pwd`  [
      package-X package-Y ...]
      
    5. ARCH=all パッケージがインストールされたことを確認します。


      # pkginfo  -R /export/root/clone/Solaris_10/sun4u [
      package-X package- ...]
      
  5. 失われた ARCH=all パッケージの追加が完了したら、一時インストール管理ファイルを削除します。


    # rm /tmp/administration-file
    

例 7–10 失われた ARCH=all パッケージを検出してインストールする

この例では、失われた 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 というメッセージが出力される。

対処方法:

この問題を修正するには、次の対処方法に従います。

  1. テキストエディタを使用して、ディスクレスクライアントの server:/export/root/client/etc/default/nfs ファイルを変更します。

  2. #NFSMAPID_DOMAIN=domain 行を次のように変更します。


    NFSMAPID_DOMAIN=the_same_value_as_in_server's_/var/run/nfs4_domain
  3. OS サーバーとディスクレスクライアントが同じ nfsmapid ドメインを使用していることを確認します。この情報を確認するには、/var/run/nfs4_domain ファイルを調べます。


    注意 – 注意 –

    ディスクレスクライアントの nfs4_domain ファイル内の値が、OS サーバーの /var/run/nfs4_domain ファイル内の値と異なっている場合は、ディスクレスクライアントのブート後にシステムにログインすることができません。


  4. ディスクレスクライアントをリブートします。

詳細は、『Oracle Solaris カーネルのチューンアップ・リファレンスマニュアル』の第 3 章「NFS チューニング可能パラメータ」および nfsmapid(1M) のマニュアルページを参照してください。

問題:

OS サーバーが次の処理に失敗する。

対処方法:

ファイル環境で次の解決法を適用できます。

問題:

OS サーバーが次の処理に失敗する。

対処方法:

ネームサービス環境で次の解決法を適用できます。

問題:

ディスクレスクライアントパニック

対処方法:

次の内容を確認します。

問題:

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