実行 - みる会図書館


検索対象: UNIX MAGAZINE 1999年2月号
74件見つかりました。

1. UNIX MAGAZINE 1999年2月号

連載 / Linux でリラックスー① 送ると、 init デーモンはファイルの内容に従って実行レベ ルを変更します。変史後、 /etc/initrunlvl と /var/log/ initrunlvl は init デーモンによって削除されます。 /etc/ initrunlvl も /var/log/initrunlvl もない場合は、 /etc/ inittab の内容を再度読み込みます。これは、 /sbin/telinit q と同じ重川です。 たとえは、実行レベルを 1 ( シングルューザー・モード ) に変更するには、以下のようにします ( これは Slackware 3.6 での実行例です ) 。 # /sbin/telinit 1 INIT: Switching to runlevel: 1 INIT: Sending processes the TERM signal Waiting for processes tO terminate. TeIIing INIT t0 go tO single user mode (if already there) . INIT: Switching to runlevel : 1 Sending a11 processes the KILL signal ・ We1come tO Linux 2 . 0 .35. raccoon : /etc/inittab not /sbin/init プログラムの成疋ファイル /etc/inittab に ついて説明します。 /etc/inittab には、システムの起動 時、あるいはシステムの実行レベルか変化した場合におこ なう処理か当されています。 /etc/inittab ファイルの " ( コロン ) で区切った 4 つの項目から構成さ 各行は、 れます倥行や # で始まる行は無視されます ) 。 識別子 : 実行レベル : 種類 : プロセス 頁目に記する内容を説明します。 ・識別子 このエントリを表す 4 文字までの固有の文字列を指定 します。この値は、ほかのエントリの識別子と重複して はいけません。なお、バージョン 5.2.18 以前の libc を 用いた場合、または実行ファイルのフォーマットとし て a. out を用いた場合は、識別子の長さは 2 文字まで に制限されます。 ・実行レベノレ このエントリカ陏効になる実行レベルを指定します。 UNIX MAGAZINE 1999.2 のエントリに指定したプロセスが実行されるのは、ここ て指定されている値と実行レベルが一致するときだけで す。、、実行レベル " には、 、、 123456 " のように複数の実 行レベルを並べて指定することもできます。、冴鶤頁 " の イ直カゞ、 sysinit 、 boot 、 bootwait のいすれかの場合に は、こ刎直は意味をもちません。 不鶤頁 このエントリで指定されたプロセスをどのように実行す るか、このエントリがどのようなときに有効になるかを 指定します。 sysvinit では、以下の 15 不鶤頁のパラメー タが用意されています。 ・Ⅱ 、、プロセス " に指定されたプロセスを実行し、それが 終了すると、佃胸も同じプロセスを繰り返し実行しま す。これは、 getty のように繰り返して何度も起動す る必要のあるプロセスに用います。 init デーモンは、 1 つのプロセスが 2 分間に 10 回以 ーヒ起動されると、そのプロセスの実行がエラーのた めに終了しているとみなしてそれ以ーヒの実行をおこ ないません。 5 分以 - E 時間か経過するか、 init デー モンがシグナルを受信した場合、 init デーモンはふ たたひフ。ロセスの実行を試みます。 ・ wait 、、プロセス " に指定されたプロセスを 1 回だけ実行し ます。 init デーモンは、このプロセスか終了するま でほかの処理をおこないません。 、、プロセス " に指定されたプロセスを 1 回だけ実行し ます。 wait とは異なり、 init デーモンは、このプロ セスの終了を待たすに ( もしあれは ) はかのエントリ を実行します。 boot 、、プロセス " に指定されたプロセスを、システムの起 重加 ( 正確には init デーモンの起重加に 1 回だけ 実行します。 once とい犲兼、 init デーモンはプロセス の終了を待たずに、 ( もしあれは ) ほかのエントリを 実行します。このとき、、、実行レベル " の値は懣未を もちません。 respawn 、 wait 、 once では、実行レベルが変化す るたびに指定された処理をおこないますが、 boot 、 123

2. UNIX MAGAZINE 1999年2月号

