Linux Gazette 6月号

今月の Linux Gazette の内容


今月のニュース

Linux Journal 6月号発売中。今月の特集は Linux を支える人たち。

▼▼▼ディストリビューション関連ニュース▼▼▼

Best

Best Linux のロシア語バージョンが誕生。
Best Linux 2000 R2-Moscow

Bluetooth

ラスベガスで開催された Networld+Interop (N+I) で Axis Communications は LAN やインターネットへのワイヤレスの広帯域接続を可能にするソリューションを展示した。第4四半期には広範囲の製品が登場する模様。Bluetooth アクセスポイントは携帯電話、PDA、ラップトップなどがインターネットやネットワークにアクセスできる領域を形成する。この領域によってユーザのサービス範囲が拡大される。将来のホテルではホテルの部屋から会社のメールをチェックしたり、イントラネットにアクセスしたり、はたまた PDA でファクスの送信、食事のオーダー、チェックアウトなどが可能になるかもしれない。今回のモデルには Axis のワンチップシステムと Bluetooth スタックを組込んだ組込み Linux が採用されている。

Newlix

Nwelix Corporation は 3D Microcomputers Wholesale and Distribution との戦略的提携を発表した。Newlix はインテルベースのシステムに高性能のアレイを提供している。主力商品の Newlix OfficeServer はプラグアンドプレイ、ウェブベースでの環境設定に対応した堅牢なネットワーク OS だ。一方の 3D Microcomputers はカナダのコンピュータシステムメーカの大手だ。

Newlix Corporation は Look Communications Inc. との提携を発表した。Newlix OfficeServer の販売拡大が目的だ。Newlix OfficeServer は 中小規模ビジネス向けの安全なインターネットアクセスを可能にする Linux ベースのターンキーネットワーク OS だ。Look Communications は大手のワイヤレスキャリアであり、ISP である。

Newlix Corporation (www.newlix.com) はオタワに本社を置く株式未公開の企業だ。株主の1社は Corel Corporation。中小規模ビジネス向けのネットワーク OS 用のソフトウェアの開発、OEM、VAR 向けのコア製品提供に注力している。

Red Hat

Red Hat 64ビット Itanium Linux をリリース (ZDnet の記事)
( Red Hat のプレスリリース)

RedHat Inc. は組込み用 Linux 開発ツール、Red Hat Embedded DevKit(EDK)を発表した。EDK は幅広いプラットフォームに対応した組込み用 Linux アプリケーション開発の統合環境。ターゲットはインターネットのインフラ用アプライアンスやコンシューマ用アプライアンスメーカー、その他通信、組込みエンタープライズ市場などだ。価格は199ドル95セントから。EDK の特徴は Red Hat が築いてきた優れたサポート体制で、Red Hat は EDK 用の2種のサポートを提供する。小規模ワークグループ向けの付帯サービスと大規模開発グループ向けのプラチナサポートだ。プラチナサポートは無制限の要求に対し優先的な回答が得られる。
www.redhat.com/store

LuteLinux

バンクーバのディストリビュータ
www.lutelinux.com

▼▼▼その他のニュース▼▼▼

階層ファイルシステムの標準

Filesystem Hierarchy Standard (FHS) 2.1 が完成。FHS 2.1 は FSSTND 1.2 や FHS 2.0 に替わるものだ。FHS はファイルやディレクトリの利用方法を定義するものでその仕様は Linux ディストリビュータや Unix OS でも採用されている。FHS やその前身の FSSTND は Debian、Red Hat、Caldera、SuSE など多数のディストリビュータが採用している。
FHS 2.1 に関する情報はhttp://www.pathname.com/fhs/

これから開催予定のイベント

Strictly eBusiness Solutions Expo
June 7 & 8, 2000
Minneapolis Convention Center
Minneapolis, MN
Visit www.strictlyebusinessexpo.com
USENIX
June 19-23, 2000
San Diego, CA
www.usenix.org/events/usenix2000/
LinuxFest
June 20-24, 2000
Kansas City, KS
www.linuxfest.com

PC Expo
June 27-29, 2000
New York, NY
www.pcexpo.com

LinuxConference
June 27-28, 2000
Zürich, Switzerland
www.linux-conference.ch

"Libre" Software Meeting #1
(Rencontres mondiales du logiciels libre)
, sponsored by ABUL (Linux Users Bordeaux Association)
July 5-9, 2000
Bordeaux, France
French: lsm.abul.org/lsm-fr.html
English: lsm.abul.org
Summer COMDEX
July 12-14, 2000
Toronto, Canada
www.zdevents.com/comdex

* O'Reilly/2000 Open Source Software Convention
July 17-20, 2000
Monterey, CA
conferences.oreilly.com/convention2000.html

Ottawa Linux Symposium
July 19-22, 2000
Ottawa, Canada
www.ottawalinuxsymposium.org

IEEE Computer Fair 2000
Focus: Open Source Systems
August 25-26, 2000
Huntsville, Alabama
www.ieee-computer-fair.org

Atlanta Linux Showcase
October 10-14, 2000
Atlanta, GA
www.linuxshowcase.org

Fall COMDEX
November 13-17, 2000
Las Vegas, NV
www.zdevents.com/comdex
USENIX Winter - LISA 2000
December 3-8, 2000
New Orleans, LA
www.usenix.org

E-Commerce Timesからのニュース

E-Commerce Times の Linux 関連ニュース
http://www.ecommercetimes.com/linux/

Cobalt ニュース

Micron Electronics のウェブホスティング子会社 HostPro, Inc.(www.hostpro.net) と Cobalt Networks, Inc., (www.cobalt.com) が提携。Cobalt RaQ 3 と HostPro のウェブホスティングの販売増を狙う。

Cobalt Networks Inc. は ウェブサイト用の高性能のクラスタリングソリューション、Cobalt StaQware を発表した。これは Cobalt RaQ 3i 上で動作し、複雑な設定は必要ない。

Linux の RAID ソリューション

LInux 対応の RAID 製品。SCSI、IDE 両ディスクドライブ対応で OS に依存しない。
www.raidweb.com

NetMax

