TOP / 環境構築 / x86 Solaris9

x86 Solaris9 TIPS

FreeSoftwareのインストール方法

Sunfreeware.com Freeware for Solaris (東京理科大学)へ訪れ、pkg-infoをインストールします。このパッケージをインストールするとソフトウェアのインストール時にコンパイルする必要がありません。

初期設定では、アメリカのサイトにアクセスするようになっているため、/etc/pkg-get.confを東京理科大学のサイトに変更します。


    #url=ftp://ftp.sunfreeware.com/pub/freeware
    url=http://SunSITE.sut.ac.jp/pub/sun-info/Solaris
    

man pkg-getなどで使い方を調べてみてください。またSunfreeware.comにも利用方法が記載されていますので一度確認しておくと後々の作業が簡単になると思います。

PatchPro2.2のインストール方法

SunSolve > Patch Portal > Patch Manager からPatch Manager Base 1.0.1 and PatchPro 2.2, x86, Englishをダウンロードします。その後は以下のコマンドでインストールが行えます。


    bash-2.05# tar -zxf pproSunOSx865.9jre2.2.tar.gz
    bash-2.05# cd pproSunOSx865.9jre2.2
    bash-2.05# ./setup
    

PatchPro2.2の設定

ライセンス登録を行わないと、PatchPro2.2を使う事が出来ないようです。Solarisがオープンソースになった今現在は、PatchProも無償で使えるかもしれません。

ソースコードからのPython-2.3.インストール方法

2004年10月10日

 

前提条件

http://www.python.org/に記述されているとおり、GNUtarがインストールされていることが前提です。

問題点

/usr/include/sys/types.hと/usr/local/lib/gcc/i386-pc-solaris2.9/3.4.0/include/sys/types.hの同期が取れていないためPythonのmakeに失敗します。

解決方法

/usr/local/lib/gcc/i386-pc-solaris2.9/3.4.0/include/sys/types.hに/usr/include/sys/types.hからコピーした以下を76行に追加


    /* start python modify
     * modifier:satoshi okita
     * date:Sun Jul 11 01:31:26 JST 2004
     */
    typedef union {
            long double     _q;
            int32_t         _l[4];
    } pad128_t;

    typedef union {
            long double     _q;
            uint32_t        _l[4];
    } upad128_t;

    /* end python modify */
    

その後通常のインストール作業作業をおこないます。


    $ gzip -d Python-2.3.4.tgz
    $ tar -xvf Python-2.3.4.tar
    $ cd Python-2.3.4
    $ sh configure
    $ make
    $ su root -c "make install"
    

    /usr/local/bin/install -c -m 644 ./LICENSE /usr/local/lib/python2.3/LICENSE.txt
    PYTHONPATH=/usr/local/lib/python2.3   \
            ./python -Wi -tt /usr/local/lib/python2.3/compileall.py \
            -d /usr/local/lib/python2.3 -f \
            -x 'badsyntax|site-packages' /usr/local/lib/python2.3
    ld.so.1: ./python: fatal: libstdc++.so.6: open failed: No such file or directory
    Killed
    make: *** [libinstall] Error 137
    

上記のエラーが出力されるのであれば、環境変数LD_LIBRARY_PATHを設定します。あとは、make installを実行します。


    # export LD_LIBRARY_PATH=/usr/local/lib
    # make install
    

Subversionのインストール方法

2004年10月10日

対象者

x86 SolarisにSubversionをソースコードからインストールする方法を探している人が対象者です。

はじめに

subversionに必須なソフトウェア

  • Apache Portable Runtime 0.9.5
  • autoconf 2.50 or newer
  • libtool 1.5 or newer
  • Neon library 0.24.7 over
  • Berkeley DB 4.X
  • Apache Web Server 2.0.49 or newer
  • Python 2.0 or newer
  • Perl 5.8 or newer
  • zlib (Option)
  • openssl (Option)
  • subversion

コンパイルに必要なソフトウェア

