Linux Gazette 12月号
今月のLinux Gazette の内容
n今月のニュース
n Linuxユーザー漫描
nアタリST Emulationの技術
n音響処理パイプライン
n マイクロソフト彌縫策の棘
nデスクトップの争い
n dddを用いるビジュアルデバッグ
nディストリビューションのサポートのないルートデバイスをLinuxに搭載
n Answer Gangの投稿指針
nコンピュータ馬鹿話
n無料ソフトへの感謝
n Procmail を用いるコンテント管理
nドキュメンテーションを書く−パート1:POD
n MP3再生リストの管理
 
 
 
今月のニュース
  ・法制化
  ・行事予定
  ・一般ニュース
  ・ディストリビューション関連ニュース
  ・ソフトウエア関連ニュース
 
▼▼▼法制化▼▼▼
ヨーロッパの法制化
欧州特許局からの悪い知らせだ。アメリカの同僚達が骨抜きにしたソフトウエア特許活動の一片を欲しがっているように思われる。Eurolinux の報道によれば、欧州特許局は「欧州政府の取った政治的決定を先取りして、コンピュータプログラムへの特許請求を認めると決めた」。改訂規則は覚書related memoと一緒にオンラインavailable onlineで入手出来る。

これは、ソフトウエア特許自体への反感からもこの導入の非民主的性質の点からも、暴挙である。フランス日刊紙ルモンドがい言うように、欧州政府は問題条項の変更を細部の調査が完了するまで延期することに決した。

ドイツ経済技術省(BMW1)がおこなった調査studyでは、ソフトウエア特許は現在成功している多くのソフトウエア会社を苦況に追い込み、ソフトウエア分野で革新を減速させることが見出された(おかしなことに、この報告書はさらに進んでこれら特許の導入を推薦している)。欧州委員会諮問報告書consultative report は、回答者の91%がソフトウエア特許に反対と述べている。しかし、「経済的大勢」は特許に好意的だ。

ソフトウエア特許に関心のある人が利用出来るオンライン情報源がいくつかある。

Eurolinux はこれら「進歩」に対する反対者である。 Petition for a Software Patent Free Europe には80,000人もが署名している。参加されては如何?
Federation for a Free Informational Infrastructure にもこの問題に関する広範囲なニュースと情報がある。特に犯罪的な52条に関する改訂と解釈の guide がある。
AFUL (Linux利用者連合) には、色々な意見を述べたmailing list がある。オンラインonlineで利用出来るアーカイブ(各国語)は読む価値がある。

スラショットは新 European Cybercrime Treaty.(欧州サイバー犯罪条約)の署名を報じた。最終版はここ hereで入手できる。これはコンピュータを使った犯罪に関する法律を署名各国が立案する際の下敷きとなる。ガーディアンが報じる通り、この条約は「コンピュータ関連犯罪の共通定義を概説し、犯罪捜査と立件の方法を定め、法制関係者間の国際交流の方法を確立している」

好意的な見方もあるが、市民団体は、警察力が強すぎてプライバシイを侵すと非難している。一つの慰めは、security work (安全作業)における「ハッキング/クラッキング」ツールの使用の正統性が条約に明記されたことだ。それでも、逃亡犯罪人引き渡しと越境行動に関する条項が悲劇的悪用を受けるとの強い懸念がある。


ヨーロッパニュースの最後に、EUマイクロソフト公聴会が12月に開催され2002年初めに判決が出る。どうなるかは分からない。

 

● 英国の進展

英国政府は、欧州サイバー犯罪条約に余り関心がない。既に厳しい対策を講じているからだ。テロの脅威のある現況の下で、物事はさらに厳しく監視されている。デビッド・ブランケット(英国内務大臣)が導入した新対策は、法令執行当局に全英国の電話とインターネットのユーザー記録を見る権限を与えた。この傍聴はテロリスト捜査だけでなく、軽犯罪や税金にも適用される。これは、ガーディアンが報道した。これは基本的には、外部セキュリテイの少ない傍聴の捜査権を政府に与え裁判所の命令さえ不要とした彼の評判の悪い捜査権法2000の拡張/明確化である。国家安全や経済的福祉が関係する場合の手続きに、判事が関与するのは明らかに「不適切」である。「刑法レビュー」誌は「全く非論理的だ」を述べている。

Foundation for Information Policy Research (FIPR) と Magna Carta Plus に本件及び関連問題に関する沢山の情報がある

 

OEMソフトウエア再販業者に対するAdobeの差止請求を地裁が却下

(1)ソフトウエアは「使用権許諾」か「販売」か(2)使用許諾契約(EULA)の有効性の問題を提起した事件において、米国地裁は、元々OEM方式でコンピュータに包含されているがコンピュータ所有主が希望しないAdobeソフトウエアに関し、ソフトマン・プロダクト社に対するAdobeの差止請求を却下した。

判決は、包含ソフトウエアは「使用許諾」であって「販売」ではないとのAdobe主張を却下した。そこで、Adobeは初期販売後のソフトウエア移転を管理出来ないとの、第一販売原理が適用される。法廷はまた、ソフトマンがEULAに同意した事実はないので、それに束縛されないとも言う。販売に先立って条文が完全に明らかにされなかったことからEULAの有効性もまた疑われた。Linux Joural に詳しい記事がある。

Linux Weekly News もまた、本件が他の事件に及ぼす影響を検討した論説を載せている。一つの可能性は(第一販売が適用されるとき)e-ブック再販または不要OS搭載が可能になることである。DeCSS事件にも影響する。これらの事件は「市販DVDパケージが”不当に”逆工作された事件に一部関連する」。逆工作を禁止するのはソフトウエアのEULAである。搭載せずEULAに同意しないでコードを逆工作したとき(例えばLinuxシステム上で逆アセンブルしたとき)EULAは適用されないことになる。

 

Lawrence Lessig

通信関係を管理から自由に変形するインターネットの革新と、その多くが再び管理される実際の脅威に関するLawrence Lessigの記事がForeign Policy にある。

重要な各種インターネット・プロトコル及びサービスを発明し、管理との戦いに資本を投じた人達について面白い意見を述べている。「世界の政策立案者はインターネット反革命に最も強く守られたインターネットは、彼らのものでは無いことを認めるべきである。革新により最も脅かされるものがそれに抵抗することを可能にする法律機構を、彼らは疑うべきである。」

 

● Yahooのナチス遺物競売に対するフランス立法を地裁が拒否

米国地裁裁判官ジェレミイ・フォーゲルは、Yahooが、フランス国民もアクセス出来る米国サイトでナチス記念品を競売するの禁じたフランス裁判所の命令に効力を与えるのを拒否した。

LGは、立場が逆で、その米国特許とDMCA著作権を外国でも認めさせようとする米国会社の今の努力を見たとき、裁判官はどう判決したか興味を持ち。

 

DeCCSの吉報と凶報

スラショットの報道によれば、カリフォルニアのDeCSS事件において、上訴審は下級審の差止命令を差し戻した。曰く「負担が大きくなって第一改訂より出版に対する脅威が大きい。最高裁でも優先権制限はしていない」。明るい発展だが、未だ道は遠い。

少し暗いが、ニューヨークMPAA対2600の事件で、上訴審判決はMPAAに軍配を上げた。判決文はここ here とここhere。Cryptome.org が両件の文書を集めてcollection いる。判決は、コンピュータ・コードが第一改訂の談話の形で保護出来ると言う。次いで、差し止め命令の対象はスピーチではないとしながら、基本要件であるとした。したがって「内容に無関係」でスピーチ部分に対する影響が偶発的である限り差し止め命令は与えられるとした。判決文は、次のように言う。

この規制の型はしたがって「内容に無関係」である。キイが偶然にスピーチ部分として格付けされると宣伝されていても、監獄のキイを開ける能力があれば規制されるのと同様だ。
判決理由の別の部分は、著作権物質に対する未承認アクセスの禁止における政府の利害は「疑いの余地無く重要」とする。よって、差し止め命令は有効。同様の論理がDeCSSを含むウエブペイジへの連結に対する差し止め命令にも適用される。
公正使用の原理に基づく差し止め命令への苦情は、ユーザーには公正使用が許されているが、勝手な技術を使って自動的にその権利を生じるのではない。CSSは、映画から静止画像を取るのは禁止するが、画面の写真を撮ることは禁じない。だから公正使用は影響を受けない。
DeCSSが海賊ツールであるか否かの問題は脚注5に追いやられた。脚注は正しく、海賊行為は全くDeCSSがなくても可能であるが、DeCSSはその過程で重要な手段である、と言う。海賊問題が流言であることに争いはあるが、MPAAが出て来る最大の論拠だ。

注記:筆者は法律家ではないので、この解釈は、今月の締め切り前に慌てて読んだ法律に基づく。しかし上述に重要な点は含まれていると思う。法律/意見には自分の考えをまとめられたい。個人的には2種類の区別があると思う。コンピュータ・コードに関してスピーチとファンクションを分けることは、キイの上のロゴや鉄砲の上の詩の場合のように明確ではない。また、合法的に購入したDVDをLinux上で再生するの問題は退けられて、DMCAの1201(a)(3)(A) 項が適用される。


スラショットにはeyewitness account of the Felten vs RIAA hearing. がある。覚えておられるだろうが、フェルトン教授が商業DVDに使われるCSS暗号の弱点を述べた論文を書いた。RIAAは、論文を学会に論文を提出したら訴えると脅迫した。だが訴えなかった。公衆の声に応じて論文提出への反対を引っ込めた。一方フェルトンは、RIAAの行動により、研究者が自己規制をするようになったと、自分で訴えた。訴えは却下された。事実問題でない可能性の問題(訴えるとのRIAAの脅迫)を取り上げることは出来ないと言う。彼は犯罪でない場合の憲法問題(フェルトンの自由発言権が侵された)が理由もなく退けられたと言う。彼は、ドリミティ・スクリャロフの事件と裏腹だと言う。ドリミティは商業利得を侵害したとして刑罰を受けた。


ドリミティの公判は、却下されなければ2002年4月15日の予定

これらの問題の詳細は Electronic Frontier Foundation ホームページ。

 

Napsterに関する凶報

悪いニュース。電子フロティア基金(Electronic Frontier Foundation)は、Nasperはユーザー共有ファイルについて有責であるとの米国上訴審判決に関する白書white paper を出版した。裁判所は、ファイル共有技術そのものは非合法でないと認めたが、その開発者またはユーザーが、特定の侵害ファイルがシステム上でサービス出来るとの合理的な知識を得た瞬間に、これらのファイル又はそのISPを削除しなければならない責任があると言う。侵害使用の知識は、ユーザーのおこなう非侵害使用に影を落とす。実際問題として、脅しによる削除、侵害していないが侵害ファイルに関係あるファイルの削除などの影響がある。また、システム管理者が会社利益代表にならないと、責任を問われる結果となる。警察ユーザーがアクセス出来ないフリーネットのような技術が、この規則の下では利益を得る。

 
 
 

▼▼▼行事予定▼▼▼

第15回システム管理コンファレンス/LISA 2001
    2001年12月2-7日、カリフォルニア州サンディエゴ
                     http://www.usenix.org/events/lisa2001/
家電ショウ(CEA)
    2002年1月1-11日、ネバダ州ラスベガス
                     http://www.cesweb.org/
バイオインフォーマティクス技術コンファレンス (O'Reilly)
    2002年1月28-31日、アリゾナ州チュクソン
                     http://conferences.oreilly.com/biocon/
COMNET コンファレンスとエキスポ(IDG)
    2002年1月28-31日、ワシントンDC
                     http://www.comnetexpo.com/
LinuxWorld コンファレンスとエキスポ(IDG)
    2002年1月30日−2月1日、ニューヨーク
                     http://www.linuxworldexpo.com/
第10回年次 Python コンファレンス("Python10")
    2002年、2月4-7日、バージニア州アレキサンドリア
                     http://www.python10.org/
豪州Linux コンファレンス
    2002年2月6-9日、豪州ブリスベーン
                     http://www.linux.org.au/conf/
インターネット器具ワークショップ
    2002年2月19-21日、カリフォルニア州サンノゼ
                     http://www.netapplianceconf.com/
インターネットワールド無線イースト(Penton)
     2002年2月20-22日、ニューヨーク
                     http://www.internetworld.com/events/weast2002/インテル開発者フォーラム(Key3Media)
    2002年2月25-28日、サンフランシスコ
                     http://www.intel94.com/idf/index2.asp
COMDEX (Key3Media)
    2002年3月5-7日、イリノイ州シカゴ
                    http://www.key3media.com/comdex/chicago2002/
BioIT ワールド コンファレンスとエキスポ(IDG)
    2002年3月12-14日、マサチューセッツ州ボストン
                     http://www.bioitworld.com/
埋め込みシステム・コンファレンス(CMP)
     2002年3月12-16日、サンフランシスコ
                     http://www.esconline.com/sf/
CeBIT (ハノーバ・フェア)   
    2002年3月14-22日、ドイツ、ハノーバー
                     http://www.cebit.de/
COMDEX (Key3Media)
     2002年3月19-21日、バンクーバー
                 http://www.key3media.com/comdex/vancouver2002/
FOSE
     2002年3月19-21日、ワシントンDC
                     http://www.fose.com/
ゲーム開発者コンファレンス (CMP)
     2002年3月19-23日、カリフォルニア州サンノゼ
                     http://www.gdconf.com/
LinuxWorld コンファレンスとエキスポ・シンガポール (IDG)
     2002年3月20-22日、シンガポール
                     http://www.idgexpoasia.com/
ソフトウエア・ソリューション/eビジネス・ワールド
     2002年3月26-27日、カナダ、トロント
                     http://www.softmatch.com/soln20.htm#ssebw
SANS 2002 (SANS 研究所)
     2002年4月7-9日、フロリダ州オーランド
                     http://www.sans.org/newlook/home.htm
LinuxWorld コンファレンスとエキスポ・マレーシア (IDG)
     2002年4月9-11日、マレーシア
                     http://www.idgexpoasia.com/
LinuxWorld コンファレンスとエキスポ・ダブリン(IDC)
     2002年4月9-11日、インド、ダブリン
春季インターネットワールド (Penton)
     2002年4月22-24日、カリフォルニア州ロスアンゼルス
                    http://www.internetworld.com/events/spring2002/
O'Reilly 新出現技術コンファレンス (O'Reilly)
     2002年4月22-25日、カリフォルニア州サンタクララ
                     http://conferences.oreillynet.com/etcon2002/