連載 / Linux でリラックス bootwait 、 sysinit では、システムの起重加こしか 実行されません。 bootwait boot と同しですが、 init デーモンはプロセスカ絲冬了 するまでほかの処理をおこないません。 sysinit bootwait と同じですが、 boot や bootwait よりも 前に実行されます。 このエントリに関する処理をおこないません。 ondemand 実行レベルを変更せすに、、、プロセス " で寸旨定された プロセスを実行します。この場合、実行レベルには A 、 a 、 B 、 b 、 C 、 c のいずれかを指定します。 initdefault 実行レベル " で才旨定した値が、デフォルトの実行レ ベルになります。、、プロセス " の値は意味をもちませ ん。 /etc/inittab にデフォルトの実行レベルカ甘旨定 されていない場合、 init デーモンは起重加に Enter runlevel : というメッセージを表示し、キーポードから実行レ ベルを入力するように求めます。 PO 、 powerwait と powerfail 、 powerokwait 、 power- failnow の各工ントリは、 UPS (Uninterruptible Power Supply : 無停電電源装置 ) の状態を監視す るデーモンと組み合わせて使用します。詳細は、文 献 [ 1 ] を参照してください。 powerwait のエントリは、 UPS への電源イ蜉合が停 止した場合に有効となり、指定したプロセスが実行 されます。 wait と同様、 init デーモンは実行したプ off powerfail ロセスの終了を待ちます。 124 デーモンは実行したプロセスの終了を待ちます。 定したプロセスカ躾行されます。 wait と同様、 init UPS への電源イ合か再開した場合に有効となり、指 powerokwait ます。 たプロセスの終了を待たすにほかの処理をおこない powerwait と同しですが、 init デーモンは実行し powerfailnow UPS への電源イ合が停止さ UPS のバッテリー 残量が少なくなるとこのエントリで指定したプロセ スが実行されます。 ctrlaltdel init デーモンは、 SIGINT シグナルを受信すると、 このエントリで指定されたプロセスを実行します。 Linux カーネルは、キーポードの Ctrl 十 Alt 十 DeI キーか 1 司時に押された場合、プロセス番号 1 のプロセ スに SIGINT シグナルを送出します。したがって、 CtrI 十 AIt 十 DeI キーを押すと、このエントリか有効 になります。 Slackware 3.6 のデフォルトの成疋では、 /sbin/shutdown —t5 —rf now か実行されます。つまり、 CtrI 十 AIt 十 DeI キーを同 時に押すとシステムか再起動されます。 数年前、私か初めて Linux を使ったとき、 Ctrl 十 Alt 十 DeI で OS がシャットダウンされることにびつく りしました。それまで、ワークステーションを使用 してきた経験からいうと、 「キーポードから誰でも簡単にシャットダウンでき のにはすいぶん理亢がありました。 もちろん、 /etc/inittab から ctrlaltdel のエントリ を削除すれは、 CtrI 十 AIt 十 DeI によるシャットダウ ンを無効にすることかできます。 このエントリは、 init デーモンが SIGINT シグナル を受信したときに有効になるので、 kill —INT 1 のように、 SIGINT シグナルを init デーモンに直接 送った場合も実行されます。 kbdrequest init デーモンが SIGWINCH シグナルを受信したと き、このエントリを実行します。 L ⅲ ux カーネルの コンソーノレ・ドライバは、 KeyboardSignal ( または Spawn-Console) の機能か割り当てられたキーか胛 されると、すべてのプロセスに SIGWINCH シグナ ルを送出します。このため、特定のキーを押すことに よって、このエントリを実行できます。 UNIX MAGAZINE 1999.2

3. UNIX MAGAZINE 1999年2月号

連載 /Linux でリラックスー① (Slackware の場合 ) や /etc/rc. ?d (Red Hat Linux や Debian GNU/Linux の場合。、、 ? " は数字 ) に置かれて いる初期化スクリプトを実行します。匆硼化スクリプトで は、ファイルシステムの整合性の検査や、イ畯な一時ファ イルの消去、各種のバックグラウンド・プロセスの起動な どをおこないます。 init デーモンの仕事はこれだけではありません。た とえば、 getty プロセスを起動し、ユーサーが端末から ログインできるようにします。システム上で動いている すべてのプロセスは、 init デーモンの子プロセス ( また は孫プロセスなど ) として起動されます。 init デーモン は、システムにログインしているユーサーを記録したフ ァイル /var/run/utmp ( 現在ログイン中のユーサー ) や /var/log/wtmp ( 過去にログインしたユーサー ) の更新 もおこないます。 sysvinit sysvinit は、 MiqueI van Smoorenburg かイ乍成した SystemV 互換の init プログラムです。 init プログラム のほか、 shutdown や reboot などの関連コマンドも含ま れています。 sysvinit の最斤バージョンは 2.76 で、以下 の FTP サイトなどから入手できます。 ・ ftp://sunsite.unc.edu/pub/Linux/system/ daemons/init/sysvinit-2.76. tar. gz ・ ftp://sunsite.sut.ac ・ jp/pub/archives/linux/ system/daemons/init/sysvinit-2.76. tar. gz sysvinit は、もともと Debian GNU/Linux 用に開 発されましたが、前述のように Slackware や Red Hat Linux など、ほとんどの Linux 配布パッケージでも利用 されています。 sysvinit は SystemV の init の十 . 位互換 であり、後者にはない機能も含まれています。 実行レベノレ BSD UNIX の init とは異なり、 sysvinit には、、実行 レベル (run level)" という概念があります。実行レベル とは、システムで利用できるサービスを決めるものです。 sysvinit では、 0 ~ 6 、 S の 8 不頁の実行レベルが定義さ れています俵 1 ) 。 UNIX MAGAZINE 1999.2 表 1 定斉みの実行レベル 0 1 、 S 2 ~ 5 6 システムの停止 (halt) シングルユーザー・モード マルチューサー・モード システムの早旦重力 (reboot) 実行レベル 0 はシステムの停止 (halt) 、実行レベル 6 はシステムの再起動 (reboot) のために使います 2 。 実行レベル 1 は、システムをシングルューザー・モー ドにする場合に使用します。シングルューザー・モードと は、最低限必要なプロセスだけカ起動さ root しかロ グインできない状態です。実行レベル s3 もシングルユー ザー・モードですが、起重加叔こ /etc/inittab ファイルを 読み込まない点が異なります。 実行レベル 2 ~ 5 は、マルチューサー・モードの場合 に使用します。 sysvinit では、これらをどのように使う かは決められていないので、配布パッケージによって異 なります。たとえは Slackware では、デフォルトの実 行レベルは 3 ですが、 Debian GNU/Linux では 2 と なっています。また、 Slackware では、実行レベル 4 は /sbin/agetty (Slackware の getty プロセス ) の代わり に /usr/XI 1R6/bin/xdm (X Display Manager) を起 動するために使われます。 7 ~ 9 の実行レベルも用意されていますが、通常は使い ません。 直前およひ現在の実行レベルを表示するには、 /sbin/ runlevel コマンドを以下のように実行します。 # /sbin/runlevel これは、直前の実行レベルが 1 で、現在の実行レベル が 3 であることを示しています。 /sbin/runlevel コマン ドは、一殳ューザーの権限で実行できます。 これらの値は、環境変数 PREVLEVEL と RUN- LEVEL にも格納されています。 Slackware 3.6 では、 システムの起重加 (init デーモンの起重加寺 ) に図 1 の環境 変数が設定されています。これらの竟変数は、 getty か ら起動されるシェルには引き継がれないので注意してくだ 2 SystemV の init では、実行レベル 5 がシステムの再動丿 ) ために使 用されます。 3 /sbin/init プログラムは、実行レベルの大・小文字を区別しないため、 小文字の s を使用することもできます。 121

