ディレクトリ - みる会図書館


検索対象: UNIX MAGAZINE 2002年11月号
27件見つかりました。

1. UNIX MAGAZINE 2002年11月号

0 図 3 怪しげなの写真をミ尺 / Users / masu ノ円 M / 2002 / 6 / 25 / 20020625161108jpg 20 竄る・宿新 0 電 ロロ読第 矗ーコ 2002 ん / 22 w ”橋 CE をのよツこ使う物響ブックマーク当携書の位報取得 「 2002 / 6 / 2 ま 真を中心として図 2 のように変化します。これらの写真に は、キーワードも付けられます。その場合には、注目して いるものと同しキーワードをもっ写真の一覧か表示されま す。この日に撮った写真には、、 20020625 慶應 SFC" と いうキーワードを付けておいたため、このキーワードをも っすべての写真がリストされています。 こで、研究室にあった、、怪しげな電球 " を撮った写真 0 、、電球 " というキーワードを付けてみます。そして、 の電球の写真を参照すると、今度は図 3 のように、電球 " というキーワードも表示されます。 これだけなら、よくある写真整理システムと同じです が、近傍検索システムではキーワードを用いた連想的な検 索が可能になっています。写真には、、電球 " というキーワ ードカ咐けられているので、このキーワードをもとに検索 すると図 3 のようなページか得られます。ただし、凾の 写真整理システムとは異なり、写真そのものだけでなく、 撮景彡日時の前後にあったイベントや、そのころに作成した ファイルなどもリストされているため、、、怪しけな求を 見たのと同じころに作ったフログラム " もすぐに探し出せ ます。また、そのとき一絲者にいた人をキーワードとして登 録しておけば、その人物から検索を進めていくことも可能 です。このように、関連する情報をどんどん連想的にリン クして検索できるようになるわけです。 このシステムでは、、、あの屋しげな電球をいつどこで見 キーワイ 20020025 第 S ド C 近ー霓を間△マ 198 SFC に行ったとき、何を見たかを たのかい出したい 思い出したい " 、、ある人とどこかを見学したはすだが、ど こだったかを思い出したい " といった漠然とした検索が、 すべてクリックを繰り返していくだけでおこなえるように なります。 近傍検索が当り前になれは、ファイル管理の手法も従来 とはかなり変わってくるかもしれません。 通常、 UNIX のファイルはディレクトリ構造をもとに 管理するので、関連性のあるファイルは同じディレクト リか、近くのディレクトリに置いておく人が多いと思いま す。たとえは、文章と妾に関係する写真や画像は、たい ていその文章と同しか、近くのディレクトリに保存してお くでしよう。さもないと、あちこちに散らばって、どこに 何をしまったかが分からなくなるからです。 しかし、作成日時などをもとに近傍情報に簡単かっ確実 にアクセスできるのであれは、無理をしてまで同じディレ クトリに置く必要はなくなります。近傍検索システムの場 合は、、時間的に近いもの " を基準としてアクセスできるの で、写真ファイルか文章とはまったく異なるディレクト リに置かれていても間題はありません。 いろいろな属性ごとに、、近傍情報 " をもと このように にした検索ができると、属生を利用して関連する情報のあ いだを縦横無尽にジャンプすることもできます。嗤だけ でなく、内容や作成者など、多種多様な国生ごとに近イ旁に 存在する情報を簡単に参照できれは、従来とまったく異な る手法によるファイル管理も可能になります。 キーワードと連想的検索 デジタルカメラの普及とともに、デジタル画像を管理す るソフトウェアも一引勺になりつつあります。たしかに、 それぞれ特色のある検索手法が用いられていますが、いす れもいまひとつ有用性に欠けるような気がします。 写真の検索だけが目的であれは、キーワードを付けても あまり嬉しくありません。けっきよくのところ、キーワー ドや色彩などの情報にもとづいた写真の検索が最終目標に なっていて、その写真からさらに別のデータを検索するこ 、、いまひとっ " と感じる理由の 1 つの とはできないのが、 近傍検索がもたらすもの UNIX MAGAZINE 2002.11

2. UNIX MAGAZINE 2002年11月号