ソフトウエア開発 コンファレンスとエキスポ(CMP)
     2002年4月22-26日、カリフォルニア州サンノゼ
                     http://www.sdexpo.com/
連邦オープンソース・ コンファレンスとエキスポ (IDG)
     2002年4月24-26日、ワシントンDC
                     http://www.idgworldexpo.com/
Networld + Interop (Key3Media)
     2002年5月7-9日、ネバダ州ラスベガス
                     http://www.key3media.com/
厳密 e-ビジネス・ソリューション・エキスポ (Cygnus Expositions)
     2002年5月8-9日、ミネソタ州ミネアポリス
               http://www.strictlyebusiness.net/strictlyebusiness/index.po?
埋め込みシステム・コンファレンス(CMP)
     2002年6月3-6日、イリノイ州シカゴ
                     http://www.esconline.com/chicago/
USENIX 年会(USENIX)
     2002年6月9-14日、カリフォルニア州モントレー
                     http://www.usenix.org/events/usenix02/
PC エキスポ(CMP)
     2002年6月25-27日、ニューヨーク
                     http://www.techxny.com/
USENIX セキュリティ・シンポジウム(USENIX)
     2002年8月5-9日、カリフォルニア州サンフランシスコ
                     http://www.usenix.org/events/sec02/
LinuxWorld コンファレンスとエキスポ(IDG)
     2002年8月12-15日、カリフォルニア州サンフランシスコ
                     http://www.linuxworldexpo.com/
LinuxWorld コンファレンスとエキスポ・オーストラリア (IDG)
    2002年8月14-16日、オーストラリア
                     http://www.idgexpoasia.com/
通信設計コンファレンス(CMP)
      2002年9月23-26日、カリフォルニア州サンノゼ
                     http://www.commdesignconference.com/
 
 
 
▼▼▼一般ニュース▼▼▼
Kernelニュース
Kernel 2.4.16 が発表された。(最近発表された)2.4.15のfs衝突を起こすバグを修正した。2.4.17の最初の予備バージョンのチェンジログはここ here 。2.4xのメンテナンスは、Marcelo Tosattiに引き渡した。だが、恐るべきバグは彼でなくLinusの失敗だ。

新開発シリーズ2.5xが発足した。しかし、2.5.0は2.4.15と同じなので、同様のバグがある。言い換えると、これを使わないこと。LWNは、そのバグを修復した2.5.1-pre3 の入手をここ reported で報じた。大きい変更はない(ほとんどが修復)。kernel開発の中絶がこれで終わる

 
Linux及びMS対LinuxでAmazonがドル節約
CNet は最近、Amazon社はLinuxへの切り替えで前の四半期に技術費用を約1700万ドル節約したと報じた。AmazonのSECにリンクするRefisterもこれを報じている。

この利得はUNIXサーバー (WinInfo)の費用であることは指摘する価値がある。RefisterのマイクロソフトメモでもLinuxを「長い目で見た脅威」と言っている。MSはUNIXサーバーをMSサーバーに変える障碍はLinuxであると見ている。営業マンは客先組織内のUNIXサーバーを見付けて、早く(Linuxになる前に)MSを組み込むよう急かされている。

これは1998年のHalloween memo を思い出させる。「予想のうち幾つ当たるか」を質疑応答形式で書いている。

 

ブラウザ締め出しが有効な一方マイクロソフトPRスピンは続く

先月、インターネットエクスプローラ以外のブラウザではMSNが働かない問題を取り上げた。それ以後、マイクロソフ広報がメディアに流した不正確な情報の詳細をOperaが発表した。サイト特性のすべてが「MSIE5」でないブラウザで利用出来るのではない。正しいサービスを得る方法は、ブラウザアイデンティを「MSIE5」にすること。これらの行動は(Opera声明を額面通りに受け取ると)将来のオープンインターネットに対する凶兆である。
 

フェルミ国立加速器研究所が Linux NerworXクラスタスーパーコンピュータを使って新粒子発見を増強

Linux NetworX は、原子より小さい宇宙の構成物質を見出す世界的科学共同研究の一部である新粒子識別にフェルミ国立加速器研究所(フェルミ研)の科学者がLinux NetworXクラスタを使用すると発表した。フェルミ研ではプロトンと反プロトンの衝突の結果生じる新粒子を研究している。

イリノイ州バタビアにあるフェルミ研のLinux NetworX 48ノードクラスタは、ペイチアムIII、1.0GHzプロセッサ、RAM 48 GB、イーサネット接続を含む。

 

Lunux クラスタ

Registerは、コンパックがそのノンストップクラスタコードGPLへの約束を果たした物語を紹介した。コンパックは、二つの計画−CIプロジェクトとSSI−発表した。極めて広範なアプリケーションプラットホームが出来た。Oracleはノードツーノードに失敗した」−ピーター・ブラム。

営業面では、IBMが、e-ビジネス用に最適化した強力で拡張可能なシステム、世界初のパック済みLinuxクラスタを紹介した。IBM e-サーバークラスタは、色々な部品から「自分用」を作る時間も気持ちもない企業顧客の要求に合致する。これらの人々は、単一販売業者から引き渡され保守されるシステムを望んでいる。IBMには新聞発表のリンクがない。

 

LinuxはLyrisのナンバー1

e-メールの送付とフィルタのソフトウエア開発者Lyris Technologies, Inc.は、そのLinux用アプリケーションが、他のすべてのUNIXベース・バージョン組み合わせを超えたと発表した。Lyrisの中心製品には、オプションe-メールニュースレター用ListManager 及び迷惑メール防護用MailShield が含まれる。LyrisソフトウエアのLinuxバージョンは2001年1月以来会社のUNIXダウロードの40%から60%以上に成長した。

 
 
 
▼▼▼ディストリビューション関連ニュース▼▼▼
Debian
Debian 2.2 シリーズの最終版Debian 2.2r4が解放された。この発表には「バグの修復と同時に主としてセキュリティ更新を含む」。

ssh-nonfree とssh-socksパケージの弱点が報告されたreported。OpenSSH への移行をお薦めするが、更新有料パケージも発表された。
 
LynuxWorks / BlueCat

オープンソースでリアルタイムの埋め込みソフトウエアのプロバイダLynuxWorks Inc.が、有名な BlueCat Linuxディストリビューションを発表した。

 

Mandrake
Mandrake Linux は、Mandrake Linux Gaming Edition. を発表した。これはCD4枚で、TransGaming Technologies のポータブル層を用いて働く。ディストリビューションはElectronic ArtsのThe Sims を備えている。発表はここhere(スラショット)とここ here (ブルーニュース)。
 
Suse

SuSE Linux は、SuSE Linux Connectivity Serverを発表した。この社の最終事業製品は、特に中小企業の要求に合致しており会社ネットワークでのファイル及びプリントサービスに適するとともに、インターネットへの確実な接続ができる構成済みLinuxネットワーク・ソリューションである。


SuSE Linuxは、IBMの全ソフトウエアを、欧州、中東及びアフリカでLinux用に付加価値Linuxディストリビュータとして販売する契約をIBMと結んだ。


FirstLinux.com は、最近PowerPC Edition を発表したSuSE 7.3 を審査した reviewed

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

OpenSSH 3.0が発表されたreleased 。詳細とダウンロードははホームペイジhomepage へ。

 

XNotesPlus V3.4.0 が参入

グラフィックの権威Michael J. Hammelが、Linux及びUNIX用の個人用情報マネージャXNotesPlusのバージョン3.4.0を発表した。XNotesPlusは、メモ、行事予定、住所録及び日程表などPalm Pilotに関するすべての機能をサポートする。すべての機能はXNotesPlus内で編集されてPilotからダウンロードしPilotにアプロード出来る。加えてPilot PDAのバックアップとレポートをXNotesPlusが管理する。

XNotesPlusのリリースでは、前の版の重大なバグを修復している。古い版は新版に変えることをお薦めする。XNotesPlusはsource とRed Hat Linux 7.0 動的構成バイナリ・ディストリビューションの双方で入手出来る。

 

Linux上のCreature

Creature Labs 社とLinux ゲーム出版社は、Creaturesシリーズの最終版Creaturesインターネット版をLinux用に発表した。Creaturesインターネット版は、Creatures3とCreaturesドッキングステーションをまとめたもので、4種類のNorn繁殖(ゲーム内のクリエーチャ)を含む。ゲームはインターネット上で他のプレーヤとの接続出来る。詳細は、http://ds.creatures.net/expansion/cie.pl.へ。


Rackspaceがe-商業上でRed Hatと組む
Rackspace Managed Hosting と Red Hat Linux が、広範にホストされたe-商業ソリューションを完備したE-商業を立ち上げた。提供する施設は、Rackspace上に構成して搭載したRed Hat E-商業の組で、円滑な運用と管理のため両社からのサービスを含む。
 
埋込ソフトウエアソリューションでシャープがOperaを採用

Operaソフトウエアは、シャープ Opera SoftwareがザウラスSL-5000D開発ユニットにLinuxウエブブラウサ用Opera 5の使用を発表したと、と本日発表した。ザウラスSL-5000Dは頑丈なLinux/Javaハンドヘルドである。Operaウエブブラウザは、今年1月にJavaOneで立ち上げたLineo社のソフトウエアEmbedix Plus PDAの一部として用いられる。Linux用Opera 5の後、Embedix Plus PDAソリューションは、Lineoの Embedix Linux、 Trolltech'sのQt/Embedded と QT Palmtop グラフィカルユーザーインターフェイス、及び Insignia Solution's のJeode PDAを含む。

 

TricordからのLinuxアプリケーション・アプライアンス と アプリケーション・パートナー
IlluminaTM クラスタ・ソフトウエアとLunar FlareTM NAS の開発者Tricord Systemsは、独立ソフトウエア開発者及びシステムインテグレータのためアプリケーション・アプライアンス・シリーズを発表したannounced。 Lunar Flare AA 1100 とAA 1200は、独特のクラスタ及び記憶能力を備えた管理容易、故障皆無、拡張可能プラットホーム上でこれらを結合して、Linuxベースのアプリケーションをサポートする。Tricordのアプリケーション・アプライアンス・シリーズは、高性能Linuxサーバーに組込クラスタ記憶を結合して、コンテントハングリ・アプリケーション用に最適あぷらいあんす・ソリューションにする。
 
Pythonを用いるGUIプログラミング

Python/QTの本、Pythonを用いるGUIプログラミングQT版が編集を終わり月末に出荷される。QTとは、Linux/UNIX用KDEデスクトップを含む多くの強力なアプリケーションの背後にあるツールキットである。

新しい本は、ウインドウズ及びLinux用のBlackadder RAD 環境を含むPython とQT の使用を説明している。興味のある向きはhttp://stage.linuxports.com/projects/pyqtへ。

 

Grey ZoneがSecureZone5を用いる3分エキストラネットを発表
Linuxベースのボックス外ウエブコンテント管理ソフトウエアの開発者Grey Zoneは、SecureZone 5のリリースを発表した。SecureZone 5を用いると、ビジネスユーザーは、ユーザーとコンテントを含む完全機能のエキストラネットを、3分で作ることが出来る。SecureZoneは、非技術専門家に、単一プラットホームから急速に無限数の別個のウエブサイトにふくらませる力を与える。製品は、セキュリティ、コンテント管理、及びウエブ公開処理を簡単にする視聴者ベース公開能力を備え、会社がウエブを通じて急速に廉価に事業を行うのを助ける。簡便な使用が優先するが、SecureZoneの機能は多様だ。詳細情報はGrey Zone's web page.へ。SecureZoneの価格は$50,000から。
 
XML/PosgreSQL アプリケーションサーバーLXP 0.8
Command Prompt, Inc. は、コマンドプロンプトのPostgreSQL アプリケーションサーバーLXP バージョン0.8.0のリリースを発表した。LXPアプリケーションサーバーは、PostgreSQLの進歩的機能に容易にアクセスすることが出来る。LXPは、Linuxウエブ開発者が、管理容易、動的ウエブサイト、データ駆動ウエブサイトを作成するのを助ける一連のサービスを提供する。LXPマークアップ言語の他に、ダイレクトURIサポートを通じてJava, PHP, C, C++, Python, Perlを使用することが出来る。LXPはまた、RDF/RSSなどの工業用標準DTDのサポートに有用なXML解析エンジンを提供する。LXPアプリケーションの例は、LinuxPorts.Com.
 
Linux4版用Teamware Office 5.3