4. UNIX MAGAZINE 1999年2月号

連載 / Linux でリラックスー① 図 1 時に言聢されている竟変数 BASH=/bin/sh BASH_VERSION=I .14.7 ( 1 ) BOOT_IMAGE=bzimage CONSOLE=/dev/consoIe EUID=O HOME=/ HOSTTYPE=i386 IFS= ←起動に使用したカーネル名 (LILO/LOADLIN が設定 ) ←未定義ならは init が設定 ← init の / ヾ INIT_VERSION=sysvinit-2.73 OPTERR= 1 OPTIND=I OSTYPE=Linux ージョン (init が設定 ) PATH=/sbin: /usr/sbin:/bin:/usr/bin ←未定義ならば init が設定 PPID=IO PREVLEVEL=N PS4= + PWD=/ RUNLEVEL=S SHELL= /b in/bash SHLVL= 1 TERM=1inux UID=O 実行レベルの変更 ←直前の実行レベル (init が設定 ) ←現在の実行レベル ( ⅲ it が設定 ) 実行レベルを変更するには、通常、 /sbin/telinit コマ ンドを使います。ただし、このコマンドの実行には root の権限が必要です。 /sbin/telinit で実行レベルの変更を指示すると、 init デーモンは設疋ファイル /etc/inittab の内容を再度読み 込みます。そして、新しい実行レベルに属さないすべての プロセスに SIGTERM シグナルを送出します。さらに、 その 5 秒後にこれらのプロセスに SIGKILL シグナルを 送り、プロセスを強制的に終了させます。 init デーモン は、 /etc/inittab の言当主内容に従って、新しい実行レベ ルに対してプロセスの生成などの処理をおこないます。 /sbin/telinit コマンドの使用法は以下のとおりです。 /sbin/telinit [—t 秒数 ] C0123456789SsQqAaBbCcUu] /sbin/telinit への引数として 0 ~ 9 、 S のいすれかを指 定すると、 init デーモンは現在の実行レベルを指定された 値に変更します。、、一 t 秒数 " を指定すれは、 SIGTERM シグナルを送出してから SIGKILL シグナルを送出する までの日判り ( デフォルトでは 5 秒 ) を変更できます。 引数として A 、 a 、 B 、 b 、 C 、 c のいすれかを指定し 122 た場合は、実行レベルは変更せすに /etc/inittab の対応 するエントリを実行します。言田については、 inittab(5) を参照してください。 引数 Q または q を指定すると、 init デーモンは /etc/ inittab の内容を再度読み込みます。これは、 /etc/init- tab を修正したときに使います。 引数 U または u を指定すると、 init デーモンは自分自 身のプロセスを再実行します。この機能は、一イ殳の Sys- temV の init にはありません。 /sbin/init プログラムと /sbin/telinit コマンドの実体 は同じなので、 /sbin/telinit の代わりに /sbin/init を使 うこともできます ( 実行した init のプロセス番号が 1 で なければ、 telinit コマンドとして重川します ) 。 実行レベルを変更するには、 /sbin/telinit のほかに init デーモンに SIGHUP シグナルを送る方法がありま すにれは互換羅のために用意されているだけなので、通 常は /sbin/telinit コマンドを使います ) 。この場合、 /etc /initrunlvl または /var/log/initrunlvl というファイル に、変更したい実行レベルと、 SIGTERM を送ってか ら SIGKILL を送るまでの待ち時間を秒数で言してお きます。そして、 init デーモンに SIGHUP シグナルを UNIX MAGAZINE 1999.2