連載 IJN Ⅸ便利帖ー 0 ファイルでは、前述のライプラリ群をコンパイルするだけ でインストールせす、 MRTG の configure 時にそれら のライプラリへのパスを逐ー旨定するというガ去か紹介さ れています。今回はすでにライプラリ群をインストールし てあるので、このガ去とはすこし異なる手順で作業を進め ます。 MRTG には configure スクリプトが付属しているの で、まずこれを実行します。標準のインストール先は / usr /local/mrtg-2 で、これ以外のディレクトリにインストー ルしたいときは——prefix=/usr/local/www/mrtg など と指定します。ここでは標準のディレクトリにインストー % . /configure ルします。 UNIX MAGAZINE 2002.11 rateup の 2 つで、いすれもインストール先の bin ディレ ます。 MRTG を構成する主要なプログラムは mrtg と インストールが無事終了したら MRTG を実行してみ MRTG の実行 することができます。 mrtg-2/man mrtg" などと入力すればマニュアルを参照 ディレクトリに保存されるので、、、 man -M/usr/local/ インストール終了です。オンライン・マニュアルは man のディレクトリカ鮓られ、必要なファイルがコピーされて 標準の設定では / usr / 10Ca1 / mrtg -2 に bin や lib など % sudo make install % make コンパイルとインストールをおこないます。 configure スクリプトの実行カ鮗了したら、 MRTG の です。作者の遊び心なのでしようか。 に、、 it's fine" と出力するように書かれているだけのよう かめてみると、とくに天気を調べている様子はなく、つね チェックしたんだろうと思い configure スクリプトを確 れました。その日はたしかに晴れていたので、どうやって (cached) it's fine" というおもしろいメッセージカ咄力さ ていたところ、最後のほうで、、 checking the weather.. と眺めているだけなのですが、今回はすこし集中して見 x " て始まる行がたくさん出力されます。ふだんはほーっ ないろいろな資源がチェックされるため、、、 checking x configure スクリプトの実行中には、コンパイルに必要 クトリにあります。このうち rateup は mrtg から適宜呼 び出されて実行されるので、ユーサーカ躾際に起動するの は mrtg です。 mrtg は成疋ファイルの言当に従って重川乍し、指定され たルータやスイッチにアクセスして希望の「帯長を入手しま す。ますはこの設定ファイルを作成します。 設定ファイルの構造 1 つの設疋ファイルには複数のルータやスイッチに関す る設定をまとめて言当することができます。それぞれの設 定は設定名で区別され、 mrtg はその設定名に応したファ イル名をもつ画像や HTML ファイルを生成します。後 述する cfgmaker を利用すると、ルータやスイッチのホ スト名を使った設定名が自重加勺に割り当てられます。 1 つのルータやスイッチに関する設定項目は、 項目名 [ 設定名 ] : 値 という形式で記述します。、、 [ 設定名 ] " が省略されたか たちで記述されるグローバルな設定項目もあり、画像や HTML ファイルをどこに保存するかを指定する Work- Dir や、 HTML ファイルの言語を指定する Language などがこれにあたります。これらは 1 つの設疋ファイル 本に景をケえます。また、設定名として、一 " を指定す ると、その項目はその設定ファイルに書かれているすべて の言置に対する指定となります。たとえは、 Options [ ー ] : bits と書くと、すべてのトラフィック量がビット単位て表示さ れるようになります。 cfgmaker インストール先の bin ディレクトリには、 MRTG の 設定ファイルを作成するためのスクリプト cfgmaker が あります。このスクリプトを利用すると設定ファイルの作 成がたいへん楽になります。たいていの場合、 cfgmaker で設定ファイルの芻旧杉を作成し、エデイタでそれを編集し て細かい設定をおこなうという作業になるでしよう。 cfgmaker には多くの引数が用意されていますが、詳細 はオンライン・マニュアルを参照してください。ここては 最低限必要な引数を挙げます。 81

3. UNIX MAGAZINE 2002年11月号