富士通の子会社Teamware Groupは、Linux用に、今日のビジネス専門家のための即席グループウエアTeamware Office 5.3の4版をリリースした。新版での主眼はウエブサービスの強化である。4版はTeamware Officeで初めてのLinux用で、ブラウザに重点をおいている。顧客とともに使用感を追求した結果、見て感じるウエブサイトテンプレートを開発した。新しいウエブサービスTeamware Officeを通じ、標準ブラウザを用いて容易にモジュールスキャンにアクセス出来る。サービスは、標準HTMLテンプレート上で任意のTeamware Officeオブジェクトのため固定wwwアドレッシングを可能にし、他のウエブベースシステムと同時にサーチエンジンへと統合する。

Teamware Office は www.teamware.com/linux. にあるTearwareウエブサイトと通じてオンラインで購入出来る。このサイトから90日無料体験版も入手出来る。

 

Copyright © 2001, Michael Conry and the Editors of Linux Gazette.
Copying license http://www.linuxgazette.com/copying.html
Published in Issue 73 of Linux Gazette, October 2001
 
 
 
 
Linuxユーザー漫描
 

By Franck Alcidi

 

 

tux_monitors.jpg

kfc_kernel.jpg

ヒント:"Kernel"は英語で「カーネル」と発音するカーネル・サンダーはケンタッキ・フライドチキン(KFC)レストラン・チェインのマスコットだ。

spikey_bsd.jpg

Linux Gazetteで発表した以前の漫画は、・Linux User Charactures 72号(11月号)

別のスケッチは projects page.で。

 

○作者紹介:Franck Alcidi

Franck はオーストラリアの芸術家で、オーストラリアのホームペイジは、
http://www.ozemail.com.au/~geisha/projects.html.
 
Copyright © 2001, Franck Alcidi.
Copying license http://www.linuxgazette.com/copying.html
Published in Issue 72 of Linux Gazette, November 2001
 
 
 
アタリSTエミュレーションの技術

By Matthias Arndt

1.緒言

私はアタリSTのファンだ。Armigaの好きな人は、STの悪口を言う代わりに自分で記事を書かれたい。

