Linux Gazette 7月号
今月のLinux Gazette の内容
n今月のニュース
nLinux用ジャーナリングファイルシステム
n Linux Kernelのコンパイルとインストール
nブラザー・インターネット・プリント・プロトコル
nフィールドの開放:PostgreSQL の複数バージョン同時制御(MVCC)
nRPMの使用:基本(パートI)
n良いパスワードの選択
nPCからXターミナルを作る
 

 

 
今月のニュース
▼▼▼ディストリビューション関連ニュース▼▼▼
SuSE
SuSE Linux 7.2 が7月15日から入手出来る。詳細は SuSE products page

追加ニュースとして、SuSE は、SuSE Linux が Oracle9i データベースとして公認されたことを発表 announced した。

▼▼▼その他のニュース▼▼▼
これからのコンファレンスと行事
 企業 Linux 設立コンファレンス
     2001年7月3-5日、ロンドン http://www.elxi.co.uk/
 Linuxエキスポ展示会
     2001年7月4-5日、ロンドン http://www.linuxexpo.co.uk/
  夏季インターネット・ワールド
     2001年7月10-12日、シカゴ http://www.internetworld.com/
  O'Reilly Open Source Convention
     2001年7月23-27日、サンディエゴ.CA. http://conferences.oreilly.com/
 第10回 USENIX セキュリティ・シンポジウム
     2001年8月13-17日、ワシントンD.C. http://www.usenix.org/events/sec01/
 HunTEC 技術Expo & コンファレンス
     2001年8月17-18日、アラバマ州、ハンツビル
     ハンツビルIEEE 協賛     URL 未定
 コンピュータフェスト
     2001年8月25-26,日、オハイオ州デイトン  http://www.computerfest.com/
 LinuxWorld コンファレンス & Expo
     2001年8月27-30日、サンフランシスコ  http://www.linuxworldexpo.com/
 Red Hat テクニカルワールド・ブラッセル
     2001年9月17-18日、ブラッセル  http://www.europe.redhat.com/techworld
 O'Reilly Peer-to-Peer コンファレンス
   2001年9月17-20日、ワシントンDC http://conferences.oreilly.com/p2p/call_fall.html
 Linux LunacyLinux Journal and Geek Cruises共催
     2001年10月 21-28日、東カリビアン http://www.geekcruises.com/
                Send a Friend LJ and Enter to Win a Cruise!
 LinuxWorld コンファレンス & Expo
     2001年10月30-11月1日、独、フランクフルト http://www.linuxworldexpo.de/
 第5回年次 Linux ショーケース & コンファレンス
     2001年11月6-10日、オークランド,CA、 http://www.linuxshowcase.org/
  狭義e-ビジネス ソリューション Expo
     2001年10月7-8日、ヒューストン  http://www.strictlyebusinessexpo.com/
  LINUX ビジネスExpo COMDEXと同時開催
     2001年11月12-16日、ラスベガス http://www.linuxbusinessexpo.com/
  第15回th システム管理コンファレンス /LISA 2001
    2001年12月2-7日、サンディエゴ、CA http://www.usenix.org/events/lisa2001/
 
Kernelコンフィギュレーションを楽しもう

Linux Gazetteのモットー「Linuxを楽しもう」信奉者への贈り物として、Eric RaymondがLinux kernelコンフィギュレーションシステムに新らしいインターフェイスを加えた。Zorkを思い出すアドベンチャ・ゲームだ。



ようこそ CML2 アドベンチャ、バージョン1.6.1.へ


曲がりくねった Linux kernel オプションの迷路にいる




メニューは全部違う。




 




丸天井の部屋、「Linux Kernel configyuration system!」




の看板がある。あらゆる方向から初める