当然ですが、コンパイルするためにその他GNUのツールが必要になります。これらはSolarisにソースコードからインストールしてもかまいませんが、非常に手間と時間がかかるためpkg-getをインストールすることをお勧めします。私の場合は、以下をpkg-getコマンドを利用してインストールしました。また、subversionにSolaris用のパッケージも存在するようなので、コンパイルの学習などが必要ないのであれば簡単なパッケージインストールをお勧めします。

  • automake
  • gcc
  • libtool
  • m4
  • perl
  • phtyon
  • shutils
  • make
  • wget
  • tar(GNU)

インストール前準備

まずコンパイルに必要なものを準備します。先ほどのリストで黒大文字以外は、必ずインストールしておいてください。

 

subversionのインストール作業

Berkeley DB 4.2.52とpatch2つのインストール。

面倒なので以下のスクリプトを作った。適当な実行ユーザでこのシェルスクリプトを実行すると /usr/local/BerkeleyDB.4.2/にインストールされる。wgetコマンドとインターネットにつながっていることが条件である。また途中で/usr/localにインストールするためrootパスワードを要求する。

 

    bash-2.05$ cat install_berkleydb.sh
    #!/bin/sh
    # tab=4 code=euc
    # author satoshi okita <satoshiokita@google.com>
    # version
    # date
    # invoke Berkeley DB Install script

    BASE_DIR=/home/okita/develop/subversion
    BDB=db-4.2.52.tar.gz
    BDB_SITE="http://www.sleepycat.com/update"

    download () {
            if [ ! -f ${BDB} ]
            then
                    wget ${BDB_SITE}/snapshot/${BDB}
            fi
            TMP_NAME=`echo ${BDB} | sed 's/.tar.gz//g'`
            if [ ! -d "${TMP_NAME}" ]
            then
                    tar -zxvf ${BDB}
            fi
    }

    # arg1 patch file name.
    download_patch () {
            echo "download ${1}"
            if [ -z "${1}" ]
            then
                    return 1;
            fi
            if [ ! -f "${1}" ]
            then
                    wget ${BDB_SITE}/4.2.52/${1}
            fi
    }
    download
    cd `echo ${BASE_DIR}/${BDB} | sed 's/.tar.gz//g'`
    pwd

    download_patch patch.4.2.52.1
    download_patch patch.4.2.52.2

    # arg1 patch file name.
    applay_patch () {
            if [ -z "${1}" ]
            then
                    return 1;
            fi
            if [ -f "${1}" ]
            then
                    return 0;
            fi
            su root <<-ENDROOT
            pwd
            patch -p0 < $1
    ENDROOT
    }

    applay_patch patch.4.2.52.1
    applay_patch patch.4.2.52.2

    make_install () {
            cd `echo ${BASE_DIR}/${BDB} | sed 's/.tar.gz//g'`
            cd build_unix
            env CC=gcc CFLAGS=-O2 ../dist/configure
            make
            su root <<-ENDROOT
            PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin
            export PATH
            #
            # CAUTION!!
            # strip in GNU binutils (as /usr/local/bin/strip) was broken
            # so 'make install' process must be define original strip command.
            #
            make install strip=/usr/ccs/bin/strip
    ENDROOT
    }
    make_install
 

neonのインストール

neonをダウンロードして解答した後、ディレクトリ名を変更する。neonライブラリをsubversionが探すためディレクトリ名を変更している。


    bash-2.05$ cat install_neon.sh
    #!/bin/sh
    # tab=4 code=euc
    # author satoshi okita <satoshiokita@google.com>
    # version
    # date
    # install neon


    # command check
    COMPRESS=/usr/bin/compress
    UNCOMPRESS=/usr/bin/uncompress
    GNUZIP=/usr/bin/gzip
    ARHCIVE=".tar"
    SUFFIX=".gz"

    check_command () {
            TMP_CMD=$1
            RES=`which ${TMP_CMD}`
            if [ $? -ne 0 ]
            then
                    echo "no exist $RES"
                    return 1;
            fi
            echo "exist $RES"
            return 0;
    }
    check_command "gzip"
    check_command "autoconf"
    check_command "libtool"
    check_command "wget"
    NEON="neon-0.24.7.tar.gz"
    download_by_wget () {
            if [ ! -f ${NEON} ]
            then
                    wget http://www.webdav.org/neon/${NEON}
                    if [ $? -ne 0 ]
                    then
                            echo "wget error ${NEON}"
                            exit 1;
                    fi
            fi
    }
    download_by_wget
    unpacking $NEON
    SRC=`echo ${NEON} | sed 's/.tar.gz//' `
    DEST=`echo ${NEON} | sed 's/.tar.gz//' | awk -F- ' { print $1 } ' `
    mv $SRC $DEST
   