何?STを御存知ない?アタリが16/32ビット家庭用コンピュータを作ったのは80年代終わりから90年代初めだ。STの友人は未だに世界中にいる。エミュレーションのお陰で、仲間はウェブ上で活躍している。Little Green Desktop (http://www.atari.st/) 又は http://www.atari.org/ を訪ねれば意味が分かるだろう。

この記事は、Linux上のAtari ST emulation に集中して、利用出来るエミュレータと、有用な情報を一般的に述べる。

2.エミュレーションとは?

エミュレーションとは、ハードウエア部品の働きをソフトウエアで再現する試みだ。これは実際上、別のハードウエアを持ちOSも異なる別のコンピュータであるとPCに考えさせ、エミュレートしたシステムのため書かれたアプリケーションを働かせることだ。

今の場合、アタリST用ソフトウエアをLinuxボックス上で走らせることを意味する。

3.マシン事情

エミュレーションに関心のある人は、少なくともエミュレートされるシステムのハードウエア事情を知らなければならない。以下の通りだ:

(データはすべて、TT、Falcon 又は同類でなく標準STによる)

・CPU:モトローラ68000 、クロック速度8MHz 、32ビット幅バス付き
・RAM: 512K, 1MB, 2MB, 4MB の何れか(モデルによる)
・OSを収容するROM:: 192K 又は256K (モデルとOSバージョンによる)
・下記のビデオモードが可能なShifter ビデオサブシステム:
1.320x200 ピクセル、512 色中16色(50 又は60Hz)
2.640x200 ピクセル、512 色中4色 (50 又は60Hz)
3.640x400 黒白、72Hz
・三音同時演奏ヤマハサウンドチップ
・埋込MIDI ポート(入力と出力)
・128K サイズカートリッジ接続用ROMポート
・任意選択ハードディスク
・フロッピイドライブ二台まで、SD標準又はDD標準
・シリアルポートとパラレルポート
・マウス
・アタリ・デジタル・ジョイスティック・サポート
・M 及びSTE モデルでは、TV 出力 (通常アンテナコネクタ)
・OS: TOS (Tramiel Operating System) 埋込GEM付き
・1992迄にリリースされたモデル (OS バージョン及びRAM量が変動): 520ST, 520STM, 520STFM, 260ST, 520ST+, 1040ST, 1040STF, 1040STFM, 1040STE, 520STE, Mega ST1, Mega ST2, Mega ST4,Mega STE
STE モデルは最新の音響、グラフィックス機能を有する。

このマシンは1985年春に導入されたので型が大きいのを念頭におくこと。当時のマッキントッシュより強力で安価だった。

エミュレータがエミュレートする事項を簡単に眺めて見よう。

4.STエミュレーション

最初にSTでエミュレーションを試みたのは1994年か1995年の Gemulator だ。DOS用のエミュレータで、特別のハードウエアプラグインカードを必要とした。今ではSTエミュレータ全部がソフトウエアのみで解決している。

STエミュレーションは、Frederic Gidouinが書いたDOSベースのエミュレータPacifiST から流行し始めた。

それ以来、WinSTon や STEEMなど幾つかのSTエミュレータが高いレベルに達した。これはLinux上のSTエミュレーションにも当て嵌まる。STEEMはLinux用に公式に入手することが出来るので、STonX はリリース毎に改良されている。

5.Linux用STエミュレータ

5.1 STエミュレータすべてに共通の事項

STエミュレータすべては、次の事項が共通である:

・フロッピイコントローラのプログラムにに問題があるため実際のSTフロッピイを使うことは出来ない
・これらエミュレータは何れも、MIDIポートをエミュレートしない(少なくともウインドウズ版では、多分STEEM)。
・これらエミュレータは何れも、コピイ禁止ディスクからソフトウエアを走らせることは出来ないので、古いオリジナルは忘れること。

5.2 STonX

STonXは最初から長い間ユニシスで利用出来る唯一のSTエミュレータだった。今では、ゲームをしたりデモを走らせるのに優れてはいないが、実際に利用出来る状態に進歩した。

二,三の点は:

・働かせるのにCPUの力を要しない。16MB RAM付きペンチアムマシンで十分だ。
・ST RAMの 4MB or 14MBもサポート。
・オーバースキャンとラスターを除きST グラフィックモード全部をサポート。
・X 及びSVGALib 出力をサポート。
・ウインドウ又はフルスクリーンで働くことが出来る。
・エミュレートしたハードドライブをサポート、つまりLinuxディレクトリツリーの搭載が可能。s
・標準フォーマットでのディスク画像をサポート(*ネット上で見出される.STファイル)
・拡張ST グラフィックモードをサポート。
・サウンドチップ・エミュレーション
・ジョイスティックサポートはバグあり(少なくとも私のマシンでは働かなかった)
・すべてのTOS バージョンをサポートするが、高性能にはTOS 2.x が好適
・GPLしたソースコードとしてやって来る。
・他のユニシスへの移植が簡単−STonX はSolaris 及びAIXでも働く。
STonX は、ゲーム及びデモには適さないが、システム適合(つまりGEM)アプリケーションの開発には適している。動きが早くて円滑。六ヶ月働かせて問題はなかった。

今の悩みは:

・ジョイスティックのサポートにバグがある。
・.MSAデイすく画像ファイルがない
・オーバースキャンがない
・ゲームには早すぎる
完全なプログラムはないので−STonXを試す価値はある。期待以上に良い。
But no program is perfect - STonX is definitely worth a try. It is better than one might expect.

STonX は、http://stonx.sourceforge.net/.で見付けることが出来る。

5.3 Linux 上の STEEM

これはSTEEMのLinuxへの移植である。GPLされていないがフリーウエアである。

STEEMは、STEグラフィックスとサウンド、オーバースキャン、ラスター効果を含んでいるのでゲームに適している。

STEEM の特色は:

・STE エミュレーションを含む
・.ST と.MSA デスク画像両方に使える
・キイボード経由のジョイスティックサポート
・サウンドサポートは、時々同期が外れる(音響効果が0.5秒遅れる)
・TOSの全バージョンで働くが、1.62 は除くので、これは全く使わないこと。
・優れたインターフェイス (STEEM はWindowsでも使える)
・ほとんどのゲームで働く(少なくとも Super Cars 2及び Xenon は働く)
・フレーウエアだが GPLされていない。バイナリでのみ入手可能。
STEEM は完全に近い。ウインドウズ版の特徴幾つかは欠けているが、良く働く。STonXを超える利点は、ゲームとデモを働かせられることである。

STEEMは、 http://steem.atari.org/.で見出すことが出来る。

5.4 Hatari

Hatariは WinSTonソースコードのLinuxへの移植である。アルファ段階の早期なので今は使えない。

詳細は、http://hatari.sourceforge.net/ をチェックのこと。

6.TOS

上述のようにTOSはアタリSTの規定値OSである。(Minix, Mint その他のシステムも働かせることが出来る)

明らかに、すべてのSTエミュレータは、働かせるのにTOS ROM を必要とする。これはエミュレータに含まれておらず、著作権を念頭におく必要がある。ネット上でTOS画像の得られる場所は幾つかあって、手持ちSTのTOS ROM をファイルに抽出することの出来るプログラムが入手出来るる。

7.ST用ソフトウエア

ネット上には未だ大量のSTソフトウエアがある。FTPサイトは公開ドメインとフリーウエアがあり、幾つかのサイトには海賊版STゲームがオンラインである。最後に、STソフトウエアを捜すにはネット上のSTコミュニティが大変役立つ。

8.STコミュニティ

ネット上には、巨大なアタリ・コミュニティがあり、幾つかのIRCチャンネル、伝言板、ユースネットニュース階層構造が利用出来る。

有用なヒントは:

http://www.atari.st/ −Little Green Desktop (主要 ST エミュレーションサイト) がフォーラムと信じ難いゲーム在庫を持っている−チェックする価値あり。
http://www.atari.org/ −アタリ・コミュニティ特有ニュースの主要窓口。フォーラムと多数のリンクがあり、ST関連サイトの90%はここのLinuxアーカイブで見付かる。
・comp.sys.atari.st 及びその他のニュースグループが利用出来る
・ IRC 上の#atariも役に立つ
これを書いている2001年11月の時点で、Green Desktopは未だ赤信号状態だが、この記事がオンラインになる頃には状況が変わっているだろう。

9.まとめ

アタリSTは未だ生きている−Linux上での成長を助けることが出来る。アタリSTエミュレータを働かせて我々に合流されたい。STを持ったことがなくとも、試す価値がある。

筆者の例では、 C64, VCS2600 やZX スペクトラムを持ったこともないが、それらすべてのエミュレータを働かせている。

アタリは死なない!

Copyright © 2001, Matthias Arndt.
Copying license http://www.linuxgazette.com/copying.html
Published in Issue 73 of Linux Gazette, December 2001
 
 
 
音響処理パイプライン

By Adrian J. Chung

10年余りの間にユニックス熟練ユーザーは、多くのテキスト処理ルールを採用して文書作成を容易にして来た。sed, awk, cut, paste, join などのコンソール・ユティリティは、単独でも有用だが、パイプを使って組み合わせたときにのみ本当の力を発揮する。

最近LinuxがASCIIテキストの処理以上のため使われて来た。画像及び音響の形の各種マルチメディアフォーマットの普及が、このようなファイルを扱うツールの発達をもたらした。これらツールの多くはGUIを有し、ユーザーとの会話なしで働くことは出来ない。しかし、インターフェイスを働かなくしてバッチモードで働くことの出来るツールが沢山成長している。コマンドプロンプト又はシェルスクリプトから使う設計のツールさえある。

この記事で調べるのはこの種類のツールである。複合メディア取扱機能は、通常テキスト処理フィルタに応用される技術を使って、簡単なツールを組み合わせることにより、実現されることが多い。重点はオーディオストリーム処理である。これらフォーマットは、ユニックスフィルタパイプラインの中で極めて良く処理することが出来るカラである。

 

音響サンプル・トランスレータ

沢山の音響ファイルフォーマットがあるので、その間の転換はしばしば起こる操作である。次のコマンドプロンプトで呼び出す音響交換ユティリティ sox がこの役割を満たす。

 



sox sample.wav sample.aiff



上のコマンドは、WAVファイルをAIFFファイルに転換する。サンプルレート、サンプルアタリビット数(8又は16)、チャンネル数を変えることも出来る:


sox sample.aiff -r 8000 -b -c 1 low.aiff



low.aiff は、単一チャンネルの秒当たり8000 単一バイトサンプルである。
sox sample.aiff -r 44100 -w -c 2 high.aiff

high.aiff は、ステレオの秒当たり44100 16-ビットサンプルである。

sox がファイル拡張子から行き先フォーマットを推測出来ないときは、これを明確に示す必要がある:
sox sample.wav -t aiff sample.000


"-t raw" oオプションは、 raw のサンプルデータのみを含むヘッダーのないフォーマットを示す:
sox sample.wav -t raw -r 11025 -sw -c 2 sample.000

ファイルにサンプルレート、サンプルアタリビット数、チャンネルなどを規定するヘッダーがないので、これをコマンド行で明確に設定するのが良い考えだ。これは raw フォーマットから転換するとき必要になる:
sox -t raw -r 11025 -sw -c 2 sample.000 sample.aiff
 

ファイル拡張子が .rawである時は "-t raw" オプションを使う必要はないが、このオプションは、rawサンプルが標準入力から来るか又は標準出力に送るとき不可欠である。これをおこなうには、ファイル名の代わりに "-" を用いる:
sox -t raw -r 11025 -sw -c 2 - sample.aiff < sample.raw



sox sample.aiff -t raw -r 11025 -sw -c 2 - > sample.raw



これをする理由は?この利用形式により sox をコマンド行内でフィルターとして使うことが出来るからである。
再生を早く/遅くする
通常 sox は、内挿を使って、どの音のピッチ又はテンポをも代えることなくサンプル周波数を調節する。一つの sox の出力を、別個で同等でないサンプルレートを使う入力にパイプすることにより、内挿を回避して音響サンプルを効果的に遅くすることが出来る:
sox sample.aiff -t raw -r 44100 -sw -c 2 - |
sox -t raw -r 32000 -sw -c 2 - slow.aiff

また、早くするには:
sox sample.aiff -t raw -r 32000 -sw -c 2 - |
sox -t raw -r 44100 -sw -c 2 - fast.aiff
 
サンプル編集
別の音響ファイルの最初の二秒から成るサンプルが欲しいとする。次のようにコマンド行で sox を使ってこれをおこなうことが出来る:
sox sample.aiff -t raw -r 44100 -sw -c 2 - | head -c 352800 |
sox -t raw -r 44100 -sw -c 2 - twosecs.aiff

入力ファイル sample.aiff を、2バイト毎に2チャンネルに入れて 44.1kHz サンプルに転換する。こうすると、2秒間の音は44100x2x2x2 = 352800 バイトのデータであらわされ、"head -c 352800" を用いてこれを剥ぎ取る。これをAIFFフォーマットに戻して twosecs.aiffに記憶する。

同様にしてサンプルの最後の秒を抽出するには:
sox sample.aiff -t raw -r 44100 -sw -c 2 - | tail -c 176400 |
sox -t raw -r 44100 -sw -c 2 - lastsec.aiff


三番目の秒は:
sox sample.aiff -t raw -r 44100 -sw -c 2 - | tail -c +352801 |
head -c 176400 | sox -t raw -r 44100 -sw -c 2 - lastsec.aiff

16-bit サンプルについては "tail -c +N" mへの引数が奇数であることに注意。さもないと raw サンプルが並べ違われる。

異なるサンプルの一部を抽出し、ネストされたサブシェルコマンドを経由してそれらを一つのファイルにまとめることが出来る:
(sox sample-1.aiff -t raw -r 44100 -sw -c 2 - | head -c 176400
sox sample-2.aiff -t raw -r 44100 -sw -c 2 - | head -c 176400 ) |
sox -t raw -r 44100 -sw -c 2 - newsample.aiff


ここでは、二つの異なるファイルからrawサンプルを標準出力に出力する子シェルを呼び出している。これは、sox 処理にパイプされ結果のファイルを作るて親シェル内で実行される。
 

デスクトップ音響出力

"-t ossdsp" オプションを用いて、音響をOSS (オープンサウンドシステム) device /dev/dspに送ることが出来る:
sox sample.aiff -t ossdsp /dev/dsp


sox パケージは通常、適切なオプション付きで sox を呼び出すプラットホーム無関係のスクリプト play を含む。前のコマンドは、単に下記で呼び出すことが出来る。
play sample.aiff

この方法で再生された音響サンプルは出力ハードウエアを独占する。音響能力のある別のアプリケーションは、音響装置が解放されるのを待って別のサンプルを再生しなければならない。GNOME やKDE などのデスクトップ環境は、一つ以上のサンプルを同時演奏する装置を備えている。サンプルは、別々のアプリケーションが待ったなしで送って来るが、すべての音響アプリケーションが、デスクトップそれぞれについてのやり方を知っている訳ではない。sox はそうした能力に欠けるプログラムの一つである。しかし、GNOME やKDE などの提供する音響メディアを一寸調べれば、この短所を補う方法が見付かる。

音響装置共有の出来るパケージは、極めて少ない。一つの共通戦略は、バックグラウンドサーバーを働かせて、クライアントアプリケーションは再生するサンプルをそこに送らなければならないようにすることだ。次いでサーバーが音響装置の制御を握り、音響データをそこに送る。一つ以上のクライアントが同時にサンプルを送ると、サーバーはそれをミックスし単一の組合せストリームとして出力装置に送る。

ESD(Enlightened Sound Daemon)はこの方法を用いる。GNOMEデスクトップでは、サーバー、esd、がバックグラウンドを働かせていることが多い。ESDパケージは、ほとんどのディストリビューションで esoundの名で来ており、次のような少数のクライアントアプリケーションを含む:

・esdplay − 一つ以上の一般的ファイルフォーマット(WAV, AU, AIFF)で記憶された音響サンプルを再生する。
・esdcat −原始音響サンプルをサーバーに渡す。このツールは、当然、音響フィルタのパイプラインを終わらせるのに適合している。
このコマンドは、ESDを介してサンプルの最初の1秒を再生する:
sox sample.aiff -t raw -r 44100 -sw -c 2 - | head -c 176400 | esdcat

ESDは理解しないが sox が読み取ることの出来るフォーマットで記憶されたサンプルを再生することも出来る:
sox sample.cdr -t raw -r 44100 -sw -c 2 - | esdcat

場合によっては、こうして再生した音の方が良いことがある。ESDのバージョンによっては、音響記録を低速で与えたとき、歪みやノイズがひどくなるものがある。

アナログ・リアルタイム・シンセサイザ(ARtS)はESDと似ているが、KDEに対して用いられることが多い。バックグラウンドサーバーは対応するクライアントプログラムを artsd し、artsplay artscatする。サンプルを再生するには:
sox sample.cdr -t raw -r 44100 -sw -c 2 - | tail -c 352800 |artscat

 

ESD もARtS も特定のデスクトップ環境に従属しない。一寸した作業で、理論的にはESD をKDEで、 ARtS をGNOME で使うことが出来る。いずれも、コンソールログイン作業で使うことも出来る。こうして、各種フォーマットでエンコードされたサンプルを、グラフィック・デスクトップ・インターフェイスミックスの有無に関係なく、ミックスすることが出来る。

 

サンプル源としての音楽

音響パイプライン側でおこなわれることを理解した上で、最初に何を置くべきかを考える。MP3, MIDI, またはモジュール(MOD, XM, S3M, など) フォーマットのファイルから抽出したサンプルを扱いたいことがある。これらフォーマットそれぞれに、原始サンプルを標準出力に出力するコマンド行ツールがある。

MP3 音楽用には "maplay -s" を用いることが出来る
maplay -s music.mp3 | artscat


music.mp3 を正常に再生するには、44.1kHz ステレオでエンコードしなければならない。さもないと artscat 又は esdcat に別途の命令をしなければならない:
maplay -s mono22khz.mp3 | esdcat -r 22050 -m

maplay -s mono22khz.mp3 | artscat -r 22050 -c 1

代わりに、"mpg123 -s". を使うことも出来る。追加引数により、出力の必要速度とチャンネル数を確認する:
mpg123 -s -r 44100 --stereo lowfi.mp3 | artscat
 

Ogg Vorbis のユーザーは次を用いる:
ogg123 -d raw -f - music.ogg | artscat


ogg123 には、埋込のESD とARtS 出力デバイスがあるので、実はパイピングは必要でない。それでも、パイプラインを通じて供給することの出来るサンプルデータの原始ストリームにアクセルするのに有用である。

音楽ファイルはまた、MIDIフォーマットでも得られる。シーケンサハードウエアの貧弱なサウンドカードを使っているときは、timidityに脅威的な働きをさせることが出来る。通常このパケージは、MIDIファイルを、音響装置直接出力用音響サンプルに転換する。コマンド行オプションを注意深く選ぶとこの出力をリダイレクトすることが出来る:
timidity -Or1sl -o - -s 44100 music.mid | artscat


"-o -" がサンプルデータを音響出力に送り、"-Or1sl" が、サンプルは16-ビット符号付きフォーマットであることを確認し、"-s 44100"がサンプルレートを適切に設定する。

デモシーンのファンであれば、デスクトップで少数の音楽モジュールを再生することがあるだろう。幸い mikmod で普通のモジュールフォーマットが再生出来る。libmikmod, 3.1.9の現行安定バージョンは、未だ ARtS アウエアではないようだ。コマンドパイプラインを通じてこれを修理することが出来る:
mikmod -d stdout -q -f 44100 music.mod | artscat


-q は、標準出力を使うカーソルのスイッチを切る。このインターフェイスにもアクセスしたいときは、次を試みる:
mikmod -d pipe,pipe=artscat -f 44100 music.mod

mikmod の新しいバージョンだけが、自分の出力パイプラインを作る方法を知っている。
 
エフェクト・フィルタ
sox. に戻ろう。フォーマット転換能力に加えて、小さいエフェクト・フィルタのライブラリがある。例を示す:
・エコーを加える:


play sample.aiff echo 1 0.6 150 0.6


 
・バイブレーションを加える:


play sample.aiff vibro 20 0.9


 
・厳しい歪みを加える:


play sample.aiff flanger 0.7 0.7 4 0.8 2


play sample.aiff phaser 0.6 0.6 4 0.6 2


 
・バンドパスフィルタ−悪い電話線接続のように聞こえる:


play sample.aiff band 3000 700



又は、厚い毛布越しで聞くようになる:


play sample.aiff band 0 700


 
・一つのサンプルから合唱音を作る:


play sample.aiff chorus 0.7 0.7 20 1 5 2 -s


 
・隠れたメッセージ? 背景で再生する:


play sample.aiff reverse



警告: サンプルのサイズにより、これは莫大なメモリ及び/又はディスク空間を消費する。
 
全部をまとめる
主な音響コマンドパイプラインは、これで終わりだ。些細でない機能の実行のためこれらを組み合わせる方法を考えよう:
・コーラス効果を用いて、音楽モジュールをKDE デスクトップ上で再生:
mikmod -d stdout -q -f 44100 music.xm |
sox -t raw -r 44100 -sw -c 2 - -t raw - chorus 0.7 0.7 80 0.5 2 1 -s |
artscat
 
・Ogg Vorbis フォーマットの歌の最初の4秒を削除して再生:
ogg123 -d raw -f - music.ogg | tail -c +705601 |artscat
 
・MIDI ファイルを、追加エコーのあるOgg Vorbis フォーマットに転換:
timidity -Or1sl -o - -s 44100 music.mid |
sox -t raw -r 44100 -sw -c 2 - -t raw - echo 1 0.6 80 0.6 |
oggenc -o music.ogg --raw -

パイプラインは、ここでは原サンプルデータを標準入力から受け取る構成にしたOgg Vorbis エンコーダ, oggenc, を用いてターミネートした。
・32kHz モノMP3 ファイルを44.1kHz ステレオOgg Vorbis ファイルに、処理中ボリュームを下げて転換する。


maplay -s mono32.mp3 | 


sox -v 0.5 -t raw -r 32000 -sw -c 1 - -t raw -r 44100 -c 2 - split | 


oggenc -o music.ogg --raw -


 
・カレントディレクトリのAIFFファイル全部を単一WAVファイルに連結:
for x in *.aiff
do sox $x -v 0.5 -t raw -r 8000 -bu -c 1 -
done | sox -t raw -r 8000 -bu -c 1 - all.wav
 

これらが、パイピング技術で出来ることのヒントになれば幸いだ。洗練されたグラフィック・ユーザー・インターフェイスのある会話型アプリケーションの使用に異議を唱えることは出来ない。これらは、引数フラッグのペイジを覚える必要がなくて、複雑な課題を実行することが出来る。しかし、数多くの場合にコマンドパイプラインが有用である。多数の音響サンプルの転換には、何らかの形のスクリプトが必要である。会話型プログラムは、at 又は cron ジョブの一部として呼び出すことは出来ない。

音響パイプラインはディスク空間の節約にも用いられる。加えた修正は異なるが本質的には同じサンプルのコピイを多数記憶する必要はない。各種のフィルタのパイプラインを用いて、各サンプルを作ることが出来る。これらは、音響サンプルの修正バージョンが必要な度に呼び出され、変更された音響が演奏される。

この記事のツールを試して見られたい。組合せを色々工夫されたい。重要なのは興味を持つことだ。

 

Copyright © 2001, Adrian J. Chung.
Copying license http://www.linuxgazette.com/copying.html
Published in Issue 73 of Linux Gazette, December 2001
 
 
 
 
マイクロソフト彌縫策の棘

By Jim Dennis

今や、ソフトウエア産業やフリーウエア動向に関心のある人は、マイクロソフトが、独禁法事件の和解のため米国公立学校にコンピュータとソフトウエアを提供するとの法的措置につきお聞き及びであろう。

「どうか茨のつぎを当てるのだけは、勘弁してくれ」−アンクル・レムス

マイクロソフトの術中に嵌ると考えるのは私だけでないと思う。子供達全部がマイクロソフトのソフトだけしか習わなかったら、大学や生涯を通じてそうなるだろう。

マイクロソフトはそんな有利な特権を得ようとしている。罰や補償とは程遠い。実際ソフトウエア産業との競合修復に反する。

Linuxユーザーとして、私はマイクロソフトを問題にしていない。連邦独禁法が有効だと思ったことはなく、各州の訴訟はその反映だと思っている。欧州人はECがもっと有効な手を打つと思っているが、そうなりそうもない。しかし、ソフトウエア産業に関心のあるものとして、本件に関する見解を繰り返し述べたい。

本件の有効で公正な唯一の収拾策は、ソフトウエアに関連付けなければならない。特にマイクロソフトには、完全なソースコード及び、そのアプリケーション及びOSのいずれかで使用する各プロトコル、API及びファイルフォーマットの実働リファレンス・インプリメンテーションの、公開を要求するべきだ。リファレンス・インプリメンテーションが公開されるまで、彼らは新ソフトウエアの配布を中止すべきだ。リファレンス・インプリメンテーションは、(すべての無料及び商業作業が自由に使える)公開ドメインに置かなければならない。

言い換えると、マイクロソフトが(少なくとも一部は非合法、反競合手段により)工業標準になるとして、相互運用性を保証する十分な情報を各人に与えるとの、責任を負わなければならない。

文書の適切性、及び「内部」プログラムインターフェイス又は「管理」プロトコルの公開必要性について無限に論じることが出来る。これは判事の間違いだ。コマンド行プリミチブユティリティのセットのためリファレンス・インプリメンテーションを要求して、ANSI標準C及びC++(MSC又はMIFCの絡みなし)は、明確な標準を好意で提供している。必要参照ツールがそのプロトコルで、目標ファイルに、専用(最小)機能を実行し、又はOS/ライブラリ成分を呼び出すことが出来るようになか、又はMSが罰金を払ってこれ以上の販売を禁止されるかの何れかだ。

この方法は、MSにそのOS又はアプリケーションのソースの公開を強制はしないことに留意されたい。独自のリファレンス・インプリメンテーションを作るのは彼らの自由だ。勿論、それには金がかかる。彼らに取って最も安い方法は、コア(これは別個のリファレンス訴訟になる)を用いてソフトウエアを作り、自分のUIエレメントをその上に付け加えることだ。

しかし、リファレンス訴訟が必要相互運用性を与えると示すまで、新ソフトウエアのリリースを禁止することの方が重要だ。保証が、プロトコル、API及びファイルフォーマットを含むこともまた重要だ。

これに少しでも欠けるところがあれば、それは政府と大企業の大衆に対する姿勢のあらわれで、政治家の私腹を肥やし「小企業」の仕事を閉め出す裏取引を示すこととなる。

 

Copyright © 2001, Jim Dennis.
Copying license http://www.linuxgazette.com/copying.html
Published in Issue 73 of Linux Gazette, December 2001
 
 
 
 

デスクトップの争い

By Dennis Field

11月号で(デスクトップの争い:Linuxが勝たない理由、72号)、IBMシンクパッドへのLinux搭載に失敗した話をし、ソフトのサポートが不十分だと述べた。だが、それは別の話だ・・・。

そのシンクパッドは売り払って、CDから直接ブート出来るシンクパッドを捜している。予算不足の上、ウインドウズXPで働くとの贅沢な希望なので未だ見付からない。

ディストリビューションに関する限り、Libranet Linux の最新版が来ることになっている。先月の記事からE−メールや、、ハードウエア要件の公開に悩まされたベンダーの一つだ。一方で、新リリースを買う前に旧版をデスクトップで試した。Libranet は Debianに基づいており、Debianは私が格付けに使っている文書を提供している。私の引用する文書を既に提供しているベンダーがあれば、この記事は、そうでないベンダーを相手にしていると了解されたい。

ウインドウズXPは終わったので、Linuxベンダーが標準になる日を夢見ている。Linuxの機能的バージョンを見出し損ねた後、ホームPCをXPで更新せざるを得なくなった。XPは、98で出来なかったことすべてが出来る訳ではないが、3週間働かせて故障は2回だった。2回ともロックせず、自動的に再ブートした。だが、世界中のコンピュータをハイジャックしようとのマイクロソフト計画に毒された人々は依然としてXPに捕らわれている。良いビジネス・アプリケーションと組み合わせとパックした機能的OSをLinuxベンダーが提供することが出来れば、直ぐにもマイクロソフトを圧倒出来ると思う。

マイクロソフトとの闘いに勝つ最初で重要なステップは、Linux社会には全く知られていないコンセプトを導入することである。この革命的新戦略は、カスタマサービスと呼ばれる。「お客は神様」との意味ではない。Linuxを一体型馬鹿チョンにしろと言うのでもない。ウインドウズは、したいことも、そうでないことも、何もかもやってくれる。私が言いたいのは、Linuxを進歩させたい人の対象、目的、取組姿勢がカスタマのニーズに合わせることであるべきだ、と言うことだ。気を付けて聞いて欲しい。今のLinux関係者が理解していないことがある。対象はCDに乗せたソフトウエアではない対象はカスタマだ。つまり、エンドユーザーが、そのソフトを仕事、生活、銀河の征服、何にでもうまく使えるようにすることだ。

ダグラス・アダムスはその科学小説「生命、宇宙及びすべて」の中で「SEPフィールド」と言う妙な機械を発明した(3章)。何か(例えば山)を全く見えなくする発明は、複雑で莫大なエネルギーを必要とすることから説明し始めた。だが、山の周りに安くて簡単なSEPフィールドを作ることが出来れば「山があることに気付かずに歩き回ることが出来る。SEPとは、見ることが出来ない、又は見るのは他人の問題だから脳が見ようとしない、何かだ。他人の問題。心ここにあらざれば、見れども見えずだ」。

Linuxにはダグラス・アダムスのファンが多いらしい。先月号の私の記事に反対する意見で最も多かったのは、ベンダーには出来ないことでベンダーを非難していると言うものだった。君のソフトが搭載出来ない?私の知ったことではない!がベンダーの共通観念だ。ファイアーウオールの構成法を述べたインストラクションがない?悪いね!ソフトは働くが、思うことがさせられない?自分で解決しなさい!Linuxを買う前に自分のハードで働くか聞きたいって?そんなレベルのサービスを期待するのは妥当でない!

そこで記録だ。世界中で3人しか使っていないプリンタなら、サポートはないよ、と言いさえすれば、カスタマは敢えて働かせようとしないので時間の無駄が省ける。だが、これは最低限のことで、カスタマの問題は解決していない。この姿勢は、ユーザーの問題解決に役立っていないことは認めざるを得ないだろう。Linuxの世界では、プリントドライバ以上の多くの問題が「他人の問題」になっている。

ベンダーがカスタマの問題を解決してくれると期待するのは、不合理だろうか?多くの人が、Linuxベンダーは第三者の問題には関与しないと言っている。一つの物語をしよう。昨年、事務所全員が金を出し合ってボスに Handspring Visor をクリスマスプレゼントした。手に入れて最初の週に第三者ソフトを搭載したところ、ウインドウズボックスのUSB接続が一掃された。第三者ベンダーを呼んだが、問題の存在を否定し、問題解決が出来なかった。Handspring に電話して、第三者ソフトを搭載するまでVisor はうまく接続出来たが今は出来ないと、説明した。第三者ソフトの削除、ウインドウズUSBドライバの再搭載、悪いソフトのリファレンスのレジストリからの削除、など色々やったが駄目だった、と説明した。Handspring に何か良い考えがあるか?と聞いた返事は「問題ありません。前に解決しています」だった。踏むべき手順を電話で順に告げ、その通りにすると静かにコンピュータが再ブートされる修復されるのを待って呉れた。さて、Handspring は、ウインドウズに責任はない。問題を起こした第三者ソフトには勿論責任がない。だが、Handspring は、自分の製品価値が、PCにつなぐことないあると承知している。だから、他人に文句を言う前に問題を解決することに重点をおいている。最後に聞いたのは、Handspring は主として企業向けにVisor を、作る片端から売っている。この同じ企業は、Linuxを無料で使おうとはしない。どの方法が効果的だろうか?ヒントを上げよう。今、私の事務所に6台のVisorがあるがLinuxは1台もない。

一寸待て。反対の叫びが聞こえる。地球上のあらゆるLinuxベンダーが、そのための資源がないと私e-メールしようとしているのが見える。IBMには世界中のサポートをする力があるだろうが、哀れなLinuxベンダーとソフトウエア社には、電話で答える人を雇う力がない。どうやってカスタマをサポートすれば良いのだ?よかろう、解決策はある。「インターネット」がある。「ウエブサイト」を構築し、情報をそこに送る。何?ウエブサイトは既にある?じゃ、テストして見よう。ibm.comに行こう。コンピュータモデルを見て、カスタマ援助のためどれだけの情報を用意しているか見てみよう。Linuxサイトを幾つか見て、その情報量を見よう。エッ、反対の叫びがさらに大きくなる。「IBMのような専門レベルのウエブサイトの構築と維持に一体どれだけ費用が掛かるか分かっているのか?」そう、多分、分かっていない。だが、洗練されておらすグラフィックになっていなくとも、最小のLinuxベンダーが、利用出来る情報の点でIBMに匹敵する方法を知っている。

ここでも、IBMのウェブサイトのキイは、自分のサーバーを作っていることではない。キイは、カスタマはその製品を何に使うかを確かめることにIBMの関心があることだ。IBMは「完全なデスクトップを作りました。貴方が使えなくても私の問題ではありません」とは決して言わない。IBMは、顧客が使えることを確かめる。同じように、Linuxベンダーも、二つの重要特徴を持つサポート・ウエブサイトを構築することを提案する。

1)ベンダーは、ディストリビューションのファイル構造、ブートオプション、ポート割当、共通コマンド行スイッチなどに関する新しい話題を投稿しなければならない。これには、新Xサーバーの搭載、kernelの再構成、ネットワーク問題故障探査、その他の共通問題に関する専門的処理方法も含む。これらはネットワークで得られるだろうか?イエスだが、どの方法にも「SUSEでは働くが、RedHatは知らない」とか「バージョン5.1では試したが、5.2では違う」が入っている。ベンダーは、ファイル構造も特定バージョンについての正しい手順も知っている筈で、それが人々の欲しがる情報なのだ。Linuxの大きい強味の一つは、自分で手直し出来ることだ。だが、メルセデスベンツの96年型エンジンを修理しようとして、メーカーが84年型フォードの修理マニュアルを送って寄越して「大変似ているから、自分で違いを見付けなさい」と言ったらどう思うだろうか?