% cp scripts/makefile % make test % sudo make install これも zlib と同しく、 連載 / IJN Ⅸ便利帖ー リスト 1 gd-jpeg. c の冒頭部分 —DHAVE_LIBPNG # inc lude #include # inc lude # inc lude # inc lude / * 1 . 8 . 1 : # inc lude #include # inc lude く stdio . h> く stdlib . 五> く setjmp ・ h> く limits . h> く string. h> remove dependency "gd h" "jerror. JPeg " ・ 1 ib . h " 0 Ⅱ j include #include "gdhelpers . h" #ifdef HAVE_LIBJPEG static const char * const GD_JPEG_VERSION typedef struct —jmpbuf—wrapper { j mp -buf j mpbuf ; } jmpbuf-wrapper ; " 2 0 " ・ . std Makefi1e make test" を夫行してバイナ リファイルの作成と実行テストをおこない、異常がなけれ ばインストールします。 % tar xzf gd—l . 8.4. tar. gz % cd gd—l . 8 . 4 このディレクトリにある readme. txt を読むと、 gd は PNG のほかに JPEG や XPM などのフォーマットの 画像や、 TrueType フォントも操作できることが分かり ます。しかし今回は、これらの機能は使いません。 次に Makefile をエデイタで編集します。 Makefile の 15 行目に、 CFLAGS というコンパイラに与える引数を 定義している箇戸励ゞあります。ここでは JPEG の操作も 標準でおこなえるようになっていますが、今回は必要ない ので、そのための引数である -DHAVE-LIBJPEG を削 gd 上記の 2 つのライプラリが無事にインストールできた ら、 gd をコンパイルしてインストールします。 gd の職斤 版は 1.8.4 でした。これも同様に gd-l. 8.4. tar. gz を入手 して展開すると、 gd -1.8.4 というディレクトリが作られ ます。 CFLAGS=-O ・編集後 糸扁集ⅱ 除します。 CFLAGS=—O —DHAVE-LIBPNG —DHAVE-LIBJPEG 80 おり眺めておくとよいでしよう。 ほかの部分は変更する必要はないと思いますが、ひとと MakefiIe の変更か終ったら、次に gd-jpeg. c をすこ し変更します。このファイルは JPEG 画像窈巣作につい て書かれています。ファイルの内容を見ると、冒頭でヘッ ダファイルをインクルードしたあと、残りのすべての部 分が、、 #ifdef HAVE-LIBJPEG" と、、 #endif' で囲ま れています ( リスト 1 ) 。さきほど Makefile から削除し た HAVE-LIBJPEG という定数が宣言されていないと きには、このファイルか無効になるように工夫されている のです。 しかし、冒頭でインクルードされるヘッダファイルのう ち、 jpeglib. h と jerror. h は JPEG 操作用のライプラリ とともにインストールされるはずのファイルです。そのた め、このライプラリがインストールされていない言算機に はこれらのヘッダファイルか存在せず、このままコンパイ ルするとエラーになってしまいます。この間題を回避する ために、これら 2 つのヘッダファイルをインクルードし ている行を、、、 #ifdef HAVE-LIBJPEG" と書かれてい る行の後ろへ移動させます。 以の変更を加えたあと、 gd をコンパイルしてインス トールします。 % make % sudo make install MRTG のインストール いよいよ MRTG をインストールします。 MRTG の最 新バージョンは 2.9.22 でした。 mrtg-2.9.22. tar. gz を入 手して展開すると、 mrtg ー 2.9.22 というディレクトリカ非 られます。 % tar xzf mrtg-2.9.22. tar. gz % cd mrtg-2.9.22 MRTG のインストール方法は、 doc ディレクトリ内の unix-guide. txt というファイルに書かれています。この UNIX MAGAZINE 2002.11

4. UNIX MAGAZINE 2002年11月号