apacheのインストール

apacheをソースコードからインストールする場合は、Apache Portable Runtime 0.9.5を別途用意する必要はない。


     bash-2.05$ cat install_apache2.sh
    #!/bin/sh
    # tab=4 code=euc
    # author satoshi okita <satoshiokita@google.com>
    # version
    # date
    # invoke apache2.0.50 over Install script

    BASE_DIR=/home/okita/develop/subversion
    APACHE=httpd-2.0.50.tar.gz
    APACHE_SITE="http://sunsite.tus.ac.jp/pub/apache/httpd/"
    BDB_SITE="http://www.sleepycat.com/update"
    download () {
            if [ ! -f ${APACHE} ]
            then
                    wget ${APACHE_SITE}${APACHE}
            fi
            TMP_NAME=`echo ${APACHE} | sed 's/.tar.gz//g'`
            if [ ! -d "${TMP_NAME}" ]
            then
                    tar -zxvf ${APACHE}
            fi
    }
    download

    cd `echo ${APACHE} | sed 's/.tar.gz//g'`
    pwd

    ./configure --enable-dav --enable-so --enable-maintainer-mode


    make_install () {
            su root <<-ENDROOT
            cd `echo ${BASE_DIR}/${APACHE} | sed 's/.tar.gz//g'`
            PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin
            export PATH
            pwd
            make
            make install
    ENDROOT
    }
    make_install
 

subversionのインストール


    bash-2.05$ cat install_subversion.sh
    #!/bin/sh
    # tab=4 code=euc
    # author satoshi okita <satoshiokita@google.com>
    # version
    # date
    # install subversion server none ssl.

    # command check
    COMPRESS=/usr/bin/compress
    UNCOMPRESS=/usr/bin/uncompress
    GNUZIP=/usr/bin/gzip
    ARHCIVE=".tar"
    SUFFIX=".gz"


    BASE_DIR="/home/okita/develop/subversion"
    APACHE="httpd-2.0.50"
    SUBVERSION_WORK=
    SUBVERSION_SITE="http://subversion.tigris.org/tarballs/"
    SUBVERSION="subversion-1.0.6.tar.gz"

    cd ${BASE_DIR}
    if [ ! -f "subversion-1.0.6.tar.gz" ]
    then
            wget ${SUBVERSION_SITE}${SUBVERSION}
    fi

    if [ ! -d subversion-1.0.6 ]
    then
            tar -zxvf "${SUBVERSION}"
    fi

    # COPY apache Portable Runtime 0.9.5
    cd ${BASE_DIR}
    cd ${APACHE}/srclib
    cp -a apr apr-util ${BASE_DIR}/`echo ${SUBVERSION} | sed 's/.tar.gz//g'`

    # SUBVERSION INSTALL

    make_install() {

    # require echo and perl on /usr/local/bin
    # require libtool
    # check above commands
    if [ -x /usr/local/bin/echo ]
    then
            ln -s /usr/bin/echo /usr/local/bin/echo
    fi


    # install
            cd ${BASE_DIR}/`echo ${SUBVERSION} | sed 's/.tar.gz//g'`
            sh ./autogen.sh

            # require be recgnized BerkeleyDB by LD_LIBRARY_PATH enviroment val.
            LD_LIBRARY_PATH=/usr/local/lib:/usr/local/BerkeleyDB.4.2/lib
            export LD_LIBRARY_PATH
            sh ./configure  \
                    --with-as=/usr/local/bin/as \
                    --with-ld=/usr/local/bin/ld \
                    --with-berkeley-db=/usr/local/BerkeleyDB.4.2
            make
            su root <<-ENDROOT
                    pwd
                    PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin
                    export PATH
                    make install
    ENDROOT
    }
    make_install

    # check
    check_lib()
    {
            RES=`ls /usr/local/lib/libsvn* 2>&1`
            if [ $? -ne 0 ]
            then
                    echo $RES
            fi

            if [ -f /usr/local/apache2/modules/mod_dav_svn.so ]
            then
                    echo "mod_dav_svn.so exist!"
            fi
    }

    check_lib
 