2)だが、ベンダーはすべてのハードウエアを試験出来る訳でもないし、各種ネットワーク構成を知っている訳でもない。だから、ユーザーにサポートを提供しようとしてはいけないか?違う!ベンダーのウエブサイトに必要な第二の特性は、ユーザーが自分の方法を投稿する場所であることだ。あるプリンタバージョンをあるLinuxバージョンに搭載するのでなく、キャノンBJC250 をディストリビューション6.5に搭載するのだ。こうして、最初の人が、正しい手順を万人に伝えることが出来る(さもないと、皆が初めから研究しなければならない)。だがインターネットには既にLinuxのハウツーが載っている。それに付け加える理由は幾つかある。バージョンを特定した情報の他に、ベンダーにハウツーを投稿するのは、ベンダーが全部をテストしなくとも、少なくとも掲載前に見て明らかな間違いを見出せることを意味する。これでイタズラ者が初心者に嘘を教えるのを少なくとも防止することが出来る。またベンダーのために沢山の研究材料となる。ユーザーフィードバック用にラジオボタンを付けると、問題解決に役立ったか否かで各ハウツーにランクを付けることも出来る。こうして、もしMP3ファイル取扱いに5回のヒットしかなく、CD焼き付けに200回ヒットがあれば、ベンダーは次のバージョンに何を加えるべきか判断が出来る。CD焼き付けを試した人の半数しか成功しなければ、その問題を解決する必要がある。このフィードバックにより、ハウツーの自動修正も出来る。常に問題を解決するハウツーは、ベンダー文書の一部になり、マニュアルに入れることも出来る。役立たないハウツーは削除すれば良い。

私がベンダーなら、このアイデアを一歩進める。ハウツーがユーザーから肯定的反響を受けたときは、投稿者に感謝の品(会社のロゴの入ったペンなど)を贈る。1ヶ月以内に、技術志向のクライアントの間で、賞品を集める競走が起こるのは間違いない。最も有用なハウツーを提供した人には特別賞を出して奨励する。費用が掛かるだろうか?調べて見よう。客先の問題解決のため10時間掛け、5ドルの野球帽を贈ったとすると、熟練者を1時間50セントで雇ったことになる。

馬鹿馬鹿しいと言う人もいるだろう。結局、既に色々な種類のLinuxユーザーグループ、メールリスト、クラブがある。ベンダーはこれらの一つでも援助するのに時間を使わなければならないのだろうか?答は、顧客だからだ。君がamazon.comのCEOで、サーバーが故障したと聞いたとしよう。IT部長を呼び「何が起こったか?」「何時解決するか?」と聞いたとき、IT部長が「何が起こったか知りませんが、友人に聞き回り始めたので、数日中には誰かが考えてくれるでしょう」と答えたら、IT部長は職を失うだろう。貴社のソフトを使い、たった1台のプリンタで生計を立てている人に取って、そのプリンタはamazon.comのウエブサーバーと同じ位重要なのだ。ユーザーグループは、学習、問題解決策共有、などの重要資源だ。だが、ボトムラインは、製品の働きを維持する責任のあるベンダーであることだ。ベンダーがその責任を厳しく受け止めるとカスタマが信じないなら、ソフトウエアは買わないだろう。

私が間違っているのでない限り、有用なウエブサイトを構築する時間がないと叫んでいる人々は、数分前に、既に獲得したカスタマサービス要求を満たすことが出来ないと叫んでいたのと同じ人だ。人手の足りないカスタマサービス部に電話するのは、ウェブサイトで必要な情報を見出すことの出来る人々のうち一人以下だ。電話をしたとしても、時間は掛からない。電話で一寸説明して、サイトを見て貰うか、印刷物をe-メールして問題を解決して貰うかだ。それでもカスタマサービスが出来ないだろうか?大手ベンダーの幾つかはカスタマサービスを変えようとしている。残念乍ら、そのうち一つは、有料で提供しようとしている。

終わりに言いたいのは、レコードに関して、Linuxには期待しないと言うことだ。Linuxは好きだ。マイクロソフトとの競合に勝てば良いと思う。だが、今のところ、ほとんどのLinuxベンダーは、秘密にビルゲーツの所有になっているのかと思わせる。マイクロソフトはそのマーケットシェアを護るため、Linuxベンダーが既におこなっている以上の良い戦略を見出すことができないからだ。

 