インターフェイスの街角 図 2 写真を尺 図 1 ezplus ティレクトリを参照したところ /Users/masui/Pl M / 2002 / 6 / 25 / 20020625145530jPg /user/masui/ezplus/index. html ez 可 us の Un ⅸ風開発環境構築 : てーを当第宿 5F0 ~ の携第電第て優える J を物環境「をしのしグラムを 0 滝物ぉ環境て物 : 新えする方 : まを月する . 開発環境概霎 近イファイル - △の一ん一リれ 近時間△マ 20020625 第産 S ド C ロロ阜第 2002 / 6 / 21 蛋矗壁ロ震 2002 ん / 22 物既淞 E を L 似のよタ : 使う各種響ブックマーク携をの位置物報第射第 2002 ん / 23 * 障 - ト当ブックマーク物をゆ物 0 。修当 WAP W J ・ T00 ) 』 P40 ャ』一回イ 0 酸ト載“ 2002 / 6 / 24 当宿第 0 第 0 機物報町得司 G 、を物リソースコンシャスプロララミングのネターーを・を引 2 ー夥純』 材物司れ地 xh 「 W J , 第物報理学会「インタラクシ当ン第の革新と凵物第 : 0 第 1 新 1 W : : ( 石 205 加円当勢 2415 : 13 , W : 2 205 24 粤「議 " ' ー製 2 E ' 、 0 ・ 0 En , , ・ 0 , , ⅶ , 当月報物第 2002 / 6 / 22 2002 / 6 / 25 ー a:OO 慶講義 W ′“の盟にのよ、 : 使 ) 各種ゴックマーク W 携第の位置報韲得 2 き 2 ーⅢ W ーあ猤ー夏 312 当気 ( 0 イる : け都 11 2002 / 6 / 23 W EZe•eb ブックマーク物 ( を W 当当 J ”物 TO [ 0 回 R 0 朝 ) ・ , 翩 0 、第 h ま物 2002 ん / 24 竄物 S ド 0 を物』れ第協「 W 、、第 W 発報処理すま「インタラクン当ン被第の革新こ実凵物第当 : 824151 新 7 物 の ) あ 2 物 : 0 第 2415 れ 31 2 双第 5 : 4 。、“回 E 0 E 一 , , W 月報当発 リ検索サービス " は、情報の構造化によってハイバーテキ ログラム開発について解説しましたが、 ezplus ディレク スト検索を可能にしたシステムといえます。 トリにはそのときの資料が入っています。通常のファイル プラウサでディレクトリをアクセスしても、参照できるの これらのシステムのように情報が適切に構造化されてい はそのディレクトリに置かれているファイルの内容だけで 川ま、リンクをたどることで青報を効率的に探し出せるか す。一方、近傍検索システムでは、 index. html とほは 1 司 もしれません。しかし、個人が作成したファイルなどは、 しころに作成したメモやファイル、撮った写真なども同時 そもそもデータか構造化されていないので、ファイルシス に一覧できるようになっています。 テムのディレクトリをたどる程度の検索カ斗青ーです。 私が常用しているマシンでは、重要なファイルを書き 近傍検索システムを利用すれば、自分の言算機に蓄積さ 出したときはその時刻を言当求するようにしてあります。ま れたファイルのように構造イゞ不一ト分な場合でも、近傍情 た、アイデアなどのメモ類は日付と日リからなるファイル 報にもとづいて自重加勺に構造を作り、 Yah 。。 ! と同様な感 名てイ呆存しているので、ある日日おののアクティビティを 覚で迅想的に検索していくことが可能になります。 簡単に一 -- ・覧表示することができます。 作成日時が 2002 / 6 / 24 となっている ezplus ディレク トリには、記事で紹介したシステムに里する資料が置か 以下では、プラウサから使えるように CGI で実装した れているので、すぐ近くに関連する・情報やファイルカ k 見 近傍検索システムの例を紹介します。 されます。その直後には、、慶應講義 " というイベントも記 図 1 は、近傍検索システムで ezplus/index. html を 録されています。ここには、所用で慶應義塾大学オ目南尺 参照したところです。ページの一番上の入力枠に / user / キャンパス (SFC) に行った際、研究室を見学させていた masui/ezplus/index. html と指定して近傍検索システム だいたときの写真もリストされています。つまり、携帯電 話の Java 開発キットである ezplus ディレクトリを表示 (neighbour. cgi) を呼び出すと、このディレクトリに置か れているファイルが一覧表示されます。同時に、このディ することにより、それを紹介した原稿ファイルや里する アイデア、近い日付のイベントや写真などをすべて 1 つの レクトリの更新日時に近い時刻のファイルアクセスやメモ ページ内に表示することができるわけです。 作成などもすべてリストされます。 写真のなかから 1 枚をクリックすると、画面はその写 8 月号で au (KDDI) の GPS 機能付き携帯電話のプ 回 M 秋物 」 0 近イ寺間△マ 近傍検索システムの例 197 UNIX MAGAZIN E 2002.11

5. UNIX MAGAZINE 2002年11月号

連載 / IJN Ⅸ便利帖ーの インストール UNIX MAGAZINE 2002.11 5 http://www ・ gzip ・ org/zlib/ 4 http://ftp.falsehope.com/home/gomez/mrtg/ ・ zlib 5 をあらかしめインストールする必要があります。 っかのライプラリが必要です。氏限、以下のライプラリ gd を新たにインストールするためには、ほかにもいく ストール済みだと思われます。 libgd. a や libgd. so などのファイルがあれは、 gd はイン れているかもしれません。 /usr/lib や /usr/local/lib に ので、皆さんのお手許の計算機にもすでにインストールさ ろいろなソフトウェアで使われている有名なライプラリな MRTG は gd というライプラリを利用します。 gd はい 式の画像として生成します。この画像を生成するために、 MRTG はトラフィック量に関するグラフを PNG 形 ライプラリのインストール ん。 るので、ここではそれらのインストールガ去には触れませ ンストールされているのではないかと思うほど普及してい しかし、いまや perl と GCC はどんな言算機にもイ が必要になります。 かれたものがあり、これらをコンパイルするために GCC また、 MRTG を構成するプログラムのなかには C で書 ジョンは 5.005 以 (r) が必喫です。 います。そのため、 MRTG を重川乍させるには Perl ( バー MRTG のメインとなるプログラムは Perl で書かれて インストールの前に を利用しないインストールガ去について説明します。 場合はこれらを利用すると便利でしよう。以下ではこれら ジ 4 などがあります。インストールに手間をかけたくない age になったものカゞ、 Linux では RPM 形式の / ヾッケー FreeBSD では ports コレクション (net/mrtg) や pack- MRTG はひろく普及しているソフトウェアなので、 いと思います。 ので、 WWW サーバーにインストールするのが手軽でよ 前述のとおり MRTG は HTML ファイルを生成する 6 ・ libpng それぞれ、脚注に示した URL から最新のものを入手 し、付属のドキュメントに従ってインストールします。以 下にその手順を簡単に示します。 zlib zlib は libpng を作成するときに利用されるので、かな ら $libpng よりさきにインストールしておきます。 原稿執筆時点での最新版はバージョン 1.1.4 でした。 zlib-l. 1.4. tar. gz を入手して展開したら、生成されたディ レクトリ zlib-l. 1.4 で README に書かれているとおり に乍業します ( 以下の例では、コマンド実行時に出力され るメッセージなどは省略しています ) 。 % tar xzf zlib ー 1 . 1 .4. ta て・ gz % cd zlib ー 1 . 1 . 4 % . /configure % make test % sudo make install make test " を実行すると、必喫なバイナリファイルを 作成したあとでそれらが正しく動作するかどうかのテスト がおこなわれます。その結果、異常がなけ川ま、、 make in- stall" でインストールします。 libpng libpng のム辭用阪は 1.2.4 でした。 libpng-l. 2.4. tar. gz を入手して展開すると、 libpng ー 1.2.4 というディレクト リかて、きます。 このディレクトリには configure というスクリプトが あるので思わす実行したくなるかもしれませんが、ぐっと 堪えて INSTALL というファイルを読みます。すると、 configure を実行するのではなく、 OS や環境ごとに用 意されている MakefiIe のなかから適切なものを選んで make コマンドを実行すればよいことが分かります。これ らの Makefile は scripts というディレクトリに収めら れています。たいていの場合は makefile. std というファ イルを使えばよいと思いますが、インストール先の言算機 の OS の名前カ咐いた MakefiIe があれはそれを利用しま % tar xzf libpng-l. 2.4. tar. gz % cd libpng ー 1.2.4 6 http://www.libpng ・ org/ 79

6. UNIX MAGAZINE 2002年11月号

0 す情報を白寉に検索できるようにしています。 Q-Pocket はテキスト検索は得意ですが、キーワード が分からないと検索が困難ですし、テキストを含まない写 真などの情報は検索対象にできないという問題がありまし た。また、各データか関連づけられているわけではないの で、データ間の関係を用いた検索も不可能でした。 そこで、キーワード検索の代わりに迅想的なリンクを重 視し、頭のなかの清報を迅想によって探しあてるのと同様 な方法で引・算機内の情報を検索する「近傍検索システム」 を試作してみました。 近傍検索とは、 1 つの情報をもとに、その近傍の情報を たどる操作を繰り返していくことによって目的とする情報 を探し出す手法です。 ます、ある情報と内容や作成日時、置き場所などカ随い ものを、、近青報 " と定義します。そして、 1 つの情報を 表示するときは、つねにその近傍情報も表示することにし ます。近傍情報のなかから 1 つお尺すると、さらにその 情報に関する近傍清報も表示されるため、関連する情報を 連想的にたどって最終的に目的とする情報に到達できる可 能性か高くなります。 まったく単純なコンセプトですが、これだけでも次のよ うにけっこう強力な連想検索か可能になります。 例 1 : ある製品をどの展示会で見たのか思い出したい ・会場で、誰かとその製品について話したことを思い出 す。 展示会に一緒に行った人の情報を調べる。 ・その人に関連する写真リストのなかから展示会で撮った 近傍検索とは何か ・なぞなそ認証の原稿を参照する。 ・ UNIXMagazine ディレクトリを参照する。 の原稿を書いたころに写真を撮ったはすだと思う。 ・ UNIX MAGAZINE の記事でとりあげたのだから、そ 例 2 、、なぞなぞドア " の写真を探す 写真を撮った日時から展示会を特定する。 ものを選ぶ。 196 をみつける。 ・原稿の執筆前後に撮った写真のなかから、なぞなぞドア 例 3 : 学会で発表された論文を探す ・その学会の直後に山登りに行ったことを思い出す。 ・山に登ったときの写真を探す。 ・その写真を参照し、その前後に開催されたイベントを調 そのなかから学会を選び、 Web ページで公開されてい る論文を入手する。 通常、人間はこのような竹喋を自然に頭のなかでおこな っているはすですが、言算機ーヒではそれはど簡単には実行 できません。ー E 記の 3 番目の例でいえば、 1. 山登りに行ったことを思い出し 2. ファイルプラウサや写真管理ツールでそのときの写真を 探してキ彡日時をヾ 3. 予定表を開いてその日時に移動して学会の予定を参照し 4. 学会のホームページに移動して検索する といった一里のイ 1 三業が必要になります。近傍検索システム を利用して、これらの竹璞をすべてクリック 1 つで実行で きるようにしておけは、このような連想的な検索もかなり 楽になるはすです。 構造を利用するものにしても、キーワードにもとづくも のにしても、点て利用可能な計算機十の検索システム では、人間がなんらかの指定を明示的におこなう必要があ ります。しかし、構造を使うのか、それともキーワードで 検索するのかなどと、いちいち方法を指定すること自体が 面倒です。毎日のようにおこなっているイ / ド業とはいえ、フ ァイルを探そうとするたびに cd や ls でディレクトリをた どるのは、あまり効率的とはいえません。 Google などの全文検索システムが身近になってきたと はいえ、キーワード窈旨定による検索は、プラウサー E でク リックの系区しによって情報を探すガ去にくらべると、そ れなりに手間のかかる作業だと思います。 近傍検索システムは、目の前に見えているリストのなか からなんとなく必要そうなものお尺するプラウジンク髞 作を繰り返していけば、最糸勺には目指す情報にたどり着 けるというアイデアにもとづいています。 そもそも、 web のようなハイバーテキスト・システム は誰でも使える検索オ冓として考案されたものではないで しようか。たとえは、 Yaho 。 ! に代表される、、ディレクト UNIX MAGAZINE 2002.11

7. UNIX MAGAZINE 2002年11月号

連載 / Linux のプートプロセスをみる ページング機能の有効化 次に、制御レジスタ CRO を更新してページング機能を ー① 有効にします。 0096 : 0097 : 0098 : 0099 : 0100 : 0101 : 0102 : 0103 : 0104 : 0105 : 0380 : 0381 : 0382 : 0383 : 0384 : 0385 : 0386 : 0387 : 0388 : 0389 : movl $swapper—pg—dir——PAGE-OFFSET, % eax movl %eax , % c て 3 movl % c て 0 , %eax 0r1 $ 0X80000000 , %eax movl %eax, %crO jmp If movl $lf,%eax jmp *%eax 1 : 1 : ・ org 0X1000 ENTRY(swapper-pg-dir) ・ 10 Ⅱ g 0X00102007 ・ 10 Ⅱ g 0X00103007 . fill BOOT-KERNEL_PGD—PTRS—2 , 4 , 0 / * default : 254 entries * / ・ long 0X00103007 ・ 10 Ⅱ g 0X00102007 / * default : 766 entries * / . fill BOOT—USER_PGD_PTRS—2 , 4 , 0 101 ~ 104 行目の JMP 命令は、パイプラインをフラ ッシュするために実行しているようです ( マニュアルを読 んだかぎりでは、この処理はとくに必要ないように思えま ページディレクトリの 1 つのエントリは、 4MB の領 域をマッピングします 4 。よって、 382 行目のエントリ はリニアアドレスの 00000000H から 003FFFFFH ま での領域をベージテープル pg0 にマッピングし、同様 に 383 行目では 00400000H から 007FFFFFH までを pgl にマッピングします。 386 行目のエントリは麪頁から 769 番目にあたるので、リニアアドレス C0000000H か ら C03FFFFFH までの領域を pg0 に 5 、 387 行目では C0400000H から C07FhFFFH までを pgl にマッピン グします。 swapper-pg-dir と pg0 、 pgl の関係は図 5 の左半う ) の ようになります。ページテープルどうしを関連づけること によって、リニアアドレスから物理メモリのページフレー ムへマッピングできるようになります。 スタックの設定と BSS 領域のクリア 以下の部分では、 swapper プロセスが使用するスタッ ク領域を設定し、 BSS 領域 ( 初期化されないデータ領域 ) を 0 て初期化します。 ページンク饑能を有効にするには、以下の手順で設定す る必要があります。 1. ページテープルとページディレクトリをメモリ上に作成 する。 164 ラグをセットし、 CPU のページンク饑能を有効にします。 そして、 98 ~ 100 行目で制御レジスタ CRO の PG フ ページディレクトリの知可立置を得るレジスタです。 97 行目で更新している缶卩レジスタ CR3 は、 CPU が いてアドレスの値を修正しています。 に位置しているため、 96 行目で --PAGE-OFFSET を引 スは C0101000H ですが、物理アドレスでは 00101000H 96 行目の swapper-pg-dir カ甘旨しているリニアアドレ ています。 同しく、 P 、 R/W 、 U / S の 3 つのフラグがセットされ す領域にあらかしめ作成してあります。ページテープルと ページディレクトリは、ラベル swapper-pg-dir カ甘旨 3. CRO レジスタの PG フラグをセットする。 タにロードする。 2. ページディレクトリのう巨頁物理アドレスを CR3 レジス 0107 : 0322 : 0323 : 0324 : stack—start,%esp ENTRY (stack_start) ・ 10 Ⅱ g SYMBOL—NAME(init—task—union) + 8192 . long ——KERNEL—DS 107 行目のラベル stack-start のアドレスには、酉リ init-task-union の最終アドレスとデータセグメントのセ レクタ値 0010H か書かれています。 323 行目の init-task-union は、カーネル内に ( 静的 に ) 石呆された 8KB の大きさのデータ領域を指すラベル です。 Linux カーネルでは、 1 つのユーサープロセスは、ユー サーモードのスタックとは別にカーネルモードのスタック をもちます。つまり、プロセスがシステムコールを呼び出 UNIX MAGAZINE 2002.11 5 ( 769 ー 1 ) x 4MB = C0000000H 1 024 工ントリ = 4MB してカーネルモードに入ると、 SS レジスタと ESP レジ 4 4GB

8. UNIX MAGAZINE 2002年11月号

図 4 31 図 5 連載 / 凵 nux のプートプロセスをみる一① ページテーカレの豈 2 つのページテーカレとページディレクトリ ページフレームのべースアドレス リニアアドレス空間 9 8 7 6 5 4 3 2 1 0 AVAIL 0 0 D A a- コェ P C0800000 C0400000 C0000000 00800000 00400000 ために使用します。 00000000 swapper—pg—dir pg 1 pg 0 物理メモリ空間 00800000 007FF000 00402000 00401000 00400000 003FF000 4MB 00002000 00001000 00000000 にあらかしめ石呆し、これを第 1 段階のページテープルの 84 ~ 90 行目のコードは、 pgO と pgl に表 1 のような UNIX MAGAZINE 2002.11 ( 図 4 ) 。 アドレスが並び、以下の 3 つのフラグがセットされます ープルのエントリには、ツ頁のページフレームから順番に 8MB の示観月をマッピングするためです。したがって、テ ページテープルを作成するのは、物理アドレスの : 麪頁から データを書き込んでページテープルを作成します。ここで ・ P ( メモリ上に存在する ) ・ R/W ( 読み書き可育印 ・ U/S ( ューサーモードでアクセス可能 ) pg0 および pgl のページテープルと物理ページフレー ムの関係は、図 5 の右半分のように表すことができます。 この段階では、まだページディレクトリを設定していない ので、リニアアドレスと物理アドレスのマッピングはおこ なわれていません。 163

9. UNIX MAGAZINE 2002年11月号

, けつま 3 びっ qmail は、 sendmail とはまったく異なる構造をもつ MTA アプリケーションです。 Postfix と同様にモジュー ル化されていますが、各プログラム・モジュールごとに別 のユーザー ID を付けるようになっているので、セキュリ ティ機能か高くなっています。状態を言当求することができ るため、信頼生か高いのも特徴てす。 smail は GNU プロジェクトか開発している MTA プ ログラムで、 sendmail と同様の機能を提供しますが、設 定がとても簡単です。 smail ではメッセージをキュー ( 待 ち行列 ) で管理していないので、他の MTA プログラムに くらべて処理が速くなりますが、大阯のメールを扱うサー バーではキューが必要となるのてイ吏えません。 exim はメッセージの受信制限をおこないやすく、スハ なぜ Postfix か ? ムを羽餘しやすいメールサーノヾーだそうです。 UNIX MAGAZINE 2002.11 1 http://www.kame.net/ KAME プロジェクトの IPv6 パッチがなくなったおも 得してこれらのパッチを当てる必要があります。ただし、 公開されています。 IPv6 を使いたい場合は、ソースを取 のパッチを変更したパッチがいくつかインターネットで 1.1.11 やそのあとのスナップショット用にも、 KAME プロジェクト 1 で作られた IPv6 パッチがあります。また、 もっとも、すこし旧いバージョンに対しては、 KAME で、 IPv6 を使った電子メールの送信はできません。 念ながら、 Postfix 自体はまだ IPv6 に対応していないの NetBSD 1.6 にも Postfix 1.1.11 が含まれています。残 Postfix オフィシャル・リリースの山辭斤版は 1.1.11 で、 か簡単なはうがよいでしよう。 Postfix を使おうと決めま もかかりません。それに、最初に使う MTA としては設定 最初から OS に伺属しているのならインストールの手間 と教えてくれました。 ノじ、つ」 しいことはないが、最初はすぐ使える Postfix がよいと か最初から刊属している。 sendmail も慣れてしまえ ( 隹 「じつは NetBSD 1.5 以降には sendmail と Postfix と、 ひととおり調べたあとで、もう一度師匠に相談してみる な理由は、 Postfix 中の IPv6 のコードがオープンリレー の原因となることか判明したためだそうです。 IPv6 を使 うのはこの部分のバグがなくなってからにしたはうがよい でしよう。 今回は IPv6 はあきらめて、 NetBSD に付属している Postfix を使うことにしました。しばらくしてメールサー バー管理に農れたころには、 Postfix が IPv6 に対応して いるかもしれません。もしくは sendmail に挑戦してもい いかな、と考えています。 ◎ Postfix を使おう 実際に Postfix でメールサーバーを構築する竹喋を始め ましよう。その前に、初めてのメールサーバー管理なので、 参考書があったほうか安心です。書店に行って Postfix の 解説書『 Postfix メールサーバの構築』 [ 1 ] を購入してき ました。本を片手に、いよいよ Postfix の設定を始めま す。たまたま師匠も最近は自分のサーバーで Postfix を 使っているので、その設定も参考にさせてもらうことにし ました。 Postfix のインストール NetBSD 1.5 以降の場合、システムに Postfix か含ま れているのでインストールの必要はありません。ただし、 スナップショットを使いたい場合や、パッチを当てたい 場合もあると思うので、簡単にインストール手順をみてお きましよう。 ます、 Postfix の FTP サイトからソースコードを取 得します。 FTP サイトはたくさんあるので、 WWW サ イトのリンクを使って、近いところをみつけます。また、 パッチを当てる場合は該当するパッチも取得しておきま す。続いて、ソースコードを作業用ディレクトリに展開し て、パッチを当てます。 インストール則に、 postfix という名前のユーサーとグ ループを作成しておきます。また、 maildrop グループも 作成します。これは maildrop キュー操作用のグループ です。 NetBSD では最初からこれらのユーサーやグルー フ。か設定されているので、新たに作る必要はありません。 続いて root になって、ソースを展開したディレクト リで、 87

10. UNIX MAGAZINE 2002年11月号

0 けつま 3 びっ u ド サーの場合はユーザー名だけを書けば十分です。 対応させるユーサーはかならすしもローカルューサーで ある必要はありません。右側に転送したいメールアドレス を書いておけば転送できます。たとえは図 4 の上から 5 番目のエントリでは、 dareka@yuzuko.org へのメールを dareka@dokoka.net に送るように成疋しています。 その下のエントリはメーリングリスト用の記述です。 users@yuzuko.org という仮想ドメイン上で動いている メーリングリスト宛のメールがきたら、 users=yuzuko. org というローカルューサーだと解釈されるようになって います。この users=yuzuko ・ org という宛先はもう一度 Postfix で処理され、今度は aliases テープルでのエント リに従ってメーリングリスト・プログラムに渡されます。 1 つのイ應課ドメインについて言当し終ったら、取陵に @yuzuko . org @example ・ org 、とくに指定 のように書いておきましよう。こうすると、 のない yuzuko.org 宛のメールは同じ名則の example. org に転送する " と定義されるので、すくなくともイ反想ド メイン宛のメールカ哘方不明になることはありません。 テキストファイルか準備できたら、前項で説明したと # postmap /etc/postfix/virtual おり、 UNIX MAGAZINE 2002.11 設定去カ嶼なります。 との互性のため、他のルックアップ・テープルとはやや ックアッフ・テープルの仕組みを使いますが、 sendmail ェイリアス・テープルの設定もしました。これも同しくル メーリングリスト・プログラムにメールを渡すために 工イリアス・ファイルの設定 も数分後には反映されるはすです。 変更が反映されます。しかし、このコマンドを使わなくて を実行して、 Postfix の設疋を読み込みなおせば、即座に # postfix reload は、 う。また、データベースの内容をすぐに反映させたいとき 直したあとは postmap の実行を忘れないようにしましょ virtual ファイルは何度書き直しても問題はありません。 というバイナリファイルができます。 を実行します。すると、同じディレクトリに virtual.db ェイリアス (aliases) ルックアッフ・テープルは、あ る電子メールアドレスをローカルのユーサーやコマンド、 ファイルに対応つ、けるためのデータベースです。ェイリア ス機能は sendmail の aliases テープルと互換性があるの で、書式も sendmail の方式にならっています。パターン と結果を 1 行の左右に並べて書くのは他のルックアップ・ テープルと同じですが、区切りには空白ではなく、、 " ( コ ロン ) を使います。右側の結果の部分には、ローカルュー ザー、コマンド ( 実行するプログラム ) 、オ内すべきファイ ル名のいずれかが入ります。 図 5 は私の使っている aliases ファイルです。このファ イルは、 Postfix 関連のディレクトリ内ではなく、 Net- BSD では /etc/mail/aliases に置かれている sendmail 用のものをそのまま使います。ファイルには、主要なシス テムューザー宛のメールアドレスを実際のユーサー宛にす るためのエントリがあらかじめ言当されているので、必要 であれば変更を加えます。私はこの部分はそのまま使いま 新しく付け加えたのは最後の 1 行だけです。前項で説 明した virtual ルックアッフ・テープルの記述に従い、 users=yuzuko.org というユーサータ邑になったメールが 処理の対象になります。メーリングリストにメッセージを 配信するためのエントリは右側の値に : include : メーリングリストのメールアドレスを含むファイル のように書くことになっています。ただし、私の管理して いるメーリングリストでは FML というメーリングリス :include:" のあとの /var ト・プログラムを使っており、 /spool/ml-yuzuko.org/users/include というファイル には、対象のメールを FML プログラムで処理するための シェル・スクリプトか当されています。 FML では 1 つのメーリングリストに対して、実際には もっと多くのエントリを aliases ファイルに追加すること こでは説明のために 1 つだけとりあげま になりますが、 aliases テキストファイルの作成カ鮗ったら、かならず、 # newaliases を実行します。これによって、同じディレクトリ内に aliases. db ファイルが生成されます。長くても数分で、実 行中の Postfix に対してデータベースの変更が反映される 91