5. UNIX MAGAZINE 1999年2月号

96 ~ 98 行目 : スクリーン・フォントの成疋 ような処理がおこなわれます。 /etc/rc. d/rc. font ファイルかま行可能であれば、読み 18 行目 : スクリーン・セーバーカ種川乍するまでの時間を 込んで実行します。 コンソールのフォントを変更したいときは、このスクリ /bin/setterm コマンドを用いて、コンソールのスクリ プト中に言己します。 ーン・セーバーカ種川乍するまでの時間を 15 分に言し 107 ~ 109 行目 : iBCS 工ミュレータの成疋 /etc/rc. d/rc. ibcs2 ファイルかま行可能であれは、読 27 ~ 29 行目 : CD-ROM ドライプをマウント み込んで実行します。 /etc/rc. d/rc. cdrom が実行可能であれば、これを読み iBCS (lntel Binary Compatibility Specification 込んで実行します。 工ミュレータとは、 Linux 上で SystemV R3/R4 な IDE/ATAPI 、 SCSI 、および独自規格の CD-ROM どのプログラムを実行するエミュレータです。 ドライプを順番に探し、もしあれば /cdrom 以下にマ 112 ~ 114 行目 : httpd の走旦重力 ウントします。 /etc/rc. d/rc. httpd ファイルか夫行可能であれば、 32 ~ 34 行目 : /etc/HOSTNAME がなければ作成 み込んで実行します。 38 行目 : システムのホスト名を設定 117 ~ 119 行目 : samba の起動 41 ~ 53 行目 : ネットワーク関係の設定 /etc/rc. d/rc. samba ファイルかま行可能であれば、読 /etc/rc. d/rc. inetl カ躾行可能であれば、 /etc/rc. d/ み込んで実行します。 rc. inetl と /etc/rc. d/rc. inet2 を読み込んで実行しま 122 ~ 124 行目 : キーポードマッフ。の言聢 す。 /etc/rc. d/rc. keymap ファイルが実行可能であれは、 /etc/rc. d/rc. inetl では、ネットワーク・インターフェ 読み込んで実行します。 イスの言置をおこないます。 127 ~ 129 行目 : rc. 10Ca1 の実行 /etc/rc. d/rc. inet2 では、 /usr/sbin/rpc ・ portmap /etc/rc. d/rc.local ファイルか夫行可能であれば、 や /usr/sbin/rpc. inetd など、ネットワーク関連のデ み込んで実行します。 ーモンを起動します。 通常、ホスト固有の設定はこのファイルに言当します。 56 ~ 58 行目 : netatalk の起重力 /etc/rc. d/rc. atalk というファイルカ躾行可能であれ /etc/rc. d/rc. s や /etc/rc. d/rc. M から読み込まれる ば、これを読み込んで実行しますにの行は、デフォル 期化ファイル (/etc/rc. d/rc. pcmcia など ) は、そのフ トではコメントアウトされています ) 。 ァイルか実行可能でなけれは第売み込まれません。このため、 63 行目 : crond デーモンの起動 # chmod 644 /etc/rc . d/rc . pcmcia 66 ~ 72 行目 : 不要なロックファイルや c 。 re ファイルの 削除 などとして実行許可をなくしておけば、このファイルは読 75 ~ 76 行目 : / 、 /tmp 、 /var/tmp の許可ビットを設 み込まれなくなります。 シングルユーサー・モードへの移行時 ルート・ディレクトリの許可ピットを 755 に、一一時ディ レクトリの許可ビットを 1777 に強制的に設定します。 システムがシングルューサー・モード ( 実行レベル 1 ま 79 行目 : 共有ライプラリの設定 たは S) へ移行するときは、初期化スクリプト /etc/rc. d/ 82 ~ 85 行目 : sendmail デーモンの起動 rc. K が実行されます。 /usr/sbin/sendmail をバックグラウンド・モードで このスクリプトは、最初にすべてのプロセスに SIG- 起動します。 TERM シグナルを送出して約 8 秒待ちます。その後、 88 ~ 93 行目 : APM (Advanced Power Management) quota とアカウンティングを中止し、すべてのプロセス デーモンの起動 に SIGKILL シグナルを送出します。 ー① 連載 / Linux でリラックス 1 一 = ロ ニ 1 一口 UNIX MAGAZINE 1999.2 128

6. UNIX MAGAZINE 1999年2月号