crleの設定

LD_LIBRARY_PATHは各ユーザのためのライブラリ検索用の設定である。crleコマンドはOSに対してデフォルトのライブラリ検索場所を設定する。

crle -c /var/ld/ld.config -l \
/usr/lib:/usr/local/lib:/usr/local/apache2/modules:/usr/local/BerkeleyDB.4.2/lib
 

確認


    bash-2.05$ svn help
    usage: svn  [options] [args]
    Type "svn help " for help on a specific subcommand.

    Most subcommands take file and/or directory arguments, recursing
    on the directories.  If no arguments are supplied to such a
    command, it will recurse on the current directory (inclusive) by
    default.

    Available subcommands:
       add
       blame (praise, annotate, ann)
       cat
       checkout (co)
       cleanup
       commit (ci)
       copy (cp)
       delete (del, remove, rm)
       diff (di)
       export
       help (?, h)
       import
       info
       list (ls)
       log
       merge
       mkdir
       move (mv, rename, ren)
       propdel (pdel, pd)
       propedit (pedit, pe)
       propget (pget, pg)
       proplist (plist, pl)
       propset (pset, ps)
       resolved
       revert
       status (stat, st)
       switch (sw)
       update (up)

    Subversion is a tool for version control.
    For additional information, see http://subversion.tigris.org/

suvbersionレポジトリの作成とテスト

テスト用にプロジェクトをレポジトリにimportしてみる。


    bash-2.05$ svnadmin create /opt/app/subversion
    bash-2.05$ ls /opt/app/subversion/
    README.txt  conf  dav  db  format  hooks  locks
    bash-2.05$ pwd
    /home/okita/develop
    bash-2.05$ mkdir -p testproject/branches
    bash-2.05$ mkdir -p testproject/tags
    bash-2.05$ mkdir -p testproject/trunk
    bash-2.05$ touch testproject/trunk/foo.c
    bash-2.05$ touch testproject/trunk/bar.c
    bash-2.05$ touch testproject/trunk/Makefile
    bash-2.05$ svn import /home/okita/develop/testproject \ 
file:///opt/app/subversion -m "test project import to repository"
    Adding         /home/okita/develop/testproject/trunk
    Adding         /home/okita/develop/testproject/trunk/foo.c
    Adding         /home/okita/develop/testproject/trunk/bar.c
    Adding         /home/okita/develop/testproject/trunk/Makefile
    Adding         /home/okita/develop/testproject/branches
    Adding         /home/okita/develop/testproject/tags

    Committed revision 1.
 

レポジトリからtestprojectのデータを取り出してみる。


    bash-2.05$ pwd
    /tmp
    bash-2.05$ svn checkout file:///opt/app/subversion/trunk testproject
    A  testproject/foo.c
    A  testproject/bar.c
    A  testproject/Makefile
    Checked out revision 1.
 

編集作業をしてみる。


    bash-2.05$ cd testproject/
    bash-2.05$ ls
    Makefile  bar.c  foo.c
    bash-2.05$ echo "hello" >> foo.c
    bash-2.05$ cat foo.c
    hello

    bash-2.05$ svn commit -m "test commit" foo.c
    Sending        foo.c
    Transmitting file data .
    Committed revision 2.

    bash-2.05$ echo "goodbye" >> foo.c
    bash-2.05$ svn diff foo.c
    Index: foo.c
    ===================================================================
    --- foo.c       (revision 2)
    +++ foo.c       (working copy)
    @@ -1 +1,2 @@
     hello
    +goodbye

    bash-2.05$ svn commit -m ""
    Sending        foo.c
    Transmitting file data .
    Committed revision 3.
    bash-2.05$ cat foo.c
    hello
    goodbye
    bash-2.05$ rm -f foo.c

    bash-2.05$ svn update foo.c
    Restored 'foo.c'
    At revision 3.
    bash-2.05$ cat foo.c
    hello
    goodbye
    bash-2.05$
 