Copyright © 2001, Dennis Field.
Copying license http://www.linuxgazette.com/copying.html
Published in Issue 73 of Linux Gazette, December 2001
 
 
 
 
dddを用いるビジュアルデバック

By Wolfgang Mauerer

概観

間違いは人の常だ。プログラマも人だから間違えることもある。「人の書いたプログラムには沢山の間違いがある」は常に真理だ。プログラミングは機械的な仕事で注意深く計画的に進めれが間違いを犯さないとの考えもあるけれども、プログラムは、極めて複雑な仕事で間違いは避けられない。問題は、ソフトウエアの寿命中に間違いを見付けて修正する方法だ。間違いの発見は開発段階で不可欠ではないが、使用中には重要な部分だ。

ソフトのバグを見付けるためには、良いツールが必要だ。GNUプロジェクトから無料で入手出来る極めて有力なデバッガがある。使った人はそのスパルタ式インターフェイスをご存知だろう。これは悪くはないが、良くもない。コマンド行とテキストベースのユティリティに慣れたいても、この形のデバッガを使うのは、楽しくはなく厳しい仕事だ。複雑なデータ構造の大システムの場合は特にそうだ。テキストインターフェイスは、プログラム全体庭田って一段毎に簡単な値又は一定の条件を点検して互いに深く関連する構造体をデバッグするには有効で容易だ。他のインターフェイス(emacs gud-mode など)は、やや楽だが、理想的ではない。

したがって、グラフィック・インターフェイスを必要とする。ここでも、GNUプロジェクトが大変良い可能性、DDD、データ・ディスプレイ・デバッガを提供する。DDDはAndreas Zeller とDorothea Luetkenhaus が書いたグラフィック・インターフェイスで、少し前にGNUプログラムに入れられた。デバッグが時に極めて厳しい仕事でなければ、dddは楽しみだとさえ言ったかも知れない。

他のデバッガに比べてdddの特徴は何だろう?主要点は、dddがサポートするDDDの正常デバッグ機能(ソースファイル一行毎の点検、ブレークポイント設定、変数値の変更など)ではなく、DDDがデータ構造をグラフィックに表示することにある。その意味は?後の例に示すような、Cのリンクされたリストを考える。データ構造体は基本的に、同じ型の別の構造体を指すポインタと一緒に幾つかのデータフィールドから成り、これらが一緒になって相互接続ネットワークを形成する。ネットワークは、ポインタ変数の値から作られている。これは階層内容により再構築される主値において、前又は次の要素のメモリ位置を与えるが、これは便利でも心地よくもない課題だ。この方法で状態の小型概観を作るのは極めて難しいのが欠点だ。次のプログラムラン(又は別の入力データセットなど)ではメモリ位置が変わるので、DDDがメモリ内容から自動的にダイアグラムを作成し、複雑な構造を簡単で見易くしてこの困難を克服しない限り、この作業は忽ち終わってしまう。

しかし、古いダイアログベースのデバッグ方法に比べてdddが提供するのは、プログラム構造をグラフィックに描く能力だけではない:

・複数ソースファイル間を自動的に切り換える能力
・プログラムテキスト全体(実際のステートメントを囲む数行だけでなく)を便利に見られる
・各種バックエンド・デバッガをサポートする。これは、dddはgdbをバックエンド・デバッガ処理として働くだけでなく、Python 及びPerlスクリプト言語用デバッガ、Sunのjavaデバッガ又は(GNU/Linux以外のシステム上で)dbx及びladebugにも使えることを意味する。
・複数言語をサポートする。これは、複数デバッガ能力の結果ではなく、各種ソース言語(C、C++、オブジェクティブC、フォートラン、Jabaなど)に関するgdbサポートの利点でもある。
・背景となるデバッガがサポートするすべての言語に同一インターフェイスを利用する。

簡単なプログラム例のデバッグを用いて、これらが実際にどう見えるかを見よう。

デバッグ情報の作成
バイナリプログラムは通常ソースファイルに関する情報を含まない。機械語で書かれたコードを実行するだけだ。したがって、デバッガの利点を利用する前に、所謂るdebugging symbols をオブジェクトコードに入れる必要がある(これがないと、単一機械語命令でプログラムステップ全体を実行することが出来るが、ソースコードとの関連がなく役に立たない)。UNIXの世界には各種のデバッグフォーマットがあるが、この問題には深く立ち入らない。コンパイラプログラマに重要な事柄だからだ。ここでは標準設定を用いるGNUコンパイラを使うGNU/Linuxプラットホームに集中する。

標準オプションでプログラムにデバッグ情報を含ませるには、gccを呼び出すときスイッチ- gを用いる:

[wolfgang@jupiter wolfgang]$ gcc -g fac.c -o fac

これは、通常の実行可能ファイルよりサイズの大きいバイナリファイル fac を作る。追加情報(機械語命令ブロック間の割当、ソースコードの行番号など)があるからで、驚くには当たらない。

gccが、競合コンパイラ中では極めて稀な特性を与えることに注目するのは重要である。gcc -g -O2 fac.c fac が働くなど、最適化になっている場合でも、(コードの数行から最適化を外すなどで)最適化され且つデバッグ情報を含むバイナリファイルを作って、デバッグ情報を作ることが出来るので、ここでこの組合せを解説する。

 

fac.c hに関するソースファイルには、次の内容が含まれる:



#include<stdio.h>





int main() {


  int count;


  int fac;





  for (count = 1; count < 10; count++) {


    fac = faculty(count);


    printf("count: %u, fac: %u\n", count, fac);


  }





  return 0;


}





int faculty(int num) {


  if (num = 0) {


    return 1;


  }


  else {


    return num * faculty(num - 1);


  }


}


お分かりの通り、このプログラムは簡単な計算をするだけである。整数値1から9までの範囲をループして、各ループステップで各番号のfacultyの数を計算する。これうぃ遙かに効率的な方法でおこなうことが出来るのは明らかだが、一般的デバッグ技術の例としては役立つ。これはエラーがあるので正しく働かない。付属デバッガを使わないで、通常シェルを実行してこれを点検することが出来る(デバッグ記号を含むバイナリは少し遅いだけで通常プログラムのように働く)。得られるのは、セグメンテーション不具合によって起こるコアダンプだけである。そこで、このプログラムをデバッガにおいて何が悪いか見てみよう。

プログラムをステップ毎に働かせる
デバッグのためプログラムを開く
ddd は、プロンプトで次のようにタイプするスタートする。
[wolfgang@jupiter wolfgang]$ ddd&

デバッグするプログラムのファイル名は、オプション引数として与えることが出来る。dddを搭載していないときは、dddバイナリはすべての主要ディストリビューションに付いて供給されるので、好みのパケージ管理システム(apt-get, rpm など)を用いてほとんど確実におこなうことが出来る。バイナリパケージがないときは、ftp.gnu.org (又はそのミラー)からソース配布を受けて、付属 INSTALL ファイルの指示にしたがう。

コマンド行に名称を入れないときは、 File->Openプログラムの入力ダイアログボックスを通じて選ぶことが出来る。dddがそのプログラムをロードして、デバッグ記号を解析し(正確にはバックエンド・デバッガに解析させ)、その後、メイン・ソースファイルをロードする。ディスプレーに図1と同じようなウインドウが示される筈だ。

 
\begin{figure}\begin{center} \ep
図 1: ddd メイン・ウインドウ

我々の課題に ``Command Tool''-Subwindow は極めて重要だ。これは規定値で、メイン・ウインドウの右に示され、コードを用いて各種作業が実行出来る(誤ってウインドウズを閉じたとき、F8又はウインドウメニュー項目View->コマンドを使って開くことが出来る)

次のステップ
プログラムを1行毎に実行して、実行中に何が起こるか観察する。それには、プログラムをスタートする必要があるが、所謂るブレークポイントを設定して、中断のチャンスを得る前にプログラム全部がが終わってしまうのを防ぐ。ブレークポイントは特定のソース行でプログラム実行を保留し、デバッガが介入してデバッグをおこなう機会を与える。左側ソースウインドウの int count; 行をマウスで右クリックする。これはこの行でプログラム実行を止めることを意味する。

ここで、コマンドツールから " run'' を選ぶ。これはデバッガにコードの開始を命令する。ブレークポイントが始めに近くてプログラムは長くないので、直ぐデバッガ干渉モードに入る。ソースコード左の緑矢印が、ソースファイルで次ぎに実行される行を示す。

ソースコードのステップ毎実行に二つの方法がある。"next" は1行毎に実行するが、プロシージャ呼出は省略(呼出の結果を示すだけ)する一方で、"step" は、呼び出されている間サブルーチンコードを掘り下げる。プログラムの悪いところを見付けたいので(普通のエラーなので、熟練プログラマには分かっている筈)、プログラム全体を "step" する。ボタンを押すと、faculty サブルーチンの始めの右に緑のソース行ポインタが出る。これが、したいことなので、もう一度 "step" を押して、緑矢印を条件決定のelseブランチに向ける。これもOKだ。次に何を期待するか?サブルーチンに入ったとき num の値は1なので、回帰してサブルーチンに再び入るときは、直ちに値1を返す0の筈で、これはまた最初の呼出の1*1=1 を返し、メインプログラムに戻る筈だ。もう一度 "step" を押したとき実際にそうなるか調べよう。緑ポインタは、再びファンクションの始めに戻るが、次のステップでelseブランチに入ってしまう。何かが間違っている。num の値を調べる必要がある。

簡単な変数(int, long, floatなどの簡単な型の変数など)の値を示すには幾つかの方法がある。最も普通の方法は、ソースウインドウの中でマウスポインタを変数の上に置き、内容を示すツールチップが画面に現れるのを待つことだ。別の方法は、アイデンティファイアの上でマウスを右クリックしポップアップメニューから Print num を選ぶか、又はアイデンティファイアをマークして Data->Print() メニュー入力を選ぶことだ。後の二つの方法を使うと、値はウインドウズ下側のgdb出力ウインドウに表示される。

方法に関わりなく、num の値として0が得られる。num が0なのに何故第二ブランチに入ったのか?もう一度stepを使って、エラーの推測を確認する。ファンクションの始めに num の値を見ると、-1であると分かるが、次のstep(またif条件の第二ブランチ)ではまた0になる。エラーは、ifに=を忘れて、条件でなく指定を示したことだ。Cプログラムでは有り勝ちなエラーだが、隠れているとプログラム開発を著しく遅らせる。不正確なプログラムからは、意味のある結果が得られないので、実行ウインドウの"kill"ボタンを使って、これを殺すことが出来る。

"=" を"=="で置き換えて、プログラムをコンパイルし直し、(デバッグ記号をわすれないこと)"File"-メニューからdddにロードし直す。ブレークポイントは保たれているので、プログラムを始めからスタートすることが出来る。今度は faculty ファンクション呼出がうまく完了し、緑ソース行ポインタは printf(...)-l行にある。もう一度"step"を選ぶと、dddはプリント呼出をステップ毎におこなうが、これは不可能だ。ファンクションを、普通はデバッグ記号無しでコンパイルされる標準Cライブラリから取っているからだ。だからこの場合は"next"が良い。"step" は、ありもしない幾つかのソースファイルについてエラーメッセージを出し、何度も"next"くりっくをしなければならなくなる。

データ構造体の視覚化
単純構造体
最初の簡単な例では、dddは emacs gud-mode など他のインターフェイスと同様であった。だが、ここではddd独特の優れた特性を示す。ネストされた構造体をグラフィックに示すことだ。その特性を示すためには、新しいプログラム例、list.c、を必要とする。


#include<stdio.h>





int main() {


  typedef struct person_struct {


    /* データエレメント*/


    char* name;


    int age;


    


    /* リンクエレメント*/


    struct person_struct *next;


    struct person_struct *prev;


  } person_t;





  person_t *start;


  person_t *pers;


  person_t *temp;





  char *names[] = {"Linus Torvalds", "Alan Cox", "Rik van Riel"};


  int ages[] = {30, 31, 32};


  int count;  /* 臨時カウンタ*/





  start = (person_t*)malloc(sizeof(person_t));


  start->name = names[0];


  start->age = ages[0];


  start->prev = NULL;


  start->next = NULL;


  pers = start;


        


  for (count=1; count < 3; count++) {


    temp = (person_t*)malloc(sizeof(person_t));


    temp->name = names[count];


    temp->age = ages[count];


    pers->next = temp;


    temp->prev = pers;


    pers = temp;


  }


  temp->next = NULL;





  printf("Data structure created\n");


  return 0;


}


例に使用されたnameはご存じだろうが、それは重要でない。ageは無作為で選んだ。

このコードは個人特性二つ(nameとage)を二つのポインタ(リストの前と後のperson)とともに記憶するpersonエレメントの二重リンクリストを定義する。これはCで最も重要な構造体なので、どのプログラマも何度か見た筈だ。前と同様、このプログラムは余り重要な仕事はしない。メモリに構造体を作って終わるだけだが、今の目的にはこれで十分だ。プログラムは、デバッグ記号を付けてコンパイルし、dddにロードする。

今度は、最初のブレークポイントを28行目(forループの始め)に置く。start-アイデンティファイアの上にマウスポインタを置く。一寸待つと現れるバリューツールチップにdddが、六角形の記号で特定のメモリ位置にある struct person_t のインスタンスへのポインタであることを示す。グラフィック視覚化の完璧な候補だ!

