データ - みる会図書館


検索対象: UNIX MAGAZINE 2003年5月号
50件見つかりました。

1. UNIX MAGAZINE 2003年5月号

連載 / IPv6 の実装ー⑩ cksum は認証データの検証において、言 fr 算結果を一時 的に保存するためのバッフアです。認証データの最大長 が 16 オクテットなので、 cksum は 16 オクテットの配 列として定義されています。 sizl が cksum の大きさを超 える場合はバケットを破棄します。 認証テータの検証 認証ヘッダの整合性の確言勘鮗ったら、認証データの検 証に進みます。 IP6_EXTHDR_CHECK (), off , sizeof (struct ah) 800 + sizoff + sizl , IPPROTO_DONE) ; 800 行目で、言正データ部までを含むメモリ領域が連続 してメモリ上に配置されていることを石忍します。 816 if ( (sav—>flags & SADB_X_EXT_OLD) 0 & & 849 } 続いて、引算結果とバケットにオ内されている認証デー タの上交をおこないます。旧い認証ヘッダと新しい認証へ ッダでは認証データの位置が異なるため、それぞれのヘッ ダ形式に応して認証データの位置を引算し、 sumpos に格 納します。 851 if (bcmp(sl. lmpos, cksum, siz) ! = 0 ) { 856 857 } goto fail; 817 818 819 825 826 sav->replay) { if (ipsec—chkreplay (ntohl ( ( (struct newah *)ah)->ah-seq) , sav) ) / * okey * / else { goto fail; 816 ~ 827 行目は反復攻撃を防ぐための通し番号の石忍 です。旧い形式の言正へッダには通し番号を↑褓内するフィ ールドがないため、この石忍は SAD 工ントリが SADB_ X-EXT-OLD フラグをもたない場合にのみおこなわれま 827 } 851 ~ 857 行目か澀証データの上交てす。始点ノード側 で計算された認証データの値 (sumpos) と、終点ノード が受信したバケットの内容で再引・算した値 (cksum) が同 ーであることを石忍します。 860 m—>m—flags ー = M-AUTHIPHDR ; 861 m->m-flags ー = M_AUTHIPDGM ; 860 ~ 861 行目は mbuf のフラグの更辛斤です。 KAME では、認証ヘッタ、、を使って認証されたバケットに以下の 2 つのフラグカ咐きます。 ・ M-AUTHIPHDR IP ヘッダや孑虧を、ツダなどの認証か完了した。 ・ M-AUTHIPDGM IP バケットのペイロードの認証カ院了した。 認証ヘッダによって、 IP ヘッダやカ刻を、ツダを含むパ ケット全体か改竄されていないことかイ焉正されるので、 の 2 つのフラグを設定します。 す。 834 836 837 if (ah6—ca1ccksum(m, cksum, sizl , algo, sav)) { goto fail; 892 893 899 904 905 if (m->m—flags & M_AUTHIPHDR & & m—>m—flags & M_AUTHIPDGM) { } else { goto fail; 834 ~ 837 行目は認証データの計算です。入力した IP バケット m に対し、 algo て指定されたアルゴリズムを 使って認証データを計算します。計算結果は cksum に格 納されます。 843 845 846 848 if (sav—>flags & SADB_X—EXT—OLD) { sumpos } else { sumpos ( c addr (caddr-t) ( ( (struct newah UNIX MAGAZINE 2003.5 892 ~ 905 行目で、認証に失敗したバケットを破棄しま す。 910 ~ 915 行目 ( 図 2 ) では反復攻撃を防ぐための情報 を更新します。 トンネルモードの里 IP セキュリティはその使い方によって大きく 2 つに分 69

2. UNIX MAGAZINE 2003年5月号

Maxtronic 社は、 6 ーベイ IDE RAID SoIution の DUAL—PCI バージョンを導入します。 The DiskArray . Specialist AE-5630 ID -2230 Maximized data transfer 新しい 6 ーベイ IDE RAID は、インテノレ i80303 を採用し、 UItra160 LVD SC ホスト・ノヾスおよび 512MB の キャッシュ・メモリーを内蔵するの特色として、 160MB / s でテータ転送を可能になります。 Mega-Storage & Easy Set-Up! EX3 データストレージソリューションが 1 テラバイト以上の容量でユーザに 豊富な与えるとしてアリーナ新しいラインの 長所の評価です。従来の製品と違い、 AR ENA RAID ソリューションは容易にセット・アップ、 また数ゆっくりとしたステップで構築できます。 製造元 MaxTronic lnternational Co. , Ltd. TEL : 886-2-22 田 -4875 http://www.maxtronic.com 販売パートナー サンウェイテクノロジー株式会社 TEL : 03 ー 381 5 ー 9001 http://www.sunwaytech.co.」 p ユニオンプロス株式会社 TEL: 03-3834 ー 2461 URL: WWW. unionbros.com 株式会社サイバネテック TEL: 03-3668-8089 http://www.cybernetech.co.jp 株式会社アイ . 工イ . アイ TEL 03-3350 ー 3770 http://www.iai-usa. CO. 」 p

3. UNIX MAGAZINE 2003年5月号

0649 : 0650 : 0651 : 0652 : 0659 : 0660 : 0661 : 連載 / Linux のプートプロセスをみる vaddr = elf_ppnt->p—vaddr ; if (BAD_ADDR(error) ) elf—prot , elf—flags) ; vaddr , elf—ppnt , error = elf—map (bprm—>file , elf—flags ト MAP_FIXED; load—addr—set) { = ET_EXEC if (elf—ex. e_type 図 11 0685 : 0686 : 0687 : 0681 : 0682 : 0683 : 0684 : /sbin/init のメモリ配置 08048000 H プログラム コード領域 0804DE8FH 0804 E EAOH 初期化された データ領域 初期化されない 0804 F36C H end_code = k ; end—code く k) ヒープ領域 0804F554H ァータ領域 elf_brk = k; if (k > elf—brk) elf-ppnt—>p—memsz ; k = elf-ppnt—>p—vaddr + end_dat a = k ; if (end-data く k) sta rt COde end_code start data end_data elf_bss elf_brk 643 ~ 645 行目では、フログラムヘッダに設定されてい るフラグに従って、 mmap でマップするメモリ領域のア クセス属性を設定します。 /sbin/init の ELF ヘッダの e-type は ET-EXEC な ので、 650 行目の if 文はつねに真となります。 そして、 659 行目で elf-map() を呼び出して、その内 部から do-mmap() が実行されて 2 つのセグメントをメ モリにマップします。 elf-map() を呼び出す際の変数の値を以下に示します。 変数 vadd r elf-prot elf-flags 1 回目 0 8 0 4 8 0 0 0 H 0 0 0 0 1812 H 2 回目 0804EEAOH 0 0 () 01812 H 1 回目のルーフは、テキスト・セグメントを 08048000H 以降にマップし、そのアクセス属陸は読出しおよひま行可 能に成疋されます。 そして、 2 回目はデータセグメントを 0804EEAOH 以 降にマップし、そのアクセス属性は読み書き可能に設定さ 663 ~ 686 行目では、テキストとデータセグメントの開 数の結果は以下のようになります ( 図 11 ) 。 620 ~ 687 行目のループを抜けた点で、それぞれの変 みてください。 パズルのようですが、表 2 を参照しながらゆっくり追って 始と終了アドレスを算出します。この部分の処理はまるで れます。 0663 : 0664 : 0665 : 0671 : 0672 : 0673 : 0674 : 0675 : 0676 : 0677 : 0678 : 0679 : 0680 : if ( !load—addr—set) { load_addr_set (elf-ppnt—>p- load_addr vaddr elf—ppnt—>p—offset) ; k = elf—ppnt—>p—vaddr ; (k く start—code) start (start—data く k) start_ elf—ppnt->p—vaddr + elf—ppnt->p-filesz; (k > elf_bss) if k if if 変数 elf-bss elf-brk start-code end -code st art -d ata end-data 0804F36CH 0 8 04 F 5 5 4 H 0 8 04 8 0 0 0 H 0804DE8FH 0804EEAOH 0804F36CH code data=k; 0697 : 0702 : 0703 : 0704 : if elf_bss = k; if ( (elf—ppnt—>p—flags & PF_X) UNIX MAGAZINE 2003.5 (elf_interpreter) { entry = load—elf—interp ( &interp—elf—ex , interpreter , &interp—load—addr) ; 163 elf_

4. UNIX MAGAZINE 2003年5月号

連載 / IPv6 の実装ー① のを検索します。さきはど述べたように、 SAD 工ントリ の検索に始点アドレスは必要ありません。 key-allocsa( の引数で始点アドレスを渡しているのは、旧いコードの名 残です。 56 57 58 59 60 } ; u_int16_t u_int32_t u_int32_t ( 罠 & 正データ ) ah reserve ; ah—spi; ah-seq; 743 744 749 750 if (sav—>state ! = SADB-SASTATE-MATURE & & sav->state ! = SADB-SASTATE—DYING) { got0 fail; 743 ~ 750 行目は SAD 工ントリの状態確認です。状 態には LARVAL ( 鍵交換処理中 ) 、 MATURE ( 有効 ) 、 DYING ( 推奨有測限切れ ) 、 DEAD ( 有効祺月限切れ ) の 4 不頁があります。有効な SAD 工ントリとして利用でき るのは MATURE 状態と DYING 状態だけなので、そ れ以外の場合は 749 行目でバケットを破棄します。 752 753 758 759 algo = ah—algorithm—lookup (sav¯>alg—auth) ; goto fail; if (!algo) { 認証データの長さはアルゴリズムによって異なります。 各アルゴリズムで必要な認証データの長さは、アルゴリズ ムごとに定義されている sumsiz() 関数て取得できます。 この値が 761 行目で siz にオ巒内されます。 sizl には、認 証ヘッダのアラインメントを考慮し、 4 オクテット境界に 合わせた場合の認証データの長さかオ翻タされます。 (sav—>flags & SADB-X—EXT—OLD) ? 770 sizoff 0 : 4 ; SADB-X-EXT-OLD フラグは、 RFC1826 で定義さ れた旧い形式の認証ヘッダを利用する場合に設定されま す。旧い認証ヘッダには 4 オクテットの通し番号 (ah- seq) が存在しないため、認証ヘッダ全体の長さが 4 オク テットぶん短くなります。上で引用しているのは、 RFC 2402 て規定された新しい形式の認証ヘッタてす。 if (sizl く siz) { 239 752 ~ 759 行目は、認証ヘッダの認証データ引算に利用 されたアルゴリズムの検索です。認証データの計算に利用 するアルゴリズムの不転頁は、 SAD 工ントリの alg-auth に数値でオ褓内されています。 ah-algorithm-lookup() は alg-auth の値をもとに、 ah-algorithm 構造体へのポイ ンタを返します。 ah-algorithm 構造体は認証データの計 算に必要な定数や関数の集合体です。 alg-auth で指定さ れた数値に対応するアルゴリズムがみつからなかった場合 は、 758 行目でバケットを破棄します。 ヘッダの整合性の確認 SAD 工ントリの検索が成功し、利用するアルゴリズム か判明したら、認証ヘッダの整合性を石忍します。 (*algo—>sumsiz) (sav) ; 761 SIZ SiZI 762 761 ~ 762 行目では認証データの長さを算出していま す。以下に認証ヘッダの形式を示します。 siz と sizl に は、、認証データ " の部分の長さが設定されます。 53 struct newah { ah. h 245 goto fail; 246 } アルゴリズムで規定された認証データの長さ (siz) より もバケットの構築に必要な長さ (sizl) が小さい場合には、 バケットを破棄します。通常、この条件は siz の値がオー バーフローしないかぎり成立しません。 784 if ( (ah—>ah—len くく 2 ) sizoff ! = sizl) { 790 791 } goto fail; 784 ~ 791 行目は認証ヘッダ全体の長さの石忍です 号刃 0 川じ、 証ヘッダ全体の長さは ah-len にオ内されています。 ah- len は 4 オクテット単位で、認証ヘッダの : 頁 8 オクテッ トを含みませんから、 ah 」 e11 を 4 倍した値が sizl に等し くなります。ただし、旧い形式を使っている場合は、 ah- seq の長さ ( 770 行目の sizoff) を差し引いて上交しなけ 川まなりません。 54 55 68 u_int8 u_int8_t ah ah_len nxt ; 792 796 797 if (sizl > sizeof(cksum)) { goto fail; UNIX MAGAZINE 2003.5

5. UNIX MAGAZINE 2003年5月号

MAThEMATiCAl SYSTEMS C. 0 JavalCÆ G Ⅷ版か登場 統計・データ解析と データマイニングのための標準ソフト S - PLUS は世界中で実績と定評のある本格的なデ ータ解析ソフトウェアです 豊富な解析機能、柔軟なデータ加工機能、高品質 なグラフ機能は、研究開発やビジネスデータの解析 のあらゆるフェーズをサホートします ウインドウ住 ) オプシ ファイ材り表和当輦ー「グイオゴションり ? インドウ ( ルオ 宿本崖物 S 0 ′物 phW ⅲ 00 1 ーー - ーい Comm ・をⅧ 強出力と物本 ・ F しリミ C•y 工ユ 0 を ー ! : 叩 y 工ま一にしリ ・エーま 0 れ 0.0. 4 を・ ロバスト MM ー 倉第第モデ駅野 い ロバストし T 引 一般化最小ニ梁モデル ( リ ステッゴワイズま但 ). 生時析ー 一般化加まそデ材 G AM)(A).„ 砂モデ材 第 9. モデルの設ー 2 . 第線物当 クラスタ分析ー当 一般化線第モデル ( GLM)(E) ~. 多を解析 ( 判 対を輦 Po編・0れⅡ@) ・ チャー り ロジスティック ( ・ 物本いらのサンゴリング ( 印、 ビットモ〒ル ( り・・ 時第第解析 ト ! COXP• 川い載酊 1 : ー・ーー 2. ア第一めれの駅、物 00 巴 RO ・・・れ M 地・一、 ・ 0 F m 動物 A 、 0 / ・ 4000 以上の高度で最新のデータ解析機能 ( 基本演算、行列演算、多変量解 析、クラスター分析、回帰分析、時系列解析、シミュレーション、信号処理、 検定、 OR 、デシジョンツリーニューラル他 ) 豊富で高品質なグラフィックス機能、カスタマイスも自在 な Java による GIJ での簡便な操作性 特 ・オプジェクト指向の S 言語によるプログラミング機能 ・豊富なインターフェース、 Java クラスライブラリとして利用可 ・トレーニングコース、コンサルティングを含めた強力なサホート ・特定分野オプション ( 数理計画法、 Wavelet 、 GARCH 、空間統計他 ) , S tat データ解析 / マイニング用 WEB サーバ構築ソフト 誰でも、どこからも、プラウザから簡便に利用できる解析 系 WEB サーバを構築できます。作りおきでない、リアルタ イムのデータを利用した高品質なグラフィックスを通して、 他と違った魅力的な WEB サービスが提供できます。 Java アプレットグラフの自動生成機能により、マウスクリックに 反応する動的な WEB ページを高い生産性で提供します。 (UNlX/Linux/Windows Se 「 ve 「に対応 ) , 面 0 飛 : øe 面いれい ad 朝一 A しし》 電 0 朝 ! ℃ ` 50 ・一池 0 謝め 0 ( 地 ) オ図 S 0 「物 0 れ Wir 0 物第 待のハ、 W 新は 0 ・ 3 Online Docum ・ ntati 6 、登場です。 3 わ : / / ⅣⅣⅣ - ms 00 p / s ー us / ツ戸 0 日、 - を〒 1 をこみり響 : ・ - ル、 4 響 都道府県別各種データの時系列推移の表示 ′ツし , ト上のメニ . ー物まー、ルプョ・タンをケ第 , クすると・までをます . ~ 0 第第の人口 主要 UNIX (S0后「 is,HP,AlX,SGl,True64) 、 Linux 、 Windows (NT,2000,ME,XP) ※ S-PLUS は lnsightful Co 「 p. が開発しライセンスしています。 ※会社名および商品名は各社の商標または登録商標です。 ※詳しい商品情報は http://www.msi.co.jp/splus/ にて S - PLLJS 無料紹介セミナー定期実施中 当社新宿セミナールームにて一人一台のパソコンを用いて s - PLUS & StatSe Ⅳ er をご説明さしあげています。お気軽にお申し込み下さい。 S-PLUS と StatServer のお問合せ先 【対応 OS 】 株式会社数理シス - 、 S-PLUS グループ 〒 160 新宿区新宿 2-4-3 フォーシーズンビル IOF TEL. 03-3358-6681 FAX. 03-3358-1727 e-mail: splus-info@msi. CO. jp (URL)http://www.msi. CO. jp/splus/ お問合せ : 平日 10 : 00-17 : 00 (FAX 、 e - ma ⅱは 24 時間随時 )

6. UNIX MAGAZINE 2003年5月号

VMware Workstation 3. ユ 図 8 1 2 3 表 1 5 4 3 BJ-F850 用フィルタ・スクリプト # ! /bin/sh PATH="/bin : /usr/bin" ・ export PATH gs ¯q -dSAFER —dNOPAUSE -dBATCH -sDEVICE=bj C800 gs に含まれるおもなプリンタドライバ exit 0 —sOutputFi1e= Ⅱ exit 2 —sPAPERSIZE=a4 ー r300 \ gs では、適切なドライバを使って PS ファイルを変換 ドライバ名 bjC* stcolor cdj * プリンタび キヤノン BJC シリーズ 工フソン MachJet シリーズ エプソン Stylus シリーズ HP DeskJet シリーズ 今回は、手許にあったキヤノンのインクジェット・フ リンタ ( 非 PS プリンタ ) BJ-F850 を例に説明します。 表 1 に挙げたドライバは、同じシリーズのプリンタに共 通の機能を使うように作られているので、型番がすこし異 なってもたいていは適用できるでしよう。もっとも、個々 のプリンタの最高性能か得られるようには作られていない ともいえるので、たとえは、自分の持っているインクジェ ット・フリンタに、、写真画質 " で印刷したい場合などは、フ ァイルをホスト OS の Windows アプリケーションで開 いてから印刷したほうがいいかもしれません。 以下では、ネットワーク対応の非 PS プリンタを使う ための設定を紹介します。したがって、プリンタサー 4 を使ってオフィスなどの LAN に直孑妾続されている と仮定します。ただし、 こで説明する gs を用いたファ イル形式の変換な去は、あとて紹介するホスト OS のプリ ンタを利用する場合も同様に適用できます。 gs を用いたフィルタ・スクリプトの作成 印刷データのファイル形式を変換するには、フィルタ・ スクリプトを作成し、それを /etc/printcap の if パラメ ータの値として指定します。 lpd デーモンは、印刷処理を おこなうとき、フィルタ・スクリプトの標準入力に印刷 データを渡し、標準出力から変換結果のデータを受け取っ てプリンタに送信します。したがって、フィルタ・スクリ プトは、標準入力からデータ ()S ファイル ) を受け取っ て gs に渡し、 gs の変換結果を標準出力に出力するように 作成すればよいことになります。 4 Ethernet のポートをもつ装置で、プリンタのパラレルポートなどに接 UNIX MAGAZINE 2003.5 続して利用します。 します。今回使用する BJ-F850 の場合は、、、 bjc800 " と いうドライバカリ用できます。これを使って作成したフィ ルタ・スクリプトは、たとえは図 8 のようになります。 図 8 の 3 ~ 4 行目で、 gs を使って PS ファイルを変換し ています ( オプションの数が多いので、 3 行目の行末に逆 スラッシュを付けて 4 行目に続けて言当しています ) 。 gs にはたくさんのコマンド行オプションがありますが、図 8 て指定しているオプションは、それぞれ以下のような意味 をもっています。 gs 起重加のメッセージを表示しないようにします。 ・—dBATCH おこないます。 ページの区切りでプロンプトを表示せず、一気に処理を —dNOPAUSE 入力ファイルを読出し専用で開きます。 —dSAFER 107 ・一 r れ社 7 〃 ンを指定していますが、これは標準入力からデータを読み を指定します。図 8 のスクリプトでは、この部分にハイフ 通常、 gs コマンドの最後の引数には PS ファイルの名前 力に出力します。 す。ファイル名として一を指定した場合は、標準出 変換結果の出力先となるファイル名を川 e で指定しま —sOutputFile=file れ社 m て指定します。 ファイル形式を変換したあとのデータの解像度 ( dpi ) を 印刷する用紙サイズを四 7 、て指定します。 —sPAPERSIZE=papet 、 変換に使うドライバの名前をて指定します。 ・—sDEVICE= dev になることなく gs を終了します。 変換処理カ了したら、プロンプトを表示して待ち状態

7. UNIX MAGAZINE 2003年5月号

tsort コマンドにはオフションがいくつか用意されてお り、いすれも依存関係の循環を検出したときの重川乍を制御 するためのものです。ー 1 は、依存関係の循環を発見したと きに、それらの循環のなかから最長のものをみつけるため のオプションです。 -d は、循環が発生した原因をより詳 しく表示し、循環を解消する丁掛かりを提供します。 最後の一 q は、上記の 2 つのオフションとは考え方が異 なります。これは、循環があってもそれをエラーとして扱 わすに処理を続けるためのオプションです。 こで、 tsort コマンドの生い立ちを紹介しておきまし よう。もともと、 tsort はライプラリに登録するファイル の順番を決めるために使われるコマンドでした。ライプラ リへの追加はファイル単位でおこなわれます。このとき、 ファイルに含まれる複数の関数はまとめて追加することに なります。あるライプラリ関数をプログラムのなかて利用 すると、その関数が含まれるファイルがライプラリ・ファ イルから取り出され、プログラムのリンク時に結合されま す。ここで問題となるのは、プログラムで用いられるライ プラリ関数自身が、別のライプラリ関数を利用することが ある点です。 このような場合には、間接的に利用されるライプラリ関 数もリンク時に結合する必要があります。これらの関数か 同じライプラリに登録されているとき、間接的に利用する ライプラリ関数のはうか現在処理している場所より後ろに オ内されていれは、ライプラリを一度処理するだけで必要 な関数をすべて結合することができます。しかし、現在処 理している場所よりも前にオ内されていると、もう一度ラ イプラリ全体を処理しなけれは結合できません。 プログラムが printf 関数を利用する場合を考えてみま しよう。 printf 関数は、内部で write 関数を呼び出して います。 libc ライプラリに printf 、 write の順にオ内され ている場合、プログラム側で printf 関数が必要なときに libc ライプラリを前から順番に処理していってそれを結合 します。この段階で write 関数も必要なことが分かります が、そのまま libc ライプラリの処理を進めていけばこれ も結合できます。 一方、 write 、 printf の順に登録されている場合はどう でしよう。 libc ライプラリを処理していき、 printf 関数を 結合するところまでは同じです。しかし、 write 関数が必 要なことが分かった段階で、 libc ファイルの write 関数 114 か登録されている場所はすでに処理を終えているため、 のまま libc ファイルの末尾まて処理しても write 関数を 結合することはできません。けっきよく、もう一度 libc ライプラリを : 麪頁から処理しなおさなければなりません。 このような条件下で、できるかぎり 1 回の処理でリン ク作業を終らせるには、ライプラリ関数間の依存関係を抽 出し、その関係がイ尉寺される順番でライプラリに登録すれ ばよいでしよう。この順番を引算するために作られたのが tsort 関数です。 現在はライプラリ内にインデックスが作成されている ので、後ろに登録された関数から前に登録されている関数 を呼び出せないといった制限はありません。したがって、 tsort 関数は当初の彳難リを終えたわけですが、コマンド自 体は残り、オプションも当時の名残をとどめています。 -q オフションが作られたのは、ライプラリを構築する 際にやむをえす循環か生じるような場合に、いちいち工ラ ーか報告されるのを避けるためでしよう。このオプション を指定すると、ライプラリに登録するファイルの順番を決 める際に循環カ吽しても、エラーメッセージを表示しない ようになります。 tsort コマンドでのテータベースの利用 tsort コマンドでは、入力として・与えられたグラフの情 報をイ寺しておかなけれは、、出力を引算することができま せん。 tsort コマンドは、このグラフの情報を一尉寺するた めにデータベースを利用しています。 データベースを検索するときのキーになるのは、ノード の名前です。データベース検索の結果として得られるデー タ構造には、ノードに必要帯に ( たとえば、そのノード から出ているアークの一覧など ) か含まれています。 こて利用しているデータ構造は、もちろん構造体の形 式で定義されています。しかも、あるノードから出るアー クの数はあらかしめ決定できないため、データ構造として はポインタ寺し、その先に複数のアークを登録できる ようにしています。また、データ構造のなかにはノードの 名前も含まれますが、これも長さによって実際に占める領 域のサイズが変わります。 こで扱うデータ構造は可変長のデータであ つまり、 り、固定長のデータを登録するデータベースには向いてい UNIX MAGAZINE 2003.5

8. UNIX MAGAZINE 2003年5月号

VMware Workstation 3 ユ 3 、ツシ・ヨンの変更 図 1 スプール・ティレクトリの所有者とパーご [root@valhalla lpd] # ls —ld dp 2 root drwxr—xr—x て 00t [root@valhalla lpd] # chown 1p.1p dp [ root@valれa11a lpd] # chmod 700 dp [root@valhalla lpd] # ls -ld dp lp 2 lp drwx ー croot@valhalla lpd] # 目 4096 4096 3 月 18 18 : 56 dp 3 月 18 18 : 56 dp 図 2 ロクファイルの所有者とパーミッションの変更 [root@valhalla lpd] # chown lp ・ lp /var/log/lpd-errs [root@valhalla lpd] # touch /var/log/lpd-errs が dp で、 rm と sd の 2 つのパラメータにこれと同じ名 たとえは、ネットワーク対応の PS プリンタのホスト名 的に変換されてプリンタに送信されます。 して指定すると、 lpr コマンドの実行時にデータが自動 す。変換フログラム ( またはスクリプト ) をフィルタと リンタ独自のデータ形式に変換する作業が必喫になりま に、出力先のプリンタによっては、 PS ファイルをフ ログラムを糸色寸パスて指定します。さきほど述べたよう 必要であれは、、、 if = " の後ろにフィルタと呼はれるプ ・ if ( フィルタ・フログラム ) は、この sh を指定します ( 値はなし ) 。 [root@valhalla lpd] # ロ [root@valhalla lpd] # chmod 600 /var/log/lpd—errs スプール・ティレクトリの作成 のように記述します。 : mx#0 : lf=/var/log/lpd—errs : : sd=/var/spool/lpd/dp: \ : rm=dp : rp=raw : \ dp : Fuj iXerox DocuPrint : \ 前を指定する場合は、 104 サー ( およびグループ ) の権限で動きます。したがって、 Red Hat Linux では、 lpr コマンドは、、 lp" というユー [root@valhalla lpd] # ロ [root@valhalla lpd] # mkdir dp [root@valhalla て 00t ] # cd /var/spool/lpd 前のディレクトリを作ります。 すでに用意されているので、その下にプリンタ名と同し名 Linux の場合は、 /var/spool/lpd というディレクトリが 定したスプール・ディレクトリを作成します。 Red Hat /etc/printcap の成疋カ絲冬ったら、 sd パラメータで指 作成したディレクトリの所有者とグループをそれぞれ lp にしておく必要があります。さらに、そのディレクトリの ミッションか所有者にのみ読み書きおよひ実行を許す ノ、 ように設定されていないと、 lpd デーモンを起動 ( 彳あ したときに警告メッセージか表示されます。そこで、図 1 のようにして所有者とパーこッションを変更します。 なお、 /etc/printcap の If パラメータで指定したログ ファイルがないときは、これもあわせて作成しておきまし Red Hat Linux では、ログファイルの所有者とグルー プはスフ。ール・ディレクトリと同様に lp でなければなり UNIX MAGAZINE 2003.5 交通整理をしているようなものです。 をプリンタに送信します。いってみれは、 lpd はジョブの プログラムで、 /etc/printcap の成疋に従って印刷データ lpd は印刷待ちのジョブを逐次処理するためのデーモン・ 番号 " か割り当てられて印刷待ちの状態になります。一方、 リに置かれたデータはジョブと呼ばオ L 、それぞれ、、ジョブ ところまでです。 lpr の 1 回の実行でスプール・ディレクト されたプリンタに対応するスプール・ディレクトリに置く lpr の仕事は、指定された印刷データ ( ファイル ) を指定 ドとの関係を簡単に説明しておきましよう。 この lpd デーモンと、ユーザーが実行する lpr コマン lpd を再起動します。 成カ鮗ったら、印刷処理をおこなうデーモン・フログラム /etc/printcap の設疋とスプール・ディレクトリの作 lpd デーモンの再起動 みと設定しておきます ( 図 2 ) 。 ません。また、ファイルの読み書きができるのは戸 ) 祐、者の

9. UNIX MAGAZINE 2003年5月号

連載 / Linux のフートプロセスをみる一① 図 10 swapper プロセスから clone を呼び出して init プロセスを生成 elf—prot elf—prot カーネ丿レ スタック領域 プロセス デスクリプタ fs files Slg swapper プロセス コピー mm struct メモリ・デスクリプタ ページテーブル fs struct ルート・ディレクトリ カレント・ティレクトリ files struct オープンされている ファイル signal_struct シグナルハンドラ ライン引数と竟変数を新たに確保したページフレームに コピーし、それらのページを bprm の配列 page にオ内 しました。 612 行目の setup-arg-pages() は、ページテーフフレの 工ントリを登録し、それらのページをユーサーアドレス 空間 (BFFEOOOOH—BFFFFFFFH) にマップします。 同時に、 bprm->p の値も仮想アドレスに変換されます。 カーネル スタック領域 プロセス デスクリプタ fs files Slg init プロセス つまり、表 2 の 3 番目がテキスト・セグメント、 4 番目 ており、その他のタイプのセグメントは読み飛ばします。 形式では PT-LOAD ( 再配置可能 ) セグメントに含まれ ⅲ it プログラムのテキストとデータセグメントは、 ELF トとデータをメモリに mmap する処理をおこないます。 イルのプログラムヘッダを順にアクセスし、 init のテキス がデータセグメントです。 0620 : 0621 : 0622 : 0623 : 0624 : 0625 : for(i 0 , elf-ppnt elf-phdata i く elf—ex. e—phnum i + + , elf—ppnt + + ) { 0 , elf—flags ; int elf-prot unsigned long vaddr ; if (elf—ppnt—>p—type ! = PT—LOAD) continue ; ・ファ 0643 : 0644 : 0645 : 0646 : 0647 : 0648 : if if if (elf—ppnt¯>p—flags & PF—R) PROT READ ; (e1f—PPnt¯>p—f1ags & PF—W) = PROT_WRITE ; (elf—ppnt->p—flags & PF—X) PROT_EXEC ; elf —prot 620 行目から始まる for ループでは、プログラム 162 elf—flags = MAP—PRIVATE ー UNIX MAGAZINE 2003.5 MAP _DENYWRI TE ー MAP_EXECUTABLE ;

10. UNIX MAGAZINE 2003年5月号

VMware Workstation 3 ユ : 3 ネットワークに直接接続されているプリンタや、プリ ンタカ鮟続されているプリンタサーバーにネットワーク rp = " の直後にそのプリンタに 経山で出力する場合、 出力する際のポート名を指定します。たいていはデフォ ルト値の lp で間題はないと思いますが、正しいポート 名を指定しないと印刷を受け付けないプリンタもあるの で、かならすプリンタのマニュアルなどをよく読みま しよう。 ・ sd ( スプール・ディレクトリ ) 、、 sd = " の直後に、印刷データを一印判勺に溜めるディレ クトリ ( スプール・ディレクトリ ) を絶対パスで指定し ます。デフォルト値は /var/spool/lpd ですが、プリ ンタごとに分けて、、 /var/spool/lpd/ フリンタ名 " と するといいでしよう。 lpr —Pdp file . ps ・ lp ( フリンタカ続されているホートのテパイス名 ) のように、 -P オフションに続けてフリンタ名を指定して 使っている PC にプリンタか、直接接続されている場合、 複数のプリンタを使い分けることができます。また、竟 、、 lp = " に続けてプリンタか接続されているポートのデ 変数 PRINTER にプリンタ名を設定しておくと、 -P オ バイス名を指定します。たとえは、 Red Hat Linux フションによる指定を省略した場合、そのフリンタに出力 でパラレルポートに接続されたフリンタを指定する場 されます 1 。 合は、 フリンタ名の後ろには、複数の別名をコロンで区切って 1p=/dev/1pO 当することができます。たとえは、プリンタのイ重か富 のように言当します。デフォルト値は /dev/lp です。 士ゼロックスの DocuPrint であれば、 ・ If ( ログファイル ) コ f = " の直後に、 lpr コマンドで印刷する際のエラーな dp:FujiXerox DocuPrint : R105 ・・ どを記録するファイル ( ログファイル ) を指定します。 と記述す川まいいでしよう。このように、メーカー名や機 通常は /var/log/lpd-errs といった名前のファイルを 種名、設置されている部屋番号などを別名として登録して 作成し、これに言当求を残すようにしておくといいでしょ おけは、あとで見るときも分かりやすいでしよう。 う。デフォルト値は /dev/console で、コンソールに メッセージを出力します。 フリンタ名以降に当できるパラメータはたくさんあり ・ mx ( 印刷データサイズの上限 ますが、以下では今回使うものを中心に説明します。 、、 mx # " の直後に、印刷データのサイズの上限値を ( 多 ・ rm ( フリンタやフリンタサーバーのホスト名 ) くの場合は ) KB 単位で指定します。デフォルト値は ネットワークに直接接続されているプリンタや、プリ 1000 となっていて、 IMB 以のファイルは印刷でき ンタか接続されているフリンタサーバーにネットワーク ない設定になっています。値を 0 ( ゼロ ) にすると、、無 rm = " の直後にフリンタやプリ 経山で出力する場合、 制限 " と解釈されるので、これを指定しておくのが無隹 ンタサーバーのホスト名 ( または IP アドレス ) を指定 です。 します。省略したときの値 ( デフォルト値 ) は空になり ・ sh ( ノサー出力の禁止 ) ます。 プリンタによっては、実際のデータを印刷する前に ・ rp ( プリンタやプリンタサーバーのポート名 ) ナー " と呼ばれるべージ ( 一種のタイトルページ ) を出 力するものがあります。これを出力させたくない場合 1 Windows ていえは、、、通常使うプリンタ " に相当します。 プリンタ名 : パラメータ : ・ : ノ、ラメータ : 基本的には、 1 つのフリンタに関する設定パラメータを ( コロン ) で区切って 1 行に記述していきます。ただ し、パラメータの数が多いと行カ張くなって見づらくなる ので、適当なところに \ ( 逆スラッシュ ) を挿入し、設 定を次の行に続けることができます。なお、 UNIX の多 くの設定ファイルと同様、、、 # " て始まる行はコメントと みなされます。 成疋の最初に指定する、、プリンタ名 " は、複数のプリン タを識別するために使います。これは、 dp や bj など、自 分にとって分かりやすい文字列にす川まいいでしよう。 lpr コマンドを使って印刷するときは、 1 三ロ 103 UNIX MAGAZINE 2003.5