連載 / BSD をハックする一① 図 7 reboot. c の変更 80 , 82 lflag = nflag = qflag = 0 ; "lnqdx")) ! = EOF) while ((ch = getopt (argc' argv' switch(ch) { 95 , 101 break ; if( dohalt) { 五 0Wt0 ー = RB—POWEROFF; break ; 十十十十十 case case 186 , 188 "reboot [ ー dohalt ? "halt [-x" %snqd] \n" (void)fprintf (stderr, exit(l); ソース 表 1 コマンドとソース立置系 コマンド /usr/src/bin /bin /usr/src/etc /etc usr/src/games /usr/games usr/src/include / usr/ include /usr/src/lib /usr/lib /usr/src/lib/lib CD/ /usr/lib/lib CXD. a usr/src/libexec /usr/libexec usr/src/sbin /sbin usr/src/usr. Sbin /usr/sbin usr/src/usr. bin /usr/bin usr/src/usr. ucb usr/ ucb ・カーネルのソース ・システムのインストールなどにかかわるツール群のソー ス ・プートローダのソース が置かれています。 コマンド類のソースは、 /usr/src の下にそれぞれディ レクトリごとに分類して置かれています。 その基本原則は、「コマンドがインストールされるディ レクトリにちなんだ名前のサプディレクトリに置かれる」 具イ勺には、表 1 のようになります。 たとえば、 iostat コマンドのソースを見たいときは、 which コマンドを使うと、 iostat コマンドの置き場卩励ゞ 分かります。 # which iostat /usr/sbin/iostat こから、ソースは /usr/src/usr. sbin/iostat/ に置か れているであろうと推測できます。 以前の BSD は、 whereis コマンドがソースも探してく れました。たとえば、 4.3BSD では以下のようになります ( 誌面の都合上、て折り返しています ) 。 # whereis ex ex : /usr/src/ucb/ex /usr/bin/ex /usr/ucb/ex - /usr/Iib/ex3.7recover /usr/1ib/ex3.7preserve - /usr/man/manl/ex . 1 /usr/man/man4/ex.4 # whereis halt halt: /usr/src/etc/halt . c /etc/halt /usr/man , ・ /man8/ha1t . 8 しかし、 NetBSD (4.4BSD) ではコマンドの場所を表 示するだけで、 which コマンドとはとんど変わらないもの になってしまいました。上と同しコマンドを NetBSD で 実行すると、次のようになります。 umbsd# wherexs ex /usr/bin/ex umbsd# whereis halt /sbin/halt umbsd# ソースがみつからないときは、 2 つの可能がありま ードリンクと、アーキテクチャ依存です。 ハードリンク ードリンクで、 1 つのコマンドか複数の名前をもって いるときは、そのいすれかの名前のディレクトリにソース が入っています。たとえは、 /sbin/halt と /sbin/reboot す。 62 UNIX MAGAZINE 1998 ユ
連載 / BSD をハックする一① 図 3 reboot. h への追加 #define RB_POWEROFF 図 4 machdep. c の変更 0X4000 / * power off after halt * / printf ("The operating system has halted. \ Ⅱ " ) ; #ifdef RB_POWEROFF if ( howto & RB-POWEROFF) { #ifdef OPMS_ADDR poweroff ( ) ; printf("Fai1ed t0 Power off . \ Ⅱ” ) ; printf("Power 0ff is not supported 0 Ⅱ this kernel . \n") ; #else #endif #endif printf("P1ease press any key t0 reboot . \ Ⅱ \ Ⅱ " ) ; 8 、 、 0X100 、 0X200 がすでに使われています。順当に いけは、次は 0X400 です。しかし、 NetBSD の今後の拡 張でほかの機能に 0X400 か割り振られると困ります。そ の可能性を考え、ここは 0X4000 を使うことにしました。 そこで、図 3 に示した行を /sys/sys/reboot. h に付 け加えます。今後の halt コマンドの作成に備え、 /usr/ include/sys/reboot. h も同じにしておかねはなりませ ん。 次に、 /sys/arch/i386/i386/machdep. c の、 boot() 関数のなかを図 4 に示すように変更します。このプログ ラムは、第 3 回では無条件に呼び出していた poweroff() を、 RB-POWEROFF ビットが立っているときにだけ 呼び出すようにしています。また、 OPMS がカーネルに 組み込まれていない場合やケープル外れなどで電源オフに 失敗したときのメッセージ出力機能も追加しています。 shutdown コマンドの改造 続いて shutdown コマンドです。これは、自分自身で ホルトをおこなうのではなく halt コマンドを最後に呼び 出しているだけです。 -r フラグがケえられたら reboot を、 -h が与えられた ら halt を呼び出し、どちらもなけれはシングルューザー モードへのシャットダウンをおこないます。 そこで、以下の置を施します。 ・ -x フラグを受け入れるようにする。 ・ -x が与えられたとき、 -h が与えられていなくてもホル 60 トするようにする。 ・ -x と -r か 1 司時に学えられていたらエラーとする。 ・ -x が学えられたら、 halt コマンドを起動するときに一 x オフションをえる。 この変史を context diff 形式 ( の抜粋 ) て示したのが 図 5 です。 switch 文のなかの一 x オプションを処理する 部分で、 break せすにそのまま -h フラグが与・えられた処 理をおこなっています。 nr 。仕がインストールされていないと make に失敗しま すが、たんにマニュアルページの整牙彡ができないだけです から無視してかまいません。、、 make shutdown" さえ正 常に終了すればよいのです。 nro 仕のインストールをさは、っていると、、、 make in- stall" もおこなえません。、 make -n instal にでイ可をおこ なうべきか調べると分かりますが、図 6 のようにコマンド を手で入力します。 halt コマンドの改造 halt コマンドの改造も、図 7 のように簡単なものです みます。 reboot システムコールに与える引数は howto という int 変数にオ褓内されているので、 -x オプションがケえられ れは howto の RB-POWEROFF ヒ、ツトを立てるだけ です。念のため、 reboot コマンドに - x カ巧・えられたとき はエラーとなるようにしてあります。 ただし、 reboot. c を変更してコンパイルしたのち、で UNIX MAGAZINE 1998.1
連載 / WWW サーパーの育て方一 0 表 2 CPAN モジュールのコマンド コマンド対象 1 著者 ノヾンドノレ 配布ファイル名 モジューノレ名 ー屬己のすべて 表 3 CPAN モジュールのインストール鏈コマンド コマンド rnake test inst all clean 乍 perl Makefile. PL ・ make all" を実行 make と同等の重川乍の後、 make test を実行 make と同等の重川の後、 make install を実行 make clean を実行 こで、 CPAN モジュールの索コマンドについて説 明します。コマンドは 5 不鶤頁あります俵 2 ) 。 検索には文字列のほかに、 / で括ると正規表現も使え ます。たとえば、 CGI または NNTP ロ里するモジュー ルを検索する場合には、 cpan> d /cgil nntp/ Distribution Distribution Distribution Distribution Distribution Distribution tar . gz Distribution Distribution Distribution ALTITUDE/Msq1CGI—0.8. tar ・ gz LDS/CGI—modu1es-2.76. tar ・ gz LDS/CGI . pm-2.37b8. tar. gz MGH/CGI—Response—O. 03. tar ・ gz MIKEH/CGI_Imagemap—I .00. tar ・ gz MUIR/modu1es/CGI-Out—96.081401. RVA/NNTPC1ient—O.26. tar. gz SHGUN/CGI-Lite-1.8. ta て・ gz SKIMO/FCGI—O. 31. tar. gz のように正規表現を用いることで、一度に検索できます。 何も引数を与・えないと、それぞれのコマンドの検索対象に なるすべてのデータを表示します。たとえば、 cpan> UNIX MAGAZINE 1998.1 ルすると、はかの必なモジュールをすべて自重加勺にイン ルです。 Bundle クラスに属するモジュールをインストー ようにしたものがバンドル (Bundle) というイ瓦想モジュー 自重加勺に認識し、必喫なモジュールからインストールする ストールするのは大変です。そこで、これら衣存関係を す。モジュール間の依存関係か馥雑になると人の手でイン モジュールは C と D のモジュールが必要であるとしま ば、 A モジュールは B モジュールが必要で、さらに B モジュールどうしの依存関係を表したものです。たとえ バンドルについても説明しておきます。バンドルとは、 とすれば、すべての著者がリストアップされます。 ストールしてくれます。 mod-perl もバンドルを使うこと ができるようになっています。 mod-perl が最低限必喫と するモジュールは、 CGI モジュールと libwww-perl モ ジューノレて対 - 。 本当は、バンドルを使って mod-perl をインストー ルすればいいのですが、 mod-perl のバンドルには上 記以外のいろいろなモジュールが含まれています。ま た、 mod-perl の提供する機能のなかのどれを使うかを CPAN モジュールから指定するガ去がみつからなかった ので ( 本当はあるのかもしれませんか ) 、今回は libwww- perl はバンドルを使ってインストールし、 mod-perl はバ ンドルを使わずに手竹璞でインストールすることにします ( どれかのモジュールのインストールでつますいているん しゃないの、などと穿った見方をしてはいけません : ー ) ) 。 libwww-perl をインストールする前に、インストール ロ里する CPAN モジュールのコマンドの説明をしてお きます。表 3 を参照してください。 これらのコマンドはモジュール ID 、ディストリビュー ション ID 、バンドル ID を引数にとります。それぞれ m 、 d 、 b コマンドで調べます。 では、 libwww-perl をインストールしましよう。 libwww-perl のインストール そのまま libwww-perl をインストールすると、インス トールに必要なはかのモジュールが自重加勺にインストール こでは BundIe というイ瓦想モジュール されないので、 のなかの libwww-perl をインストールします。 正しいモジュール名を知るために、ますは b コマンド を使ってヾてみます。 cpan> b /libwww—perl/ Bund1e id = Bund1 e : : LWP CPAN_USERID GAAS (Gis1e Aas) CPAN_VERSION 1 .03 CPAN_FILE MANPAGE GAAS/1ibwww—per1—5.15. tar ・ gz Bund1e : : LWP ー A bundle to install a11 libvww-perl related modules CONTAINS Net : :FTP, MIME: :Base64, MD5, LWP /usr/10ca1/1ib/per15/site-per1/ INST_FILE このなかの、、 CONTAINS" に記載されているのが、イ INST VERSION 1 .03 Bund1e/LWP. pm 49
テーション 上位シリーズに迫る パフォーマンスを 徹底した経済性で実現。一 リセ aSPARC300M UltraSPARC-I•II べース JU20 シリーズ JU2/13 ー ・ UltraSPARC- Ⅱ (300MHz) ・ 12.10SPECint95 ・ 15.50SPECfp95 JU2/128 ・ UltraSPARC- I (200MHz) ・ Creator2D,3D ・ 7.67SPECin 博 5 ・ TurboGXa,Tu 「 boGXplus ・ 11.10SPECfp95 JU 238 ー ・ UltraSPARC-II(300MHz)X2 ・ Creator2D,3D ・ 12.30SPECint95 ・ TurboGXa TurboGXplus ・ 20.20SPECfp95 JU 22 ・ UltraSPARC- I (200MHz)X2 ・ Creator2D,3D ・ 7.88SPECint95 ・ TurboGXa,TurboGXpIus ・ 14.70SPECfp95 ニタワー型ワークステーション ・ 128MB ~ 1 GB メインメモリ・ SBUS スロット X3 に朝 = ・・ハいいま阜 NE Ⅳ 、、 = 新発売 ・ Creator2D,3D ・ TurboGXa,Tu 「 boGXpIus ネットワークにおけるコストを 大幅にスリム化します ! スイッチング HLJB JES シリーズ 10 / 100Mbps スイッチング HUB ( 自動検出 ) JES -800 ・イーサネット / ファーストイーサネット 自動検出 8 ポート ・半 / 全ニ重対応 ・第 8 ポート用クロスオーバボタン キャンペーン価格 お問い合わせ下さい。 1 Ⅳ 100Mbps スイッチング HUB JES-1620 ・ 16 ポート 10Ba2- T および 2 ポート 100Base-TX ・半 / 全ニ重対応 ・ 10Mb の第 8 ポートおよび 10 / 100Mb の第 8 ポート用 クロスオーバボタン キャンペーン価格 お問い合わせ下さい。 只今、ホームペ - ジで販売中 JCC ワークステーション、ペリフェラル両シリーズ共に価格は 右記「 JCC D 旧 ECT. 」ホームページをこ攬いただくかお問い合わせ下さい。 ミ JUff-AX 仕様 ・ CPU:UltraSPARC 167 / 250 / 300MHz ・メモリ容量 ( 最大 ) :IGB ・ PC 以ロット : 32bitX2 、 32 / 64bitX2 ・ UPA スロット XI ・ 10 / 100Mbps Ethernet JCC の SPARC & So ね「 is 完全互換機は PDS & フリ - ソフトが違う。 Tu 市 oSPARC べースワークステーション ーウインドウシステム / ・ XI 1 R6 ・ネットワーク及びメイル / ・ mh などのコマンドをサポート ■ TEX / ・ 31 種のコマンドをサポート ・ NTT ヨ TeX / ・ 10 種のコマンドをサポート ・ ASCI 旧本語 TeX / ・ 13 種のコマンドをサポート •GNU ソフトウェア / ・ emacs ・ nemacs ・ gcc ・ g77 ・ gs ・ ghostview ・ gzip ・ gunzip ・ patch などのコマンドをサポート ■スペル・チェッカー / ・ ispell などのコマンドをサポート "akekit パッケージ / ・ findsrc ・ sell などのコマンドをサポート ・フィルタ / ・ kc ・ nkfisk ・一般コマンド / ・「・ f2C ・ ss ・ mu などのコマンドをサポート ・その他 / ・ tgif ・ h ・ dvi2ps などのコマンドをサポート NEW 重 5 刀 70 ・ Turtx)SPARC(170MHz) ・ 3.32SPECint95 ・ 2.91SPECfp95 170 M Hz ※ UN Ⅸは X / Open カンパニーリミテッドがライセンスしている米国ならびに他の国における登録商標です。※ SPARC 商標のついた製品は米国 Sun Microsystems c が開発したアーキテ クチャーによるものです。※ Sun 、 Sun OS は米国における米国 Sun Ⅶ cr ystems 社の商標または登録商標です。※ la ⅱ s は米国における米国 Sun Microsystems 社の登録商標です。 ※ UItraSPARC は SPARC lnternational. lnc より Texas lns uments 社が使用許諾を受けている商標です。※ィーサネットは米国 XEROX 社の登録商標です。※製品名等の固有名詞 は各メーカーの登録商標または商標です。※製品の仕様及び写真内容は予告なく変更することがありますのでご了承ください。※価格はすべて税抜きです。 資料請求 No. 004 JUI / 3 側
0 連載 /FreeBSD ノ ートー⑩ れは利用できない。今回紹介するファイルシステムは、デ フォルトの GENERIC カーネルには組み込まれていない ので、利用するにはカーネルの再構築が必要である。言田 については FreeBSDfi 属のハンドブックなどを参照して ほしいのだが、最初におおまかな手順を紹介しておく。 まず、カーネルのコンフィギュレーション・ファイルに options KERNFS などのように、利用したいファイルシステムの指定を追加 する。このコンフィギュレーション・ファイルを引数と してコマンド config を実行すると、カーネルをコンパイ ルする準備カそきる。ディレクトリの移重圻麦にカーネルを IDE) などイ研頁かあるが、日本国内では ATAPI 接続の ものが上如勺入手しやすいようだ。 コンパイルし、インストールを実行してリプートする。 LS ー 120 からのプートや、 DOS および Windows 3.1 リプートしたら、実際にファイルシステムをマウントし での利用には BIOS の対応が必要である。 Compaq の一 てみる。これにはコマンド mount を使うのが一ヨ勺であ 部のマシンは標準で対応しているほか、 ASUSTeK com- る。このほか、ファイルシステムごとにマウント用のコマ puter (http://www.asus.com/tw/) のムも丘のマサーポ ンドも用意されている。たとえば、 portal ファイルシス ードなどでもサポートしている。 テムなら mount-portal というコマンドがある。 mount 現在リリース中の FreeBSD ではまだサポートしてい コマンドは、ファイルシステムのタイプをみて、ファイル ないが、開発は精力的に進められており、テスト版のド システムごとのマウントコマンドを呼び出している。 ライバも公開されている (http://www.jp.freebsd.org どちらを利用してもよいのだが、今回は統一生の面か /-junichi/)o ら、 mount コマンドを利用した場合について紹介する。 この製品の魅力は、なんといってもフロッピーディス mount コマンドに引数を付けすに実行すると、現在マ クのような手軽さで 120MB の容量を扱えることである。 ウントしているファイルシステムの情報か彳等られる。 とくに FreeBSD の場合には、インストール用のデータ ayanami # mount がちょうど収まるので重宝する。 BIOS が対応していれば /dev/sdOa on / (local) /dev/sdOs2e on /usr (NFS exported , 10Ca1 ) LS ー 120 のメディア 1 枚だけでインストールできるように /dev/sdOs2f on /var ( 10Ca1 ) インストーラを改良しよう、という引もある。 procfs on /proc ( 10Ca1 ) /dev/sdOs1 on /dos ( 10Ca1 ) ただし、まだ出回り始めたばかりなのでドライプもメデ /dev/cdOa 0 Ⅱ /cdrom ( 10Ca1 , read—only) ィアも安いとはいえない。 portal : 2767 0 Ⅱ /p ( 10Ca1 ) /cdrom on /usr/ftp/cdrom ( 10Ca1 ) ayanami# ファイルシステム ( 後編 ) mount コマンドには、このはかにもファイルシステム 今回は、さまざまなファイルシステムを紹介する。もと をマウントするためのさまざまなオプションが用意されて もとファイルシステムは、データの集まりであるファイ いる。 man mount " を夫行してマニュアルをしつくり ルを保存、操作するためのものであった。今回みていく 眺めてみると、新たな発見があるかもしれない。 のは、この念を才長して特別なデータをファイルとして portal ファイルシステム ューサーに提供するものである。 portal とは門や入口を未するやや持殊な用語である。 ファイルシステムの利用 名前からはどんなものなのか分かりにくいが、どちらかと ファイルシステムは、カーネルに組み込まれていなけ いうと、、窓口 " のようなファイルシステムである。これを ー飛′へ 1 ( ) ト↓ 147 UNIX MAGAZINE 1998.1
連載 / IJN Ⅸ知恵袋ー 0 図 5 暗黙の充合 $ cvs update cvs update : Updating cvs 9 あな 0 〃 0 れ cornmand cornm 佖れ d - 0 0 れ佖社 me れ 図 7 cvs コマンドØ-E 式 > printf ("G00d bye\n") ; く printf (HELLOSTR) ; 6C8 > #define HELLOSTR ” He110 everyone\n" 4a5 , 6 diff ー rl . 2 ー rl . 3 retrieving revision 1 .3 retrieving revision 1 . 2 RCS file : /project/cvsroot/softlab/sample/sample. c,v lndex: sample. c $ cvs diff —rl . 2 sample. c 図 6 差分のチェック M sample . c Merging differences between 1 . 2 and 1 . 3 int0 sample. c retrieving revision 1 . 3 retrievlng revision 1 . 2 RCS file : /project/cvsroot/softlab/sample/sample. c,v イルを上師交すればよいことが分かります。次のように cvs $ cvs diff -rl . 2 sample. c コマンドを起動します。 直後に、 c 。 mm 。れ叩。〃は各命令の直後に指定します。 はこれにあたります。励ー叩。れは cvs コマンド名の 在します。さきの di 仕命令で使ったーロ℃ s れスイッチ に対して、 cvs の各命令固有のオプション・スイッチか存 する一 d c ” - ro 尻 - 市 7 、スイッチはこれに含まれます。これ ン・スイッチです。 CVS の保管庫のディレクトリを指定 06 襯 - 叩 0 れは cvs コマンド全般にかかわるオプショ て説明します。図 7 が cvs コマンドの書式です。 場しました。ついでに cvs コマンドの基本的な : 書式につい 今回初めて、命令に対するオプション・スイッチカ磴 イッチです。 -r" は改訂番号を指定するオプション・ス るでしよう。 いるのであれば、再度修正して保管庫に当求することにな 実行結果を図 6 に示します。もし、意味的に間違って 102 なお、図 7 の command は cvs の各命令、 0 卿れ me 厩は 命令の引数 ( 多くの場合はファイル名 ) です。 プロジェクトの分岐 次にプロジェクトの分岐の方法を解説します。プロジ ェクトを分岐する必要があるのはどんなときでしようか。 たとえば、あなたがなんらかのソフトウェアを開発する立 場にあると考えてください。初期リリースの開発を終え、 顧客への納入も終りました。あなたはさらなる機能孑長を リき見するため、次期リリースの開発にとりかかります。開 発がある程度進んだころ、顧客からネノ期バージョンに対す る苦が届きました。調べてみたところ、その原因は叫屯 なバグであることが分かりました。しかし、すでに次期リ リースの開発力んでいる寺 . 点のバージョンでは、不安 定すぎて顧客に提信いーることができません。そこで分岐を 使います。つまり、初期リリースをベースにして、次期リ リースの開発トラックとは別の流れを作るのです。 UNIX MAGAZINE 1998.1
NETWORKTECHNOLOGY 4 図 10 LECS の状態を調べる localhos し : :configuration 1ane lecs> show 工 ndex AdminStatus OpenStatus Se1ector WKA Database 1 up 図 11 LES の起動コマンド 0xff atm-forum lecs . cfg localhost: :configuration lane les> new ?ERROR: 工 nsufficient number of arguments usage: new <LES Se1ector byte (HEX)> く BUS ATM address> <LES name> \ [colocated—bus] \ [ -type (ethernet ー token-ring) ] \ [ -mtu ( 1516 ー 4 5 4 4 ー 9 2 3 4 ー 1819 0 ) ] く LECS-wka> : none LECS 用 well-known ATM アドレスを使用するかどう かを指定します。 こではすでに先述の lecs. cfg が用意されていると仮定 していますので、単純に localh 〇 s し : :configuration lane lecs> new Qxff として LECS を起動します。起動した LECS の状態を調 べるには show コマンドを使用します ( 図 10 ) 。 LES および BUS の設定 LES および BUS の設定をおこなうには、プロンプトで "conf lane les" と入力します 17 。 localhos に : :configuration lane lecs> conf lane les localhos し : :configuration lane les> LES の起動は new コマンドでおこないます。 LES の設 定をおこなう階層で以下のコマンドを入力するとエラーメッ セージとともにコマンドの使用法が得られます ( 図 (1) 。 LES SeIector byte (HEX) そのスイッチで動作する LES の selector byte を指定し ます。 LECS を利用する場合、 new コマンドで指定した LES の ATM アドレスが LECS database file に含まれて いる必要があります。 BUS ATM address BUS の ATM アドレスあるいは selector byte ( 同一 17 どの階層のプロンプトからでもかまいません。 UNIX MAGAZINE 1998 ユ ATM スイッチ上に BUS をもつ場合 ) を指定します。なお、 LES と BUS は同じ selector byte をもっことが可能です。 LES name ELAN 名を指定します。この名前は lecs. cfg の内容と かならすしも一致している必要はありませんが、一致する ように設定しておいたほうが無難です。 colocated bus このオプションを指定すると、 LES と同時に BUS も ( 同 一 ATM スイッチ上で ) 起動されます。 colocate ( 同時 配置 ) された BUS は、 LES の MAC アドレス・ ATM ア ドレス対応表にアクセスすることが可能になっています。 「 proxy LEC 、 non-proxy LEC とアドレス解決」の節 で、 LEC は LE_ARP_RESPONSE を待たずに unknown フレームを BUS に送信することが可能であると述べまし た。 colocate された BUS は、 unknown フレームを受信 すると LES の MAC アドレス・ ATM アドレス対応表を検 索します。 unknown フレームに対する ATM アドレスを 解決できた場合、 BUS は unknown フレームを Multicast Forward VCC を通してプロードキャストするのではなく、 MuIticast Send VCC を通して宛先 LEC にユニキャスト します。これにより、各 LEC を含む ATM ネットワーク全 体の負荷が軽減されます。このオプションはつねに指定し たほうがよいでしよう。 -type (ethernet : token-ring) 工ミュレートする LAN のタイプを指定します。 トは Ethernet です。 デフォル 39
NETWORKTECHNOLOGY 4 1. 送信側 LEC は、 Multicast Send VCC に LE_FLUSH REQUEST メッセージを送信。 LE FLUSH_RE- QUEST メッセージはデータフレームと明確に区別できる よう、予約された LEC ID ( 0x 幵 00 ) をもつ 13 。 LE_FLUSH_REQUEST を送信した LEC は、 LE_FLUSH _RESPONSE メッセージを受信するか、中断するまで はその宛先 MAC アドレスに対するフレームの送信をお こなわない。 LEC はこのあいだ、その宛先 MAC アド のいすれかの処理をおこなう。 ・廃棄する ・ LEC 内に保持する レスに対するフレームは、 す。これ以外のパージョンでは、コマンド名などが異なる場合もありま 14 本節の説明は、ソフトウェア「 ForeThought ー 4.1.0 」にもとづいていま られません。 13 すなわち、 0x 仕側という値はデータフレームの LEC ID としては用い いて、 ASX スイッチにログインするとログイン・メッセージに続 LECS の設定 力は下線で示します ) 。 サービスの設定をおこなう例を示します ( コマンドの入 こでは FORE Systems の ATM スイッチ上で LANE LANE サービス設定例 1 で張った Data Direct VCC に送信する。 LEC は、それ以降の当該 MAC アドレス宛フレームは、 5. LE_FLUSH_RESPONSE メッセージを受信した送信側 trol Distribute VCC を通して転送する。 た LEC に対して、 Control Direct VCC あるいは Con- を、それに対応する LE_FLUSH_REQUEST を送信し 4. LES は受信した LE_FLUSH_RESPONSE メッセージ Direct VCC を通して LES に送信する。 LEC は LE_FLUSH RESPONSE メッセージを Control 3. LE_FLUSH_REQUEST メッセージを受信した受信側 セージを転送する。 を通して、受信側 LEC に LE_FLUSH_REQUEST メッ Multicast Send VCC あるいは MuIticast Forward VCC 2. LE_FLUSH_REQUEST メッセージを受信した BUS は UNIX MAGAZINE 1998.1 す。 localhos む : : > というプロンプトが表示されます。 と入力すると、 となります。 localhos に : う階層に入り、 と入力すると、 localhos に : : > conf lane こで、 LANE service の configuration をおこな プロンプトは、 :configuration lane> こで、 localhos む : :configuration lane> help bI-lS> 1eC> lecs> IeS> Manage LAN Emu1ation BUS service Manage LAN Emulation clients Manage LAN Emulation configuration service Manage LAN Emu1ation server service という出力が得られます。各出力 ( 左側 ) の。 > " 文字 はそれらがコマンドではなく、さらに下位の階層であること を示しています。ここで、 localhost: :configuration lane> lecs と入力すると、 LECS を設定する階層に入ります (LES を 設定する場合には "les" と入力します ) 。この階層で、 localhost: :configuration lane lecs> help と入力すると、 General commands : ー ? ー to get list of commands at the current level 'up' に 0 go up one menu level ー top ー tO go し 0 the root menu 'exit' tO leave A 工 admin delete new ShOW get Start or stop a LECS De1ete a LECS Create a new LECS DispIay LECS information Download LECS configuration file という出力が得られます 15 。 これらのコマンドを用いて LECS の設定、管理をおこな います。まず、 LECS を起動します。 LECS を起動する にはⅡ ew コマンドを用います。ここで、 localhost: :configuration 1ane 1ecs> 旦 e 15 どの階層のプロンプトにおいても、 help と入力することにより、その 階層で使えるコマンドおよび下位階層の情報が得られます。 37
UN Ⅸへの招待 Japanese Loca1ization for CDE DESKTOP APPS 図 1 CDE がインストール済みかを確認する % pkginfo ー grep CDE system system system system system system system system SUNWdtbas SUNWdt dmn SUNWdt ds t SUNWdtdt e SUNWjdbas SUNWj dds t SUNWj ddt e SUNWj dhe CDE bas e CDE daemons CDE DESKTOP APPS CDE DESKTOP LOGIN ENVIRONMENT Japanese LocaIization Japanese Loca1ization Japanese Loca1ization for CDE base for CDE DESKTOP LOGIN ENVIRONMENT for CDE HELP RUNTIME 図 2 CD-ROM 用のファイルマネージャ 間 a-SO 3 - s 引 a ⅱ 3 ー 2-5-1 」 eskt 叩」一 1 ファイルデ ) 表示 - を編集「一 , 。フォルダ変更 : を する情幸肋ゞ表示さオ ttL ばインストール済み、何も表示され なければインストールされていません。 CD-ROM からのインストール インストール方法の言田は、「 SoIaris 共通デスクトッ フ羅竟インストールとシステム管理」というマニュアル に書かれています。よく読んで、そのとおりに進めていき ます。しかし、おっちょこちょいの私は ( マニュアルを ちゃんと読んだはすなのに ) いくつか間違ってしまいまし た。そこで、失敗談も含めながらインストールの様子を説 明していきましよう。 マニュアルには、リモートマシンに接続されている CD-ROM を利用したインストールや、サーバー上にイ ンストールした CDE をマウントする方法なども書かれ ていますが、以降ではローカルマシンに接続された CD- ROM を用いてインストールします。 インストールは、ウインドウ・システムか起動されて いなくても、たんなるシェルか動いていれば可能です。あ るいは、 OpenWindows のシェルツールなどからもイン ストールできます。ただし、スーパーユーザーの権限が必 要なので、 root でログインして openwin コマンドを実 行するか、インストール・スクリプトを起動けるシェルで su コマンドを使ってスーパーユーサーになります。 ます、 CD-ROM ドライプに CD-ROM を挿入しま す。 OpenWindows 上て操作している場合は、このとき CD-ROM 用のファイルマネージャが自重加勺に起動しま す ( 図 2 ) 。 マニュアルには、次のコマンドを実行し、ディレクト リを変更しなさいと書かれています。 UNIX MAGAZINE 1998.1 ロ ファイ ) ATOK8 未定義 ロ CDE 朝ロロロ Copyri ght 0D8C2. 1 1 PCK ティスクの取り出し Wab i cd /cdrom/voIume-id/CDE/ar ℃ -name フォルタの更新 : 前回の更新叝 6 ファイルカ加されています。 うになります。私は、 AnswerBook を含めておきたかっ いずれの場合も、インストールの初期画面は図 3 のよ ので、、、 . /install-cde" と入力します。 ノヾスに ' ( カレント・ディレクトリ ) カ哈まれていない トールを始めます。 SoIaris では、 root のコマンド検索 ェル・スクリプトがあります。これを実行して、インス 移動した先のディレクトリには、 install-cde というシ PowerPC など ) を指定します。 name では、システムのアーキテクチャ名 (sparc 、 X86 、 いるシステムでのディレクトリ名が分かるはすです。。尾 - れている場合は、パスペイン ( 上イ則の窓 ) を見れば使って (/cdrom) を見るか、図 2 のファイルマネージャか起動さ くても、 ls コマンドで CD-ROM のマウントボイント deskt 叩ー1ー1 などとなります。バージョン名が分からな s01aris-2-5-desktop-I-O 、 1.1 であれば ja-solaris-2-5- ゼ 0 ん me - 記の部分はバージョン名です。 1.0 なら ja- 159
連載 /FreeBSD ノートー⑩ 図 3 converse プログラム #include く sys/types . h> #include く sys/uio. h> #include く stdio . h> #include く unistd . h> #include く fcntl . h> #define BUFLEN 1024 int main(int argc , char int fd; char buf [BUFLEN] ; int 1en ; * argv ロ ) fd = open(argv[l] , 0 RDWR, 0 ) ; write(fd, buf, len) ; while( (len = read(), buf , BUFLEN)) ! } else { write(l , buf , len) ; read(fd, buf , while( (len if (fork() BUFLEN) ) ! = の る。現在の FreeBSD では、標準で利用できるようになっ 名前のとおりプロセスに関するファイルシステムであ プロセス・ファイルシステム 展するファイルシステムといえるだろう。 結果を返すサービスなども考えられる。これから大きく発 きる。上記の file や tcp のほかに、コマンドを実行して ーネルに手を加えることなくさまざまなサービスを提供で portal デーモンは普通のユーザープロセスなので、カ という特殊なユーサー環境を寒見できる。 は、ファイルの参照は可能だか操作は大幅に制限される、 クトリを変更する chroot システムコールと組み合わせれ もしろいのか分からないかもしれないが、ルート・ディレ ンが与えられていても変更できない。これだけでは何がお だし、 ls などで一覧することはできないし、パーミッショ 下には、ルート以下と同しファイルシステムがみえる。た という不思議なファイルシステムも利用できる。 /p/fs 以 tcp のはかに、 portal.conf で "file" を指定した / p / 信 トなどを作成することも可能である。 クライアン モンを利用するメールやニュースのサーバー こて挙げた単純なサーピスだけでなく、 portal デー 噫 : このプログラムはエラーチェックなどをすべて省略している。 UNIX MAGAZINE 1998 ユ ている。コンフィギュレーション・ファイルのオプショ ンは、、 PROCFS" である。デフォルトでマウントされて いる / pr 。 c をみると、プロセス ID ごとにディレクトリが あり、それぞれに ctl 、 file 、 mem 、 note 、 notepg 、 regs 、 status というファイルがある。 file は実行中のファイルの イメージである。 mem はプロセスのイ反想メモリのイメー ジ、 regs は CPU のレジスタの内容で、 2 っともプロセ スの所有者は読出しや書込みができる。 status は人間か理解できるかたちでプロセスの状態を 読み出すことができる ( 図 4 ) 。 ーこにはコマンド名、プ ロセス ID 、親プロセス ID などの情報カ喋められている。 しかし、それだけでは分かりにくいので、通常は ps コマ ンドなどで見やすいかたちに変換する。 proc ファイルシステムがマウントされている状態とマ ウントされていない状態の出力をくらべてみると、図 5 の ようになる。 / pr 。 c のマウントを解除すると、プロセスのスタートし た日判り、消費した CPU 時間、コマンドラインなどの清報 が参照できなくなる。 FreeBSD ではカーネルの状態を得 るための kvm ライプラリが proc ファイルシステムに依 存しているので、このような結果になる。 このほかにも、 ctl というおもしろいファイルがある。 これには、プロセスに対するメッセージを書き込むことが できる。たとえば、現在実行中のプロセスに SIGHUP を 送るときは以下のようにする。 ayanami% ech0 hup > /proc/curproc/ctl プロセスはプロセス ID て指定するのだが、現在実行中 のプロセスだけは /proc/curproc 以下て参照できる。 の場合、 SIGHUP を受け取るのはコマンドを実行してい るシェルなので、このシェルは処理を停止する。 カーネ ) レ・ファイルシステム これは、カーネルの情報を提供するファイルシステムで ある。コンフィギュレーション・ファイルのオプション は、、 KERNFS" である。利用法は簡単で、マウントボイ ントを作成し、そこに kernfs をマウントするだけでよい ( 図 6 ) 。 参照できる情報は、カーネルのファイル名や現在の時間 などである。従来は、カーネル内の情報を読み出す特別な コマンドやシステムコールを実行する必要があった。カー 149