9-2. EWSのスタ−トアップ '96〜 (1) ifconfig コマンド * イ−サネット・インタ−フェ−ス 各EWSのイ−サネット・インタ−フェ−スの名前を示す。 本章を通してifconfig で指 定するIPアドレスの例は 192.9.201.1 とする。 ここでは Apollo コンピュ−タを例に とり説明する。SunOS 4.1.x も基本的に同じだが、ブロ−ドキャストの解釈が違っている。 SunOS 4.1.x は Solaris が出るまで、標準的なEWSのように思われてきたが、 実際は 微妙におかしなところがある。DNS の解釈しかり。これらの違いは次章でまとめてを説明 する。INDY は System V 系のEWSのため、ifconfig の設定ファイルは /etc/rc2.d に あり、Apollo や SunOS4.1.x の /etc/rc.local にはない。 INDY についてはGUI画面 でも設定できるので説明は省略する。 EWS | OS | 1つ目 | 2つ目 --------|------------------|--------|-------- Apollo | DOMAIN/OS SR10.4 | eth0 | eth1 INDY | IRIX 5.3 | ec0 | ec2 << 2つ目は ec1 ではない。 Sun | SunOS 4.1.x | le0 | le1 << SPARCstation 2 の場合。 Sun | Solaris 2.5.x | le0 | le1 << SPARCstation 5 の場合。 * Apollo DOMAIN/OS /etc/rc.local ------------------------------------ | | |if [ -f /etc/ifconfig ]; then | /etc/ifconfig dr0 192.9.200.1 << Apollo Token Ring 側のIPアドレス。 | /etc/ifconfig eth0 192.9.201.1 << TCP/IP 側のホストIPアドレス。 | /etc/ifconfig lo0 127.0.0.1 << 自分自身を表わすホストIPアドレス。 |fi $ /etc/ifconfig dr0 dr0: flags=43 inet 192.9.200.1 netmask ffffff00 broadcast 192.9.200.255 $ /etc/ifconfig eth0 eth0: flags=43 inet 192.9.201.1 netmask ffffff00 broadcast 192.9.201.255 macaddr 9:5:xe:6:ei:pc << これは MACアドレス。 次のようにマニュアルで入力しても設定できる。この例では netmask や broadcast をち ゃんと指定している。$ /etc/ifconfig eth0 192.9.201.1 というように、 指定しないと クラスCの netmask、broadcast の値が設定される。 ifconfig はコマンドを入れるとす ぐ有効になる。ネットワ−クの実験をする場合などで使える。 $ /etc/ifconfig eth0 192.9.201.1 netmask 255.255.255.192 broadcast 192.9.201.127 * Solaris 2.5.1 # ifconfig -a lo0: flags=849 mtu 8232 inet 127.0.0.1 netmask ff000000 hme0: flags=863 mtu 1500 inet 192.9.200.1 netmask ffffff00 broadcast 192.9.200.255 ether 9:0:28:6e:0:ka le0: flags=863 mtu 1500 inet 192.9.210.66 netmask ffffffc0 broadcast 192.9.210.127 ether 9:0:28:6e:0:ka 2個のイ−サネット・インタ−フェ−スが表示されていることに注意。 hme0 は 10 Mbps と 100 Mbps 兼用タイプの場合である。le1 ではないが間違いなわけではない。MACア ドレスはマシン固有のアドレスであり、同じであることも注意されたい。2つインタ−フ ェ−スがあればMACアドレスも2つあるものと、てっきり思っていたのだが。 * Sun Fire V210 の Solaris 9 # ifconfig -a lo0: flags=1000849 mtu 8232 index 1 inet 127.0.0.1 netmask ff000000 bge0: flags=1000843 mtu 1500 index 2 inet 192.168.1.1 netmask ffffff00 broadcast 192.168.1.255 ether 0:5:xe:6f:ei:pc << 適当です。 このマシンには4個のイ−サネット・インタ−フェ−スがある。nodenamae がマシンその ものを表わす。 hostname はイ−サネット・インタ−フェ−スに対応するホスト名である。 通常は最初のホスト名=ノ−ド名である。 /etc/hostname.bge0 /etc/nodename /etc/hosts # hostname ------------------ ------------- ----------------------- hostA |hostA |hostA |127.0.0.1 localhost |192.168.1.1 hostA /etc/hostname.bge1 |192.168.2.1 hostB ------------------ |hostB # ifconfig bge0 192.168.1.3 << これでマシンのIPアドレスはすぐ変わる。 # init 6 << 再起動。reboot コマンドでやるより安全。 * Sun の V210 と Blade 2500 のインタ−フェ−ス V210 DVI モニタDsub-15pinオス ----------------------------------------- 因み0がWAN、1がLAN | SERIAL MGT □ □ | 0 - bge0 2がDMZというように使う。 | □ □ □□□□ = = ―― | 1 - bge1 |NET MGT 0 1 2 3 USB2コ | 2 - bge2 ----------------------------------------- Blade 2500 ---------- マウス |USB4コ | キ−ボ−ド ----||-------- USB インタ−フェ−スではどこにマウス、 ||| | キ−ボ−ドを差してもいい。 | | |□ | <- IOIOI 1, RS-232C, 15ピンコネクタメス。 | | RJ45----□ | <- Ethernet インタ−フェ−ス。普通はここにつなぐ。 |□ | <- IOIOI 2, RS-232C, 15ピンコネクタメス。 モニタ--□□ | <- 左はモニタDsub-15pinオス。右はモニタDVI用。 | | |□□□□| <- 追加の Ethernet インタ−フェ−ス。 ---------- 3 2 1 0 Blade にネットワ−ク・ケ−ブルをハブにつないでいる。そのハブには Apollo もつなげ ていて、Apollo から Blade に telnet している状況にある。Blade をつないでいるネッ トワ−ク・ケ−ブルを別なハブに一瞬つなぎ換えた。これらは論理的に同じセグメント上 にある。Apollo から Blade に telnet しているのは切れなかった。SS5 だと、ネットワ −ク・ケ−ブルをマシンから抜くとスパ−ンという音がして、コンソ−ルにもワ−ニング が出た。Blade 2500 ではそれがなかったということ、確か V210 でもそうだったと思う。 (2) Apollo Domain/OS の起動 * /etc/rc ファイル制御 ここでは DOMAIN/OS の起動については説明はしない。TCP/IP ネットワ−クに関係した部 分について説明をする。 主なスタ−トアップ・ファイルは /etc/rc.local、 /etc/rc と /etc/rc.user がある。関係するのは /etc/rc.local ファイルだけである。これらのファ イルは /sys/node_data/etc/ へのリンクになっている。rgyd, glbd, llbd は Apollo 特 有のデ−モンである。例えば rgyd はネットワ−ク全体のパスワ−ド管理デ−モンである。 Xapollo はXウィンドウのサ−バである。Apollo は標準でDMというディスプレイ・マ ネ−ジャが画面表示をコントロ−ルしている。DMとXを共存させたり、どちらか単独で 稼働させたりできる。Mosaic をコンパイルして実行してみたが、 少々重た過ぎるようで ある。メイン・メモリ16メガの Apollo マシンで起動するのに1分ぐらいかかった。 $ wd /etc/daemons;ld 稼働したいデ−モンの空のファイルを作 Xapollo rgyd glbd lpd llbd cron 成する。$ crf inetd などとし空ファイ tcpd inetd sendmail routed ルを作成する。 /etc/rc ---------------------------------------------------------------- | | |if [ -f /etc/rc.local ]; then | /etc/sys_sh /etc/rc.local |fi | | |if [ -f /etc/ncs/glbd -a -f /etc/daemons/glbd -a $LLBD_ENABLED = true ]; then | (echo " glbd\c" >/dev/console) | /etc/ncs/glbd & |fi | | |if [ -f /etc/rgyd -a -f /etc/daemons/rgyd -a $LLBD_ENABLED = true ]; then | (echo " rgyd\c" >/dev/console) | /etc/rgyd |fi | | |if [ -f /etc/cron -a -f /etc/daemons/cron ]; then | /etc/cron |fi | | |# The bsd4.3 lpr printer server should only be run on the node |# that contains the local /usr/spool/lpd directory (bsd4.3 only). |# /etc/ncs/llbd or /etc/ncs/rpcd is needed to run lpd. |# |if [ -f /usr/lib/lpd -a -f /etc/daemons/lpd -a $LLBD_ENABLED = true ]; then | (echo " lpd\c" >/dev/console) | /usr/lib/lpd & |fi | | |if [ -f /usr/lib/sendmail -a -f /etc/daemons/sendmail ]; then | (echo " sendmail\c" >/dev/console) | (cd /usr/spool/mqueue; rm -f lf*) | /usr/lib/sendmail -bd -q1h & << sendmail デ−モンの起動。 |fi | | |# Start up the Aegis daemons. |if [ -f /etc/rc.user ]; then | /etc/server /etc/sys_sh /etc/rc.user << Apollo のプリントマネ−ジャやサ− |fi バ。diskless の Boot Server等起動。 |# |# Start Window system(s). |# Currently only the X Server is started here. The DM is started from |# init as a tty. See /etc/ttys. |(echo "Starting window system:\c" >/dev/console) |# |# /etc/daemons/Xapollo - Start the Domain/X11 server in share mode with DM | owns root. |# /etc/daemons/X - Start the Domain/X11 server in share mode X owns root and |# reparent DM focal points. |# The nice command can be used to set scheduling |# priority (example: nice --5 /etc/Xapollo .....). |# It is not recommended to use priorities higher than -5. |# |# Alternatively you can use xdm to start X servers. Be sure to configure |# your /usr/X11/lib/xdm/Xservers and /etc/ttys before attempting this. |# |if [ -f /etc/daemons/Xapollo -o -f /etc/daemons/X -o -f /etc/daemons/xdm -o -f | if [ -f /etc/vuerc \ /etc/daemons/vue ]; then | -a \( -f /usr/X11/lib/vue/etc/vuelogin -o -f /usr/vue/bin/vuelogin \) \ | -a \( -f /etc/daemons/vue -o -f /etc/daemons/xdm \) ]; then | ( echo " vuelogin\c" > /dev/console ) | ( /etc/vuerc )& | elif [ -f /etc/xdm -a -f /etc/daemons/xdm ]; then | (echo " xdm\c" >/dev/console) | (/etc/xdm) & | elif [ -f /etc/Xapollo -a -f /etc/daemons/X ]; then | (echo " X\c" >/dev/console) | if [ -f /bin/nice ]; then | (/bin/nice --5 /etc/Xapollo -D1 S+r+ ) & | else | (echo "Sorry. Cannot start Xapollo. No /bin/nice avail | fi able.\c" >/dev/console) | elif [ -f /etc/Xapollo -a -f /etc/daemons/Xapollo ]; then | (echo " Xapollo\c" >/dev/console) | if [ -f /bin/nice ]; then | (/bin/nice --5 /etc/Xapollo -K /usr/X11/lib/keyboard/ke | else yboard.config -D1 s+r-) & | (echo "Sorry. Cannot start Xapollo. No /bin/nice avail | fi able.\c" >/dev/console) | fi |fi |(echo "." >/dev/console) |exit 0 /etc/rc.local ---------------------------------------------------------------- |if [ -f /etc/tcpd -a -f /etc/daemons/tcpd ]; then | (/etc/tcpd -f >/dev/console) << IP forward off にする場合。 |# (/etc/tcpd >/dev/console) << IP パケットを通す場合。 |fi |if [ -f /etc/ifconfig ]; then | /etc/ifconfig dr0 192.9.200.1 << DOMAIN Ring 側のインタ−フェ−ス。 | /etc/ifconfig eth0 192.9.201.1 << Ethernet 側のインタ−フェ−ス。 | /etc/ifconfig lo0 127.0.0.1 |fi このファイルがなければ起動しない。 | ↓ |if [ -f /etc/syslogd -a -f /etc/daemons/syslogd ]; then | /etc/syslogd |fi |if [ -f /etc/routed -a -f /etc/daemons/routed ]; then | /etc/routed -f -h << 動的経路制御をする場合。 |fi |#if [ -f /etc/route ]; then << 静的経路制御をする場合。 |# /etc/route add |#fi | |#if [ -f /etc/arp ]; then << ARP の代理応答をさせる場合。 |# /etc/arp -s |# /etc/arp -f /etc/arp.conf |#fi | |#if [ -f /etc/rc.nfs ]; then |# /etc/rc.nfs << NFS を使う場合。 |#fi | |if [ -f /etc/inetd -a -f /etc/daemons/inetd ]; then | /etc/inetd << /etc/inetd.conf を編集すること。 |fi |if [ -f /etc/named -a -f /etc/named.boot -a -f /etc/daemons/named ]; then | /etc/named << DNS の稼働。 |fi | |#if [ -f /etc/daemons/ypbind ]; then << NIS 用。これはやらない。 |# /etc/nmconfig -h hostent_yp | | |elif [ -f /etc/resolv.conf ]; then | /etc/nmconfig -h hostent_bind << DNS の設定時に注意せよ。 |fi | |if [ -f /etc/hostname ]; then | /etc/hostname hostA << ホスト名を記述する。 |fi |if [ -f /etc/hostid -a -f /etc/hostname ]; then | /etc/hostid `/etc/hostname` |fi * rc.local ファイルの routed, timed, snmpd 部抜粋 /etc/rc.local ---------------------------------------------------------------- |# Enable dynamic routing. Options include: |# -s be a routing supplier |# -q be quiet |# -t trace rip traffic |# -f flush routing tables |# -h exit on hosts when routing tables stabilizes |# Remove the -q option below for gateway nodes. | |if [ -f /etc/routed -a -f /etc/daemons/routed ]; then | /etc/routed -f -h << オプションの -h は、経路制御のテ−ブルが安定した |fi ら routed デ−モンは消えるという。 | |# Enable the Berkeley time server daemon. |if [ -f /etc/timed -a -f /etc/daemons/timed ]; then | /etc/timed |fi |# Enable the SNMP (Simple Network Management Protocol) daemon. |if [ -f /etc/snmpd -a -f /etc/daemons/snmpd ]; then | /etc/snmpd << 何と SNMP デ−モンも動いてしまうという。 |fi (3) SGI INDY の起動 * デ−モンの起動 % chkconfig Flag State 現在のデ−モンの起動状態を表示する。だ−と出 ==== ===== てくる。この例では named は稼働していない。 autoconfig_ipaddress off routed は稼働していると見る。 named off routed on | named も稼働させるには、State フラッグを on にして、リブ−トするだけである。/etc/reboot % chkconfig named on コマンドを打つか再起動する。 注.sendmail は chkconfig では制御されていない。次のコマンドで制御すること。あれ れ INDY ではデフォルトで sendmail が稼働するようになっていたのかな。 % /etc/init.d/mail start ただちに sendmail を稼働させる。 Mailer daemons: sendmail. % /etc/init.d/mail stop ただちに sendmail を停止させる。 % ls -al /etc/init.d/mail -rwxr-xr-x 1 root sys 2596 5月 27日 1998年 /etc/init.d/mail % cd /etc/rc2.d; ls -al S50mail lrwxr-xr-x 1 root sys 14 12月 16日 1999年 S50mail -> ../init.d/mail * 起動の仕組み INDY は System V 系のOSのため BSD4.3 で慣れている /etc/rc や rc.local といった スタ−トアップ・ファイルはない。INDY では inst コマンドにより、 ソフトのインスト −ルと起動時に立ち上げるデ−モンを設定する。実際にデ−モンを起動時に立ち上げるか どうかは chkconfig コマンドで指定する。Silicon Graphics 社で作られたフリ−ソフト の hylafax(通称 FlexFAX)でさえ inst コマンドでインスト−ルするようになっている。 CERN httpd のような inst でインスト−ルできないソフトは困る。INDY のスタ−トアッ プ手続きがどうなっているか理解する必要がある。ポイントは /etc/rc2 スクリプトであ る。これを追っていけば分かる。rc2 は System V の run レベルで、 マルチユ−ザ・モ −ドで実行することを意味する。 /etc/init コマンドを実行 (/etc/inittab の情報を参照) ↓ > /etc/rc2 スクリプトを実行 ↓ > /etc/rc2.d/ にあるファイルを S 番号順に実行。 ↓ > /etc/rc2.d/S81cern に 'start' を引数に実行。 ↓ リンク先の /etc/init.d/cern を実際には評価。 ↓ ---------------------------------- |checkconfig で cern が on ならば| |/usr/local/bin/httpd を実行する | ---------------------------------- ↓ > /etc/rc2.d に戻って次の SNNxxx を実行する。 * 起動、停止に関わる制御ファイル % cat /etc/inittab << /etc/rc2 や /etc/rc0 が挙動を決めるために参照する。 is:2:initdefault: | s0:06s:wait:/etc/rc0 >/dev/console 2>&1 /dev/console 2>&1 /dev/console 2>&1 /dev/console 2>&1 /etc/init.d/hylafax [ 停止制御ファイル ] /etc/rc0 ------------------------------ |if [ -d /etc/rc0.d ] then | for f in /etc/rc0.d/K* { | if [ -s ${f} ] then | /sbin/sh ${f} stop | fi | } |/sbin/killall 9 << EWS停止の手続きが続く。 % ls /etc/rc0.d K02midi K10cadmin K26bsdlpr K45pppstartup K83swap K02videod K15cron K30netls K60netsite K84filesystems K02xdm K18uucp K35nck K80fax K96jserver K03announce K20mail K38outbox K80postinst K98usr K09mediad K25lp K40network K82sysetup % ls -al K80fax lrwxr-xr-x 1 root sys ... K80fax -> /etc/init.d/hylafax ↑ 注.起動ファイルは S80fax だった。S80 に対して K80 と番号を合わせる。 * マニュアルで制御ファイルを作る CERN httpd を INDY 起動時に立ち上げるように設定してみる。 /etc/rc2.d/ で指定する ファイル名をまず決める。次のように81番から87番が空いているので、81番を使う ことにし、S81cern とする。INDY 停止時の設定もするには、/etc/rc0.d/ に K81cern を 作成する。作業はもちろん root で行なうこと。 httpd デ−モンが rc2.d の起動でいい のか少し疑問になった。rc2.d には S60netsite がオプションとして追加されている。こ れは Netscape Communication Server である。INDY このマシンが WebFORCE なので入っ ていたのだ。rc2.d でよい。ちなみに rc3.d は空で何もなかった。 % ls -al /etc/rc2.d lrwxr-xr-x 1 root sys ... S80fax -> /etc/init.d/hylafax lrwxr-xr-x 1 root sys ... S88configmsg-> ../init.d/configmsg | % cd /etc/config % echo on > cern << cern という名のファイルを作る。中身は on の2文字。 /etc/config/cern ----------------- |on /etc/init.d/cern << このようにファイルを作成する。 ---------------------------------- |#! /bin/sh |IS_ON=/etc/chkconfig |if test ! -x $IS_ON ; then | IS_ON=true |fi |if $IS_ON verbose ; then | ECHO=echo |else | ECHO=: |fi |case $1 in | 'start') | if $IS_ON cern ; then | /usr/local/bin/httpd | fi | ;; | 'stop') | ;; 停止するための手続きを記述 |esac % cd /etc/rc2.d % ln -s /etc/init.d/cern S81cern << シンボリックリンクを張る。 % ls -l S81cern lrwxr-xr-x 1 root sys ... S81cern -> /etc/init.d/cern * 静的経路の設定 hostA で hostB へのデフォルト・ル−トを設定する例。 hostB は動的経路制御デ−モン が稼働していて他のネットワ−クの経路を集めて来る。設定は下記の通り network.local ファイルに静的経路を記述する。network.local ファイルは最初ないので自分で作成する。 このファイルは /etc/init.d/network から呼び出されるわけではない。 ファイルがあれ ば自動的に実行されるようになっている。 /etc/init.d/network.local |192.9.201.1 ------------------------------------------------- ------- |#! /bin/sh |hostB| routed |case $1 in ------- | 'start') |.2 | /usr/etc/route add default 192.9.200.2 1 -------------- 192.9.200.0 | ;; |.3 | 'stop') ------- | ;; 別にやることない。経路を設定したまま |hostA| |esac ででもよい。 ------- % ln -s /etc/init.d/network.local /etc/rc0.d/K39network % ln -s /etc/init.d/network.local /etc/rc2.d/S31network % reboot << 再起動すれば静的経路が設定される。起動時の画面を見ている と route add と出てくるので分かる。 % ls -l K39* lrwxr-xr-x 1 root sys ... K39network -> /etc/init.d/network.local % rm K39network << リンクを解除する場合 (4) Sun Solaris 2.5.1 の起動 * デフォルトのスタ−トアップ制御の状態 # cd /etc/rc2.d;ls K20lp S69inet S74syslog S88utmpd K60nfs.server S71rpc S75cron S90loc.ja.cssd README S71sysid.sys S76nscd S90loc.ja.kmod S01MOUNTFSYS S72autoinstall S80PRESERVE S92volmgt S05RMTMPFILES S72inetsvc S80lp S93cacheos.finish S20sysetup S73nfs.client S85lmgrd S99audit S30sysid.net S74autofs S88sendmail Solaris 2.x は System V 系のEWSなので、基本的には INDY と同じスタ−トアップ制 御である。INDY と異なるのは chkconfig に相当するコマンドがないこと。そのため直接 個々の制御ファイルをいじることになる。System V 系のスタ−トアップ制御はRun Level という仕組みで行われる。/etc ディレクトリに rc0.d、rc1.d、rc2.d、rc3.d、rcS.d と いうディレクトリがある。これら 0,1,2,3,S が Run Level である。 上記の /etc/rc2.d の内容は、マシンを起動した際に実行されるデ−モンであり、Sxxxx で数字の小さいもの から順に実行されることになる。デ−モンの追加は INDY と同じである。 ・0はシステムを停止する際に実行される。 ・2はマルチユ−ザモ−ド、通常はこのモ−ドで起動する。 ・Sはシングルユ−ザモ−ド。 ・3はマルチユ−ザモ−ド、マシンがNFSサ−バなどの場合に使われる。 他にも Run Level は 4,5,6 とあるが、4 は現在未使用になっている。 5,6 は 0 と同じ 意味で使われる。一応各ディレクトリの中身のデフォルト状態を示しておく。 rc0.d: K00ANNOUNCE K50utmpd K66nfs.server K75nfs.client K20lp K55syslog K69autofs K76nscd K42audit K57sendmail K70cron K85rpc rc1.d: K00ANNOUNCE K55syslog K67rpc K76nscd K42audit K57sendmail K68autofs K80nfs.client K50utmpd K65nfs.server K70cron S01MOUNTFSYS rc3.d: README S15nfs.server << 多分 NFS のサ−バ専用機として使う場合だろう。 rcS.d: * リンクの注意 /etc/rc2.d や /etc/init.d の中のファイルは一見別のものに見える。ls -l とやっても リンク先が表示されない。どうもハ−ドリンクされているようなのだ。シンボリック・リ ンクであれば file1 --> temp 等と出る。/etc/rc2.d/S69inet と /etc/init.d/inetinit は同じファイルである。どちらかを修正すると一方にも反映される。しかし、どのファイ ルがどれが関係しているのかまるで分からない。これは困ったことである。これらのディ レクトリにあるファイルの数も一致しない。中途半端な制御のやり方だ。 * マシン起動時に稼働させないデ−モンを指定する # cd /etc/rc2.d # mv S73nfs.client .S73nfs.client # mv S74autofs .S74autofs # mv S80lp .S80lp S72inetsvc ---------------------------------------------------------- |sleep 5 |/usr/sbin/ifconfig -au netmask + broadcast + |if [ -f /usr/sbin/in.named -a -f /etc/named.boot ]; then | /usr/sbin/in.named; | echo "starting internet domain name server." |fi |echo "Setting default interface for multicast: \c" |/usr/sbin/route add "224.0.0.0" "`uname -n`" 0 |#/usr/sbin/inetd -s << inetd を稼働させないようにする。 # ps -e PID TTY TIME CMD 0 ? 0:00 sched 多分ここから nscd までは最低限必要。 1 ? 0:00 init マシンの起動デ−モン。 2 ? 0:00 pageout 3 ? 0:00 fsflush 定期的に sync を実行している。 191 ? 0:00 ttymon 端末回線アクセス。getty みたいなもの。 187 ? 0:00 sac 端末回線アクセス。 147 ? 0:00 utmpd utmp and utmpx monitoring daemon。ロッグイン管理。 163 ? 0:01 vold ディスク、フロッピ−、CD-ROM を管理する。 124 ? 0:00 nscd ネ−ムサ−ビス・キャッシュデ−モン。 81 ? 0:00 rpcbind この3つ S71rpc で起動。これは portmapper と同じ。 83 ? 0:00 keyserv 日本では有効ではない。なくてもよい。 89 ? 0:00 kerbd Kerberos クライアント側デ−モン。 102 ? 0:00 in.named これ以下6つ必要がなければなくてもよい。 108 ? 0:00 syslogd syslog をとらないなら、消すこと。 118 ? 0:00 cron 137 ? 0:00 sendmail 135 ? 0:00 lmgrd.st フロ−ティング・ライセンスのサ−バ。 136 ? 0:00 suntechd これもライセンスに関係するデ−モン。 155 ? 0:00 cssd 以下、かな漢字変換サ−バである。 157 ? 0:00 atok7 158 ? 0:00 ccv 160 ? 0:00 kkcv 161 ? 0:00 cs00 * かな漢字変換サ−バ # ./S90loc.ja.cssd stop << cssd,atok7,ccv,kkcv,cs00 が消える。 # ./S90loc.ja.cssd start << 上記デ−モンが稼働する。 starting Kana-Kanji converters: # ps -ef UID PID PPID C STIME TTY TIME CMD root 2913 1 0 17:00:31 ? 0:00 /usr/sbin/cssd root 2916 2913 1 17:00:32 ? 0:00 /usr/sbin/kkcv -f root 2915 2913 1 17:00:32 ? 0:00 /usr/sbin/ccv -f root 2917 2913 1 17:00:32 ? 0:00 /usr/sbin/cs00 root 2914 2913 1 17:00:31 ? 0:00 /usr/sbin/atok7 * 注意事項 S71rpc を無効にすると openwin が起動しなくなる。# rpcinfo -p も効かなくなる。 スクリプトを無効にするには # mv S71rpc .S71rpc でも # mv S71rpc K71rpc でもよい。 ttymon を kill すると logout ができない。モデムや端末からのロッグインを見ている。 マシンを停止するには、rc0.d を実行する # init 0 コマンドを入れること。 または # shutdown -i0 -g0 とする。i0 は init 0。g0 は直にシャットダウン開始する。 * フロ−ティング・ライセンスの注意 純正Cコンパイラ等を入れると、ライセンスを管理する S85lmgrd が追加される。デ−モ ンは lmgrd.st と suntechd である。lmgrd.st を kill したらCコンパイラが、 5分ぐ らいして使えなくなった。lmgrd.st を手動で起動するには次のようにする。# ps -ef で 表示されるのからとった。これですぐCコンパイラは使えるようになる。 # /etc/opt/licenses/lmgrd.ste -c /etc/opt/licenses/licenses_combined & または # /etc/rc2.d/S85lmgrd << ファイル名を変えていても、 そのままの名前 Starting License Manager Daemon を指定すればよい。例えば K85lmgrd。 [ ライセンス・サ−バが動いていないと ] # make cc -O -I. -DNDBM -DSOLARIS=20500 -c alias.c -o alias.o ライセンスエラー : 機能 (sunpro.c.ja) 用の ライセンスサーバー (www) に接続できません。 (ライセンスサーバーが起動されていない可能性があります) ライセンスサーバーに接続できません。 (-15,12:146) 接続に失敗しました alias.c に対して、acomp が失敗しました。 make: *** [alias.o] Error 2 * 経路制御 /etc/rc2.d/S72inetsvc -------------------------------------------------------------------------- |sleep 5 |/usr/sbin/ifconfig -au netmask + broadcast + |if [ -f /usr/sbin/in.named -a -f /etc/named.boot ]; then | /usr/sbin/in.named; echo "starting internet domain name server." |fi |echo "Setting default interface for multicast: \c" |#/usr/sbin/route add "224.0.0.0" "`uname -n`" 0 << なくてもいい。 | |/usr/sbin/route add net 192.9.202.0 192.9.201.1 1 << 静的経路を記述。 | |/usr/sbin/inetd -s /etc/defaultrouter □ ------------------ | |192.9.201.1 << デフォルト経路 ------------------ 192.9.202.0 のIPアドレス。 | または □ ゲ−トウェイ or ル−タ |.1 /etc/defaultrouter /etc/hosts ------------------ 192.9.201.0 ------------------ -------------------- |.2 |drouter |drouter 192.9.201.1 □ このマシン (5) Sun Solaris 2.6 の起動 * 起動の仕組み [ 先ずは Run Level を確認する ] # who -r . run-level 3 9月 26 15:47 3 0 S << マルチユ−ザモ−ド+NFSサ−バ での稼働可能状態。 [ 起動の仕組みをおさらいする ] /etc/init デ−モンが先ず最初に立ち上がり、/etc/inittab ファイルを見る。 その中の 記述 "is:3:initdefault" により、Run Level 3で稼働させると見る。Run Level 3では 2も実行することになっている。"s2:23:wait:/sbin/rc2" により /sbin/rc2 を先ず実行 し、"s3:3:wait:/sbin/rc3" により /sbin/rc3 を実行する。/sbin/rc2, rc3 スクリプト は /etc/rc2.d の SXXX を、/etc/rc3.d/SXXX を実行していく。これら /etc/rcX.d の中 のファイルは、例えば /etc/rc2.d/S72inetsvc は /etc/init.d/inetsvc が実体であって、 ハ−ドリンクされている。マシン起動の説明は # man init とやれば、英語のままだが出 てくる。小生は、以前 Solaris のマニュアル一式を購入した中の 「Solaris のシステム 管理(第1巻)」1995年5月発行、P.111〜132 を参考にした。 * スタ−トアップ・ファイル # cat /etc/inittab is:3:initdefault: の3がデフォルトの実行レベルになる -------------------------------------------------------------------------------- |ap::sysinit:/sbin/autopush -f /etc/iu.ap |ap::sysinit:/sbin/soconfig -f /etc/sock2path |fs::sysinit:/sbin/rcS >/dev/console 2<>/dev/console /dev/console 2<>/dev/console |s0:0:wait:/sbin/rc0 >/dev/console 2<>/dev/console /dev/console 2<>/dev/console /dev/console 2<>/dev/console /dev/console 2<>/dev/console ../sbin/rc0 lrwxrwxrwx 1 root root .. 2001年 /etc/rc1 -> ../sbin/rc1 lrwxrwxrwx 1 root root .. 2001年 /etc/rc2 -> ../sbin/rc2 lrwxrwxrwx 1 root root .. 2001年 /etc/rc3 -> ../sbin/rc3 lrwxrwxrwx 1 root root .. 2001年 /etc/rc5 -> ../sbin/rc5 lrwxrwxrwx 1 root root .. 2001年 /etc/rc6 -> ../sbin/rc6 lrwxrwxrwx 1 root root .. 2001年 /etc/rcS -> ../sbin/rcS * ifconfig と netmasks /etc/hosts /etc/hostname.le0 -------------------------------------------- ----------------- |127.0.0.1 localhost localhost.nix.co.jj |emis |192.168.1.2 emis emis.nix.co.jj loghost /etc/rc2.d/S72inetsvc /etc/defaultrouter ----------------------------------------------- ------------------ |/usr/sbin/ifconfig -auD netmask + broadcast + |192.168.1.1 R■ □emi /etc/netmasks |.1 |.2 nix.co.jj --------------------------- --------------- 192.168.1.0 |192.168.1.0 255.255.255.0 (netmask 0xffffff00) R■ □emi /etc/netmasks 65〜126 有効、127 broadcast address |.1 |.2 ----------------------------- --------------- 192.168.1.64 |192.168.1.64 255.255.255.192 (netmask 0xffffffc0) 192.168.1.0 を4つのサブネットにする場合。192.168.1.0, 64, 128, 192 ネットワ−ク アドレスになる。192.168.1.0 と 192.168.1.192 は使えない。有効なのは間の2つ。 * 実行ファイル 以下は Mail ホストの `21/09 時点での状態である。メ−ルサ−バのホストであり、ウィ ルスチェックの InterScan が稼働している。 # ls /etc/init.d ANNOUNCE buildmnttab inetinit nfs.server sysetup MOUNTFSYS cachefs.daemon inetsvc nscd sysid.net PRESERVE cachefs.root init.dmi pcmcia sysid.sys README cacheos init.snmpdx power syslog RMTMPFILES cacheos.finish initpcmcia rootusr ufs_quota Wnn6 cron keymap rpc utmpd audit devlinks lp sendmail volmgt autofs drvconfig mkdtab spc xntpd autoinstall dtlogin nfs.client standardmounts # ls /etc/rc* rc0 rc1 rc2 rc3 rc5 rc6 rcS rc0.d: K00ANNOUNCE K42audit K57sendmail K69xntpd K75nfs.client K10dtlogin K50utmpd K66nfs.server K70cron K76nscd K20lp K55syslog K69autofs K73volmgt K85rpc rc1.d: K00ANNOUNCE K42audit K65nfs.server K70cron S01MOUNTFSYS K10dtlogin K50utmpd K67rpc K76nscd K15Wnn6 K55syslog K68autofs K80nfs.client K20lp K57sendmail K69xntpd K85power rc2.d: K20spc S05RMTMPFILES S74syslog S90loc.ja.cssd K60nfs.server S20sysetup S74xntpd S92volmgt K73nfs.client S30sysid.net S75cron S93cacheos.finish K74autofs S69inet S76nscd S94Wnn6 K76snmpdx S71rpc S80PRESERVE S99IScanHttpd K77dmi S71sysid.sys S80spc S99audit K80lp S72autoinstall S85power S99dtlogin README S72inetsvc S88sendmail S01MOUNTFSYS S73cachefs.daemon S88utmpd rc3.d: README S15nfs.server S76snmpdx S77dmi rcS.d: K65pcmcia S33keymap.sh S50drvconfig README S35cacheos.sh S60devlinks S10initpcmcia S40standardmounts.sh S65pcmcia S30rootusr.sh S41cachefs.root S70buildmnttab.sh * まだ疑問が # set とやると、一杯環境変数が出て来る。MANPATH=..., HELPPATH=.., EDITOR=.. とか これらは一体どこで設定されているのか。 /etc/rc2.d の中で grep かけても出て来ない。 Perl v5.6 をインスト−ルしたところ、 /usr/local/lib 以下のライブラリを見ようとす る。マシンのデフォルトでは /usr/lib 以下しか見ないのでエラ−になる。 root でロッ グインして作業するのなら、 /.cshrc に setenv LD_LIBRARY_PATH /usr/local/lib と記 述しておけばいい。しかしWWW経由で Perl を使うとなると、一体どうなる。 おや、/etc/rcS.d/S30rootusr.sh というファイルで LD_LIBRARY_PATH の記述が見られる ぞ。ここに /usr/local/lib を追加すればいいのかな。しかし、このファイルが実行され ているなら、setenv コマンドで LD_LIBRARY_PATH=/etc/lib と出て来るはずだが。rcS.d はシングル・ユ−ザモ−ドで起動する場合である。 # grep LD /etc/rcS.d/* rcS.d/S30rootusr.sh:LD_LIBRARY_PATH=/etc/lib; export LD_LIBRARY_PATH rcS.d/S30rootusr.sh:LD_LIBRARY_PATH=/usr/lib; export LD_LIBRARY_PATH * こんなのも覚えておくとよい モニタとキ−ボ−ドを制御するコマンドと初期設定ファイルがある。キ−ボ−ドまたはモ ニタを本体から外すと break 信号が発生し、Stop+A キ−を押したのと同じことになりマ シンが止まってしまう。しばらくは大丈夫なのだが、どうも3分程度で止まるようである。 これは地震なんかでモニタやキ−ボ−ドのケ−ブルが外れたりすると、それだけでマシン が停止するということである。パソコンはそんなことでは止まらないのだが。 INDY でも モニタのケ−ブルが外れるとパニックになったような、 Apollo ではまるで平気なんだが。 ともかく Solaris では /etc/default/kbd ファイルというのがあって、 デフォルトは暗 黙理に KEYBOARD_ABORT=enable になっている。これをKEYBOARD_ABORT=disable にすると、 ケ−ブルを外しても大丈夫にできる。つまり break 信号が発生しなくなる。 /etc/default/kbd ------------------------------------------------------------------------ |# kbd default settings processed via kbd(1). |# |# KEYBOARD_ABORT affects the default behavior of the keyboard abort |# sequence, see kbd(1) for details. The default value is "enable". |# The optional value is "disable". Any other value is ignored. |# |# KEYCLICK affects the default keyclick behavior. Possible values are |# 'on' and 'off'. Any other value is ignored. The default behavior is |# to leave the current keyclick setting unchanged. |# |#KEYBOARD_ABORT=enable |#KEYCLICK=off # kbd -i << /etc/default/kbd ファイルをいじった場合はやること。 # kbd << # man kbd で説明が出る。t はキ−ボ−ドのタイプを表示する。 Usage: kbd [-r] [-t] [-a enable|disable] [-c on|off] [-d keyboard device] kbd -i [-d keyboard device] # kbd -a disable << その場でコマンドで、キ−ボ−ドのケ−ブルを本体から外し ても大丈夫にする。マシンを再起動するとデフォルトに戻る。 # kbd -a enable # kbd -c on << おまけ、キ−ボ−ドを叩くとクリック音を出す。 # ls /etc/default *** こんなようなファイルがあります *** cron inetinit kbd passwd sys-suspend utmpd fs init login su tar * パスワ−ドロックの解除 Ultra10 がパスワ−ドロックかかってしまった `25/11 のこと。あわてていて root のパ スワ−ドを間違えて何回か入れたみたい。モニタのスクリ−ンセ−バでのGUIのロッグ イン画面のことだが、正しいパスワ−ドをその後入れても効かなくなってしまった。この 状態から脱却するには、Stop+A で ok プロンプトを出し sync コマンドを打つ。 パスワ −ドがこれまでのままなら、これでOK。もし、もしもパスワ−ドが変わっていたらやっ かいである。Solaris のOSの CD-ROM でブ−ドして /etc をマウントして、パスワ−ド ファイル shadow の root のパスワ−ド部を消す。これでとりあえずパスワ−ドなしでロ ッグインできるようになる。Stop+A, sync での再起動は2分もかからない。 * これまでのサ−バのマシンの整理 `2d ぐらい 月日が経ってメ−ルストアやファイアウォ−ルで活躍してきた Sun、Solaris OSのマシ ンも用済みになったのも出て来た。まだメ−ルリレ−で稼働しているのもあったりするが。 とりあえず Sun の純正モニタをほかりたい。 液晶モニタでなくガラスのディスプレイだ からでかいのだ。特殊なコネクタでつないでいるし。Sun のモニタやキ−ボ−ドはいきな り外すと break 信号が発生して、マシンがクラッシュする。 クラッシュしない設定にし たはず、確認しておくこと。その後でマシンとモニタを入れ替えて映るかどうか確認する。 # kbd -a disable でキ−ボ−ドのケ−ブルを本体から外しても大丈夫にする。 今回改め て挙動をみた。下記の操作せずにモニタのケ−ブルを抜き差ししてみた。モニタに関して は問題はないのだろう。Sun の V210 と Blade2500 のモニタでやってみた。 /etc/default/kbd デフォルトの設定。# kbd -a enable をやるのと同じ。 ------------------------ |#KEYBOARD_ABORT=disable コメントを外して、# kbd -i コマンドを叩いておく。 * Sun のマシンのモニタとキ−ボ−ドの制御 `2c/12 [ Sun Ultra 10 で動作確認 ] キ−ボ−ドのコネクタを筐体から抜いた瞬間にピッと音がして、モニタの左下にでてきた。 Type 'go' to resume ok ■ それからキ−ボ−ドのコネクタをつないだ。マウス反応せず。マウスはキ−ボ−ドにコネ クタがつながっている。キ−入力すると ok ■ の表示のところに文字がでた。 ok go [Return] とやるとマウスが反応してきた。ここで boot [Return] と入れるとマシ ンは再起動してくるので注意、何分か起動するのに時間かかりマシンが使えなくなる。 モニタの画面は少し乱れた。マウス右ボ ------------------ タンでメニュ−をだす。{Refresh} をや | Workspace Menu | ると正常な画面にもどった。 |----------------| | Program | モニタのコネクタは抜き差しても問題な | | | い。ちなみにキ−ボ−ドを外してマシン | Refresh | の電源をいれた。モニタに inputdevice | | | が開けない、"Keyboard not Present"と |----------------| 出てそれ以降起動しなかった。キ−ボ− | Log out... | ドがあると "Keyboard Present" とでる。 ------------------ マシンの起動時の画面のログは /var/adm/messages に残っている。...keyboard is major <37> minor <07>。 キ−ボ−ドはつないであっても、なくても 残されているログは一緒みたい。/etc/default/kbd ファイル有り。# kbd -a disable を やってキ−ボ−ドのコネクタを抜いてみた。問題なそうだが、何回かやったらおかしくな る場合もあった。マウスは動くのだがキ−入力ができないことがあった。上のメニュ−を マウスでだして {Log out} やったら正常になった。 [ Sun Blade 2500 では ] Sun のマシンとパソコンをKVMスイッチでキ−ボ−ドとモニタを共有している。それぞ れに分けたいのだけど。 いきなり Sun のマシンからKVMスイッチにつながっているコ ネクタを抜いて大丈夫か。思わず抜いてしまおうかと思ったが、一応調べてみようと思い 留まった。良かった−、あわやおかしくなるところだった。実のメ−ルサ−バとして稼働 させているマシンだ。/etc/default/kbd ファイルをみれば、どうか分かる。 キ−ボ−ド を制御するファイルである。デフォルトは KEYBOARD_ABORT=enable ということ。 キ−ボ −ドのコネクタが抜けているとアボ−ト信号を出すということである。 [ Sun Blade 2500 の /etc/default/kbd ファイル ] # cat /etc/default/kbd #pragma ident "@(#)kbd.dfl 1.3 99/05/04 SMI" # # Copyright 1996, 1999 by Sun Microsystems, Inc. # All Rights Reserved. # # /etc/default/kbd # # kbd default settings processed via kbd(1). # # KEYBOARD_ABORT affects the default behavior of the keyboard abort # sequence, see kbd(1) for details. The default value is "enable". The # optional values are "disable" or "alternate". Any other value is ignored. # If you choose "alternate" it will affect the serial console drivers ONLY. # The keyboard BREAK (sequence and plug/unplug) won't be affected by this. # If "alternate" is in effect any protocol (PPP, SLIP... etc) should not be # run over the serial console port. # # KEYCLICK affects the default keyclick behavior. Possible values are # 'on' and 'off'. Any other value is ignored. The default behavior is # to leave the current keyclick setting unchanged. # # Uncomment the following line to disable keyboard or serial device # abort sequences: #KEYBOARD_ABORT=disable # Uncomment the following line to enable a non-BREAK alternate # serial input device abort sequence: #KEYBOARD_ABORT=alternate # Uncomment the following line to change the keyclick behavior: #KEYCLICK=off