Apacheの設定

  • ServerNameの設定
  • Listenの設定
  • デフォルトでの起動確認
  • User,Groupの設定
  • LoadModuleの設定確認
  • Locationの設定
  • テスト
 

ServerNameの設定


    ServerName 192.168.11.8:80

Listenの設定


    Listen 80

デフォルトでの起動確認

x86 Solaris9ではhttpd.confの起動Groupを以下のように設定しなければならない。


    #
    # If you wish httpd to run as a different user or group, you must run
    # httpd as root initially and it will switch.
    #
    # User/Group: The name (or #number) of the user/group to run httpd as.
    #  . On SCO (ODT 3) use "User nouser" and "Group nogroup".
    #  . On HPUX you may not be able to use shared memory as nobody, and the
    #    suggested workaround is to create a user www and use that user.
    #  NOTE that some kernels refuse to setgid(Group) or semctl(IPC_SET)
    #  when the value of (unsigned)Group is above 60000;
    #  don't use Group #-1 on these systems!
    #
    User nobody
    Group nobody
    #Group #-1
 

この設定を行わないと$APACHE_HOME/log/error.logに以下のようなログが出力されて起動できない。subversionを使うためには、このUser,Groupの設定をsvnレポジトリと同様にしなければならない。


[alert] (22)Invalid argument: setgid: unable to set group id to Group 4294967295
[notice] Apache/2.0.50 (Unix) DAV/2 configured -- resuming normal operations
[alert] Child 19686 returned a Fatal error...\nApache is exiting!
[alert] (22)Invalid argument: setgid: unable to set group id to Group 4294967295
 

起動に失敗した場合には、$APACHE_HOME/logs/httpd.pidが残ってしまうので再起動前に削除しておく必要がある。以下は、その時の$APACHE_HOME/log/error.logのサンプル


[warn] pid file /usr/local/apache2/logs/httpd.pid overwritten 
-- Unclean shutdown of previous Apache run?
[notice] Apache/2.0.50 (Unix) DAV/2 configured -- resuming normal operations
 

    # rm -rf /usr/local/apache2/logs/httpd.pid

この状態で一度、起動停止を確認してみる。正常であればerror.logに以下が出力される。


bash-2.05# /usr/local/apache2/bin/apachectl stop
bash-2.05# /usr/local/apache2/bin/apachectl start

[notice] caught SIGTERM, shutting down
[notice] Apache/2.0.50 (Unix) SVN/1.0.6 DAV/2 configured -- resuming normal operations
 

User,Groupの設定

先ほどのUser,Groupをsubversionのレポジトリとあわせる必要がある。


    User okita
    Group other

LoadModuleの設定確認


    LoadModule dav_svn_module modules/mod_dav_svn.so
    LoadModule authz_svn_module modules/mod_authz_svn.so

Locationの設定

httpd.confの1000行付近にLocationが記述されているので、ここに以下を追加する。


    #
    # Allow remote server access Subversion repositories, with the URL of
    #  http://hostname/repos
    <Location /repos>
        DAV svn
        SVNPath /opt/app/subversion
    </Location>

これは、http://xxx.xxx.xxx.xxx/repos/ とアクセスされた場合, /opt/app/subversionを読み込む設定である。

テスト

Apacheを再起動して、以下にアクセスしてみる。正常であれば、ディレクトリ一覧が確認出来る。


    http://192.168.11.8/repos/
 

参考文献

http://svn.collab.net/repos/svn/trunk/INSTALL

 

端末エミュレータ(teraterm, putty)からの日本語入力と表示するための設定

8bitの文字コードを通さなければならないため以下の設定をします。


    stty -istrip cs8 -peranb

環境変数LANGの設定を日本語にします。


    export LANG=ja_JP.eucJP

PAGERにlessを使っている場合は以下のように日本語が表示できるように設定します。


    export PAGER=less
    export LESSCHARSET=dos
 