Cybernet Systems Corporation は Linux 用 NetMAX インターネットアプライアンスソフトウェア2製品を発表した。旧製品と同様低価格ながら機能は大幅にアップしインストールも容易。NetMAX インターネットサーバスイートは一つの IP アドレスで複数のドメインをホストすることも可能で、ファイアウォールの機能も改善している。

ストリーミングサーバ

コミュニケーションサーバ、組込みソフトのサービスプロバイダ、Computer I/O Corporation は Easy I/O (TM) T1/E1 ストリーミングサーバを発表した。T1/E1 ストリーミングサーバは ユーザの LAN 環境から T1/E1 DS0 にダイレクトにアクセスできる。

http://www.computerio.com

LinuxMall と EBIZ (TheLinuxStore) が合併

LinuxMall.comTheLinuxStore.com が合併する。合併によりインターネット最大の Linux ショッピングモールとなる。合併後の収益は2,500万ドル以上。合併後の名称は LinuxMall.com となる。合併後は NASDAQ での上場を目指す。

Software Carpentry Design の決勝戦

Software Carpentry Project がオープンソースデザイン大会の決勝戦を迎える。

http://www.software-carpentry.com/first-round-results.html

CommuniGate Pro Mail Server の Linux StrongARM 版

Stalker Software はメッセージングサーバの Linux StrongARM バージョンを発表した。CommuniGate Pro は非常にポータブルなメッセージングシステムで、現在のインストールベースは小規模のISP から大規模の ISP やフォーチュン 500 の企業にまで及ぶ。プラットフォームは PowerPC、MIPS、Alpha、Sparc、StrongARM 上の Linux。シングルサーバで100,000アカウントをサポートし、CommuniGate Pro のクラスタリング機構を使用すれば事実上アカウント数は無制限となる。MIPS ベースの Cobalt Cubes で使用される CommuniGate Pro は理想的なインターネットアプライアンスだろう。トライアルバージョンはhttp://www.stalker.com/CommuniGatePro/ からダウンロードできる。

英国で初の Linux コンファレンス

英国で初めての Linux コンファレンスが開かれる。場所はロンドンのオリンピアコンファレンスセンターで幹事は SuSE inux LTD. が務める。テーマは企業サーバとしては認識され始めている Linux をデスクトップとしても広めようというもので IBM も参加している。
http://www.suse.com

Magic Software ニュース

Magic Software は Sintec Call Centers Ltd. と ITM を買収した。両社とも Magic Solutions Partner だ。

Magic Software Enterprise は フードサービス企業 Compass Group PLC に e-procurement ソリューションを提供する。e-procurement ソリューションは Magic のフランス子会社が開発したもので Magic の B2B ソリューションである Magic eMerchant を基に構築されている。アプリケーションは6月には稼動する予定。
http://www.magic-sw.com

Lutris Technologies、Solemate のウェブサイトサービス

Lutris Technologies は Solemate にインタラクティブの custmatix (www.customatix.com) ウェブサイトを提供する。Customatix.com はインタラクティブの E-commerce サイトで、クリックするだけで自分にあった靴を作ることができる。customatix.com は オープンソースの Java/XML アプリケーションサーバ、Enhydra (www.enhydra.org) を利用している。

Linux リンク MS Kerberos, Gnutella, オープンソース