連載 . / ・ Linux でリラックス - プロセス UNIX MAGAZINE 1999.2 動します。 shutdown コマンドを実行し、システムをすぐに再起 こでは きに実行されるプロセスを指定しています。 た (init デーモンが SIGINT シグナルを受信した ) と 24 行目 : キーポードから CtrI 十 AIt 十 DeI キーか胛され 理はおこないません。 デーモンは初期化スクリプトカ鮗了するまで、はかの処 す。これらのエントリの、、不頁 " は wait なので、 init モードへ移行するときは /etc/rc. d/rc. M を実行しま 移行するときは /etc/rc. d/rc. K を、マルチューサー リプトを指定しています。シングルューザー・モードへ 行レベル 2 ~ 5 ) に変更したときに実行する初期化スク ル 1 または S) 、あるいはマルチューザー・モード ( 実 18 行目、 21 行目 : シングルューサー・モード ( 実行レベ で、ほかのエントリよりもさきに実行されます。 を指定しています。工ントリの、不職頁" が sysinit なの 起重加寺 ) に、 1 回だけ /etc/rc. d/rc. S を実行すること 15 行目 : システムの起重加 ( 正確には init デーモンの では 3 ) を定義しています。 12 行目 : initdefault でデフォルトの実行レベル ( この例 しよう ( 図 2 ) 。 例として、 Slackware 3.6 の /etc/inittab をみてみま /etc/inittab の例 書き換えます。 ト上で getty プロセスカ鍾川乍するように /etc/inittab を リアルポートに端末を接続した場合などは、シリアルポー 通常、 /etc/inittab を変更する必喫はありませんが、シ ューサー・モードではこのスクリプトは使用されません。 変数や umask の値を変更できます。ただし、シングル 用します。これを利用して、プロセスの実行前に環境 init デーモンはプロセスの起重加芋にこのスクリプトを使 /etc/initscript というシェル・スクリプトがあれば、 を更新しません。 init デーモンは /var/run/utmp や /var/log/wtmp 指定します。この項目が、、十 " から始まっている場合、 そのエントリか有効となったときに実行するプロセスを 27 行目、 30 行目 : それぞシステムの停止 / 再起重加 に実行する初期化スクリプトを指定しています。システ ムの停止時には / etc / rc. d / rc. 0 が、システムの再起動 時には /etc/rc. d/rc. 6 か夫行されます。 33 ~ 39 行目 : UPS への電源イ合カ亭止、または再開した 場合の重川を指定しています。これらの機能を利用する ためには、 UPS の状態を監視し、 init に通知するデー モンをさせる必要があります。言田は、文献 [ 1 ] を 参照してください。 48 ~ 53 行目 : イ反想コンソーノレ 1 ~ 6 上に getty プロセ スを起動しています。 getty プロセスは、ユーザーにロ グイン・プロンプトを表示し、ユーザー名が入力される と /bin/login プログラムを起動します。このエントリ の、不頁 " は respawn なので、 getty プロセスか終了 したとき ( ューザーのログアウトなど ) は、 init デーモ ンによって再度 getty プロセスか起動されます。 で、イ反想コンソール 1 ~ 5 に、実行レベル 4 が含まれて いない点に注意してください。 56 ~ 61 行目 : コメントアウトされていますが、シリアルポ ート上で /sbin/agetty プログラムを起動するための 設疋です。イ瓦想コンソールと同様、エントリの、冴頁 ' が respawn となっているため、 getty プロセスは繰り 返して起動されます。 69 行目 : 実行レベルが 4 のときに起動するプロセスを指 定しています。さきほど述べたように、 Slackware で は、実行レベル 4 で /usr/X1 IR6/bin/xdm を起動 します ( 実際には、 /etc/rc. d/rc. 4 のなかから /usr/ X11R6 / b ⅲ / xdm か夫行されます ) 。 48 ~ 52 行目に実 行レベル 4 が含まれていないのは、このためです。た だし、イ瓦想コンソール 6 では /sbin/agetty か起動す る設定になっています。 Slackware の初期化スクリプト 以 E のように、システムか起動するとき、または実行レ ベルか変化したときに、どのようなスクリプトカ躾行され るかは /etc/inittab ファイルで定義されています。 以降では、 SIackware 3.6 における初期化スクリプト が、どのような処理をおこなうかを簡単に説明します。 125

7. UNIX MAGAZINE 1999年2月号

連載 / Linux でリラックス ー① システムの起動時 UNIX MAGAZINE 1999.2 /etc/shut- /etc/fstab に言己されているすべてのファイルシステ 110 行目 : NFS 以外のすべてのファイルシステムをマウ downpid を削除 /etc/nologin 、 106 行目 : /etc/mtab* 、 告メッセージを表示します。 dos でない場合は、 fsck か正常に実行できないため、警 れており、なおかっルート・ファイルシステムが ums - ルート・ファイルシステムが、もムみ専用でマウントさ ます。 ト・ファイルシステムを読み書き可能で再マウントし ムの起動を中止します。 fsck に成功した場合は、ルー 失敗したときは、その旨のメッセージを表示してシステ ファイルシステムについて fsck を実行します。 fsck に ている場合は、 /etc/fstab に言当されているすべての ルート・ファイルシステムか第ムみ専用でマウントされ 34 ~ 103 行目 : ルート・ファイルシステムの整合生チェ います。 専用、 umsdos の場合は読み書き可能でマウントされて 常、ルート・ファイルシステムが ext2 の場合は言もムみ き可能のどちらでマウントされているかを調べます。通 ルート・ファイルシステムか第ムみ専用、または読み書 をチェック 27 ~ 31 行目 : ルート・ファイルシステムか書込み可能か ログラムをバックグラウンドて起動します。 は 5 秒ごと ) にディスクに書き出す /sbin/update フ ファイルシステムのバッフアを定期的 ( デフォルトで 14 行目 : update デーモンのカ フ。テパイスか有効になります。 こで、 /etc/fstab に言己されているすべてのスワッ 11 行目 : スワップを有効にする 8 行目 : 環竟変数 PATH の設定 います。 します。このスクリプトでは、以下の処理がおこなわれて ware 3.6 の /etc/rc. d/rc. S の内容を、末尾の図 3 に示 /rc. S が 1 回だけ実行されます ( 図 2 の 15 行目 ) 。 Slack- Slackware の起重加寺には、初期化スクリプト /etc/rc. d ムをマウントします。ただし、この点ではネットワー クー里の言殳定か完了していないため、 NFS ファイルシ ステムはマウントしません。 113 行目 : /var ディレクトリ内の一イ学ファイルを削除 116 行目 : 空の /var/run/utmp ファイルを作成 120 ~ 122 行目 : システム広の設疋 /sbin/clock コマンドを用いて、システムの日お t を c- MOS のクロックに合わせて設定します。 124 ~ 128 行目 : /sbin/umssync プログラムの実行 ルート・ファイルシステムが umsdos の場合は、ディ レクトリ橢匿の整合性を保っために / sb ⅲ / umssync コ マンドを実行します。 133 ~ 136 行目 : /etc/issue と /etc/motd の作成 /etc/issue ファイル (/sbin/agetty プログラムがロ グイン・プロンプトの直前に表示 ) 、および /etc/motd ファイル (/bin/login プログラムがログインの成功時 に表示 ) を作成します。 すでに /etc/issue や /etc/motd があっても、 上書きされてしまいます。 140 ~ 142 行目 : カーネノレ・モジューノレの設疋 /etc/rc. d/rc. modules ファイルか実行可能であれば、 このファイルを読み込んで実行します。 どのカーネル・モジュールを読み込むかは、 /sbin/ modprobe コマンドて指定します。 154 ~ 155 行目 : PC カードデバイスの設定 /etc/rc. d/rc. pcmcia ファイルが実行可能であれば、 このファイルに start という引数を与・えて実行します。 PC カード関連のカーネル・モジュールの読込みや、 /sbin/cardmgr プログラムの起動などの処理をおこな います。 163 行目 : シリアルポートの設定 /etc/rc. d/rc. serial ファイルを読み込んで実行します ( デフォルトでは、この行はコメントアウトされていま マルチューサー・モードへの移行時 システムがマルチューサー・モード ( 実行レベル 2 ~ 5 ) へ移行するときは、初期化スクリプト /etc/rc. d/rc. M が 実行されます。 Slackware 3.6 の /etc/rc. d/rc. M の内容 を、図 4 に示します。このスクリプトでは、およそ以下の 127

8. UNIX MAGAZINE 1999年2月号

UN Ⅸへの招待朝 図 9 X クライアントマネージャー フ引 0 第盟を示Ⅳ ) 匳を靆定科アせ = 丿 ) ラ行検 第 v , 橋準ま第 な動方式 1 阯齷 1 0 レ スドに ) XD ) p ト 受′ 4 4 は′ d 0 図 10 クライアント・ファイルによるクライアントの起動 肥 ) 表示枢接 0 設定 ) 報の種を驀 物ー第鑿中 , 、 0 ・。男行ント顰猤 対れ・ - を宿しています冖 はスト名 ( 1 当 いに メを 0 ー第 - ーれ - ドキュメント : ヘルフ。や、ドキュメントの補足説明 ユーティリティ : フォント・コンパイラの起動、イ反想デ 図 11 X クライアントの実行 スクトッフ。の実行、 Web ページからの Reflection X イを編 0 第テ ) ト第物 ) 設定” の実行など 拶の種第 い物 m 0 第 FTP クライアント : ftp によるファイル中幻医 駅第化 ) 時計 事を物 Reflection for UNIX and Digital : VT 端末工 準を新 ー報の設第・一 橋準 ( ー上方式 ) TE しー を OSE' 準 HR 博 2. 8. 93. ー ミュレータの実行 を準 : 受宿“〆いイ。 それでは Reflection X を実行してみましよう。最初 に調面版である旨か表示さ [OK] ボタンをクリックす ると、図 9 の、、 X クライアントマネージャー " か起動さ れます 3 。このウインドウは、デフォルトでは左右 2 つ 覧から目的のファイルをクリックするだけです。ファイ に分かれています 4 。則にはクライアント・ファイルの ルにユーザー名やパスワードが当求されていなければ、そ ー - 一覧が、右側にはクライアントを実行するホスト名やその れらを問い合わせるダイアログ・ポックスが用意さ必 ホストにログインする際のユーサー名とパスワード、実行 要な情報の入力カ鮗るとクライアントか起動されます。図 するクライアントのコマンド名などを入力する領域があ 10 は、 X11R6 の xterm を起動している様子です。 ります。 ウインドウの右側は、クライアント・ファイルを利用 Reflection X には、クライアントの実行に必要な各 しないクライアントの起動、クライアント・ファイルの 種の情報を含むいくつかの、クライアント・ファイル " 作成や編集に利用します。初めにクライアントを起動庁る があらかしめ用意されています。たとえば、 sun. rxc は 例をみてみましよう。簡単列として、 xclock を実行し SunOS 上での xterm 、 X11r6. Ⅸ c は X11R6 の xterm 、 てみます ( 図 11 ) 。 という具合です。これらのクライアント・ファイルを尺 : 麪頁にある、、説明 " 欄は、情報をクライアント・ファイ す川よ、そのファイルに定義されているクライアントカ起 ルとして保存した場合に則の領域に表示される、、説明 " 動できます。これらを変更したり、独自のクライアント・ の部分で利用されます。このほかにも、クライアントのコ ファイルを作成することもできます。 マンドでタイトル (-name %T%) を指定したとき、ウィ クライアントの起動 ンドウのタイトル名として利用されます。この、、説明 " で クライアントを起動するには、 ( デフォルトの表示で は、デフォルトの文字列か次のように決まっています。 は ) ウインドウ則にあるクライアント・ファイルの一 コマンド名 ( ホスト名 via 起動方式 ) 3 インストール後、初めて実行したときはその計算機上て商な性能を得 るためのをするかといれます。数分しかかからないので、実行して おくとよいでしよう。 、、接続の設定 " の、、起動方式 " では、利用するネットワ 4 表示メニューや左から 4 番目のアイコングループで、上下あるいはクラ ーク・プロトコルを TELNET 、 REXEC 、 RSH 、 R- イアント・ファイルー -- 覧のみの表示に変更できます。 「一 00k -d ヤ 167 UNIX MAGAZINE 1999.2