emacsのインストール

Sunfreeware.com Freeware for Solaris (東京理科大学)からIntel8用のemacsをpkg-getを使わずにダウンロードします。その後以下のコマンドを実行します。


    pkgadd -d emacs-21.1-sol8-intel-local
    pkginfo -l SMCemacs

はじめ、ソースコードから最新のemacs-21.3をインストールしようとしましたが、gcc3.4.1ではコンパイル中にcoredumpが発生するのでSunfreeware.comからパッケージをインストールすることにしました。インストール作業中にxaw3d, libungifなどのライブラリを要求された時は、pkg-getではなく直接FTPからIntel8版のものを取得すれば問題なくインストールできます。

sarコマンドのインストール

x86 Solaris9にsarコマンドがインストールされていない場合は、Disk2(.volume.info=SOL_9_404_X86_2)からインストールする必要があります。SolarisでCDROMがマウントできない場合は、WindowsからD:\Solaris_9\Product\ SUNWaccr,D:\Solaris_9\Product\SUNWaccuディレクトリをコピーしてインストールすれば簡単に行えます。私の場合は、Windowsマシンからtarコマンドで圧縮して/tmpディレクトリに展開しました。以下がその時の作業内容になります。


    bash-2.05# pwd
    /tmp/sar
    bash-2.05# ls
    SUNWaccr  SUNWaccu
    bash-2.05# pkgadd -d `pwd` SUNWaccr

    Processing package instance <SUNWaccr> from </tmp/sar>

    System Accounting, (Root)
    (i386) 11.9.0,REV=2002.11.04.02.51
    Copyright 2002 Sun Microsystems, Inc.  All rights reserved.
    Use is subject to license terms.

    This appears to be an attempt to install the same architecture and
    version of a package which is already installed.  This installation
    will attempt to overwrite this package.

    Using </> as the package base directory.
    ## Processing package information.
    ## Processing system information.
       16 package pathnames are already properly installed.
    ## Verifying package dependencies.
    ## Verifying disk space requirements.
    ## Checking for conflicts with packages already installed.
    ## Checking for setuid/setgid programs.

    This package contains scripts which will be executed with super-user
    permission during the process of installing this package.

    Do you want to continue with the installation of  [y,n,?]y
 

正常にパッケージがインストールされたかどうか確認します。


    bash-2.05# pkginfo -l SUNWaccr
       PKGINST:  SUNWaccr
          NAME:  System Accounting, (Root)
      CATEGORY:  system
          ARCH:  i386
       VERSION:  11.9.0,REV=2002.11.04.02.51
       BASEDIR:  /
        VENDOR:  Sun Microsystems, Inc.
          DESC:  utilities for accounting and reporting of system activity
        PSTAMP:  on81-build-x20021104031202
      INSTDATE:  Sep 12 2004 03:15
       HOTLINE:  Please contact your local service provider
        STATUS:  completely installed
         FILES:       21 installed pathnames
                      10 shared pathnames
                       1 linked files
                      16 directories
                       2 executables
                       6 blocks used (approx)

SUNWaccuも同じ作業でインストールできます。余談ですが、Sun Microsystems純正のパッケージにはSUNWというプレフィックスがつきます。

 

x86 Solaris のシステム復旧ログ(ネットワークカードの障害復旧)

2004年10月14日

はじめに

ここでは、3COM社製NICのトラブルシューティングのメモを記述します。私のNICはバグ対象のNICに含まれていないようでしたが、障害が発生したため、今後x86 Solaris9で同様なトラブルが発生した方のために対応ログを残しておきます。2004年10現在、これらの日本語情報は皆無に近いです。

システム構成

ハードウェア

  • CPU: Celeron300MHz x 2
  • Memory: 640MB
  • Disk; 18GB
  • NIC: 3COM 3C509B-TBO
  • CDROM x 1
  • FD x 0

ソフトウェア

  • OS: x86 Solaris9
  • Service : Suvbersion, IDS, プログラムのチューニング等の検証環境

障害発生