丸天井の部屋。`Processor type' の看板。道は上向き







 プロセッサ・アーキテクチャを選ぶ


真鍮のランプがある.


この部屋の壁にボタンの列がある.


それぞれ:


X86, ALPHA, SPARC32, SPARC64, MIPS32, MIPS64, PPC, 


M68K, ARM, SUPERH, IA64, PARISC, S390, S390X, CRIS


と書いてある。 X86のボタンを押す .


Linux Weekly Newsのサービス。.Ericの元々の e-メイルはここ here.

 
Tridia

Tridia Corporation には、そのオープンソース・リモートアクセス・ハイブリッドをSymantecと戦わせるとの野心的マーケティング計画がある。 Tridia Corporationのオープンソース・ハイブリッドの利点を紹介する戦略的キャンペーンの始まりである。色々なプラットホームのうち、TridiaVNCはLinux上で働き、特に混合OS環境ではLinux用の有用なeサポートである。発表はcontestにリンクした無料TridiaVNC (バーチャル・ネットワーク計算) ダウンロード・プログラムから始まる計画である。TridiaVNC eコンテストは2001年5月23日から11月23日までの180日である。

 

生命科学におけるLinux

IBM は、生命科学 life sciences会社が包括的環境生物学研究から生じる膨大なデータの管理共有過程の、Linuxベース統合技術を使用した高速化を狙っている。
5月29日、IBMとベルギーの生物化学会社 Devgenは、薬剤開発加速のためIBM 技術とLinuxソリューションを展開する協定を発表した。 Devgenの情報科学システムには、IBM e-サーバーxシリーズ20台とpシリーズ2台からなるLinuxのスーパークラスタが含まれる。この高性能システムが微小回虫(C. elegans)で遺伝子研究をおこない有効薬剤と活性化合物を識別する。この回虫の研究によりDevgan研究者は、細胞の化学作用を刺激して病気を起こすゲン相互作用を理解し医薬又は治療法の研究対象を狭めることが出来る。
Linuxは、タンパク質相互作用の解明を含む各種生命科学研究解決の重要要素である。タンパク質機能は今日の研究社会において最もコンピュータに適した問題である。百万以上のタンパク質の相互作用解読にはその1,000乗以上の計算を必要とし、その100倍以上のデータを発生する。タンパク質のフォールド−タンパク質がその生物機能を発揮するため色々な形状にフォールドする方法−を理解するには、小型タンパク質であってもフォールド過程に計算に現在の最強コンピュータで300年を要する。薬剤発見と開発には更に5億ドルの費用と15年以上の年月を要する。Linuxのような新情報技術がこれら費用と年月を小さくする主要要因となるだろう。
 
Linux NetworX が AMD のマルチプロセッサ・アーキテクチャ支援を発表

Linux NetworX は, Evolocity クラスタシステムを通じて、新AMD Athlon MPプロセッサ及びAMD-760 MP多重処理チップセットをサポートすると発表した。Evolocityは、コンピューテーショナル・ハードウエアにClusterWorXと言うLinux NetworXクラスタ管理ソフトウエアを組み込んだクラスタ・ソリューションである。

 

GNU-Linuxfest

バージニアのGalaxは、2001年7月14日年の第三回Linuxfest を主催する。Linuxfestは従来からLinuxを祝ってきた。今年のLinuxfestでは催し物、食事及び、衛星インターネット、新 Mandrake OS のほかKDE, Gnome, Afterstep, Quick Cams やオーディオ記録を含むLinux関連デモがある。今年のLinuxfestはGalaxのGrayson街で挙行される。初めての路上祭だ。参加希望者は http://www.gnu-linuxfest.com/.で登録を。
 
Freenet
Linux Journalにはfreenetに関する記事 article がある。 Freenet FAQには追加情報がある。Freenetは情報共有のための(Webのような)ネットワーク・アプリケーションだが、(UsenetやGnutellaの様な)中央サーバーを使わない。Freenet上では政府や自由討論の嫌いな人が情報の在り処、それを送った人および要求した人を追跡出来ないのがポイントである。このアプリケーションは未だアルファ段階で、多くの特性が論争、研究されている。
 
書物「Linux 3Dグラフィック・プログラミング」発売中

書物 Linux 3D Graphics Programming が発売中。3Dの経験が少ない人に、Linuxで無料入手出来るリアルタイム3Dグラフィック・アプリケーションを用いるプログラミングの基本的理論と実技を理解させるのが目的。X Windowシステム、 OpenGL/Mesa、2D スクリーンアクセス及びラスター化、ハードウエアアクセラレーションなどが話題。Blenderを用いる3Dモデル作成法も講義。

 

UkLinux ISP 

uklinux.net は英国用の無料(登録料なし)Linux ISPである。サービスの特徴は:

・128kb/sまでの速度のモデモ、ISDN両ユーザーに無制限アクセス
・anything@username.uklinux.netの形の無制限e−メールアドレス
・www.username.uklinux.netに20MBの PHP 及びPerl 有効web スペース
・MySQL 又はPostgreSQL データベース施設
・ UK Linux User Groups, a Local Tucows LinuxBerg mirror, のローカルリスト、及び有名Linux Distributionsのローカル mirrors
Hot Shops - Linux用製品及びサービスの最良商業供給者のリスト
メール及びFTPアクセスのようなサービスは、英国地域料率で課金されるuklinuxダイアルインアクセス番号経由でインターネットにアクセスする際の条件次第。別のISP経由で自分のe−メイルにアクセス又はFTPのときはメンバーシップを更新する必要がある。

また、uklinux からの全利益はオープンソース/無料ソフトウエアの資金となる。

 
Linux Journal web記事
記事はLinux Journal web site;で入手出来る。マガジンにはない。(枠無しやグラフィック最低を望みなら no-frames site でも良い)
・"共有は素的だ" ユーザーとコンピュータとの間のファイルとプリントジョブの共有に関するヒント。Samba その他のサービスも含む。 Part 1. Part 2. Part 3. Part 4. Part 5. Part 6. Part 7. Part 8.
・"ネットワークの個人生活" ツイスト・ペアケーブルで出来ること。 Part 1. Part 2.
・"無料のウインドウ装飾"  GUIさまざま。 Part 1. Part 2. Part 3. Part 4.
"Open-Source Gaming for Linux" (Linux用オープンソースゲーム)
"Linux on the Desktop--an Impossible Dream?"(デスクトップLinux、不可能な夢)
"Why Open Content Matters" (オープンソース内容が問題になる理由)メディアを囲む著作権問題が複雑になるにつれ、将来オープンソースのようなオープンメディアはこの型の材料にアクセス出来る唯一の方法になるかも知れない。将来を見据え過去を振り返って三部に分けて論議する
"Book Review: Python Standard Library" (書評).
"Open Source Opens Doors for Developers" (オープンソースは開発者に道を開く) PostgreSQLとPHPの組合せは、各段階のビジネス情報収集と有益な利用方法を助ける強力な方法である。或る会社の物語を例に述べる。
"Sendmail Setup for Your Home Network"(ホームネットワークへのsendmail設定)
"Debian Package Management, Part 2: a Developer's Guide" (開発者のガイド)自分の.deb filesの作り方、'equivs' パケージを使ってDebianにローカル構築プログラムを通告する 方法。
 
Linux Links
The Duke of URL の投稿:
・ Progeny Debian Linux 1.0の review
Linux Distribution Round-Upは「どのディストリビューションが最良か?」との永遠の質問に答えると同時に、ディストリビューション比較の一般指針を示す試み。
・Linux Guide上のDVD
・XFree86 4.1.0 review
・Red Hat Linux 7.1 review
・Plextor PlexWriter 16/10/40A review
・Linux Buyer's Guide, version 11
・デスクトップとサーバーで多くの人が犯すLinuxの失敗の概観 look
・Duke はまた plagiarism.をもっと知って欲しいと思う

firstLinux.com にはLinuxチェスインターフェイスのreview がある

Free Software Is Good(無料ソフトが良い)と主張。

アジア文字とユニコードが不都合な理由 inadequate

data warehouse(データ倉庫)の中のLinuxフォークリフト

Microsoft (MS Word 形式)からの FUD 少々。 Linux Weekly News挨拶。ビルゲーツが「Linuxはパックマンのようだ」Linux is a like PacManと思っているとの報告Slashdot

最後に別のSlashdot物語。反響はここhere

 
▼▼▼ソフトウエア関連ニュース▼▼▼
Zシリーズ上のSAP とLinux

Macro 4 は、SAP保証出力管理ソリューションのための新S/390 eサーバー Zシリーズ上のLinuxに関するサポートを発表した。IBMプラットホーム上でSAPとLinuxを使ってMacro 4のソリューションを走らせると、ユーザーは、最新e−ビジネスメインフレーム技術のスペース、エネルギ及びコストの軽減の利益と、データベース・ネットワークへの出力アクセスを得ることが出来る。大型SAPの実施には、多数のSAPアプリケーション・サーバーを必要とするので、一度にSAPアプリケーション・インスタンスを150以上も働かせる大企業には一般的でない。組織は、SAPアプリケーション・サーバーを、各アプリケーションがLinuxアプリケーション・インスタンス上で働く1個のZシリーズボックスで置き換えて、そのITシステムを簡略化することが出来るが、まだこれらアプリケーション全部からの出力を管理しなければならない。UniQPrintはユーザーに、Linuxを働かせるIBM e-サーバーZシリーズからプリントするクロス−プラットホーム企業のため制御の単一点を与え、供給源から任意の相手先に対する文書発送を、プリントであれ、e−メールであれ、Webサイトであれ保証する。

 

Workstation Solutions が Linux ユーザー用新迅速復元データ保護ソフトウエアを発表

Workstation Solutions は、迅速復元バックアップ及び修復ソフトウエアに関するLinux及びWindowsプラットホームのサポートを発表した。サポート・プラットホームの拡張は、実行が高速、操作が簡単でWindows 2000, UNIX及びLinuxの包括的急速修復に及ぶ。当社はまた、性能、ファイヤウォール・サポートの拡張、DLTテープフォーマット制御、および主要ベンダーから新規に利用出来るテープ・ライブラリのサポートも発表した。

mnoGoSearchがサーチエンジン・バージョン3.1.14をリリース

mnoGoSearchのイントラネット及びWeb用無料オープンソース・サーチエンジンの新バージョン3.1.14がmnoGoSearch Webサイトから入手出来る。新バージョン詳細は ChangeLog.の文書の通り。mnoGoSearchはLinux及び他の*nix OS上で働く。

 
Micro Sharp Technology: Netule

Micro Sharp Technology,は、Netule Web Module I (WM-I)及びNetule eMail Module I (EM-I)のリリースを発表した。 EM-I とWM-I はLinuxに基づいている。Linuxは更新が容易で真のマルチタスク・ソリューションを提供する。 EM-Iは短時間で経済的にe-メールサーバーニーズに応える小型サーバー・ソリューションである。WM-I は、ユーザーのWebサーバー要求に応える。各モジュールにはプラグイン即使用に必要なハードウエアとソフトウエアが付いてくる。

 

その他のソフトウエア

デベロッパInternational Messaging AssociatesからのInternet Exchange Messaging Server (IEMS) 5が2001年7月12日にリリースされる。IEMS 5は、Linux Red Hat, Caldera, VA Linux, Turbo Linux Server, Suse, Mandrake ならびに Windows 98, Windows 2000, 及びWindows NTの上で働く。.


Aladdin Systemsは、大量ライセンス計画StuffIt OneSourceの新ライセンス参加者を発表した。StuffIt はMacintosh, Windows, Linux 及びSolaris Unixプラットホームをサポートする。StuffItにより、ユーザーは、 .zip, .sit, .rar, .tar, .gzipその他多くの好みのファイル型を選んで容易に管理することが出来る。


プロジェクト及び資源管理用ツール供給者Advanced Management Solutionsは、AMS RealtimeがLinuxの使用出来る最初で唯一のノンブラウザベース・プロジェクト管理ソフトウエアであると主張する。このソフトウエアは、Advanced Management SolutionsのソリューションAMS REALTIMEプロジェクトのLinuxポートである。LINUXユーザーは特別無料試験版を用いてLinux版を試験することが出来る。

 
Copyright © 2001, Michael Conry and the Editors of Linux Gazette.
Copying license http://www.linuxgazette.com/copying.html
Published in Issue 68 of Linux Gazette, July 2001
 

 

 
 
Linux用ジャーナリング・ファイルシステム

By Matteo Dell'Omodarme

はじめに
ファイルシステムは、ディスクドライブに記憶されたデータを組織及び管理するソフトウエアで、ディスクに書き込まれたデータが全くその通りで読取の際に提供される完全性を保証する。ファイル内容を記憶するだけでなく、ファイル及びファイルシステム自体についての情報(日付、所有主など)をも記憶する。これらはメタデータと呼ばれる。

ファイルシステムは、ハードディスクのボトルネックを避けるため、出来るだけ同期して働こうとするので、作業を突然中止するとデータがなくなることがある。

例えば、次の状況を考える:Linux標準est2ファイルシステム上にある文書で作業中にマシンが故障したらどうなるだろうか? 幾つかの答がある:

・ファイルをセーブした後にマシンが故障した:これは最良の状況で何も失わない。マシンを再起動して作業を続ければ良い。
・ファイルをセーブする前にマシンが故障した:変更は失うが、元の版は大丈夫。
・ファイル書込中にマシンが故障した:これは最悪の場合、ファイルの新版が旧版を上書き中なので、ファイルの一部は新しく一部は古い。ファイルがバイナリ形式で書き込まれていると、データの内部フォーマットがアプリケーションの予期するものと異なるので、再び開くことは出来ない。
この最後の場合で、ドライブが、ディレクトリ自体のような、メタデータ領域に書き込んでいると、事態はさらに悪くなる。ファイルではなくファイルシステムが壊れて、ディレクトリ全部又はディスクパーティション全体のデータを失う事がある。
標準Linuxファイルシステム(ext2fs)は、ブートアップの間に膨大なファイルシステム解析(fsck)をおこなってメタデータ破壊を予防し復元しようとする。ext2fsは重要メタデータの冗長コピイを組み込んでいるので、完全に失うことは殆どない。壊れたメタデータをシステムが推定して、冗長版から再生するか又はメタデータが影響を受けたファイルを単に検出する。
ファイルシステムの点検範囲が大きい程、点検に時間が掛かるのは当然だ。数ギガバイトのパーティションでは、ブートアップ中に膨大な時間を要する。
Linuxが扱うアプリケーションが複雑になり、サーバーが大きくなる一方、ダウンタイムの余裕が小さくなり始めているので、データとメタデータを保護してもっと良い仕事をするファイルシステムの需要がある。

Linuxに利用出来るjournalling filesystemsはこの要求に応える。

ジャーナリング・ファイルシステムとは?

ここではジャーナリングの一般的紹介のみをおこなう。詳しいノートはLinux Gazette 55のJuan I. Santos Floridoの記事を見られたい。他の情報はfreshmeat.net/articles/view/212/

殆どの近代ファイルシステムは、破壊修復にデータベースの世界から借用したジャーナリング技術を用いる。ディスク転送は、ファイルシステム内の最終位置に書き込まれる前に、journal 又はlogと呼ばれるディスク領域に逐次書き込まれる。

ここで、logに書き込まれるデータにより、実行方法は異なる。ファイルシステムのメタデータだけ書き込むこともあるし、すべての書込をジャーナルに記憶することもある。

ジャーナル登録実行前に破壊が起こると、原始データは未だディスク上にあるので、新規変更だけを失う。実際のディスク更新中(ジャーナル登録実行後)に破壊が起こると、ジャーナル登録は、起こった出来事を報告する。だから、システムを再ブートしたとき、単にジャーナル登録だけを返答して、中断した更新を完成する。

いずれの場合も、データもパーティションも無事である。また、logベースの方法の復元時間は遙かに短いので、システムは数秒間オンラインである。

ジャーナリング・ファイルシステムを使っても、ファイルシステム点検プログラム(fsck)は完全に陳腐化しないことに注意するのも重要である。ファイルシステムの無作為ブロックを壊すハードウェア及びソフトウエアエラーは一般的に転送logでは復元出来ない。

利用出来るジャーナリング・ファイルシステム

以下では、三つのジャーナリング・ファイルシステムを考察する。
最初のものはLinux kernel 開発者Stephen Tweedie博士の開発した ext3である。ext3はext2にジャーナリングを追加する。アルファ形式でftp.linux.org.uk/pub/linux/sct/fs/jfs/. から入手出来る。
Namesyaは開発中のReiserFSと言うジャーナリング・ファイルシステムを有する。これはhttp://www.namesys.com/.で入手出来る。
SGIは2001年5月1日にLinux用ファイルシステム XFS のバージョン1.0をリリースした。oss.sgi.com/projects/xfs/.から入手出来る。

この記事では、これら三つのソリューションを、二つのプログラムを使ってベンチマークした。

ext3の搭載

ext3の技術的事項は、Stephen Tweedie博士の論文 paper と彼の話talkを参照されたい。
ext3はその先祖ext2から直接派生した。ジャーナリング付きexte2そのものなので、完全にest2と互換性があるとの有益な特性を有する。欠点は、データ操作及びパッキングを高速化する最新実行法を何もしないことである。
ext3は2.2.19 kernelのパッチなので、先ずftp://ftp.kernel.org/pub/linux/kernel/v2.2/又はそのミラーmirrorsの一つからlinux-2.2.19 kernelを入手する。パッチは、ftp://ftp.linux.org.uk/pub/linux/sct/fs/jfs/ 又は ftp.kernel.org/pub/linux/kernel/people/sct/ext3のミラーから入手出来る。

これらのサイトの一つから次のファイルを入手する必要がある:

ext3-0.0.7a.tar.bz2:kernel パッチ
e2fsprogs-1.21-WIP-0601.tar.bz2:ext3サポートに合った e2fsprogs
Linux kernel linux-2.2.19.tar.bz2 及び ext3-0.0.7a.tar.bz2 ファイルを /usr/src ディレクトリにコピイして、それらをエキストラクトする:


mv linux linux-old


tar -Ixvf linux-2.2.19.tar.bz2


tar -Ixvf ext3-0.0.7a.tar.bz2


cd linux


cat ../ext3-0.0.7a/linux-2.2.19.kdb.diff | patch -sp1


cat ../ext3-0.0.7a/linux-2.2.19.ext3.diff | patch -sp1


最初のdiff はSGIの kdb kernel デバッガパッチである。二番目のものが、ext3 ファイルシステムである。
ここで、ファイルシステムセクションの "Enable Second extended fs development code"にYESと答えて、kernelをコンフィギュアして、ビルトする。
kernelがコンパイルされ搭載された後、e2fsprogsを作って搭載しなければならない:


tar -Ixvf e2fsprogs-1.21-WIP-0601.tar.bz2


cd e2fsprogs-1.21


./configure


make


make check


make install


これで終わりだ。次のステップは、パーティションにest3ファイルシステムを作ること。新kernelを使ってリブートする。ここで二つのオプションがある。新ジャーナリング・ファイルシステムを作るか既存のものをジャーナルするかだ。
・新ext3ジャーナリング・ファイルシステムの作成。搭載 e2fsprogsから mke2fsを使用するだけであって、mke2fsを走らせるとき、"-j"オプションを使う。


mke2fs -j /dev/xxx


ここで /dev/xxx は、ext3ファイルシステムを作るデバイスである。"-j" フラグは隠れext3ファイルシステムを作るmke2fsを隠れたjournalに告げる。オプションフラグ -Jsize=<n> (n はjorrnalのサイズMb)を使ってjournalのサイズを決める。
・既存ext2 ファイルシステムを ext3に更新する。 tune2fsを使うだけだ:


tune2fs -j /dev/xxx


搭載又は未搭載ファイルシステムのいずれかを使っておこなう必要がある。ファイルシステムが搭載されていれば、ファイル .journalがファイルシステムのトップディレクトリに作られ、未搭載なら隠されたシステムinodeがjournal用に使われる。こうしてファイルシステム内のデータが保護される。
次のコマンドを使って、このext3ファイルシステムを搭載することが出来る。


mount -t ext3 /dev/xxx /mount_dir


ext3はjournal付きext2なので、綺麗にアンマウントしたext3は別のコマンド無しでext2として再搭載することが出来る。
XFSの搭載
XFS の技術的概観は SGI linux XFS page 及び SGI publications page.を参照。
FAQ page.も見ること。

XFSはSGIから入手出来る。IRIX システムで全SGIカスタマ用に規定ファイルシステムとして使われる完成した技術である。XFSは、GPLの下でライセンスされる。

XFS Linux 1.0 はLinux 2.4 kernel用にリリースされたので、2.4.2パッチで試した。第一ステップはkernel.org又はミラーからのlinux-2.4.2 kernelの入手である。

パッチはoss.sgi.com/projects/xfs/download/Release-1.0/patches.にある。このデイレクトリから下記をダウンロードする:

linux-2.4-xfs-1.0.patch.gz
linux-2.4.2-core-xfs-1.0.patch.gz
linux-2.4.2-kdb-04112001.patch.gz
このLinux kernel linux-2.4.2.tar.bz2 を /usr/src ディレクトリにコピイする。古いLinuxディレクトリをlinux-oldと名前を変えて、新kernelを抽出する。


mv linux linux-old


tar -Ixf inux-2.4.2.tar.bz2


各パッチをlinuxソーストリーのトップディレクトリ(つまり /usr/src/linux)にコピイし、次をおこなう。


zcat patchfile.gz | patch -p1 


次いで、kernelをコンフィギュアして、ファイルシステム内の"XFS filesystem support" (CONFIG_XFS_FS) と"Page Buffer support" (CONFIG_PAGE_BUF)を働かせる。次のシステムユティリティをこれらのバージョン以降に更新する必要がある:
modutils-2.4.0
autoconf-2.13
e2fsprogs-devel-1.18
新 kernelを搭載してリブートする。
ここでxfs progs toolsをダウンロードする。このtarballは、XFSファイルシステムを使うためのコマンドの組、mkfs.xfsなどを含む。ビルトするには:


tar -zxf  xfsprogs-1.2.0.src.tar.gz


cd xfsprogs-1.2.0


make configure 


make 


make install


このコマンドの組を搭載した後、次のコマンドでXFSファイルシステムを作る。


mkfs -t xfs /dev/xxx


必要な重要オプションは "-f"で、そのパーティションにファイルシステムが既にあるとき新ファイルシステムを強制的に作る。ここでも現在そのパーティションにあるデータが破壊されることに注意。


mkfs -t xfs -f /dev/xxx


次いで、下記のコマンド新でファイルシステムを搭載する。


mount -t xfs /dev/xxx /mount_dir


ReiserFSの搭載
reiserFS の技術的覚え書きは NAMESYS home pageFAQ page.を参照。

ReiserFS は、2.4.1-pre4以来の公式Linux kernelであった。必ずこのユテリティを必要とする。(例えば、空のパーティションに ReiserFSを作るmkreiserfs、resizerなど)

ReiserFSの更新は、2.2.x 及び2.4.x kernelsに対するパッチとしておこなう。

第一ステップは、kernel.orgのミラーからのlinux-2.2.19.tar.bz2標準 kernelの入手である。

次いでreiserfs 2.2.19 patchを入手する。現在の最新パッチは3.5.33.である。

2.4.x kernel,に対するパッチを入手するのであれば、utils tarball reiserfsprogs-3.x.0j.tar.gzも入手しなければならない。

kernel とpatchをアンパックする。tarballs を /usr/srcにコピイして、linuxディレクトリをlinux-oldに移し、次のコマンドを走らせる:



tar -Ixf linux-2.2.19.tar.bz2


bzcat linux-2.2.19-reiserfs-3.5.33-patch.bz2 | patch -p0


Compile the Linux kernel setting reiserfs support on filesystem section.
Compile and install the reiserfs utils:


cd /usr/src/linux/fs/reiserfs/utils 


make


make install 




新kernelを搭載してリブートする。ここで次のコマンドを使って新reiserfsファイルシステムを作る:




mkreiserfs /dev/xxxx 


そして搭載する:


mount -t reiserfs /dev/xxx /mount_dir


ファイルシステムのベンチマーク
テストには Linux RedHat 6.2を搭載した Pentium III - 16 Mb RAM - 2 Gb HDでおこなった。すべてのファイルシステムがうまく働いたので、性能比較のベンチマークテストをおこなった。最初のテストは、電源断の故障である。すべてのファイルシステムはがこれに合格し、マシンは数秒間オンラインであった。

次の試験は、http://www.coker.com.au/bonnie++/で入手出来るbonnie++プログラムによる解析である。このプログラムは、単一ファイルへのデータベース型アクセスを解析し、作成、読取、及び削除を試験し、Squid, INN, 又はMaildir-formatプログラム (qメイル)のようなプログラムの利用をシミュレートすることが出来る。

ベンチマークコマンドは:



bonnie++ -d/work1 -s10 -r4 -u0


これは /work1ディレクトリに搭載されたファイルシステムの10Mb (-s10)を使ってテストを実行する。だから、ベンチマーク開始前に、必要ファイルシステムをパーティションに作って /work1 ディレクトリにマウントしなければならない。他のフラッグはRAM量をMb (-r4)で、ユーザーを示す(-u0, つまりルートとしての)で示す。
結果を次の表に示す。

 
シーケンシャル出力
 
シーケンシャル
入力
無作為
検索




 



 
サイズ:チャンクサイズ 文字当たり


 
ブロック


 
再書込


 
文字当たり


 
ブロック


 
  K/sec % CPU K/sec % CPU K/sec % CPU K/sec % CPU K/sec % CPU / sec % CPU
ext2 10M 1471 97 14813 67 1309 14 1506 94 4889 15 309.8 10
                           
ext3 10M 1366 98 2361 38 1824 22 1482 94 4935 14 317.8 10
                           
xfs 10M 1206 94 9512 77 1351 33 1299 98 4779 80 229.1 11
                           
reiserfs 10M
 
1455
 
99
 
4253
 
31
 
2340
 
26
 
1477
 
93
 
5593
 
26
 
174.3
 
5
 
  シーケンシャル作成 ランダム作成

 
ファイル  作成
 
読取
 
削除
 
作成
 
読取
 
削除
 
    / sec % CPU / sec % CPU / sec % CPU / sec % CPU / sec % CPU / sec % CPU
ext2 16 94 99 278 99 492 97 95 99 284 100 93 41
ext3 16 89 98 274 100 458 96 93 99 288 99 97 45
xfs 16 92 99 251 96 436 98 91 99 311 99 90 41
reiserfs 16
 
1307
 
100
 
8963
 
100
 
1914
 
99
 
1245
 
99
 
9316
 
100
 
1725
 
100
 

各テストに二つのデータを示した:ファイルシステムの速度(K/sec)とCPU利用度(%)である。高速な程良いファイルシステムである。CPU利用度はその逆。

ご覧の通りreiserFSがファイル管理(シーケンシャル作成及び無作為作成)で他を10倍位引き離して断然良い。加えてシーケンシャル入力・出力でも他に比肩する。他のファイルシステムの間には余り優劣がない。

最後のテストとして、http://www.namesys.com/ の reiserFS benchmark pageからmongo ベンチマークを入手して三つのジャーナリング・ファイルシステムがテスト出来るよう改造した。mongo.pl perlスクリプトに、xfs とext3ファイルシステムをマウントしてフォーマットするコマンドを挿入した。そしてベンチマーク解析を開始した。

このスクリプトは/dev/xxxx,をフォーマットし、マウントして規定回数だけ、Create, Copy, Symlinks, Read, Stats, Rename 及びDeleteの処理をおこなう。CreateとCopyの処理の後、断片化の計算もおこなう。,



Fragm = number_of_fragments / number_of_files 


ファイルの中のディレクトリresults の中に同じ結果が得られる。


log       -生の結果


log.tbl   - 比較プログラム用の結果




log_table - テーブル方の結果




テストは次の例のように実行した:




mongo.pl ext3 /dev/hda3 /work1 logext3 1


別のファイルのテストするには、ここでext3をreiserfs又はxfsなどに置き換える。他のアーギュメントは、マウントするデバイス、試験ファイルシステムの場所、搭載ディレクトリ、結果を記憶するファイル名及び処理開始回数である。
以下が解析結果の表である。報告されたデータは時間(秒)で、小さい程良い。最初の表では、取扱ファイルが100バイトで、次は1000バイト、次は10000バイトであった。



 
ext3
files=68952
size=100 bytes
dirs=242
XFS
files=68952
size=100 bytes
dirs=241
reiserFS
files=68952
size=100 bytes
dirs=241
Create 90.07 267.86 53.05
Fragm. 1.32 1.02 1.00
Copy 239.02 744.51 126.97
Fragm. 1.32 1.03 1.80
Slinks 0 203.54 105.71
Read 782.75 1543.93 562.53
Stats 108.65 262.25 225.32
Rename 67.26 205.18 70.72
Delete 23.80 389.79 85.51



 
ext3
files=11248
size=1000 bytes
dirs=44
XFS
files=11616
size=1000 bytes
dirs=43
ReiserFS
files=11616
size=1000 bytes
dirs=43
Create 30.68 57.94 36.38
Fragm. 1.38 1.01 1.03
Copy 75.21 149.49 84.02
Fragm. 1.38 1.01 1.43
Slinks 16.68 29.59 19.29
Read 225.74 348.99 409.45
Stats 25.60 46.41 89.23
Rename 16.11 33.57 20.69
Delete 6.04 64.90 18.21



 
ext3
files=2274
size=10000 bytes
dirs=32
XFS
files=2292
size=10000 bytes
dirs=31
reiserFS
files=2292
size=10000 bytes
dirs=31
Create 27.13 25.99 22.27
Fragm. 1.44 1.02 1.05
Copy 55.27 55.73 43.24
Fragm. 1.44 1.02 1.12
Slinks 1.33 2.51 1.43
Read 40.51 50.20 56.34
Stats 2.34 1.99 3.52
Rename 0.99 1.10 1.25
Delete 3.40 8.99 1.84

これらの結果から、Stats Delate 及びRenameではext3が早く、Create と CopyではreiserFSが良い事が分かる。reiserFSの性能が良いのは技術文書からも予測される。

.

まとめ

現在の処、Linux用に少なくとも二つの、心配なく使える頑丈なジャーナリング・ファイルシステムがある(XFSとreiserFS)。
ext3は未だアルファ段階で、幾つか不具合がある。このシステムを使うとbonnie++に問題があり、VMエラーが報告されてシェルが死んだ。
ベンチマークの結果からは、 reiserFSの搭載を推薦する。
 
Copyright © 2001, Matteo Dell'Omodarme.
Copying license http://www.linuxgazette.com/copying.html
Published in Issue 68 of Linux Gazette, July 2001
 
 
 
Linux Kernelのコンパイルとインストール

By Subhasish Ghosh

要約:

これはカスタムRed Hat Linux Kernelをコンパイルし、コンフィギュアし、インストールするための詳細説明で、ステップバイステップの手引きだ。カスタムKernelが必要な理由は色々あるが、それには立ち入らない。以下のステップはRed Hat Linuxユーザーを念頭においているが、少し変えれば他にも通用する(例えばinitrdを使わないシステムもある)。

主体:

以下のステップは、次の構成のコンピュータシステムでおこなった:コンパックプラセリオ 4010 シリーズ、固定ディスク15.5 GB、96 MB RAM、インテルセルロン400 MHz 、Red Hat Linux 7.0 。使用.Kernel: 2.2.16-22

狙い:

以下のステップ全部を終わった後、完全に働くカスタム Kernelを得るのが目的だ。

カスタムRed Hat Linux Kernel のコンパイル、コンフィギュア、搭載のステップ:

おこなうステップは次の通り:

ステップ1: "root"としてログインしてから、これらステップを実行

ステップ2:プロンプトで"rpm -q kernel-headers kernel-source make dev86"とタイプ

ステップ3:これら RPMが既に搭載されているときは、ステップ4に進む。搭載してなければ Red Hat Linux 7.0 CD-ROM を入れてrpm -Uvh を実行し、RPMを搭載。

ステップ4:完全に働くX Windowシステムを持っているときは、コマンドプロンプトで "startx" とタイプする。X Windowシステムをコンフィギュアしていないときは、そうすることを強く薦める。便利だからだ。X Windowシステムがないときは、コマンドプロンプトで "make config" 又は "make menuconfig" とタイプする。

ステップ5:GNOME環境に入ったら、GNOMEターミナルを開いて"cd /usr/src/linux"とタイプしてenterを押す。

ステップ6: /usr/src/linuxの中から "make xconfig"とタイプする。

ステップ7:"make config"のGUIバージョンが画面上に出る。これがカスタムKernelを作るための各種オプションを与える。

ステップ8:難しいオプションはそのままにすることを薦める。殆どのオプションは熟練した取扱を要するので、触らない方が良い。以下の変更のみをおこなう。

1.プロセッサの型と特性:使用するプロセッサを選ぶ。私は、Processor Family: PPro/686MX, Maximum Physical Memory: 1 GB, Math Emulation: Yes, MTRR: Yes, SMP: Yesと入力した。

2.Filesystems ダイアログを開いて、次の変更をおこなう:私は、DOS FAT fs support: Yes(y), MSDOS fs support: Yes(y), UMSDOS: m, VFAT(Windows 95) support: Yes(y), NTFS filesystem support (read-only): Yes(y), NTFS read-write support(DANGEROUS): No(n)とした。この変更の後、他は変えていない事を確認する。上記の変更は無害で、既存Linux Kernelを損なうことはない。

3.セーブしてから Main dialogを出る。

ステップ9:次いで、パス /usr/src/linux.の中から"ls -al" を実行する。

ステップ10: "Makefile".と言う名のファイルを見付けられる筈だ。これはこのコンパイル処理に極めて重要なファイルなので、"cp Makefile Makefile.bak"を使って必ずバックアップを取っておくこと。

ステップ11:ここで( /usr/src/linuxの中から) "vi Makefile".をおこなう。

ステップ12EXTRAVERSION の行に行って、次のような変更を行う。私の場合は

EXTRAVERSION=-22, to EXTRAVERSION="-22ghosh". 好きなように命名してよい。

ステップ13:セーブしてファイルから出る。

ステップ14:以下のステップは全部 /usr/src/linuxの中からおこなう。"make dep clean"とタイプしてenterを押す。

ステップ15:次いで "make bzImage modules" とタイプする。これには時間が掛かる。必要ファイルをコンパイルするまで一寸休憩。私は一寝入りする。

ステップ16:このステップが終わったら、/usr/src/linux/arch/i386/boot に "bzImage" が出来上がる筈。ここに行って "bzImage" が出来上がっているか点検のこと。すべてのコンパイルステップが完全に実行され、"make xconfig" で選んだオプションが正しいときにのみ、このファイルが作成される。このファイルが見付かったら75%を修了だ。見付からなければ、残念乍ら、少し休んで初めからやり直しだ。

ステップ17:(/usr/src/linuxの中で) "cp ./arch/i386/boot/bzImage /boot/vmlinuz-2.2.16-22ghosh" とタイプしてenterキイを押す。

ステップ18: "cp System.map /boot/System.map-2.2.16-22ghosh" とタイプ。

ステップ19:次いで "make modules_install" とタイプしてenterを押す。モジュールすべてが新らしいカスタム化ディレクトリにインストールされているのが分かるだろう。

ステップ20:次いで "mkinitrd /boot/initrd-2.2.16-22ghosh.img 2.2.16-22ghosh" とタイプ。

ステップ21:次いで "vi /etc/lilo.conf" とタイプして次の入力を追加する:

image=/boot/vmlinuz-2.2.16-22ghosh

label=GhoshKernel
initrd=/boot/initrd-2.2.16-22ghosh.img
root=/dev/hdc5
read-only

ステップ22:セーブして出る。lilo.confへの登録は、希望なら任意に変えられること、及びルートは自分のシステムのルートでなければならないことに注意。私のマシンでは /dev/hdc5であった。だからinfoは自分自身のシステムから挿入する。

ステップ23:"/sbin/lilo -v -v"とタイプ。

ステップ24:情報全部を画面で読む。エラーがなければ仕事は完了。おめでとう!!

ステップ25:"/sbin/reboot" 又は"/sbin/shutdown -r now" とタイプしてリブートする。

ステップ26:スタートアップ画面で、Tab(又は、LILOスタートアップ画面であれば Control-X )をタイプすると、前からあるその他の登録と並んで登録 "GhoshKernel" を見ることが出来る。

ステップ27: GhoshKernel とタイプしてenterを押す。カスタムKernelがシステム上でブートしながら働いているのが見られる筈だ。これで自分のシステム上で完全に働くカスタムKernelが得られた。

まとめ:

"root"としてログインした後、"uname -r" とタイプしてEnterを押す。画面上に次の登録を見ることが出来る:Kernelがスタートした2.2.16-22ではなく.カスタムKernelを走らせている証拠の 2.2.16-22ghosh、これで全部だ。単一コンピュータシステム上で働くKernelを幾つでも作ることが出来ることに注意。うまく働かないとき、又は問題にぶつかったときは、auspicious_blessingsindia@hotmail.comに質問や意見のe−メールを送られたい。何時でもお答えする。この記事がお役に立つことを祈る。

情報源:

自分用Kernelをコンフィギュアする方法に関しては数多くのWebサイトに情報がある。http://www.vmlinuz.nu/ 及びLinux Kernelの取扱及び文書を調べられたい。

 

Copyright © 2001, Subhasish Ghosh.
Copying license http://www.linuxgazette.com/copying.html
Published in Issue 68 of Linux Gazette, July 2001
 

 

 
ブラザー・インターネット・プリント・プロトコル用
Linuxクライアント

By Graham Jenkins

 

ブラザー・インターネット・プリント・プロトコル

最近の記事Internet Printing--Another Way(インターネット・プリント−別法)でBrotherプリンタに使用出来るプリント・プロトコルを説明した。これを使うと、Windowsマシンのユーザーがe−メール経由でマルチパートbase-64コード化プリントファイルをブラザー・プリント・サーバーに送ることが出来る。

この記事は更に進んで、ブラザー・プリント・サーバーの機能性を向上し、Perlプログラムを使って定期的にPOP3サーバーを呼出し、パートが全部到着したジョブについて点検する方法を述べる。このようなジョブが検出されると、そのパートを逐次ダウンロードして、プリントのためデコードする。

Linuxクライアント

上述のPerlプログラムは、私の処で数ヶ月使用しており、Wordその他Microsoft-フォーマット文書を遠隔コンピュータに容易にプリントしている。だがLinuxワークステーションを使う人には、全く容易にしていない。

ブラザーのWebサイトをサーチしたところ、Linuxクライアントを明らかにするのに失敗したので、開発を決心した。以下にその結果を述べる。

実行

在来の知識では、バイナリ入力流をデコーダに順次送るためチャンクにする−多分Perl又はCで実現する−プログラムを書くだろう。事実、普通のBourneシェル及びその派生体は、'split' や 'wc' のような一般的Unix/Linuxツールを一つか二つ使うとき必要な能力すべてを有する。

プログラム通覧

リスト(text version)に示したように、プログラムは二つのアーギュメントを付けて呼び出されたことを点検することによりときスタートし、そうでない場合はユーセージ・メッセージがプリントされる。次いで、各パートが送られるとき後に呼び出されてヘッダをプリントする機能を定義する。詳細には、この機能には通告のためのアドレス、パート番号、パート数、及びジョブ識別子が含まれる。

プログラム本体は発信者用eメールアドレスをタイムスタンプとともに作成することから始まる。これらはつなぎ合わせてscratchディレクトリのための名称作成に使用される。trapを設けてエラーの際にその名称を有するディレクトリを何れも削除し、scratchディレクトリ作成を試みる。

次いで Unix/Linux 'split' ユティリティを用いてプログラム入力をパートに分ける。そのサイズは第一プログラムアーギュメントにより与えられる。これらの各々がbase-64エンコーダーと第二プログラムアーギュメントが与えるアドレスへのメーラーに(適切な前置きを付けて)送られる。

プログラムは、scratchディレクトリの削除とexit状態に戻ることにより終わる。



#!/bin/sh


# BIPclient.sh   ブラザーインターネット・プリント・クライアント・




#       プログラムBrother Internet Print client program.入力流を、


#               設計サイズのパートに分解し、次いで各パートの 


#               base-64 エンコードを行って、それに適切な前置きを付けて


#               宛先eメールアドレスに送付する。




#             Graham Jenkins, IBM GSA, June 2001.





[ $# -ne 2 ] && echo "Usage: `basename $0` kb-per-part destination">&2 &&


  echo " e.g.: man a2ps | a2ps -o - | `basename $0` 16 lp3@acme.com">&2&& exit 2





do_header () {                                  # ヘッダープリント機能


cat <<EOF


START-BROBROBRO-START


BRO-SERVICE=ZYXWVUTSRQ980


BRO-NOTIFY=Always


BRO-REPLY=$Me


BRO-PARTIAL=$Part/$Total


BRO-UID=$Me$Now


STOP-BROBROBRO-STOP





Content-Type: application/octet-stream; name="PrintJob.PRN"


Content-Transfer-Encoding: base64





EOF


}





Me=`whoami`@`hostname`


[ -n "`domainname`" ] && [ "`domainname`" != "(none)" ] && Me=$Me.`domainname`


Now=`date '+%Y%m%d%H%M%S'`                      # eメールアドレス作成


Dir=/tmp/`basename $0`.$Me$Now                  # タイムスタンプとディレクトリ名


trap 'rm -rf $Dir;echo Oops>&2;exit 1' 1 2 3 15 # Set cleanup trap





mkdir $Dir                      || exit 1       #ディレクトリ作成


split -b ${1}k - $Dir/          || exit 1       # パート作成


Total=`ls $Dir|wc -w |tr -d ' '`|| exit 1       # パート計数





Part=0


for File in `ls $Dir/*` ; do                    # パートのエンコードと送付


  Part=`expr 1 + $Part`


  [ -t 2 ] && echo "Sending part: $Part/"$Total"  to: $2 .. $Now" >&2


  ( do_header


    base64 $File                                # mmencode 又は base64を使用


    echo ) | Mail -s "Brother Internet Print Job" $2 


done





rm -rf $Dir                                     # クリーンアップしてexit


exit 0


性能限界

簡易を重視したので、リストに示した 'do_header' 機能は、Windowsクライアントプログラムの作成したヘッダ行の幾つかを残して 'BRO-SERVICE' のためのダミイ値を用いている。その結果、純正Brotherプリントサーバーでは満足に働かないことがある。読者の中にこの装置を持っておられる方があれば、ご意見をお聞きかせ願いたい。

'unique' メッセージ識別子は、ユーザーが二つのジョブを同じ1秒間以内に提出するとダブってしまうことがある。これはBrother識別子フォーマットの限界である。必要ならユーザーのeメイルアドレスの前に処理番号を入れる代替識別子フォーマットを使うことが出来る。

最後に、実質的には生のプリントファイルの複写であるものを保持するためscratchディレクトリを作るのは、クライアントマシンにある一時ファイルのスペース量が限られているとき、問題だと思われるかも知れない。ここでの問題は、各メール成分のヘッダに含めるため、到着したままの生のプリントファイルのコピイを実際に取って、「全体像」を作らなければならないことである。

一時的ファイルを全く使わないで、パーツを大急ぎで作って送ることも(Perl又は 'dd' を使って)出来るが、それには、各パートのヘッダを書くのにサーバープログラムが「全体像」を必要としないように修正されていることが条件である。この方法でおこないたい人には、どなたにも喜んでメールを差し上げる。

 

Copyright © 2001, Graham Jenkins.
Copying license http://www.linuxgazette.com/copying.html
Published in Issue 68 of Linux Gazette, July 2001
 

 

 
 
フィールドの開放:
PostgreSQL の複数バージョン同時制御(MVCC)

By Joseph Mitchell

 

PostgreSQL の複数バージョン同時制御特性は、

データテーブルの読取書込同時使用を自由にする

はじめに

今日の問題:殆どの大型マルチユーザー・データベースについて厄介なこと一つを挙げるとしたら何だろう? 待ち時間だと言う人が多いだろう。データベース・システムが、テーブルレベルでもページレベルでも列レベルでも行レベルでも、同じ問題がある。読取(SELECT)は、書込(UPDATE)完了を待たねばならず、書込(UPDATE)は、読取(SELECT)完了を待たねばなららない。「"no-locking" の能力が欲しい!」。

PostgreSQLのno-locking 特性

PostgreSQLについては "no-locking" が実現している。読取は書込を待つことなく、書込が読取を待つこともない。PostgreSQLには "no-locking" がないとの苦情に対する反論を聞いているので、PostgreSQLの複数バージョン同時制御(MVCC)(Multi-Version Concurrency Control )を説明する。

MVCC

他のデータベース・システムにおけるロックは、同時性制御とデータ一貫性を維持するため使われる機構に過ぎない。PostgreSQLでは、しかし、ロックに代わってマルチバージョン・モデルを用いる。PostgreSQLにおけるバージョンは、特定時点でのデータのスナップショットである。データの現在バージョンは、ユーザーがテーブルに問い合わせすると何時でも現れる。従って、テーブルに同じ問い合わせをしたときデータが変わっていれば、新バージョンが現れる。このような変更は、UPDATE, INSERT, 又はDELETEステートメントを通じてデータベース内部で起こっている。

例:行(row)ロック 対 MVCC

在来の行レベルロックとPostgreSQLの MVCCとの本質的相違は、ユーザーが特定のテーブルから選んだデータを見ることの出来る時期にある。在来の行レベル法では、データを見るまでユーザーは待たなければならないのに対し、PostgreSQLの MVCCでは、ユーザーは待つ必要がない。これを明らかにするため次の例を見よう。



SELECT headlines FROM news_items


この例では、news_itemsと言う名のテーブルからデータを読み取ってheadlinesと言う名の列のすべての行を表示する。行レベルロックのシステムでは、別のユーザーが同時にデータをテーブルnews_itemsに挿入(INSERT) 又は更新(UPDATE)をしていると、SELECTステートメントがブロックされるので、ユーザーは待たなければならない。データ変更の処理は行のロックを保持するので、テーブルからはすべての行が示出来なくなる。ユーザーはロックが解けるのを待たなければならない。データ読取に際して頻繁にロックに遭遇したユーザーは、このロックシステムでいらいらした経験がある筈だ。

対照的に、PostgreSQLでは、すべてのユーザーが、ロック解除を待つことなくnews_itemsテーブルを同時に見ることが出来る。多くのユーザーが同時にテーブルにデータを挿入又は更新していても事情は同じである。ユーザーがSELECT要求を出すと、PostgreSQLは−ユーザーが要求したとき関わっていたデータの−スナップショットを表示する。オープン処理の一部として行われたデータの挿入又は更新で要求後のものは表示されない。お分かりかな?

MVCCの詳細観察

行レベルロックを使用するデータベースシステム、データの旧バージョンを保有しないので、データ一貫性維持のためロックを必要とする。だがPostgreSQLにおいて "no-locking" がMVCCを通じて働く様子を観察すると、PostgreSQLがこの問題を回避する方法が分かる。PostgreSQLでは各行が二つの処理IDを持っている。行作成処理の作成処理IDと行無効処理の無効処理IDである。誰かが更新(UPDATE)を実行するとPostgreSQLは新行を作成して旧行を無効にする。行は同じだがバージョンが異なる。旧バージョンを保留しないデータベースシステムと異なり、PostgreSQLが行の新バージョンを作成したときは旧バージョンを保留する(注記:旧バージョンはデータベース上でVACUUMと言う処理がおこなわれるまで保留される)。

PostgreSQLはこのようにデータのバージョンを作るが、どのバージョンを表示するか決めるにはどうするのだろうか? 表示には幾つかの基準がある。問い合わせ開始の際に、PostgreSQLは二つのことを記録する。1)現行処理IDと、2)すべての処理中の処理IDである。誰かがデータにアクセスすると、Postgreは以下の基準に合致する行バージョン全部を表示する問い合わせを発行する:行の作成処理IDが実行中の処理であって現行処理カウンタより小さいこと、及び行には無効処理IDがないか又は問い合わせ開始時に無効処理IDが処理中である。

ここにMVCCの秘密が存在する。これはPostgreSQLが処理IDを追跡してデータのバージョンを判定出来るようにし、それによりロックを行うのを避けている。これは処理取扱の極めて論理的で効率的な方法である。新PostgreSQLユーザーは、特に大型複数ユーザー環境にある人は、MVCCの行レベルロックに押し上げた性能に驚くであろう。

MVCCにはまた別の利点もある。ホットバックアップである。他のデータベースでは、一貫性のあるスナップショットを得るためすべてのデータベース又はテーブルの閉鎖をユーザーに要求するが、PostgreSQLでは不要だ。MVCCはデータベースを生かしたままPostgreSQLがバックアップを作るのを可能にする。適切な時点で全データベースのスナップショットを取り、データが挿入、更新、又は削除の最中であっても出力する。

まとめ

MVCCは読取が書込を待たず、書込が読取を待たないことを保証する。これは、在来の行レベルロックより良いデータベース性能を導き出す論理的で効率的なバージョン管理である。

PostgreSQLはGreat Bridge Web site (www.greatbridge.com/download)でダウンロード入手出来る。

 

Copyright © 2001, Joseph Mitchell.
Copying license http://www.linuxgazette.com/copying.html
Published in Issue 68 of Linux Gazette, July 2001
 

 

 
RPMの使用:基本(パート1)

By Jose Nazario

この記事はレッドハット・パケージ・マネージメントシステム(RPM)の紹介である。

パート1では、RPMパケージの搭載を扱い、パート2ではRPMパケージのディストリビューション用構築を扱う。RPMとは何か、何故使うか、他のパケージシステムとの比較、及び入手方法を扱かう。大部分を、搭載、パケージの点検、搭載パケージの除去に関するRPM使用法に割く。RPM APIは扱わない。

RPMとは?
RPMは、UNIXシステム上にソフトウエアパケージを構築し管理するため使用されるツールである。Red Hat Linux ディストリビューションで配布されるRPMはオープンソースなので、任意のUNIX上で働くがSolaris 又は IRIXのような別の形のためのRPMパケージを見出すのは困難である。
パケージ管理の原理は簡単だが、実行には技巧を要することがある。簡単に言うと、これはソフトウエア搭載の管理、搭載ソフトウエアの管理、及びシステムからのソフトウエア削除、を簡単に行うことを意味する。RPMはこれらの必要をなくした。

RPMは、他のUNIXソフトウエアマネージャと異なり特許ファイルフォーマットを使う。これはパケージから一つの成分を抽出しようとするが、RPMユティリティを持っていないときは問題になる。だが、Alienのようなツールを使えば、tar又はarなどを使って管理することの出来るファイルフォーマットを得ることが出来る。

RPMファイルの命名法には標準の慣習があり、(name)-(version)-(build).(platform).rpmのフォーマットを持つ。例えば、名称cat-2.4-7.i386.rpmは、ユティリティ"cat"バージョン2.4,、ビルト7,X86用である。プラットホーム名が"src"で置き換わっていれば、それはソースRPMである。

何故パケージ管理?
一寸眺めて「構成成分はそんなに多くないから自分で出来る」と言う人もいるだろう。事実、実行可能ファイルにマニュアル一つのcatのような小さいものについてはそうだろう。だが、山ほどの構成成分や従属成分があって、それらが到る処に貼り付くKDEのようなものならどうだろう。全部の追跡は不可能ではないにしても楽ではない。
パケージ管理がこれを楽にする。プログラムに情報、コンフィギュレーションファイル、その他全部をバイナリで保持させることにより、搭載されたもの、それらの削除、又はアップグレードを容易におこなうことが出来る。
搭載は居眠りする間だ。欲しいものを選んで面倒な仕事はシステムにやらせる。プログラムをアンパックして、余裕があることを確かめ、正しい順序で置いてから、自分用設定を行う。レストランに行くときお抱え運転手が連れて行ってくれるようなものだ。ソフトウエアパケージの従属成分又は追加要求もまたパケージマネージャが管理する。

搭載パケージの管理もまた、良いパケージ・マネージメント・システムが容易にする。搭載ソフトウエア全部のリストを作る。何が搭載されているか見るのに有用だ。重要なのは、アップグレードが容易なことだ。最後に、ソフトウエア・パケージの検証を楽にする。搭載パケージとその成分の特性を知ることにより、問題の診断と修復が早くなる。

他のUNIXパケージ・システムに比較したRPMの行い方

私は、多数のUNIX変形を使う(不)幸運にあって、そのパケージフォーマットの経験を積んだ。RPMが要らぬこともあったが、他のUNIXソフトウエア・パケージ・フォーマットに比べて最も必要とした。以下に他の幾つかのフォーマット及びツールの優劣をまとめる。

Format プラットホーム 長所 短所
inst

 
IRIX(SGI)

 
偉大なグラフィカル・インストーラ
 
驚くべく遅い、頻繁なリブート、ネットワークインストール無し(NFS以外)
sw
 
HPUX(HP)
 
(あるかな?), ネットワークインストールをサポート 恐ろしく遅い
 
pkg BSD(many) tarballs, net installs 署名、sumなし
? Solaris(SUN) (あるかな?) 遅い、署名、sumなし
.deb
 
Debian
 
arだけ、ツールなしで抽出容易 署名なし
 

簡単に言うと、RPMについて最大の苦情はGUIインターフェイスがないことだ。少しはあるが(gnorpmやglintなど)これらには、SGIのソフトウエアが有するもっと複雑な特性がない。全体として、RPMは競合処理と解像度が他より良く、何と言っても速度が速い。強力なGUIがなくても使いたいと思う。

RPMについて、最も惚れ込んだのは、速度の点と、パケージ署名とsumの双方を使うパケージ点検だ。例として、欠陥GUIテキストエディタ(aka jot)を再搭載したとの理由だけでSGIをリブートしなければならないとしよう。こんな小さいパケージの再搭載にもリブートまで約15分かかる。

NutshellでのRPM
圧縮tarballのように、RPMは複数のファイルを一つのアーカイブにまとめることと、このアーカイブを圧縮して大きいRPMパケージを構築することとの組合せを用いる。更に、追加のヘッダ情報を挿入する。これはシステムを新パケージに備えさせる前−及び後ースクリプトと同時にRPMが保持するデータベースに関する情報を含む。従属成分は搭載の前に点検し、搭載に適したフラグ設定があれば、これもまた搭載する。

RPMがその威力を発揮するのはこのデータベース上である。記憶されているのは、搭載パケージのプロパティすべてである。これが乱されると、rpmツールを用いて修復する。

RPMに関する秘訣
ここでこの記事に述べたRPMの三つの中心的作用に焦点を当てる。これらは、新パケージの搭載、搭載パケージの管理、及びパケージ削除である。先ずパケージ追加の方法を述べる。
RPMを用いる搭載
RPMを用いる新ソフトウエアパケージの搭載は、最も基本的で最も一般的なRPM機能である。これをおこなうには、rpmに-iフラグを与えRPMにこれを示す:

    rpm -i (package)

これでパケージが搭載され、うまく行けばメッセージ無しでコマンドプロンプトを返す。物足りなくて何が起こったか知りたい人は -v フラグを使う。

    rpm -iv (package)

パケージ名がプリントされるだけで、処理については何も出ない。-hフラグを使うとハッシュマークの付いた処理の出力が得られる。-ivhを使うのを好む人もいるだろう。

    rpm -ivh (package)

ここでも、今起こったことを述べるのでなく、おこなった筈のことを述べるだけだ。したがって、私は(-vv)を使う。これは進行状態を示す。

    rpm -ivv (package)

出力は通常スクロールするが、進行状態と問題の有無を正確に見ることが出来る。加えて搭載された場所も判る。

従属成分はRPMがうまく扱うが、これ自体は第一級の良きパケージ構築者に依存する。例えば自分自体に従属するパケージもあって、他のものを壊すのは、パケージに依ると思われる。注意する必要がある。

時には搭載されているが登録されていない従属成分にRPMが泣かされることもある。パケージ用RPM(即ち OpenSSL)を使わないで搭載したためだろう。これを避けるには、従属成分を無視させることだ。

    rpm -ivv --nodeps (package)

これは必ずしも賢明ではないので、事態を把握しているときにのみおこなうべきだ。これが搭載物を壊すことはないが、搭載パケージが正しく働かないことを意味する。

稀な場合に、RPMが混乱して、パケージ搭載を催促することがある。これは何かが間違っているサインであるが、避けることが出来る。搭載を強制する。

    rpm -ivv --force (package)

注意事項として、従属成分を無視したときのように、パケージ搭載の強制は賢明でないことである。マシンが故障するか働かなくなる恐れがあることを覚悟すること。

これは多分、RPMネットワークインストレーションにおける最もスマートな特性として褒賞ものだ。システムにネットワーククライアントを持っていないがRPM経由でそれらを搭載する必要があることもある。RPMはビルトインFTP及びこれを扱うWebクライアントソフトウエアを持っている。

    rpm -iv ftp://ftp.redhat.com/path/package.rpm
    rpm -iv http://www.me.com/path/package.rpm

これがSSL HTTP接続をおこなうことが出来るとは思えないが、Debianのパケージでは、BSD パケージと同様、これが出来る。殆どの商業ツールでは出来ないと思う。

パケージの管理
搭載又は未搭載のパケージの取扱方法を述べる。rpmの中のパケージ管理特性を使って、搭載鉈又は未搭載パケージの中身を見ることが出来る。パケージの検証も含む。
新パケージを入手したとき、何を提供するか検査したいだろう。問い合わせモードを使って、中身を覗くことが出来る。問い合わせて情報を得るには:

    rpm -qp (package)

これはパケージ名だけを告げる。物足りないだろう。もっと有用な方法はパケージ自体からパケージ情報を得る方法だ。

    rpm -qip (package)

これはパケージについて著者、構築主及び日付、搭載されているか否かなどを告げる。パケージの機能性及び特性についても要約もこれに含まれる。

これでも良いが、実際のパケージ内容を見たいことがある。 (tar -tvfを使った) tarアーカイブの内容一覧表のようにパケージ内容をリストにすることが出来る。

    rpm -qlp (package)

これはアーカイブ内のファイル一覧をフルパス名を使って示す。私は何があるかより、その場所を見るのに重宝している。最後に、搭載パケージ全体を見るには、

    rpm -qa

これは、現行システムに搭載されたパケージの一覧を示す。( sort, rpm -qa | sortを通じるパイピングによる)ソートに便利だ。この名称をパケージ削除(下記)に使う。

RPMはパケージの検証をおこなう。危ないマシン、または当方のエラーにより脱落または変化したバイナリの検出に有用である。一つのパケージの検証には-Vフラグを使う。

    rpm -V (package)

パケージを点検したか否かの簡単な記述を示す。システムの搭載パケージ全部を検証するには:

    rpm -Va

検証モードはファイルに関する幾つかの数字を示す。略語は以下の通りである:

5 MD5 sum
S ファイルサイズ
L Symlink
T Mtime (修正時刻)
D 装置
U ユーザー
G グループ
M モード(パーミッションとファイル型を含む)

これらは意味のないこともある。例えば、 /etc/inetd.conf ファイルを変更したとき、違うサイズとMD5 sumを示す。だが、/bin/loginのように変わってはいけないものもある。したがって、rpm -Va は、精査すべきものを示して、迅速セキュリティ点検に有用であることがある。

パケージ管理について重要なことの一つは、更新が容易なことである。RPMは二つの、ときには混乱する、更新パケージを有する。一つは単純更新である:

    rpm -U (package)

混乱し易いのは、パケージが未搭載のとき生じる作用である。見出した時はパケージが更新される。見出さない時は、パケージが搭載されるとの更新が起こる。これは、パケージを搭載する積もりがなくて、知らずに従う更新が起こるとの、恐ろしいことになることがある。パケージの最新バージョンを入手したいときは"freshen"を使うことを薦める。

    rpm -F (package)

これは搭載パケージ更新のみをおこない、パケージがなくても搭載しない。

更新は面白い方法でもおこなわれる。新バージョンが最初に搭載されて旧バージョンとの相違が書き留められる。次いで旧バージョンを削除するが、新部分を削除しないよう独特の部分のみは残される。/usr/local/bin/netscapeが更新され削除された場合を考えて見よ、すべての努力が無駄になる。

RPMの削除
RPMの搭載、更新、管理が出来たので削除も出来る筈だ。使うフラグは-eで搭載と同じ多くの条件が削除にも通用する。黙ってRPMパケージを削除するには:

    rpm -e (package)

搭載及び更新と異なり、package-version.i386.rpmでなくpackage-versionを引用していることに注意。これらは問い合わせモードで使用した値なので、ここでも使う。名称の最も一般的な部分、つまりlinuxconf and linuxconf-develのためのもの、を使って、パケージの全成分を削除出来る筈である。従属成分はここでもまた無視することが出来る。

    rpm -e --nodeps (package)

ここでも同じ警告がある。予想より多くのものを壊さないこと。ここでも搭載と同じ情報追加フラグを使うことが出来る。

RPMについての幾つかの注意
保守者がRPMに変な従属成分を構築することがある。問題の点はlibsafe。これには入り組んだ従属成分がある。私は正しく搭載するため--nodeps搭載にしなければならないと思うのが普通だ。別のときにはパケージが余分なジャンクを含むので、搭載には計画した以上に緊張することがある。。

RPMに対する私の最大の苦情は、名称が部品機能に合致しないことである。上述のように問い合わせツールを用いて掘り返せば避けることが出来るが、予想外に時間が掛かる。名前を付け替えることを薦める。

RPMの入手
RPMはオープンソースなので任意のLinux またはUNIXバリアントで入手出来る。RPMはRed Hat Linuxなどに付いて来る。互換性の点でバージョン3.0以上を薦める。バージョン4はデータベースフォーマットが異なるので、点検すること。

RPMは通常RPM自体として配布される。gzipped tarball またはソース形式でも手に入る。私は Slackwareに搭載しているが、IRIX またはSolarisにも搭載出来る。Linux以外のプラットホームでは役立たない。パケージが他のUNIXバリアント用RPMで構築されるのは稀だからだ。

次回
次回はRPMの構築法を述べる。仕様ファイル、/usr/srcのレイアウト、フラッグを眺める。基本を習った後ではやさしい。
資料
スタートに最良の場所はRPM用Webサイトhttp://www.rpm.org/である。ここには、使用法、構築、RPM APIを用いるプログラミングまで述べたブック'Maximum RPM'がある。RPMヘルプペイジ (rpm -h)も基本を習っていれば有用である。RPMアーカイブを見出すには http://www.rpmfind.net/, を調べること、各種プラットホーム上のバージョンのため非常に大きいサーチテーブル・データベースがある。非常に役立つ。
 
Copyright © 2001, Jose Nazario.
Copying license http://www.linuxgazette.com/copying.html
Published in Issue 68 of Linux Gazette, July 2001
 

 

 
 
良いパスワードの選択

By Jose Nazario

現在、Crackを運営しているが、良いパスワードの作り方を考えている。特に、どんな種類のことをしたら良いものが出来るかだ。パスワードはシステムの非合法使用を禁じる最も主要な防衛だ。暗号、ファイヤーウォール、ラビットドッグがあっても、良いパスワードが必要だ。

以下は私のパスワード作成法だ。"Nature" 最新号を開いて遺伝子記事を探し、遺伝子構造名を探してそれを使う。本当だ。これが良いパスワードを選ぶ方法だ。無作為で複雑で作り易い。多くの辞書が遺伝子名を含んでいるが、これは構造名で遺伝子名ではない。だから"Brc1"の代わりに"pRSET5a::20STa::6xHis"などとなっている。後者を使うと滅多に破られない。保証する。

仕掛け、ユーザーが複雑なパスワードを嫌うことだ。これらは覚えるのが難しい。泣かされるがそれで良いのだ。これを克服するには、モニター上ののメモに書き込むかまたは "LucyDoll"のような愚かなものに変えるかだ。

重要なのは、パスワードが指をなめらかに動かすことだ。早く正しくタイプしなければならない。その点で私は、十回打ってリズムを生み出す。うまく行っている。

手早いのは、Crack 5.0a文書への方針変更で、これは付属文書から剥ぎ取る。これはパスワードセキュリティとセキュリテイ一般を扱っており、良いアイデアだ。

最後の行で、パスワード "fred" はパスワード "blurflpox" と同じくらい安全(無作為)だ。唯一の問題は "fred" が"password space"の探しやすい場所にあることだ。だが、これらのパスワードは "Dxk&2+15^N"より見付かりやすい。問題は君が "Dxk&2+15^N" を覚えられるかどうかだ。

良いパスワードが出来た。だが・・、十個以上のアカウントがある。あるものはBBS上に、あるものはsshが出来ないシステム上に、あるものは主ビジネスをおこなうシステム上のルートパスワードか、又は頻繁に回転しなければならないものだ。これら全部をどうやって追跡するか?

私は、二つのことをおこなう。パスワードのレベルを保つ。廃棄出来るパスワードを山程持っている。BBS上で私の使うパスワードを誰かが掴んでflamebait(エサ)を送ったら、私は攻撃を受ける。だが、正直のところ、誰かがそれをやると疑う、私が実際に防護するのは心を配って実行するシステムである。したがって、強力な暗号(つまり安全シェル)無しには絶対に通信線には出ない極めて強力なパスワードを用いて、これらを循環させる。新しいパスワードを(無作為に)選ぶ、古いものを要求の少ない位置、システム及びアカウントに落とす。上記のような仕掛けでうまく行っている。忘れることもあって、恐ろしい瞬間だが、通常は一、二分以下である。

多数のパスワードの追跡は Counterpane systemsからのPassword Safeで容易に扱えるが、windowsシステムでしか働かない。Linux用プログラムを書いて見たが、私には難し過ぎた。日の目を浴びることはないと思う。それでも、覚えるべきパスワードの多い人にはこれを勧めることが多い。同様のアプリケーションが他のPDA用のPalm Pilot に存在する。これは、パスワード銀行を一つのパスワードで防護する。殆どのLinux仲間がPDAを持っているので、これは簡便なソリューションになるだろう。

興味があればFIPS 181 (1)を点検されよ。これは政府の計画で発音出来る音に基づいてパスワードを作成している。スマートな方法で、私も使い始めた(関連ルール(2)Gpw経由)。Crack (3)の働きも点検されよ。これはchez pimp(ポン引き部屋?)だ。比較のため、L0phtCrack (4) の働きを見ると、NTのセキュリティの笑いたくなるだろう。勇気があったら、野生的強制パスワード(6)を考慮されよ。これは辞書発生とルーチンの最適化における興味ある問題だ。

ノートとリンク:

1. FIPS 181は連邦情報処理標準 181 である。文書は(DOS用ソースと共に)http://www.itl.nist.gov/fipspubs/fip181.htm.にある。付属FIPS 文書 FIPS 112, はパスワードの利用法と考察を論じる。

2. Gpw はC/C++ (及びJava も)で書いた発音出来るパスワードを作成するための UNIX ユティリティである。手軽で面白い。http://www.multicians.org/thvv/gpw.html 。追加のものが、http://freshmeat.net/projects/apgd/.で得られる。

3. Crack 5.0a ソースは http://www.users.dircon.co.uk/~crypto/で見出される。http://packetstorm.securify.com/Crackers/crack/でも見付かる。

4. L0phtcrack...大好きだ。 http://www.l0pht.com/l0phtcrack/ 。Mudge はL0phtcrackのリアルオーディオ表現における働きを説明する、Hope, 1997, NYC (1 時間) http://www.2600.com/offthehook/rafiles/l0pht.ram (元々これが最初に書かて以後L0phtcrackバージョン3がリリースされたことに注意。新抽出ツールがコードに組み込まれたが、何人かがパスワード分解の効率の劇的低下を注意した。L0phtcrackを使う多くの友人は、バージョン3を用いた抽出の後、分解用にバージョン2.52を用いる)

5. John the Ripper は有用なパスワード分解ユティリティの著者だ。S/Key 及びMD5 パスワード分解のため幾つかのモジュールが最近紹介された。http://www.openwall.com/john/.

6. これは野性的強制パスワード及び関連技法の説明である。試す価値があるだろう! The ambitious amateur vs. crypt(3)

 

Copyright © 2001, Jose Nazario.
Copying license http://www.linuxgazette.com/copying.html
Published in Issue 68 of Linux Gazette, July 2001
 

 
PCからXターミナルを作る

By Patrick Swieskowski

 

Xターミナルは家庭又はオフィスでのコンピュータ存在を拡張する偉大な方法である(ここでは、Xターミナルとして機能するPCを指す。NECのXターミナル装置ではない)。これらは高速でスマートにUNIXシステムの力を示し、何より安い。以下は古いPCハードウエアからXターミナルを作り私のDebian GNU/Linuxシステムに接続した記録である。

私のサーバーは、1GHz AMD Athlonプロセッサ付きのPogo Alturaである。Pogo は、部品を掻き集めたり、Windowsライセンスに金を払ったりしたくない人には有り難い会社である。私はその上でDebian を走らせているので、Xターミナルにもこれを使う。

ルート・ファイルシステムの設定

Xターミナルはカスタムkernelをフロッピイ上にブートオフし、次いでNFSを通じてサーバーからファイルシステムを入手する。第一ステップは、このときのルート・ファイルシステムを作ることである。現在稼働中のシステムから手作業でファイル毎にコピイすることも出来るが、私がしたように基本Debianを使うだけの簡便法を使うことが出来る。しなければならない仕事は基本システムtarballのダウンロードで、これはon the Debian webserver にファイルbase2_2.tgzとして見出される。私はこれをダウンロードしてから /usr/xterminalで"tar -xvzf base2_2.tgz"をおこなったところ、1秒後には完全機能のルート・ファイルシステムがそのディレクトリに出来た。サーバーのLinuxが何であろうとDebian システムを使うことが出来る。

次のステップは、このルート・ファイルシステムをコンフィギュアすることである。私はルートに戻って "chroot /usr/xterminal bash --login" を走らせておこなった。これでルート・ファイルシステム「内部」にいるので、実際の /etc/resolv.confを新ルート・ファイルシステムにコピイして、コンフィギュレーションの間ドメイン名を使えるようにした。続いてXを搭載しなければならないが、最良の方法は Debian ユーザーなら誰でも知っているように、apt-getを使うことだ。"apt-get update" 次いで "apt-get install xserver-s3 xfonts-100dpi xfonts-base" を走らせるが、Xターミナルにs3カードを持っていなければ、xserver-s3 を少し違う何かに変える(適切な何かはここ here.を参照)。これがXターミナルに必要な成分をダウンロードして搭載する。apt-getは幾つか質問をして、君のためのXF86Configを作る筈だ。そうでなければ、作られたファイルをtweakする必要がある。XFree86 HOWTOを参照。ルートファイルシステムは殆ど完全だ。私はXターミナルルートのため次のような /etc/fstab ファイルを作った。



10.0.0.1:/usr/xterminal / nfs defaults 0 0


proc /proc proc defaults 0 0


    


勿論10.0.0.1:/usr/xterminalは、自分のサーバーIPとNFSルートディレクトリに一致するものに変える。私はこのNFSルートディレクトリに自分のアカウントを持っていないので、Xをinitから始めることにした。これには、私の /etc/inittabファイルに次の修正(最後のIPアドレスは人により異なる)が必要であった。



X:123456:respawn:/usr/bin/X11/X -query 10.0.0.1


    


これで完全無欠との確信はないが、兎も角働く。最後に /sbin/unconfigured.shシェルスクリプトを削除して、新たに作ったルート・ファイルシステムからブートするとき喚かないようにする。

ブートフロッピイの構築

次にkernelを作る。kernelのコンパイル手順に詳しくなければ Kernel HOWTOを参照のこと。私はKernel 2.4.5 を用いてブートディスクを作ろうとしたが、bootpが壊れるような気がしたので、Kernel 2.4.4 を選んだ。定石(make xconfig, make dep, make bzImage)通りにおこなうが、次のオプションを確実に(モジュールとしてでなく)kernelにコンパイルすること:

・Networking オプションにおけるIP:kernel レベル自動コンフィギュレーションの下でIP:BOOTP サポート
・File systemsの中でNFS ファイルシステム・サポートとネットワークファイルシステムの下のNFS上のルートファイルシステム(これはBOOTPを選ぶまでNFS上のRootが存在しないのでBOOTP選択後に選ぶ)
・Network device supportの中でイーサネット下のNIC用ドライバ(10 又は100Mbit)

自分のkernelを構築し、"dd if=arch/i386/boot/bzImage of=/dev/fd0" (ルートとして) 又は同様のコマンドを自分のkernelとフロッピイドライブに用いてkernelを自分のフロッピイにコピイする。これは生のkernelをフロッピイに移しただけなので、NFSにブートを命じる必要がある。(未だルートで)"mknod /dev/boot255 c 0 255"とタイプして/dev/boot255 デバイスを作る。ここで(勿論ルートとして)"rdev /dev/fd0 /dev/boot255"を走らせてフロッピイにNFS上のルートを探させる。もう使わないのでここで"rm /dev/boot255" が出来る。ここで、Xターミナルハードウエアを入手するまでフロッピイを横に置く。

サーバー設定

まだハードウェアの準備が出来ていない。サーバー構成の巧妙な部分に差し掛かった。私はこれをDebian (そう選んで)でおこなったが、マシンにより少し違うだろう。私は先ず、NFSサーバーを搭載してコンフィギュアした (apt-get nfs-user-server)のでXターミナルはそのルート・ファイルシステムを得ることが出来た。構成は/etc/exportsファイルの編集から成る。次のような行がある筈だ(no_root_squash が重要):



/usr/xterminal 10.0.0.4/255.255.255.0(rw,no_root_squash)







ネットマスク(/255.255.255.0)が含まれているので、それぞれ独立に聞かなくともローカルクライアントを更に追加できるが、それだけが望みならipアドレスで足りる。次に私は、"apt-get install bootp"を用いてBOOTPサーバーを搭載した。これを構成するため、次の行を/etc/bootptabファイルに追加した:


/etc/bootptab file:



xterm1:vm=auto:ip=10.0.0.4:ht=ethernet:ha=00a0240d5f52:rp=/usr/xterminal


    


多分IP、NICのハードウエアアドレス(これはソフトウエアの上に書かれているか、見付からなければbootpサーバーを探すときブートフロッピイkernelが止まったとき見られる)及びルート・ファイルシステムへのパスを変えたいと思うだろう。また/etc/inetd.conf ファイルに続けて次のような行を追加する必要がある:



bootps          dgram   udp     wait    root    /usr/sbin/bootpd        bootpd -i -t 120





次に"killall -HUP inetd"をルートとして走らせてそのコンフィギュレーションファイルをinetd reparseする必要がある。もう一つ設定するのは、XDMである。ここでも Debianは極めて容易にやってのける("apt-get install xdm")。だがXDMでは心配なファイルが少しある。私に取ってこれらは、/etc/X11/xdmの下にあったが、システムにより異なるだろう。私は、私のXセーバーファイルに"10.0.0.4:0 foreign" の行を加え(人により多分違うXターミナルIPになるだろう)". To :0 local /usr/X11R6/bin/X -dpi 100 -nolisten tcp"行をコメントアウトしたので、サーバーにXDMを通じてログインする必要がなくなった。Xアクセスには"10.0.0.4"の行を追加したので、私のXターミナルはxdmに接続することが出来る。最後にxdm-configの中で"DisplayManager.requestPort: 0" と言う行をコメントアウト(前に#を置く)したので、xdmはすべての接続トライを無視しない。これでサーバーが設定された。

組立

古いコンピュータを見付ける面白い箇所だ。私は古いボックスを持っていなかったので、中古コンピュータ店に行った。見付けた486/66に保証はなかったが、僅か30ドルだった。多分これがXターミナルハードウエアの最高峰で、プロセッサ部分は大きいのは過剰だ。S3Trio64がオンボードで来た(800x600x16 しか出来ないので、SVGA Xサーバーの下で働く純正trident Blade3DベースPCIビデオカードと交換した)。またRAM(32MB)が周りにあったので押し込んだ。ハードウエア過剰の別の点は、32MBはXターミナルの必要には過剰だ。Xとkernelを走らせるだけなので8又は16で十分だろう。フロッピイドライブとNIC (3Com Etherlink III)以外は全部取り去ったので、電源ファンの音だけで静かに動いた。モニター、イーサネットパッチケーブル、キイボード及びマウスをつなぎ、私のブートフロッピイをいれて、スイッチを入れた。(短いブート時間の後)立派なXFree86ロゴとXへのログインボックスが現れた。廉価な15インチモニターを付けてこれら高品質Xターミナルを$150-$200で作ることが出来る。

Xターミナルは、私がサーバー上のXの中にいるようにうまく働く。この設定に問題があれば、上記の関係HOWTOを参照するかまたは貴地のLinuxグル(導師)に聞かれたい。これらのインストラクションが、君の家庭又はオフィスに、立派な、早くて、最良の、廉価なXターミナルを差し上げるのに役立つ筈だ。

 

Copyright © 2001, Patrick Swieskowski.
Copying license http://www.linuxgazette.com/copying.html
Published in Issue 68 of Linux Gazette, July 2001
 
 

 

 
終わり