startアイデンティファイアの上でマウスを右クリックして、コンテキストメニューをポップアップし、"Display *start" - を選ぶ。*は、dddが自動的にポインタの参照を外し構造体の内容を示すため必要だ。dddウインドウ上部の新しい部分が示され、startの内容を含んでいる。nameとageは数行先を割り当てる値に設定され、 next, prev は期待通りNULLポインタを含む。図2は、ディスプレイで見られる筈のボックスを示す(ポインタの六角形の値はシステムにより異なる)

 
\begin{figure}\begin{center} \ep
Figure 2: データ構造体の視覚化

これだけでも立派な特性だが、プログラムをもう少し進めてデータ構造体がメモリ内にどう構築されるか見よう。"next"ボタンを使ってforループを34行(pers->next = temp)に達するまで進める。このとき二人目の個人データ構造体が構築されて一人目のものと接続される。後でグラフ表示を見ると、一人目の次のフィールドが、0でなくなっていて別の構造体を指している。呼び物は、この値をダブルクリックすると、二人目の構造体のある新しいボックスが開く。一人目から二人目へのポインタがボックス間の矢印として自動的に表示される。

三人目のデータ構造体を作るには別の方法を用いる。結果を見るのにコードを一行だけ進めるのが便利だからである。printf(...)ステートメントを含む39行目に新しいブレークポイントを設定する。"cont" を押すとプログラムは次のブレークポイントに達するまで継続する。

通常の方法で三人目のデータを示すことが出来る。だが今度は、n 人目から n+1人目までだけでなく、後ろ向きポインタも見たい。例えば、第二グラフの prev-フィールドをダブルクリックすると、一人目のボックスを表示中に写した別のボックスがポップアップする。三人目の prev-フィールドでも同じことが起こる。これは同じ構造体を二度表示するのは、我々のしたいことではない。これの修正をdddに命令する。

dddは、alias detectionと言う特性を使ってこれをおこなう。これは Data->Detect アリアスメニューエントリを使って実行する。表示は図3のようになる。

\begin{figure}\begin{center} \ep
図 3: リンクした個人リスト

すべてのポインタが正しく示され、メモリ内のデータ構造体の様子がよく分かる。残念乍ら、アリアス検出機能を使うと、特に密に接続された構造体を持つものは、dddの速度を遅くする欠点がある。グラフをそれぞれ比較して表示中のどの構造体が同じメモリ位置にあるかを見るため、プログラムステップの後で幾つかのメモリ位置を比較しなければならないからである。加えて、アリアス検出は、バックエンドデバッガに任意のオブジェクトのアドレスを与えることの出来るソース言語を用いるときしか利用出来ないので、今のところC、C++及びjavaに限られる。

もっと複雑な例
dddの図形表示能力を示すため、(少なくとも出来上がったデータ構造体に関して)少しばかり複雑な例を見よう。これから使うソースコードは次の通りである (arith.c):


#include<stdio.h>


/* 数学式をあらわすバイナリツリー構造体を作る */





enum operator { plus, minus, times, div };





typedef struct tree_struct {


  struct tree_struct *left;


  struct tree_struct *right;


  union {


    int op:2;


    int val;


  } opval;


} tree_t;





int main() {


  tree_t *node;


  tree_t *root = (tree_t*)malloc(sizeof(tree_t));


  root->opval.op = times;





  node = (tree_t*)malloc(sizeof(tree_t));


  node->right = NULL;


  node->left = NULL;


  node->opval.val = 7;


  root->right = node;


  


  node = (tree_t*)malloc(sizeof(tree_t));


  node->opval.op = plus;


  root->left = node;





  node = (tree_t*)malloc(sizeof(tree_t));


  node->left = NULL;


  node->right = NULL;


  node->opval.val = 5;


  root->left->left = node;





  node = (tree_t*)malloc(sizeof(tree_t));


  node->left = NULL;


  node->right = NULL;


  node->opval.val = 3;


  root->left->right = node;





  printf("Tree created\n");


  return 0;


}


このプログラムは、パース過程完了後コンパイラがそれらを見る方法で数学式をあらわすバイナリツリー構造体を作る。グラフ構造体がこの情報を本質的に含むので、この形では括弧が異常に多い。各ノードが、数学演算子(方程式operatorsが定義する、+、−、×、÷)又は一定(整数)値の何れかを含む。データ構造体のあらわす式は、明確に表現すると (5+3)*7 である。

プログラムを走らせる(終わりの前で、データ構造体構築の後にブレークポイントを設定しておく)。構造体のleft/right-メンバーをダブルクリックして、ルートエレメントと引き続くメンバーすべてを開く。メモリ構造に関するすべての情報が得られるが、見掛けは良くない。図4の様な見掛けにしたい。

 
\begin{figure}\begin{center} \ep
図 4: Simple ツリーであらわした単純数学式

ツリーを単に展開して作った図に比べて明らかに一つの変更がある。すべてのエレメントが順に並んでいる。これは、マウスを使ってエレメントをそれぞれの位置にドラッグすればよいが、それは不便だ。遙かに簡単な方法は、dddが提供する自動配置機能だ。それを使うには、メニュー入力 Data->Layout Graph (又はショートカットALT+Y)を選ぶ。dddが、後に示す方法でグラフを配置する。

グラフには別の人手変更が加えられていることに注意。各モードで値又は演算子の何れかをあらわすのに、ユニオンストラクチャを使っているので、dddは同時に両方を表示する。これは混乱し易いので、避けなければならない。ルールは明確だ。leftright ポインタ双方が NULL になっているノードは数値を、他は演算子をあらわす。右マウスボタンを用いてアクセス出来るコンテキストメニューから"Unidisplay"を選んで、不要なエントリを消去する。dddは、作用をすべてのフィッティング構造体に適用するか、現在のものだけかを聞いて来る。各種ボックスから各種値を消去したいので、二番目を選ぶ。

dddのデータメニュー内には、グラフ配置を扱う追加機能がある。これらは分かり易いので、読者は簡単に使い方を習得出来るる筈だ。

多重リンク構造体
最後の例として図5を取り上げる。これは、コンピュータ科学の古典、Donald Knuth著Fundamental AlgorithmsThe Art of Computer Programmingシリーズから)に示されたデータ構造を用いて有理整関数 (3*x^2+zy-3xz^3)を表示するプログラム poly.c が作るグラフを表す。グラフの意味は直ぐには理解出来ないだろうが、極めて複雑な構造体を視覚化する可能性を掴むだけでよい。これには自動配置機能を使わない。正しいが、使い易くはないグラフになるからだ。構造体の背後にある考えに付いて多過ぎる情報が配置に入る。
 
\begin{figure}\begin{center} \ep
図 5: メモリ中にあらわされた有理整関数式
データセットの描画
dddで描けるのはデータ構造体だけではない。アレーに記憶されたデータセットも、有名なGnuplot プログラムの助けを借りて視覚化することが出来る。これらデータセットは極めて頻繁に作成されるので、この機能を見てみよう。
プログラム valtab.c は、ある関数(この場合は二次元サイン関数)に関する数値表をつくるプログラムである。数学ライブラリに含むためには、gccの中の -lm スイッチを用いてこのプログラムをコンパイルしなければならないことに注意。


#include<stdio.h>


#include<math.h>





int main() {


  float *val;


  float sval[100];


  float **threed;


  int points = 100;


  float period = 2*M_PI;


  int count, count2;





  val = (float*) malloc(points*sizeof(float));


  for (count = 0; count < points; count++) {


    val[count] = sin(count * period/(float)points);


    sval[count] = val[count];


  }


  


  threed = (float**)malloc(points*sizeof(float));


  float x,y;


  for (count = 0; count < points; count++) {


    threed[count] = (float*)malloc(points*sizeof(float));


    for (count2 = 0; count2 < points; count2++) {


      x = count*period/(float)points;


      y = count2*period/(float)points;


      threed[count][count2] = 1.0f/(x+y)*sin(x+y);


    }


  }





  /* 通常、作成したデータをファイルなどに書き込む */


  printf("Value tables created\n");


  return 0;


}


通常、ほとんどのプログラムは複雑な関数を扱う(又はそのデータセットを異なる方法で取得する)が、基本原理(アレーに値を満たす)はすべての場合に変わらない。

データ描画の各種方法を示すため、サンプルプログラム内に三種類のアレーを作る。最も簡単なのは、svalのように静的な、一次元アレーである。この場合、アイデンティファイアの上でマウスを右クリックして光らせ、ウインドウの上部に出る"plot"アイコンを押すだけで良い。望みのグラフのある gnuplot-ウインドウが新たに開く。グラフの見掛けは、幾つかのメニュー入力を用いて変更することが出来る。図6は、メニューでPlot->Linesを選んで、スタイルを規定値の「点」でなく「線」にした出力を示す。

 
\begin{figure}\begin{center} \ep
Figure 6: 描画ウインドウ

動的作成アレーの場合はやや複雑になる。dddがその長さを自動的に決められないからだ。この仕事は所謂る array slicesの利用だ。これはdddウインドウ下部のデバッガ会話部分で人手により定義しなければならない。

graph display val[0]@points が、このようなアレースライスを作る。ここで、インデクス式[0]は、使用値(メモリ値 pointsの代わりに、単純整数値が同様に使える)に関するも下限を、 @points は上限を意味する。このグラフの描画は、前と同じにおこなう("plot"ボタンを押す)と、同じデータセットを使っているので、同じ結果が得られる。

三次元グラフもほとんど同じ方法だ。後で"plot"ボタンを押すためマウスを使って静的アレーのアイデンティファイアを光らせる一方で、動的割当構造体をを使うときはアレースライスを作らなければならない。このためのシンタクスは、読者の予想通りgraph display threed[0][0]@points@pointsである。

変更機能が使えるので、三次元グラフ用gnuplotは、dddインターフェイスで余りよくサポートされていない。このような描画は二次元の様な意味のある結果を示さない。

グラフとプロットのプリント
プログラムを文書化するには、dddで作られるもののような、データ構造体に関する図形表現を用いるのが便利である。dddのプリンタ・インターフェイスは、グラフのプロットのPostscript版を作る方法を与える。グラフをプリントするには、File->Print Graphを選ぶだけだ。選択の出来るメニューがポップアップするので、プリントボタンを押すと、ファイルに送るか又はプリントに直接出力する。

プロットにも同じ方法を使う。唯一の違いは、プリントダイアログのオプションが少ないことだ。グラフはPostscript にもfig-フォーマットにも移出できるが、プロットはPostscriptだけにしか移出できない。

dddは、ウオッチポイント、多言語サポートなど多数の機能を与える。これらは、この記事の話題を超える。dddと一緒に来る文書の内容を繰り返す気はないからだ。(文書は http://www.gnu.org/software/ddd.で入手出来る)代わりに、読者が自分のプログラムをデバッグしてdddの豊富な機能を探求されることをお薦めする。

最後に諺を引用する:

デバッガは良い考えの代わりにはならない。だが、場合によっては考えがデバッガに及ばない。最も有効な組合せは、考えとデバッガだ。・ --Steve McConnell, Code Complete
 
Copyright © 2001, Wolfgang Mauerer.
Copying license http://www.linuxgazette.com/copying.html
Published in Issue 73 of Linux Gazette, December 2001
 
 
 
 
ディストリビューションのサポートのない
ルートデバイスをLinuxに搭載

By Zwane Mwaikambo

 

システム管理者は、時に最新のLinuxディストリビューションがサポートしないサーバーハードウエアを取得することがある。これは普通は問題でない。ベースシステムを搭載出来る限り、それが走れば接ぎ木出来るからだ。唯一の例外は、ルートデバイスがサポートされていないときだ。

ここでの問題は、ハードウエアをディストリビューションがサポートしていないときだ。ほとんどの場合、最新のkernelはハードウエアをサポートするので、kernelを更新すると問題は解決する。システムを未だ走らせていないとき、これは鶏と卵の関係になる。この記事では、そうした頭痛の種を和らげたい。例として用いるのディストリビューションはRed Hat 7.1(以後RH7.1と言う)で、サーバールートデバイスはAdaptec 2100ホストサーバー上のRAIDデバイスだが、どのようなデバイスにもこの記事が役立つよう、一般化して説明する。

RH7.1と一緒に来るkernelは、Red Hat が修正した 2.4.2-2, a 2.4.2-ac ベースのkernelだ。私の目標kernelは2.4.10-ac1だ。私は"-ac"を薦める。Alan Coxがテスト用に沢山の実験的ドライバを組み込んでいるので、各種デバイスにためのサポートがあるからだ。kernelを構築するには、コンパイルを行いブートディスクを作るため追加のLinuxボックスを必要とする。ブートディスクを作るとき、dmesg)からのバッファ出力に基づくとの仮定をおこなうことが出来る。サイズはここでの対象だ。オリジナルと同じ空間に新kernelを合わせる必要があるからだ。余裕は余りないので慎重に進めなければならない。ここに、新コンフィギュレーションの概略を説明を付けて示す。



CONFIG_X86=y


CONFIG_ISA=y


CONFIG_UID16=y





# 新ドライバーに必要


CONFIG_EXPERIMENTAL=y


CONFIG_MODULES=y


CONFIG_MODVERSIONS=y


CONFIG_KMOD=y





# 目標CPUを選ぶが、サイズのためSMPを飛ばす


# イネーブルのときヒット


CONFIG_MPENTIUMIII=y





# 1G以上のRAMがあっても、インストレーションには


# 高メモリにこだわらないい


CONFIG_NOHIGHMEM=y





CONFIG_NET=y


CONFIG_PCI=y


CONFIG_PCI_GOANY=y


CONFIG_PCI_BIOS=y


CONFIG_PCI_DIRECT=y





# この特定のオプションがkernelを膨らませるだけ


# インストール中にこの必要はない


# CONFIG_PCI_NAMES is not set