10/11日にtelnet, sshでログインしようとしたところ、ログインできなかったのでモニタのある部屋まで持ってきて再起動したところ起動時に以下のエラーメッセージを検出しました。


    ifconfig: setifflags: SIOCSLIFFLAGS elx0 Cannot assign requested address

シングルユーザモード(メンテナンスモード)では起動できますが、マルチユーザモード(RUN 3)での起動が不可能になりました。SIOCSLIFFLAGSなどで検索エンジンで調べてみたところ情報は少なく、SunMicrosystems社でもバグという認識があるようです。復旧には、NICにブート用ROMを利用している場合は使わないようにすること、また、別のカードに切り替える。という選択肢しかありませんでした。私は、NICにブート用ROMは利用していないので復旧のためNICを変更することにしました。

原因

3COM社製のNICで発生するバグのようです。SIOCSLIFFLAGS等で検索するをいくつかドキュメントが出てきます。

 

現状

SunSolve PatchからOSインストール後パッチクラスタを適用していたためバグが発生しないだろうと思っていたのですが、いまだに修正されていないようです。もしかしたら最新のパッチが既に提供されているかもしれません。私のマシンは、FDなし、ネットワーク不可状態ですのでSunSolveにアクセスできない状態です。

障害対応

CD-Rに新しいNIC用のドライバ入手とBurning

Free NIC drivers for SolarisからダウンロードしてWindowsでCD-RにBurningしました。

3COMのNICの破棄

3COMのNICを物理的にはずします。

NIC( Corega FastEther II PCI-TX )の増設

新しいNICを増設します。チップはVIA VT86C100A互換のDL10030です。またドライバはMasayuki Murayama氏がフリー(無償)ソフトウェアとして公開しています。(Free NIC drivers for Solaris)

ドライバの設定と動作確認

ドライバの設定は、上記フリーソフトのREADMEに設定の仕方が記述されています。また日本語のREADMEも存在しますのでそのまま設定と動作確認をします。READMEの設定などではループバック(127.0.0.1)でNICを初期化するかもしれませんので自分のネットワーク用に設定する場合はifconfigコマンドを以下のように使います。

ifconfig rh0 down
        ifconfig rh0 192.168.11.8 netmask 255.255.255.0 broadcast 192.168.11.255
        ifconfig rh0 up
        ifconfig rh0

正常に動作確認できたら以下を削除します。

/etc/hostname.elx0

これは、元のNIC(3COM社製NIC)用の設定ファイルです。環境によっては別のファイル名かもしれません。その後、init 6などコマンドで再起動するとrh0が127.0.0.1などループバックの設定になり正常に認識されない場合があります。

/etc/hostsと/etc/hostname.rh0

以下が私の環境設定になります。元々は、127.0.01 sunos9と設定していましたがそれをコメントアウトして、127.0.0.1 localhostと設定しています。これは/etc/hostname.rh0ファイルがホスト名の解決に設定してあるsunos9を /etc/hostsから参照するためです。つまりsunos9=192.168.11.8にした事になります。これで再起動した場合、初期設定として 192.168.11.8がIPアドレスとして与えられます。

 
        bash-2.05# cat /etc/hosts
        #
        # Internet host table
        #
        #127.0.0.1 sunos9
        127.0.0.1 localhost
        192.168.11.8 sunos9.oklab.org sunos9
        192.168.11.5 stoc.oklab.org stoc
        bash-2.05# cat /etc/hostname.rh0
        sunos9

最後に

今回はじめてx86 Solaris9のNICをOSインストール時以外に設定しました。Masayuki Murayama氏のREADMEが非常に過不足なくかかれていて参考になりました。NICの設定にもう少し手間が掛かると思っていたのですこし拍子抜けした感じです。いきなり原因不明の障害発生だったため、BSD系OS,Linux系OSを再インストールしようとしましたが思いとどまってよかったです。ただ良くも悪くも元商用OSだったためLinuxに対して情報が少ない事が認識できました。

更新履歴

  • 2006年4月17日 - 更新履歴を追加
  • 2004年7月24日 - x86版 Solaris9の記事を作成


イバラキングへのリンク Get Firefox Valid XHTML 1.1 Apple Darwinへのリンク