9. UNIX MAGAZINE 1999年2月号

連載 / UN Ⅸの玉手箱ー① 図 6 リモートホストからのアクセスに対して外部コマンドを実行する言聢 spawn (/usr/local/bin/safe-finger @%h ー /usr/bin/mail telnetd: somepc -s %d-%h root ) & 略し、最後はドットで終っていなけ川まなりません。以 下の例は、 IP アドレスが 192.168.1. * というパターン にマッチするすべてのホストを意味します。 192 . 168. 1 . サプネットを利用している環竟で、ネットマスクまて厳 密に指定したけれは、ドット表記によるネットワーク番 号とネットマスクをスラッシュで区切ります。たとえ ば、 192.168.1.0 というクラス C のネットワークがサ プネットにうリされており、ネットマスクの長さが 28 ビットであったとしましよう。 192.168.1.16 というサ プネットを指定する場合は以下のようにしますにの例 では、 192.168.1.17 ~ 192.168.1.31 のホストが対象と なります ) 。 192.168.1.16 / 255.255.255.240 ただし、ネットワーク番号だけを指定するときとは異 なり、ネットマスクを組み合わせて指定する場合はホ スト部分を省略せすに 0 を指定します ( たとえは、 、 172.16.1.0 / 255.255.255.0 " など ) 。 次に、ドメインて指定する場合は対象となるドメイン名 を記します。ドメイン名の地頁にはかならすドットを ・ shell-command ホスト " が対象となります。 この例では、 project というネットグループに属する @proj ect ループの名前のう頁に、、@" を付けます。 最後に、ネットグループを指定する場合は、ネットグ すべてのホスト " が対象となります。 このように指定すると、、、 foo. co. jp ドメインに属する . f00 ・ co ・ JP 付けなければなりません。 UNIX MAGAZINE 1999.2 あったとします。 たとえば、 hosts. deny ファイルに以下のような言当が します。 アクセスに対して外部コマンドを実行したい場合に指定 このフィールドはオプションで、リモートホストからの telnetd: somepc に適当な値に置き換えられます。、、 % d " はアクセスの 、、 % d " や、、 % h " などの変数は、外部コマンドの実行時 ウンドで実行することを未します ) 。 定します ( 最後の、、 & " は、外部コマンドをバックグラ で、それに続けて実行したいコマンドを括弧で括って指 spawn " は外部コマンドを実行するためのキーワード ます。 宛にメールしたければ、この行を図 6 のように変更し がログインしているのかを finger で調べて結果を root たアクセスか拒否されます。これに対し、 somepc に誰 この場合、 somepc というホストからの telnet を使っ あったサービスに対応するサー ・プログラムの名 前を意味し、図 6 の例であれば、、 telnetd" という文字 列で置き換えられます。、、 % h " はリモートホストのホ スト名で置き換えられます ( ホスト名が分からない場合 は IP アドレスになります ) 。これ以外の変数の不亟頁と 詳しい意味については、 tcp-wrappers に付属のオンラ イン・マニュアル hosts-access(5) などを参照してく ださい。 なお、図 6 の例で使われている safe-finger は tcp- wrappers にイ寸属するコマンドで、 finger サーノヾ 対してより安全にアクセスできるような工夫か施されて います 3 。 tcpd から finger を実行する場合は、オリジ ナルの finger の代わりに safe-finger を使うことか推 奨されています。ただし、リモートホストに対して fin ー ger を実行する場合には設定が必要です。なぜなら、リ モートホストでも tcpd カイ吏われていて、 finger サーヒ、 スに対するアクセスがあったら相手に finger を実行す る設定になっており、こちら側の finger も同様の設定 にしていたら、互いに finger を実行しあって無限ルー プに陥ってしまうからです。 アクセス制卩データベースのフォーマットはバージョンが 新しくなるにつれて手カ功日えられており、基本的なフォーマッ トとは独立した刻長フォーマットとして定義されています。拡 3 BSD/OS では /usr/libexec/tcpd-bin/safe-finger てす。 97

10. UNIX MAGAZINE 1999年2月号

連載 / Linux でリラックスー① システムの終了時 行レベル 0 ) または /sbin/reboot ( 実行レベル 6 ) を用い バッフアの内容をディスクに書き出し、 /sbin/halt ( 実 最終的に、 /bin/sync コマンドでファイルシステムの します。 システムを除くすべてのファイルシステムをアンマウント す。さらにスワップを停止したあと、ルート・ファイル し、すべての NFS ファイルシステムをアンマウントしま を中止します。そして /var/log/wtmp ファイルを更新 このスクリプトでは、ます qu 。 ta とアカウンティング ンクです ) 。 プトカ躾行されます ( rc. 0 は rc. 6 へのシンポリック・リ れ /etc/rc. d/rc. 0 または /etc/rc. d/rc. 6 というスクリ はシステムを再起動するとき ( 実行レベル 6 ) は、それぞ システムの重川乍を停止する場合 ( 実行レベル 0 ) 、また まとめ てシステムを停止します。 プログラムについて説明しました。ほとんどの Linux 配 今回は、 Linux カーネルが最初に起動する /sbin/init 布パッケージでは、 SystemV 互換の sysvinit カイ吏われて いるため、これをとりあげました。そして、、実行レベル " の概念を説明し、 /sbin/telinit コマンドなどを用いて実 行レベルを変更する力法を紹介しました。 ふだん Linux を使っていても、実行レベルを気にする ことはあまりないかもしれません。 /sbin/init プログラム の設疋ファイル /etc/inittab も、通常はあまり変更する 必要がありません。しかし、 /etc/inittab の内容を正し く理解すれば、さまざまなネ川月化スクリプトや getty プロ セスがどのように実行されるかカ吩かります。 SIackware の初期化スクリプトは上交的単純なので、 一度ざっと目をとおして、どこでどのような処理がおこな われているかを孑当屋しておくとよいでしよう。 これで、 Slackware 固有の要素はほばすべて説明しま した。次回は、 Debian GNU/Linux のインストールに ついて説明します。 ( おおさき・ひろゆき大阪大学 ) [ 赭文献 ] [ 1 ] Harvey J. Stein, 、、 The UPS Howto v2.42 ” , Novem- ber 1997 (http://metalab.unc.edu/LDP/HOWTO/ UPS-HOWTO. html) 図 3 1 : 8 : 9 : 10 : 11 : 12 : 13 : 14 : 15 : 16 : 22 : 23 : 24 : 25 : 26 : 27 : 28 : 29 : 30 : 31 : 32 : 33 : 34 : 35 : /etc/rc. d/rc. S ( ー - 都省略 ) # ! /bin/sh PATH=/sbin. /usr/sbin : /bin: /usr/bin # enable swapping /sbin/swapon —a # Start update . /sbin/update & /sbin/fsck —A -a if [ ! $READWRITE = yes ] ; then # Check the integrity of a11 filesystems f i READWR I TE=ye s rm —f "Testing filesystem status" then if echO —n > > "Testing filesystem status" READWR I TE=no # Test tO see if the て 00t partition is read—only, 1ike it ought tO be . #fi # /sbin/kerneld #if [ —x /sbin/kerneld ] ; then # Automatic module loading. TO load and unload kernel modules UNIX MAGAZINE 1999.2 129