How to publish a trade secret (Microsoft's Keberos 仕様)
Microsoft's Gamble of a Lifetime ソフトウェアベンダからASPへ

オープンソース

Napster と Gnutella

▼▼▼ソフトウェア関連ニュース▼▼▼

BORG の最新リリース

BORG(BMRT Ordinary Rendering GUI) の最新バージョン (0.2.20) のダウンロードがwww.project-borg.org から可能。Linux, WinNT, Solaris などの BMRT 対応のプラットフォームで動作する。Java 1.1.7 以上が必要。

Linux アカウンティングソフト

フル機能の Linux 版 AccounttiX が発表された。詳細な情報はwww.accountixinc.com を参照。

Loki: Heavy Gear II

Heavy Gear II から Loki は 3D オーディオとジョイスティックをサポートする。Heavy Gear II は Linux ネットワークに最適化されており、リアルタイムのネットワーク対戦が可能。2000年中にはさらに1ダース以上のゲームの Linux への移植が予定されている。

Loki は OpenAL を使った 3D サウンドサポートに注力している。Loki は1999年には16ゲームをリリース、2000年には16タイトルのリリースを予定している。
www.lokigames.com

Loki: Quake III Arena エディタ

Quake III Arena 用の Linux SDK がリリースされた。ダウンロードはunsupported beta versionから。

その他のソフトウェア

Kylix, Borlandの Delphi Linux 版

Aestiva HTML/OS, ウェブデータベース構築

CRiSP: プログラマ用のエディタ、FTPクライアント、vi/emacs エミュレーションなど機能豊富。21日有効の評価版

Cybozu 日本語オフィススイートの英語版、60日有効の評価版

ベクタドローイングアプリケーション、Canvas 7。ベータ版のダウンロードはDeneba のサイト から。

MontaVista: Linux カーネル用のリアルタイムスケジューラー。
http://www.mvista.com/realtime/rtsched.html

Linux 用 EiconCard Connections:EiconCard ネットワークインタフェースカードと併用して多様な通信機能を提供する

OperaはRSAの RASFE Crypto-Ci 1.0 暗号化ソフトウェアをオペラブラウザに利用。


This page written and maintained by the Editor of the Linux Gazette. Copyright © 2000, gazette@ssc.com
Published in Issue 54 of Linux Gazette, June 2000

フリーの Linux ISP (By Carlos Betancourt)

ISP の増加に伴いサービスも改善しており、料金も下がっている。それでも電話代は発生する。たとえ電話代がフリーになっても ISP の料金が発生する。フリーの ISP はユーザがインターネットにアクセスしているときに広告を表示する。Linux 版のフリーの ISP があったとしても広告が表示されるのではどうだろうか。そこでフリーで豊富な機能を提供する Linux ISP について考えてみたい。

フリーの Linux ISP のメリットは何か。次の世代の Linux ユーザを育てることと将来の IT 時代のために現在のインフラを渡すことだ。現在インターネット、コンピュータなどにアクセスが限られているのは子供だ。電話が従量制だったり、親がコンピュータを独占しては子供のアクセスは制限されてしまう。スポーツなどのように充実した環境を整えることは重要だ。子供のうちに十分なインフラにアクセスできるようになれば将来は明るい。Linux を使用させれば現在のデスクトップ競争などもなくなるだろう。

状況は変わりつつあるのかもしれないが人々は与えられたもの (OS) を使わされている。いずれは選択が可能になるのだろうがすぐにではない。Linux を広める努力はしなければならない。フリーのインターネットアクセスを提供するなどでだ。ウェブブラウザ、オフィススイート、ドローソフトなどエンドユーザに必要なものは揃っている。

Linux ユーザが増えれば Linux 自体への関心も高まる。バグリポートやユーザの要求が増えればそれだけ Linux の品質も改善されるというものだ。Linus や Alan のいないコミュニティは考えられないが将来のために新たな種をまく必要もある。これを読んでいる方もいつかはコミュニティへの貢献をしてみたいと思いませんか。

いずれの国にも共通のバックボーンがない。学問と商業のバックボーンは別だ。Linux のミラーやリポジトリは世界に分散しているがこれがまとまるとミラーサイトがあってもダウンロードは遅くなるだろう。ミラーサイトは重要だがフリーの ISP、全国的規模の ISP も重要だ。ここで議論する 0800-Linux ISP は全国的なものでなければならない。PPP リンクも IP ヘッダーだけではない別な圧縮も考えなければならない。 さらにシリアルロードバランスの利用や ISDN/xDSL も念頭に置かなければならない。

安全性はどうか。現在の ISP の機能で十分だろうか。「ビッグブラザー」の存在を忘れてはならない。0800-Linux ISP では暗号化 PPP、PGP/GPG の使用などで安全性を高めることができる。

ユーザベースが拡大すればそこに市場が形成される。ディストリビューション、サポート、Linux プレインストール PC の需要増大など新たな経済の時代が訪れようとしている今、そのきっかけを作らなければならない。その他将来訪れるだろう IT 技術者の不足にもこのオープン ISP 計画が役に立つ。コンピュータやインターネットに触れる人が多くなれば技能を有する人も多くなる。

フリーの Linux ISP が Linux コミュニティに有用なものだとしてそれを達成する資金はどうするか。既存の Linux/ オープンソースのファンドを利用することも可能だ。もしこのプロジェクトが実行されれば Linux ディストリビューションの企業が利益を得ることは確かだ。例えば SuSE、RedHat、Corel、Mandrake などは今までも多数のプロジェクトを支援してきた。このプロジェクトが実を結べばディストリビュータはフリーインターネットも売り込むことが可能になる。彼らの支援も得られるだろう。その他 Linux 関連書籍の出版社、Un*x のベンダ、ハードウェアベンダの支援も得られるだろう。Linux をプリインストールし、フリーのアプリケーション、オフィススイート、インターネットをバンドルしたマシンが売れればハードウェアベンダは M* に余計な支払いをしなくてすむ。

政府の立場はどうだろう。現在はあらゆる人々が情報、テクノロジに容易にアクセスできるようになったが南北間の情報格差は今後も拡大するだろう。サービス、情報、テクノロジにアクセスする人々が増加すればそれだけ格差が拡大する。インフラの充実ということを考えれば政府としても支援する理由がある。例えばプロジェクトに対する資金援助の際の減税などで。エンドユーザから見た場合はどうか。プロジェクトの趣旨からエンドユーザに課金をするわけにはいかない。エンドユーザは Linux をプリインストールしたマシンを手に入れ、0800-Linux とダイアルすればインターネットにアクセスできる。エンドユーザの支援としては例えばハードウェアの寄贈とか 既存の ISP への料金の何分の一かの寄付などが可能ではないだろうか。

このプロジェクトの実践にはまずメーリングリストを作り ダイアルアップでインターネットにアクセスしている Linux ユーザを確認する。フリーの Linux ユーザだけの ISP を作るには多額の資金が必要だ。ポイントを変えてみよう。資金調達ができフリーの ISP ができたとしたらこれは価値があるだろうか。もしそうなら資金調達の方法はいろいろある。これは Linux コミュニティ内部で実践しなくてはならないプロジェクトだ。


Copyright © 2000, Carlos Betancourt
Published in Issue 54 of Linux Gazette, June 2000

HelpDex (Shane Collinge)

今月の漫画 HelpDex をご覧になるには ここ をクリックしてください。


Linux 認定プログラム (By Ray Ferrari)

Linux Professional Institute (LPI) は Linux のキャリア増進、収益性拡大のための人材を広く募集している。これまでにも LPI と支援団体、企業はかなりの時間と金額を公正なテストシステムの導入に費やしてきた。LPI の認定テストは Virtual University Enterprises (VUE) を通して広範囲に行われている。現在 LPI はレベル2 認定プログラムに向けて作業を続けている。この作業に参加を希望する人はkara@lpi.orgscott@lpi.org へ連絡を。

今年は飛躍の年だ。LPI はフランス、ドイツ、オーストラリア、カナダ、アメリカなどでイベントを予定している。4月の Comdex and Linux Business Expo ではレベルワンのテストが行われ200人が受験した。現在ロンドンのオリンピアコンベンションセンターで6月1-2日(www.itevents.co.uk)、トロントで7月12-14日に Linux Business Expo (www.zdevents.com)、8月15-17日のサンノゼの Linux World (www.idg.com/events) などが予定されている。LPI は今後も最新の認定プログラムを提供するつもりでいる。ユーザの知識を資格で形のあるものに。


Copyright © 2000, Ray Ferrari
Published in Issue 54 of Linux Gazette, June 2000

CAD プログラム (By Keith Frost)

Linux には適当な CAD プログラムがないと言われたが、いくつかの選択肢がある。それぞれパワーや機能に差がある。

Qcad は多分最初の GPL CAD パッケージだ。Qcad はシンプルな 2-D エディタで フォーマットは DXF ファイルだ。名前は Qt ツールキットからきている。だが KDE が必ずしも必要ではない。筆者は Xfce と AfterStep で使用している。シンプルなアイコンメニューは機能的で利用しやすい。直線や円弧は座標を使って簡単に描くことができる。フォントは限られているようだが増やすことも可能だ。NACA のウィングセクションを取り込んでみたが正常だった。一部分を修正して保存し AC3D で表示してみたが問題はない。AC3D ユーザには手ごろな平面図エディタとして使えるだろう。

Qcad の図

図 1. Qcad

詳細な情報は Qcad のホームページhttp://www.qcad.org/index.php3で得られる。

CAM Expert は Qcad の商用版という感じだ。インタフェースは似ているが NC-プログラムの機能が豊富だ。NC-プログラムに限らず研削機械、CAM シミュレーションなど高機能だ。
http://www.ribbonsoft.com/から体験版がダウンロードできる。

CAM Expert の図

図 2. CAM Expert

SISCAD-P は 2-D パラメトリックの CAD システムだ。インストールは SuSE ユーザでなければ若干複雑だがそれだけのことはある。インタフェースは Sketcher に似ているが、非常に高機能だ。機能が制限されたデモバージョンがダウンロードできる。(ftp://tsx-11.mit.edu/pub/linux/packages/cad/)

SISCAD の図

図 3. SISCAD-P

ME10 は CoCreate の 2-D パラメトリック CAD だ。CoCreate は Hewlett-Packard の子会社で学習期間は非常に短い。操作はアイコンメニューから行う。特徴はパラメトリックでアセンブリはパーツの複数のコピーやインスタンスを含む。パーツが修正されるとインスタンスもアップデートされる。同様にアセンブリ自体も他のアセンブリのインスタンスとして挿入することができる。ビューは独自のブラウザを使用する。機能限定の体験版がダウンロードできる。(http://www.cocreate.com/english/products/2d/index.htm)

ME10 の図

図 4. ME10

CADDA はDAVEG のCAD だ。体験版は用意されていなかったが、外見はよさそうだ。CADDA は CAD、CAM の機能を有する。CAD データは 3-D、2-D モデルとしてインポートできる。CADDA は CNC マシンの工程で直接利用できる3D-CAD データを作成できる。また CNC マシンと直接接続することも可能。プラットフォームは HP-UX だったが1998年に 初めて Linux バージョンがリリースされ、現在のユーザは300に上る。詳しい情報はhttp://www.daveg.com/index_e.htmlから得られる。

Varicad はオプションでプルダウンメニューとアイコンメニューとを選択できる。プルダウンメニューは階層が深くなってしまうが、アイコンメニューはあまり直感的ではない。Varicad は昨年 LJ で好評だったこともありユーザは多い。DXF、IGS フォーマットをインポート、エクスポートでき、成形や 2-D 画像の回転などが可能。扱う立体はプリズム、円筒、関節、ピラミッド、錐体、螺旋など多種にわたる。アンドゥ、リドゥは分かりやすい。保存機能に制限のある体験版がダウンロードできる。さらにトライアルキーを取得すれば30日間使用できる。http://www.varicad.com/

Varicad の図

図 5. Varicad

Bentley は Microstation 製品で良く知られている。商用版はリリースされていないがアカデミック版が存在する。ホームページには商用版への請願書が用意されている。ユーザが増えれば考えるということなのだろう。アカデミック版は UNIX の商用版に比べ Paranoid ライブラリが付属していないだけだが、モデラー、TriForma、MS/J などが Paranoid ライブラリを使用している。http://www.bentley.com/academic/products/linux2.htm

Microstation の図

図 6. Microstation

Varimetrix は リリースされて3年になる。最新の製品は Vision だ。以前の VX Classic ともども商用版で個人ユーザがおいそれと購入できる価格ではない。そのために得られる情報も限られている。動作環境が Windows 95 以降ということになっているが Linux/Wine で快適に動作する。VX Classic はモジュールに分解できる。モジュールはモデリング、VX Assembly、製図、VX Manufacturing からなる。VX Manufacturing は CAM ツールだ。モジュールの機能は非常に多岐にわたる。ウェブページには何の記載もないが Vision の Linux 版は商用版がリリースされている。http://www.vx.com/

フリーの GPL から高価な商用版までいろいろなオプションがあります。今後リリース予定の製品もあります。Matra Datavision は Cascade ライブラリをオープンソースとして公開する予定です。今後に期待しましょう。同社のホームページ、http://opencascade.org/からは目を離せません。これからは GPL プロジェクトも商用版も区別なく理解しサポートしていくことが大事だと思います。


Copyright © 2000, Keith Frost
Published in Issue 54 of Linux Gazette, June 2000

ブート可能なCDROM (By Mark Nielsen)

この記事を読む前にCreating Installation Cds from various Linux Distributions. に目を通しておいてください。cdrecord の使い方が分かります。CDROM にライブの Linux ファイルシステムを作れば

などのメリットがある。本来はハードディスクドライブのないシステムを目指している。コアファイルシステムに CDROM、/tmp にはラムディスクを使い、その他は NFS を使用する。ブート可能な CDROM を作るための perl スクリプトとメソッドはまだ完全ではない。

まず EXT2 CDROM とブート可能なフロッピディスクが必要だ。iso9660 フォーマットの方が簡単だしそれを使う人にはこの部分は必要ない。ext2 フォーマットを使えば簡単にハードディスクでテストができる。テストするハードディスクはリードオンリーにする必要がある。

次に600メガからなるイメージを "dd" とループバックデバイスを使って作り、CDROM にコピーする。例えばファイルが /mnt/Partition にあるとするなら次のようになる。

  ブランクファイルを作成
    dd if=/dev/zero of=/tmp/Image bs=1024k count=650
  ブランクイメージをフォーマットする
    /sbin/mke2fs -b 2048 /tmp/image
    mkdir -p /mnt/CDROM_IMAGE
  ブランクイメージをマウントする
    mount -t ext2 -o loop=/dev/loop1 /tmp/Image/ /mnt/CDROM_IMAGE
  ハードディスクパーティションのファイルをイメージにコピーする
    tar -C /mnt/Partition -pc . | tar -C /mnt/CDROM_IMAGE -xvp
  rsync を使う場合
    rsync -a /mnt/Partition/* /mnt/CDROM_IMAGE
  イメージをアンマウントする

ISO9660 フォーマットの CDROM を使う場合は
  mkisofs -aJIL -r -o /tmp/Image /mnt/Patition
となる。
ここまでできたら /tmp/Image のファイルを CDROM へ焼こう。

ISO9660 フォーマットの CDROM の作り方も簡単に説明しよう。ISO9660 フォーマットの CDROM を使うことはその CDROM からシステムを起動できるということだ。これにはループバックデバイスやパーティションは必要ない。必要なのはディレクトリと "mkisofs" というプログラムだけだ。
ブート可能な CDROM を作るコマンドは次の通り。
  mkisofs -aJIL -r -o /tmp/Boot_Image /CDROM
    /CDROM はCDROM に焼くイメージのあるディレクトリ

ライブファイルシステムを作る上でもっとも大変なことは重要なファイルをコピーして設定することだ。Linux ファイルシステムと基本的に同じディレクトリ構造を持たなければならない。/usr 以下のファイルは重要なものだけを使えばいい。/tmp はラムディスクにマウントする。/var は /tmp/var だ。/tmp/Boot_Image に必要なディレクトリを作成し、必要なファイルをコピーする。次に etc/inittab ファイルを開いて runlevel を 1 に変更する。
  id:5:initdefault:  を
  id:1:initdefault:  に修正
etc/fstab の設定は例えば次のようにする。
/dev/hdc      /        ext2    defaults        1 1
/dev/fd0     /mnt/floppy             ext2    noauto,owner    0 0
none       /proc                   proc    defaults        0 0
none        /dev/pts                devpts  gid=5,mode=620  0 0
       
       
/dev/hda6               swap                    swap    defaults
スワップファイルの設定は実際の環境に合わせて変更する。

etc/rc.d/rc.local に次のコマンドを追加する。
mkfs -t ext2 /dev/ram0
mount /dev/ram0 /tmp
chmod 777 /tmp
chmod +t /tmp
ラムディスクを持ったブートディスクを作成する。

mkbootdisk `uname -r`
フロッピディスクをマウントして lilo.conf ファイルに "ramdisk=35000" を追加する。lilo.conf の内容は次のようになる。
boot=/dev/fd0
timeout=100
message=/boot/message
prompt
image=/vmlinuz-2.2.12-32
        label=linux
           ### /dev/hdc は実際の cdrom デバイス名
        root=/dev/hdc
        ramdisk=35000
image=/vmlinuz-2.2.12-32
        label=rescue
        append="load_ramdisk=2 prompt_ramdisk=1"
        root=/dev/fd0

liloコマンドを実行してフロッピディスクをアンマウントする。
  lilo -r /mnt/floppy_test
  umount /dev/fd0

これで CDROM を root にしたブート可能なフロッピディスクが出来上がった。フロッピディスクのイメージも CDROM に焼きこむなら lilo.conf は次のようになる。
boot=/dev/hdc
timeout=100
message=/boot/message
prompt
image=/vmlinuz-2.2.12-32
        label=linux
          
        root=/dev/hdc
        ramdisk=35000

フロッピディスクをアンマウントしてフロッピのイメージを CDROM に焼く。
  dd if=/dev/fd0 of=/tmp/Bootimage

この記事が大変大雑把なものになってしまいました。他の方々の力を借りてより良いものにしたいと思います。次回はもっと整理をするつもりです。


Copyright © 2000, Mark Nielsen
Published in Issue 54 of Linux Gazette, June 2000

シェルスクリプト入門 (By Ben Okopnik)

前回は繰り返しと条件分岐について説明しました。今回は便利なツールを紹介します。以前、クリッパデータベースを操作するスクリプトを書いていたとき "bash" の限界から大分苦労したことがあります。結局 "awk" を使って書き直しました。要した時間はわずか15分です。ツールを変えることに慎重になりすぎる必要はありません。

非常に使用頻度の高い "cat" は本来の機能以外にも便利な機能がたくさんある。-v オプションは EOF と TAB を除いて "^" で表示する。コマンドを実行して「バイナリファイル」というエラーメッセージが出る場合などに有効。"tr" コマンドの代役にもなる。-A オプションはすべてのキャラクタを表示する。行末と TAB を "$"、"I" で表示する。-n オプションは行番号を付加する。スクリプトを実行しているときに1-2行の文字列を挿入するようなミニエディタやスクリプトの最初に表示するエラーメッセージなどにも利用できる。次の二つのスクリプトを比較して欲しい。

  ...
  echo "'guess' - a shell script that reads your mind"
  echo "and runs the program you're thinking about."
  echo
  echo "Syntax:"
  echo
  echo "guess [-fnrs]"
  echo
  echo "-f    Force mode: if no mental activity is detected,"
  echo "      take a Scientific Wild-Ass Guess (SWAG) and execute."
  echo "-n    Read your neighbor's mind; commonly used to retrieve"
  echo "      the URLs of really good porno sites."
  echo "-r    Reboot brain via TCP (Telepathic Control Protocol) - for
  echo "      those times when you're drawing a complete blank."
  echo "-s    Read the supervisor's mind; implies the '-f' option."
  echo
  exit
  ...

  ...
  cat << !
  'guess' - a shell script that reads your mind
  and runs the program you're thinking about.

  Syntax:

  guess [-fnrs]

  -f    Force mode: if no mental activity is detected,
        take a Scientific Wild-Ass Guess (SWAG) and execute.
  -n    Read your neighbor's mind; commonly used to retrieve
        the URLs of really good porno sites.
  -r    Reboot brain via TCP (Telepathic Control Protocol) - for
        those times when you're drawing a complete blank.
  -s    Read the supervisor's mind; implies the '-f' option.

  !
  exit
  ...

二つの感嘆符の間の文字列がフォーマットされて stdout (ディスプレイ) に表示される。

一文字を処理する場合には "tr" が便利だ。例えば DOS のテキストを Unix のテキストに変換するスクリプトは次のようになる。

  #!/bin/bash
  [ -z $1 ] && { echo "d2u - converts DOS text to Unix."; echo \
       "Syntax: d2u <file>"; exit }

  cat $1|tr -d '\015'

少し道草をしよう。前回 "if" 節の説明をしたがもう一度繰り返そう。ここではステートメントや文法にあわせたコマンドを書く代わりにコマンドの戻り値を使う。コマンドは起動すると終了時に必ず値を返す。通常は正常終了の 0 と 異常終了の 1 だ。文字列の長さを返す関数の場合には文字列の長さになる。これをわれわれのスクリプトにも採用する。終了時に複数のメッセージを生成するなら ステートメントの最後に "exit n" を使おう。n が返されるコードだ。ただしこのコードは内部のフラッグで目に見えるものではない。テストのために "bash" では簡単な方法が準備されている。"&&" (論理積) と "||" (論理和) だ。上記のスクリプトは「もし $1 がなければ次のステートメントを実行する」という意味だ。"A && B" ステートメントは A が真で B も真なら(B がコマンドならこの場合は実行される)、"A || B" ステートメントは A が偽なら B が真(B がコマンドなら実行される)となる。次の二つのスクリプトは同じ動作をする。

  if [ -z $1 ] then
          echo "Enter a parameter."
  else
      echo "Parameter entered."
  fi
 [ -z $1 ] && echo "Enter a parameter." || "Parameter entered."

二つ目のスクリプトは少し分かりにくい。"&&" の後に続く部分が偽なら "||" に続く部分が実行される。"d2u" スクリプトに話を戻そう。2行目の最後の "\" は次の行に続くという意味だ。行が長くなる場合には読みやすくなる。ただしコマンドや引用符の途中では使わないようにしよう。それではスクリプトの肝心な部分に話を戻そう。"cat $1|tr -d '\015'" は本来のテキストをパイプで 'tr' に送り、DOS の CR を削除している。改行には DOS では "CR/LF" が使われ、Unix では "LF" が使われる。"tr" の man ページも参照してください。非常に役に立つコマンドです。

head/tail も非常に便利なコマンドで文法もほとんど同じだ。基本的な動作は与えられたファイルの最初の10行/最後の10行を表示する。ファイルの特定の行を示すスクリプトの例は次のようになる。
  ...
  handle=5
  line="$(head -$handle $1|tail -1)"
  ...
変数 handle の値は "5" なので "head -5" で特定のファイルの先頭から5行を読み込み "tail -1" で渡された行の最後の行を表示する。 同様のことはより強力なツール、"sed" でもできるが、同じことができるなら簡単なツールを使うというのが原則だ。工夫すれば大きなファイルの内容をチェックすることもできる。例えば複数のデータベースのファイルから特定の文字列を検索しファイル名を表示するには次のようにする。

  ...
  for fname in *dbf
  do
      head -c10k $fname|grep -is "cost_in_sheckels_per_cubit" && echo $fname
  done
  ...

"grep" は後で説明しよう。"head -c10K $fname" でファイルの先頭から10Kバイトを読み込み、"grep -is 'cost_in_sheckels_per_cubit'" で特定の文字列を検索する。見つかればファイル名を表示する。"tail" のオプションに "+" を付けると先頭何行目から表示をする。

cut/paste はフォーマットされたデータの項目を扱う便利なツールだ。ディレクトリの中の100K以上のファイルを検索し週に一度メールで報告するというスクリプトの例は次のようになる。

  ...
  ls -r --sort=size $dir|tr -s ' '|cut -d ' ' -f 5,9|grep \
      -E ^'[1-9]{6,} '|mail joe@thefarm.com -s "Logfile info"
  ...

"ls -r --sort=size $dir" はディレクトリの中のファイルをサイズの小さな順にソートして表示する。結果はパイプで "tr -s ' '" に渡され複数のスペースが一つに置きかえられる。結果をパイプで "cut -d ' ' -f 5,9" に渡す。再びパイプを使い、"grep" で最初が 1-9 で始まり5回続くものを検索し結果をメールで報告する。
paste はファイルを行ごとに統合するツールだ。曲名とアーティストが羅列されたリストから曲名を引用符で囲みたい場合のスクリプトは次のようになる。

  #!/bin/bash
  # Single-use file; no error checking

  cut -f 1 $1 > groups      # 'Tab' is the default separator
  cut -f 2- $1 > songs
  for n in $(seq $(grep -c $ songs))
  do
      echo '"'>>quotes
  done

  paste -d "" quotes songs quotes > list1
  paste list1 groups > list

  rm quotes songs groups list1

まずファイルの最初のアーティストを "groups" ファイルへ、残りの曲名を "songs" ファイルに分ける。"songs" と同じ行数の "quotes" ファイルを作成する。これには引用符が入っているだけだ。"paste" で引用符、曲名、引用符のファイルを作り、さらに "paste" でアーティストを加える。最後に作業ファイルを削除すれば終了だ。

grepは正規表現を使用してファイルからマッチした文字列を検索するツールだ。例えば400以上のファイルがあるディレクトリで "Who hath desired the Sea" を検索したい場合、

  Odin:~$ grep -iA 12 "who hath desired the sea" *

を実行すると結果は次のようになる。

  Poems.txt-Who hath desired the Sea? - the sight of salt water unbounded -
  Poems.txt-The heave and the halt and the hurl and the crash of the comber
  Poems.txt-    wind-hounded?
  Poems.txt-The sleek-barrelled swell before storm, grey, foamless, enormous,
  Poems.txt-    and growing -
  Poems.txt:Stark calm on the lap of the Line or the crazy-eyed hurricane
  Poems.txt-    blowing -
  Poems.txt-His Sea in no showing the same - his Sea and the same 'neath each
  Poems.txt-    showing:
  Poems.txt-        His Sea as she slackens or thrills?
  Poems.txt-So and no otherwise - so and no otherwise - hillmen desire their
  Poems.txt-    Hills!
  Odin:~$
 
grep には多様なオプションがあり、詳細な検索方法や表示方法を指定することができる。上の例では "-A" でパターンがマッチした行以降の12行を表示し、"-i" オプションで大文字小文字の区別をしないと指定している。これまでのスクリプトの例でも何度も使用されており、実際の環境でも "grep" の使用頻度は非常に多い。バイナリファイルの中のテキストの検索なども可能だ。

良いシェルスクリプトを書くにはそれぞれのツールについての十分な知識が必要になる。"man" を常に参照するようにしよう。これらのツール以外にも便利なツールはたくさんあるがとりあえずこの6個のツールからはじめて欲しい。これらのツールは常に使われるものでしかもシェルスクリプトの幅を大きく広げてくれるものだ。


Copyright © 2000, Ben Okopnik
Published in Issue 54 of Linux Gazette, June 2000

Python のスペシャルメソッド (By Pramode C E)

C++ では演算子のオーバーロードという手法があり、これを利用することでクラスの計算などが通常の数字や浮動小数点数などの計算と同じように処理することができる。Python にも同じような機能があるが実装はシンプルで明快だ。今回は Python のスペシャルメソッドを簡単に説明しよう。

Python でのクラス定義は次のようになる。






class foo:


	def __init__(self, n):


		print 'Constructor called'


		self.n = n


		


	def hello(self):


		print 'Hello world'


		


	def change(self, n):


		print 'Changing self.n'


		self.n = n





f = foo(10)  # データ n に10という値を持つクラス foo を作成


print f.n    # n を表示


f.m = 20     # 新たなデータの追加も可能


f.hello()    # 'Hello world' と表示


foo.change(f, 40)


print f.n    # 40 を表示





__init__ は C++ のコンストラクタと同じような特別なメソッドでオブジェクトが作成されるときに自動的に呼び出される。メンバ関数には引数として "self" が渡されている。f.hello() が呼び出されるときはクラス foo が引数を f として呼び出される。この引数が通常 "self" と呼ばれている。C++ の "this" と同じようなものだ。

次のクラス定義を見てみよう。



class foo:


	def __init__(self, n):


		self.n = n


	def __add__(self, right):


		t = foo(0) 


		t.n = self.n + right.n


		return t


次に foo のオブジェクト f1、f2 を作成し加算する。


f1 = foo(10)  # f1.n is 10


f2 = foo(20)  # f2.n is 20


f3 = f1 + f2  


print f3.n    # prints 30


これを実行すると Python のインタプリタは f1.__add__(f2) を呼び出す。関数 __add__ の "self" には f1 が、"right" には f2 が入る。

次に __add__ スペシャルメソッドの別な面を見てみよう。



class foo:


	def __init__(self, n):


		self.n = n


	def __radd__(self, left):


		t = foo(0) 


		t.n = self.n + left.n


		print 'left.n is', left.n


		return t


	


f1 = foo(10)


f2 = foo(20)


f3 = f1 + f2  # prints 'left.n is 10'


上の例との違いは f1+f2 が f2.__radd__(f1) になっていることだ。

__str__ スペシャルメソッド



class foo:


	def __init__(self, n1, n2):


		self.n1 = n1


		self.n2 = n2


	


	def __str__(self):


		return 'foo instance:'+'n1='+`self.n1`+','+'n2='+`self.n2`


を定義し実行すると次のようになる。


f1 = foo(10,20)


print f1    # prints 'foo instance: n1=10,n2=20'





Python に興味を持ったら Python Language Reference を参照し、__repr__ も見てください。

次は真偽を判定する機能です。__nonzero__ は呼ばれると 0 か 1 を返します。定義されていない場合は __len__ が定義されていれば __len__ が呼ばれます。どちらも定義されていなければ真とみなされる。使用例は次のとおり。



class foo:


	def __nonzero__(self):


		return 0


		


class baz:


	def __len__(self):


		return 0


		


class abc:


	pass


	





f1 = foo()


f2 = baz()


f3 = abc()


		


if (not f1): print 'foo: false'  # prints 'foo: false'


if (not f2): print 'baz: false'  # prints 'baz: false'


if (not f3): print 'abc: false'  # does not print anything





次は list を考えてみよう。list の特徴はインデックスをつけられるということだ。つまり "print a[i]" という書き方ができる。そのための関数が __getitem__ だ。使用例は次のようになる。



class foo:


	def __init__(self, limit):


		self.limit = limit


		


	def __getitem__(self, key):


		if ((key > self.limit-1) or (key < -(self.limit-1))):


			raise IndexError


		else:


			return 2*key


			


f = foo(10)       # f acts like a 20 element array 


print f[0], f[1]  # prints 0, 2


print f[-3]       # prints -6


print f[10]       # generates IndexError





その他利用できる関数は __setitem__、__delitem__、__getslice__、__setslice__、__delslice__ などだ。

__getattr__(self, name) は第二引数に渡された属性の参照が失敗したときに呼ばれる。戻り値は AttributeError か属性の値だ。使用例は次のとおり。



class foo:


	def __getattr__(self, name):


		return 'no such attribute'


		


f = foo()


f.n = 100


print f.n     # prints 100


print f.m     # prints 'no such attribute'





getattr(object, name) という組込みファンクションも同じような機能を提供している。

Python のディストリビューションには便利なドキュメントが添付されている。もし読者が Python の入門者ならtutorial を参照することを薦める。言語、ライブラリの説明も載っている。


Copyright © 2000, Pramode C E
Published in Issue 54 of Linux Gazette, June 2000

Linux プレインストールのラップトップ (By Richard Sevenich)

Linux ユーザで仕事で出かける機会の多い人はラップトップが欲しいと考えることが多いと思います。そう言う筆者も昨年9月に theLinuxStore からラップトップを購入しました。その経験を Linux Gazette の読者と共有したいと思います。購入したラップトップの仕様は次の通りです。
CPU AMD K6-2 3D 300
ディスプレイ 13.3" XVGA (1024x768) TFT カラー液晶
メモリ 64 メガバイト
ビデオカード Neomagic NM2160 128-bit, 2MB RAM
ハードディスクドライブ 4.3 ギガバイト
マウス ps/2 互換タッチパネル
cdrom 24X
3.5" フロッピ 1.44
サウンド 16-ビット, マイクロフォン, スピーカ
外部インタフェース 外部モニタ, パラレル, Fasr irda, usb, etc.
モデムとイーサネットの機能のために PC カードも注文しました。合計でも 1800ドル以下です。注文したのは9月30日、納期は5日の予定でしたが届いたのは10月半ばでした。届いたマシンの性能はは期待したとおりでした。タッチパネルが好きではないのでマウスを後で注文しました。この時点で不満は二つだけです。

メモリ不足に関しては theLinuxStore に電話をして足りない分を送ってもらいましたが届いたのは8メガバイトで、再び電話をし8メガバイトメモリを送り返しました。続いて届いたのは何と128メガバイトであいにく筆者のシステムでは利用できません。3度目にようやく注文どおりのメモリが届き仕様どおりのシステムになったのは3月半ばでした。

手に入れたマシンは仕事で出かけるときに携帯し非常に助かりました。Linux ドライバの入門コースを受講したときには後で実際に復習ができてとても助かりました。でもマシンが壊れてしまうことほど悪いことはありません。それが現実になってしまいました。液晶パネルが壊れてしまったのです。又 theLinuxStore に電話をしマシンを修理のために発送しました。UPS の追跡システムで マシンが theLinuxStore に到着したのは4月17日だと分かりました。theLinuxStore はマシンを修理のためにベンダに発送しました。5月23日現在、マシンの修理がいつ終了するかに関して theLinuxStore から何の返事もありません。これがいつ解決するか分かりませんが、分かった時点で Linux Gazette 上でお知らせするつもりです。


Copyright © 2000, Richard Sevenich
Published in Issue 54 of Linux Gazette, June 2000

安全なゲートウェイの構築 (By Chris Stoddard)

Linux Gazette の3月号でセキュリティを考慮したゲートウェイの構築方法を説明しました。今回は非常にスリムなゲートウェイを構築してみます。容量は130メガバイト程度プラススワップ領域。X Windows はインストールしないが、Midnight Commander はインストールする。前提条件は読者が Linux のインストールに関する知識がありケーブルモデムや DSLなどでインターネットに常時接続していること。

必要なシステムは 486、メモリ16MB、200MB ハードディスクドライブ、ネットワークカードが2枚、それに CD-ROM かネットワーク経由でインストール可能なこと。筆者が使用するマシンは50ドルで買った486 DX2 66、16MB RAM、512MB ハードディスクドライブ、サウンドカード、4X IDE CDROM のマシンから 486DX4 100、40MB RAM、サウンドカードをはずしてネットワークカードを2枚装着、あまっていたSCSIカードと 320MB の SCSI ハードディスクドライブ搭載に変更しました。使用するのは RedHat Linux 6.x です。どのディストリビューションでも動作すると思います。モニタが必要なのはインストール時だけです。まず始めに openssh のバイナリファイルを手に入れます。RedHat 6.2 を使っているなら ftp://thermo.stat.ncsu.edu/pub/openssh-usa から次のファイルをゲットしてください。

RedHat 6.x (6.2以前)のバージョンを使っている場合は次のファイルもダウンロードしておきます。

Linux をインストールし設定します。デフォルトの設定と違っている部分だけ説明します。

  1. パーティション設定の画面でカスタムインストールを選択し、次のようなパーティションを作成する。
    
    
    Partition     Minimum size     % of total        Mine
    
    
    /                    40 MB            10%       75 MB
    
    
    /boot                 5 MB            5 MB       5 MB
    
    
    /home               100 MB            25%      200 MB
    
    
    /tmp                 40 MB            10%       75 MB
    
    
    /usr                220 MB            45%      320 MB 1
    
    
    /var                 40 MB            10%       75 MB
    
    
    swap                 64 MB         2X RAM       80 MB 2
    
    
    

    1  単純にするために全SCSIディスク容量を使用
    2  実際にはスワップ領域はメモリのサイズと同じぐらいにします。ウェブや ftp サーバを運営するなら大きくとったほうがいい。
    上記の構成は目安です。ハードディスクが十分に大きければ swap と /boot の領域を確保して後は上記割合で割り振ればいい。ハードディスクが512MBより小さければ swap と root パーティションだけを作成する。/home と /tmp は必要に応じて nosuid や nodev などのオプションをつけます。
  2. インストールするコンポーネントは Networked Workstation, Network Management Workstation, Utilities, さらに個々のパッケージを選択する。Lynx を選択するのを忘れないように。
    次のパッケージはインストールする必要はない。
    git, finger, ftp, fwhois, ncftp, rsh, rsync, talk, telnet, ghostscript, ghostscript-fonts, mpage, rhs-printfilters, arpwatch, bind-utils, knfsd-clients, procinfo, rdate, rdist, screen, ucd-snmp-utils, chkfontpath, yp-tools, XFree86-xfs, lpr, pidentd, portmap, routed, rusers, rwho, tftp, ucd-snmp, ypbind, XFree86-libs, libpng, XFree86-75dpi-fonts, urw-fonts
  3. システムを再起動後、ルートでログインし、次のコマンドを実行してインストール時にはずせなかったパッケージをアンインストールする。
    
    
    rpm -e --nodeps pump mt-st eject bc mailcap apmd
    
    
    kernel-pcmcia-cs getty_ps setconsole setserial raidtools
    
    
    rmt sendmail
    
    
    
    Linux の習熟度により Linuxconf, kudzu, kbdconfig, authconfig, timeconfig, mouseconfig, ntsysv, setuptool などもアンインストールしてかまわない。
  4. RedHat からダウンロードした rpm ファイルをフロッピディスクへコピーしインストールします。
    mount -t msdos /dev/fd0 /mnt/floppy
    rpm -Uvh /mnt/floppy/*.rpm
  5. Openssh ファイルを同じくフロッピディスクにコピーしてから新しいマシンにインストールします。
    mount -t msdos /dev/fd0 /mnt/floppy
    rpm -ivh /mnt/floppy/open*
    次に /etc/ssh/sshd.config ファイルを開いて "PermitRootLogin yes" の項を "no" に変更します。これは root でのログインを禁止します。root でログインする必要がある場合には一般ユーザでログインしてから "su" でルート権限を得ましょう。
今回はファイアウォールの設定までは説明できません。3月号の "IP マスカレードを使ったプライベートネットワークとロードランナー" を参照してください。

セキュリティの観点からファイアウォールが動作しているマシンで DNS サービスを動作させることは薦められません。個々のクライアントは ISP を使用する設定にするか、別のマシン上で動作させるべきです。ファイアウォール上では inetd サービスも必要ないと思います。開いているポートは ssh の22だけにすべきです。ネットワーク上に複数のユーザがいる場合は プロキシ/キャッシュ プログラムを走らせてもいいかもしれません。お勧めは Squid です。キャッシュをしないプログラムにはhttp://www.waldherr.org/junkbuster からダウンロードできる Junkbuster がある。これなら高性能の CPU や 大量のメモリなどを必要としない。ファイアウォールにはSeawallpmfirewall などがある。pmfirewall は設定も簡単だがオプションも逆に少ない。


Copyright © 2000, Chris Stoddard
Published in Issue 54 of Linux Gazette, June 2000