CONFIG_SYSVIPC=y


CONFIG_SYSCTL=y


CONFIG_KCORE_ELF=y


CONFIG_BINFMT_ELF=y


CONFIG_BINFMT_MISC=y





# デスクトップシステム上の通常演算のためにも


# ACPI とAPM は不要なのでスキップすること


# CONFIG_PM is not set


# CONFIG_ACPI is not set


# CONFIG_APM is not set





# 今はパラレルポートは不要


# CONFIG_PARPORT は設定しない





CONFIG_BLK_DEV_FD=y


# ディストリビューションによっては


# インストレーション中にループデバイスを用いる


CONFIG_BLK_DEV_LOOP=y





# インストレーション中Initrds はほとんど常時使用する


CONFIG_BLK_DEV_RAM=y


CONFIG_BLK_DEV_RAM_SIZE=4096


CONFIG_BLK_DEV_INITRD=y





CONFIG_PACKET=y


# CONFIG_PACKET_MMAP は設定しない


# CONFIG_NETLINK は設定しない


# CONFIG_NETFILTER は設定しない


# CONFIG_FILTER は設定しない


CONFIG_UNIX=y


CONFIG_INET=y





# IDE デバイスがあるか? 私は常に使う


# IDE cdroms


CONFIG_IDE=y


CONFIG_BLK_DEV_IDE=y


CONFIG_BLK_DEV_IDEDISK=y





# 一時に多数のセクターを読込んで


# 物事のスピードを上げる


CONFIG_IDEDISK_MULTI_MODE=y


CONFIG_BLK_DEV_IDECD=y


CONFIG_BLK_DEV_IDEPCI=y


CONFIG_IDEPCI_SHARE_IRQ=y


CONFIG_BLK_DEV_IDEDMA_PCI=y


CONFIG_BLK_DEV_ADMA=y





# アドオンカード上のディスクにインストールするとき


# これが必要になる筈はず


# CONFIG_BLK_DEV_OFFBOARD は設定しない





# DMA はインストール時間と


# 一般的エラーチェック時間の短縮に良い


CONFIG_IDEDMA_PCI_AUTO=y


CONFIG_BLK_DEV_IDEDMA=y


CONFIG_IDEDMA_AUTO=y





# これら IDE-RAID カードから出たとき


# 出たことをチェックしたい筈


# CONFIG_BLK_DEV_ATARAID は設定しない


# CONFIG_BLK_DEV_ATARAID_PDC は設定しない


# CONFIG_BLK_DEV_ATARAID_HPT は設定しない





CONFIG_SCSI=y


CONFIG_BLK_DEV_SD=y


CONFIG_SD_EXTRA_DEVS=40


CONFIG_SCSI_MULTI_LUN=y





# 低レベルドライバに関しては、インストール


# する必要のある一つだけを取り上げる


# 私は aic7xxx ベースのカードを選ばない


# これには、テープドライブがあるだけだからだ


CONFIG_SCSI_DPT_I2O=y





# kernel サイズを大きくする、飛ばす


# CONFIG_SCSI_DEBUG は設定しない





# この i2o ベースのRAID


# 特定カードに必要


CONFIG_I2O=y


CONFIG_I2O_PCI=y


CONFIG_I2O_BLOCK=y


CONFIG_I2O_SCSI=y





# 実際にネットワークカードを必要としない


CONFIG_NETDEVICES=y





# どこかにタイプしなければならない ;)


CONFIG_VT=y


CONFIG_VT_CONSOLE=y


CONFIG_UNIX98_PTYS=y


CONFIG_UNIX98_PTY_COUNT=256





# 「テキスト」ベースのインストレーションを使うことが出来る


# CONFIG_MOUSE は設定しない


# CONFIG_PSMOUSE は設定しない


# CONFIG_82C710_MOUSE は設定しない


# CONFIG_PC110_PAD は設定しない





# 後で BOFH にすることが出来る ;)


# CONFIG_QUOTA は設定しない





# ext3サポートを持つディストリビューション上にあるときは


# これをイネーブルにしたい(レジスタも同じ)筈だが


# サポートされるファイルシステム数を低く保つ


# CONFIG_EXT3_FS は設定しない





# ディストリビューションによっては msdos fsが必要


CONFIG_FAT_FS=y


CONFIG_MSDOS_FS=y





# インストレーション媒体に関して


CONFIG_ISO9660_FS=y


# CONFIG_JOLIET は設定しない





CONFIG_PROC_FS=y


CONFIG_DEVPTS_FS=y


CONFIG_EXT2_FS=y





# レギュラーPC パーティション


CONFIG_MSDOS_PARTITION=y





# これは必要ないだろうが、ものごとを解決する


CONFIG_NLS_DEFAULT="iso8859-1"





# コンソールドライバ


#


CONFIG_VGA_CONSOLE=y





# 今は余り可愛くない penguins :)


# CONFIG_FB は設定しない





# USB キイボード/マウスを持っているのでない限り、ここは飛ばす


# CONFIG_USBは設定しない


kernelコンバイルを終えた後が、新kernelを旧インストールのkernel位置に移す時期だ。インストレーションに用いたブートデスクを搭載しておこなう。これをおこなうには、ループバック・ブロック・デバイス・サポートを必要とする。


# cd /tmp


# cp /cdrom/boot/boot.img .


# mkdir bootdisk


# mount -t msdos boot.img bootdisk -o loop


# cp /usr/src/linux-2.4.10-ac11/arch/i386/boot/bzImage bootdisk/vmlinuz


syslinuxが適切なルートデバイスを渡す(つまりinitrd)のでrdevは不要


# ブートディスクを外す


# dd if=boot.img of=/dev/fd0


構築されたこの特定のkernelについてサイズを比較してみる


元のインストレーションのkernel : 652k


カスタム・インストレーションの kernel : 632k


カスタム「ノーマル」kernel : 951k


明らかに、ブートディスクには、全機能装備のkernelを合わせることが出来ない。
これが出来ると、我々のルートデバイス用のサポートを持つ「新」インストレーションが出来る。ここで、ブートディスクを用いてインストレーションを開始する。kernelサイズを小さくするためフレームバッファとマウスサポートを除去したので、テキストベースのインストールを薦める。インストレーションを完了したら、システムはインストールされているが、デバイスからブートすることは出来ない。理由は、君のディストリビューションがkernelパケージをそのインストレーション媒体からインストールし、インストレーションの間に使ったものからではないからだ。コンパイルボックスに戻って、次を行い、ブートディスクを作る必要がある。


# rdev bzImage /dev/sda1


# dd if=bzImage of=/dev/fd0


(/dev/sda1の代わりに自分の実際のルートデバイスを使う.)

これをおこなってシェルにブートしたとき、新tarballを目標コンピュータ/サーバー上にアンパックして、必要な構成をおこなうことが出来る。ディストリビューションのconfigファイルを取って、次のようにして構築する。



# cd /usr/src/linux-2.4.10-ac11


# cp /home/zwane/config-2.4.2-2 .config


# make oldconfig


プロンプトの質問に答えると、menuconfig に入ってコンパイル前の最終コンフィギュれーションのチェックをおこなう:


# make menuconfig


# make dep bzImage modules modules_install


出来上がったイメージを自分のkernel位置(即ち /boot/vmlinuz)に移し、liloコンフィギュレーションをエディットする(又はgrubを使っていれば、liloをスキップする)。新kernelにrdevをおこなう必要がある。構築したkernelが、コンパイルのとき自分の今のルートデバイスの"detect"を処理し、それをそのセッションで構築したkernelにセットするからだ。トップレベルのMakefile(例えば、/usr/src/linux-2.4.10-ac11/Makefile)をエディットしROOT_DEVICE を自分のデバイスに変えることも出来る。


# rdev /boot/vmlinuz /dev/sda1


これで再ブートが出来、出来上がりを楽しめる筈だ。
 
Copyright © 2001, Zwane Mwaikambo.
Copying license http://www.linuxgazette.com/copying.html
Published in Issue 73 of Linux Gazette, December 2001
 
 
 
 
Answer Gangの投稿指針

By Ben Okopnik

 

この記事は、投稿質問に対し意味のある回答を得る機会を最大にするため必要な事柄を述べる。人に笑われたり、迷惑を掛けたりするのも防止する。これはMcClellanのPosting Guidelines for comp.lang.perl.misc 及び Netiquette Guidelines RFC.に負うところが大きい。

投稿の前に

必ず

・LG とTAG FAQを点検する
・関係するすべての HOWTO のリストを点検する

必ず、必ず

・関係回答につき LG 既刊号の答を点検する

その気があれば

・他の文献を当たる (書物、STFW など)
TAGへの投稿
・質問はLinuxについて又はLinux社会への利益であること
・題名を慎重に選ぶこと
・「働かない」の言い方には気をつけること
・答えやすい形にすること
・必要且つ十分な情報を提供すること
・ バイナリ、HTML、MIMEで投稿しないこと
・メッセージに「機密」又は「個人専用」条件(サイト単位で自動的に付加されることもある)を含むときは、e-メールで明らかにすることを明確に承諾する必要がある。さもないと、回答は出来ない(匿名はOK)。

ご期待のように、Answer Gangの議論は技術的性質のものなので、これらの議論を進めるには、慣習を守ることが絶対に必要です。

投稿前にFAQを点検することは、普通にネットフォーラムで要求されます。こらはTAG特有ではありません。

TAGには毎月数百のメッセージがあります。どれに答えるか決めなければなりません。貴方の投稿は他の人と競合する訳です。誰かの助けを得る前に「勝つ」必要があります。

表題の40文字で印象が決まります。何が問題か分かり易く表現して下さい。経験レベル(熟練、初心)の説明に費やさないで下さい。挨拶(どうぞ、助けて)に使わないで下さい。主題以外(Linuxの質問、質問します)を言わないで下さい

ネットフォーラム力学の美しさの一部は、初めての投稿が社会への貢献になることです。選んだ主題が、躓きの理由を研究者が研究する動機になれば、質問すること自体が貢献になります。

後報を作るとき、貴方が加える意見に必要な文脈構成に必要なだけ引用して下さい。誰の文かは常に示して下さい。記事全部を引用しないで下さい。

意見を付ける引用文に「続けて」貴方の意見を配置して下さい。そうしないのを「危険な」投稿と言います。質問の前に答が来るからです。順が逆になると分かり難くなります。読みたくなくなる人もいます。 http://www.geocities.com/nnqweb/nquote.htmlの引用の仕方について詳しい説明があります。

e-メールはテキストのみの媒体です。Word文書、vcads、HTML、MIME(言語特有の文字をあらわすのにMIMEが必要でない限り)は使わないで下さい。多くの人が投稿を読めなくて迷惑を掛けます。普通のテキストは誰でも読めます。

公開された回答は社会に役立ちます。それがTAGでやっていることです。「これは機密にしたい」と告げたときは、答はありません。無償で個人指導は得られません。

「働かない」と言うのには気を付けて下さい。これは「レッドフラッグ」です。それを書くときは「働かない」以外の言葉がないか良く考えて下さい。つまり、自分のしたいことを、どのようにやってくれないのかを記述して下さい。

 

Copyright © 2001, Ben Okopnik.
Copying license http://www.linuxgazette.com/copying.html
Published in Issue 73 of Linux Gazette, December 2001
 
 
 
 
コンピュータ馬鹿話

By Mike "Iron" Orr

「馬鹿話」は適切な表題でないかも知れない。「馬鹿話」より「面白話」の方が多いからだ。だが、この表題を続ける。

バッファ画面       Courtney Grimland

LinuxをPCで始めた頃のことだ。あれはRed Hat(6.2だったと思う)で、すべてが順調に進んだ。

ブートに差し掛かったとき、恐る恐るルートパスワードをタイプした。次ぎにすべきことは、喜び勇んであらゆる文書を読んだところでは、bash番号を捜すことだった。Red Hat に電話して登録プロセスのヘルプを頼まなかったのは確かだ。

パスワードでログインしたとき、見えたのは、お分かりの通り



bash#


打ちのめされた。これが、生涯見ることになる(C:\のような)入力を待つコマンドプロンプトだとは思わなかった。

馬鹿話ではないかも知れないが、この1年半で私の辿った道程を示している。今は、ガールフレンドが香港で買ってきたミニエチャMP3プレイヤ用のデバイスドライバとファイル管理ソフトウエアに取り組んでいる。

ロシアからの物語      BaRoN!

皆さん今日は!馬鹿話のロシア語訳を読みました。次は友達の話です。
5,6年前のこと。100Mbハードディスクを買った。半年働いた後、BIOSが検出しなくなった。1990年代中頃のロシアの技術サポートは極めて悪く、今ではもっと悪い。人口330万人ほどの小さい町に住んでいるが、1900年代中頃には100人程の友人がPCを持っていた。業者は、HDDを壊したのは友人だから交換出来ないと言った。

100Mb HDD を新しく買うお金はなかったので、それを使って別のことを始めた。

友人のアレックスが、それを誰かに見せたら、買って帰った。何とBIOSは検出した。

パーティションを作ってフォーマットしたら、順調に出来た!だが天国は1日続いただけだった。

また働かなくなったとき、アレックスは別の作戦を立てた。HDDを担いで20分歩いたら、−また検出された。(摂氏マイナス25度の冬のことだ)

HDDをポリエチレンで包んで冷蔵庫のフリーザーに15分入れることを薦めた。これもうまく働いた。

そこで、友人は毎日登校前にHDDをフリーザーに入れている。あららしいHDDが買えるようになるまで、これを5ヶ月続けた。

まとめ
受け取った物語について面白いもう一つの点は、非常に多くの物