Linux Gazette 2004年1月号 #98
今月のLinux Gazette の主な記事
n scpを用いるパスワードの見送り
n フラッシュカード印刷出力
n troffの新生命
n ホーム又はオフィス・ネットワーク用の迷惑メール対策
n Linuxシステムの起動
n Suse 9.0上でオートログインを変更
n 米英語キイボードを他の西欧語用に構成
n ドイツから:Linux対XPの使い勝手研究
n コマンド:cdrecordを使う(ISOイメージをCDに書込)
n Konquerorを用いる画像集の構築
n Ksnapshotを用いる画面の捕捉
n 単語カードを用いる学習
n DCHP入門
n Etherealを用いるネットワーク監視
n 正しいテキスト・フォーマットの選択
 
(訳者注)
原文を一括して一つのファイルでセーブするには、下記のリンクがあります。
TWDT 1 (gzipped text file)
TWDT 2 (HTML file)
前者はテキスト形式で、後者はHTML形式です。但し、HTML版のリンクが働くとは限りません。
 
 
 
 
 
scpを用いるパスワードの見送り
By Dave Sirof
 
この記事では、パスワード無しでscpを使う方法を示す。次いで、これを素晴らしいスクリプト二つで使う方法を示す。一つはネットワーク上の多数のLinuxボックスにコピイし、他はLinuxボックス全部を容易にバックアップすることが出来るようにする。
 
Linuxのシステム管理者なら、あるlinuxボックスから別のボックスににファイルを頻繁にコピーする必要がある。又は、多数のボックスにファイルを配布する必要がある。ftpを使用しても良いが、代わりにscpを使用すると沢山の利点がある。ftpは(パスワードにさえも)平分を使用するのに対し、scpは暗号化されてLAN /WANを往来するので、scpの方が遙かに安全である。
 
しかし、私がscpに関して最も好きなのは、容易にスクリプトにするのが楽なことだ。100個のLinuxボックスに配布する必要のあるファイルがあるとしよう。私ならcopyコマンドを100組書くよりも、それを行うスクリプトを書く。スクリプトにftpを使用すると、ログインするlinuxボックス毎にパスワードを聞かれるので、スクリプトは全く厄介なものになる。だが、scpを使用すると、遠隔linuxボックスがパスワードを求めないよう整理することが出来る。信じようが信じまいが、この方がftpを使うより遙かに安全なのだ。
 
scpのための最も基礎的なシンタックスを実証する例を示す。'abc.tgz' と言う名のファイルをローカルpcから 'bozo'と言う名の遠隔pcの /tmpディレクトリにコピイするには、次を使用する。
 
scp abc.tgz root@bozo:/tmp
 
ここで、bozoのルート・パスワードを聞かれる。だから未だ完全でない。未だパスワードを聞いて来るので、スクリプト作成は楽ではない。修正するには、以下の一回限り手順を踏む(その後、無限に「パスワード無し」scpコピーを行うことができる)。
 
1. ローカルマシン上のどのユーザが後でscp使用するかを決定する。もちろん、ルートなら最も強力で、私が行う方法だ。ここでルートの危険性を講義しようとは思わないので、それらを理解していない場合は、別のユーザを使用されたい。何を選んでも、今残りの手順ではそのユーザとしてログインし、後でscpを使用するときは、そのユーザとしてログインする。
 
2. ローカルマシン上に一対の公開/秘密のキーを作る。何かだって?公開暗号学に精通していないなら、15秒で説明しよう。公開暗号キー暗号学では、一つは公開で一つは秘密の数学上関連するキー一対を作る。その後、公開キーを世界中の誰にでも皆に示す。しかし、秘密キイは絶対に明かさない。魔術はキーの数学的構造にある。誰でも君の公開暗号キーを使ってメッセージを暗号化することができる。しかし、君だけが自分の秘密キーを使ってそれを解読することができり。とにかく、一対のキーを作るシンタックスは次の通りだ。
 
ssh-keygen -t rsa
 
3. これに応答して、次が出る:
"Generating public/private rsa key pair"(公開/秘密rsaキー・ペアを作ります)
"Enter file in which to save the key ... "(キーを保存するファイルを入力して下さい)
これを承認するにはenterを叩くだけだ。
 
4. 応答して、次が出る:
"Enter passphrase (empty for no passphrase):"(パスフレーズを入力(なければ空白))
パスフレーズは不要なので、enterを二回叩く。
 
5. 応答して、次が出る: 
"Your identification has been saved in ... "(あなたの識別は保存されました)
"Your public key has been saved in ... "(あなたの公開暗号キーは保存されました)
作ったばかりの公開キーの名称と位置を書き留める(常に.pubに終わる)
 
6. 作ったばかりの公開キーを遠隔のlinuxボックス全部にコピーする。コピーするにはscpでもftpでもか何でも使用することができる。ルートを使っているとして(ここでもステップ1の警告を参照)、キーはファイル/root/.ssh/authorized_keys(綴りに注意)に含まれている筈。又は、clydeなどのユーザとしてログインしているときは/home/clyde/authorized_keysにある。authorized_keysファイルは他のPCからのキーを含むことができることに注意。したがって、ファイルが既に存在してテキストを含んでいるときは、公開キーファイルの内容をそれに追加する必要がある。
 
これだけだ。これで運が悪くなければ、パスワードを使用しないで、遠隔ボックスにファイルをscp出来る筈だ。だから、最初の例をまた試してテストしてみよう。自分のローカルpcから 'xyz.tgz' と言う名のファイルを 'bozo' と言う名の遠隔pcの/tmp ディレクトリのコピーする。
 
scp xyz.tgz root@bozo:/tmp
 
ほら!! パスワードなしでコピーした!!
 
先へ進む前に、セキュリティについて一言。これで、パスワード一つだけを使って遠隔PCすべてにアクセスするので、このローカルPCはかなり強力になった。だから、その一つのパスワードは強力で、よく保護されている方が良い。
 
ここでお楽しみ。 'houdini'と言う名のファイルをローカルPCから異なる10都市にある10ヶの遠隔PCの/tmp ディレクトリにコピーする短いスクリプトを書いてみよう。もちろん、100ヶ又は1000ヶのPCでも同じように働く。10ヶのPCは、brooklyn, oshkosh, paris, bejing, winslow, rio, gnome, miami, minsk, tokyoと言う名であるとしよう。スクリプトを示す。
 
#!/bin/sh
for CITY in brooklyn oshkosh paris bejing winslow rio gnome miami minsk tokyo
do
scp houdini root@$CITY:/tmp
echo $CITY " is copied"
done
 
liek魔術が働く。スクリプトの中のechoの行を用いて、各都市が次々に完了するのを見ることが出来る筈だ。
 
ところで、シェル・スクリプトの初心者に、かなり良い指導書がある。
http://www.freeos.com/guides/lsst/.
御承知の通り、scpはもっと幅広いsshの一部に過ぎない。素晴らしい部分を示す。上の6ステップ手順を踏むと、ローカルPCに座ったままで、遠隔PCのどれの上でも、好みの任意のコマンドを実行する力が手に入る。遠隔PC brooklyn上で日付と時間を見る簡単な例を示す:
 
ssh brooklyn "date"
 
ここで、これら二つの概念を最後の極めて素晴らしいスクリプト一つにまとめてみよう。遠隔linuxボックスすべてをバックアップする汚い方法だ。この例は、各ボックス上の/home ディレクトリをバックアップする。商用バックアップ・ソフトウェアの能力と比較すると原始的だが、価値を存じることはない。殆どの商用バックアップ・ソフトウェアは、バックするマシン毎にライセンス料を徴収することを考えられたい。そのようなパッケージを使用すると、100ヶの遠隔PCをバックするためライセンス料を払う代わりに、ローカルPC一つをバックするためスクリプトを使用することができる。次に、ローカルPCを商用パッケージにバックして、99ヶのPCのライセンス料を節約する。とにかくスクリプトは考え方を示すので、自分の状況に合った自分自身のものを書くことが出来る。このスクリプトを自分のローカルPC上の(遠隔PC上にはスクリプト不要)cron作業に置くだけだ。知っておく必要のあるすべてを説明しているので、コメントを注意深く読むこと。
 
#!/bin/sh
# 明瞭にするため、変数はすべて大文字
# 必要なスクリプトを使用する前に、遠隔ボックス毎に '/tmp/backups' という名の
# ディレクトリと '/usr/backups' と言う名のディレクトリを作る必要がある
# このローカルのPC上に
# 変数「DATE」を設定してdateコマンド出力を見掛け良くフォーマットする
#
DATE=$(date +%b%d)
 
#この 'for loop' には三つの別個のファンクションがある
 
for CITY in brooklyn oshkosh paris bejing winslow rio gnome miami minsk tokyo
do
 
# 遠隔のボックス上のtarballをスクリプトが走ってHD が一杯になるのを避けた
# 前回から取り除き、続いて、トラブルシュートのためそれをechoする。
#
ssh -1 $CITY "rm -f /tmp/backups/*.tgz"
echo $CITY " old tarball removed"
 
# 各遠隔ボックス上に /homeディレクトリのtarballを作成、それを /tmp/backupsに
# 入れて、日付&都市名を用いてtarballをユニークに命名する
#
ssh $CITY "tar -zcvpf /tmp/backups/$CITY.$DATE.tgz /home/"
echo $CITY " is tarred"
 
# 作成したばかりのtarlballを遠隔ボックス上からローカルボックス上に作られる
# /usr/backupsディレクトリにコピーする
#
scp root@$CITY:/tmp/backups/$CITY.$DATE.tgz /usr/backups
echo $CITY " is copied"
done
 
# スクリプトの残りはエラーチェックのためだけなので、オプションである
 
# このローカルPC上に
# 今日の日付を持つエラー・ファイルを作成する
# どのボックスもバックされないときは、このファイルに書込まれる
#
touch /u01/backup/scp_error_$DATE
for CITY in brooklyn oshkosh paris bejing winslow rio gnome miami minsk tokyo
do
 
# tarballがローカルボックスにコピーされたか否かをチェックする。そうでなければエラー・ファイルに書き込む。
# '||'の用途に注意、これはその前がnot # trueなら、その後を行うことを命令する
#
#
ls /u01/backup/$CITY.$DATE.tgz || echo " $CITY did not copy" >> scp_error_$DATE
scp_error_$DATE
 
# Check if tarball can be opened w/o errors. If errors write to error file.
# エラー無しでtarballが開けられるか否か。エラーがエラー・ファイルに書込まれたか否かチェックする。
tar ztvf /u01/backup/$CITY.$DATE.tgz || echo "tarball of $CITY is No Good" >> scp_error_$DATE
done
 
こんなところだ。この記事では、考え方を明らかにする例を示したので、必ずしも「そのまま」では使えると限らない。シンタックスの中にはすべてのdistrosで働かないものもあるが、簡潔にするため、すべての可能性を網羅することはできなかった。例えば、Red Hat 6.2を使用しているなら、シンタックスに少々の変更が必要だ(eメールを下されば示して差し上げる)。したがって、創造的であって頂きたい。ご自分の環境内でこのうちいくつかが使用出来ることを望む。
 
別途の言及がない限り、この記事の著作権 © 2003-2004 はSSC社が全権保有
 
Copyright © 2004, Dave Sirof. Copying license http://www.linuxgazette.com/copying.html
Published in Issue 98 of Linux Gazette, January 2004
 
 
 
 
フラッシュカード印刷出力
By Phil Hughes
(訳注:フラッシュカードとは、表面に単語、裏面にその訳を記載する単語カードなどの、教材用カード)
 
Hal Stantonの「フラッシュカードに関する記事」('s article about FlashKard)により、私は進めていた素朴なフラッシュカード・ソフトウエアを諦めた。だが、したかったのは、データをフラッシュカードに印刷する方法だった。カードの印刷に私の得意技の1つ−多分awkとtroff−を書こうとしたが、xmlを使って実際に仕事をして見る決心をした。

xmlを使って仕事をするとは、標準XMLツールを使ってデータを出力用にフォーマットするとの意味だ。以前にしたことはないが、重要な専門語XSLTは知っている。XML Stylesheet Language Transformations(XMLスタイルシート転換言語)の略だ。これは、XMLから別の言語への転換を定義するため設計された言語だ。そこで、読取りから始めた。一般的に、XSLTはXMLをHTMLに転換するため使用されるが、出来ることに関して制限はないので、試して見ることにした。

だが、それでも後二つの部品が必要だ。転換するものと、カードをペイジ上で正しい位置に配置ことに必要なプログラム・ロジック、汎用プログラム作成言語か何か、がある筈だ。各種プログラム作成言語を検討した結果−Python が最良だった−PostScriptを作るだけで、プリンタ自体に配置問題を扱わせることが出来る。奇妙だが、試さない手はない。

出力フォーマット

PostScriptを取上げてから、カードをペイジ上に置く方法を実際に決定した。フラッシュカードは両面の必要があるので、先ず1面を印刷して、プリンタを通じてカードストックを裏に走らせて、別面を印刷しよう、と考えた。これは紙がプリンタ内で不具合になり易く、プリンタが詰まるため、位置合わせに問題があるか故障するかで、論理的な夢に過ぎなかった。

glue stickと言う別の高等技術を用いる方法に決めた。この考えは、各カードの前面と背面を1つのペイジの前面に印刷し、これを半分に折り、糊付けして実際のカードに切る。紙の2層と糊のため、紙が細工に十分な程重くなる。

ここで白状すると、これは綺麗で、完成した生産システムではない。働いて考え方を立証するだけのものだ。生産環境に関しては、カードの大きさとフォントをコンフィギュレーション・ファイルの中で決めるのが重要だ。加えて、両側に書くメッセージは、現在、大きさを考えずに1行で印刷される。行の折り返しを行う必要がある。

作業に戻ろう。レターサイズ用紙に片面上に9枚のカードの前面と背面両方を作ることの出来る1.5 x 2.5 インチのカードを取り上げた。上と下に1インチ、左右に0.5インチの余白が出来る。折曲げと切取りを容易にするため、ペイジの中程(前面と背面の間)に折曲げ線を、カードの端に切取り線を印刷しようとした。この折曲げがあるので、背面の印刷は前面と上下が逆になる。これらを考えた後、これは重要でないと判った。使うときカードを裏返しにする方向を決めるだけの話だ。

PostScript

必要なもの(つまり、PostScript とXSL)が全部 ここ からダウンロードすることの出来るファイル1つに入っている。今のところ XML は無視することが出来る。これをブラウザで表示しようとしても、XMLのお陰で正しく表示しないことに注意。サンプル出力を ここで見ることが出来る。

前にPostScriptで作業をしたことがない人は、準備をされたい。PostScriptはRPN (Reverse Polish Notation) 言語だ。HPの電卓を使ったことがある人には意味が分かる筈だ。ない人に手短かに説明すると、アイテムをスタックを入れてからそのスタックを操作して物事を行う。例えば、二つの数値を加算するには、数値をスタックに入れて加算演算子を実行すると、それが数値を引き出して加算し、結果をスタックに戻す。私はRPNが嫌いだ。

文句はさておき、PostScriptは実際極めて綺麗な言語で今必要なことをするのに悪くはない言語だ。PostScriptを使うには、ペイジに入力したいこと全部−文字、行、書込領域など−を記述して、ペイジ印刷を命令する。これは、沢山の中身を記憶する必要がなくて、順にペイジを仕上げること−あちこち動いて書きたいことを入れるだけ−を意味する。

PostScript では、長さの基本単位はは1/72インチだ。個人的には、この長さで作業をしたくないので、inchと言う名のファンクションを定義した。これは、スタック上の現在値を採用して、72を掛けてその値をスタックに戻す。

/inch { 72 mul } def
このように、数値の後にinchの語を追加すると、72倍になる。
cutmarksファンクションを見ると、movetolinetoステートメントの全容が判るだろう。ご想像の通り、これらの演算子はスタックから二つの値(ペイジの左下隅を0,0として右と上を正の値とするx座標とy座標)取って、現在位置を規定座標に動かしたり、現在位置から規定位置まで線を描いたりする。
startitファンクションに進むと、ペイジの設定作業全部が判る。9要素アレー、x,yf,ybを三つ定義する。これらは、9枚のカードそれぞれについてテキストを置くxy座標を含む。(アレーはPostScriptで0から始めて指数化することに注意)あと二つの初期化ステップは、テキストに使用するフォントとフォント・サイズの定義とカード番号カウンターcardno を0に設定することだ。

別の二つのユテリティ・ファンクションcardsteppageoutを定義する。pageoutは現在カード番号をチェックし、0より大きければ(cutmarksファンクションを呼び出して)切取線を引き、埋込 showpage を用いてペイジを印刷する。cardstep は、カード番号1だけ増やして、8より大きければ pageout を呼び出してペイジを印刷し、cardno を0にリセットして次のペイジを準備する。

最後の二つのファンクションは、frontback だ。これらはロケーション・アレーを指標にしてペイジ上の正しい位置に移動し show 埋込を用いてスタックにトップ値を印刷する。続いて back ファンクションが cardstep を呼び出して次の位置に移動する。こうして、次の二行でカードが印刷される。

(front page) front
(back page) back

二行だと言ったが、PostScriptで空白は重要でない。これを一行にしても同じ結果が得られる。括弧はスタックに入れる文字列を示す。

スラッシュ(/)で始まる行は全部、定義したばかりのファンクションだ。実際のプログラムはstartit初期化ファンクションを呼び出す行 startit で始まる。次に、frontとbackに対する一連の呼出を最後に入力し、カードがあるときは続いて pageout を呼び出して最新のペイジを印刷する。

XSL

幾つかのサンプルデータを用いて PostScript をテストしたところ、上手く働いた。そこで、XMLをフラッシュカードからPostScriptコードを働かせるのに必要なものに翻訳する次の段階に進む。ここでは二つの部品が必要だ。書込まなければならないXML、及びXMLとXMLファイルをフラッシュカードから読取って、プリンタに送るためるPostScriptに出力するプログラムだ。

易しい部分はプログラムだ。xsltproc は正にそのプログラムだ。一丁上がり。見たこともない言語で何かを書くのに進む。RPN言語で書くより増しだろう。

分かるにつれ、余りすることはない。XSL常套文(<xsl:stylesheet ... >)の後に、出力フォーマットが、HTMLを規定値とするテキストになるのを定義する必要がある。テキストとは「その他全部」を意味する。これは次を用いて行う。

<xsl:output method="text">

最初に出力したいのは PostScript プログラム自体だ。これは、<xsl:template match="/"> タグの直後にそれを含めておこなう。 / のmatchは、XML全体をmatchするので、ファイルの最初に処理される。私は、同一行にxslタグとして%!PS を置いたのに注意。これは、プリンタがこれをデータの第一行の始まりと見なすのに必要である。さもないと、プリント・スプーラはこれをテキストと考えて翻訳する代わりにPostScriptをプリントする。

</xsl:template> タグのマッチングの前に別のXMLタグ1つ<xsl:apply-templates/>がある。これは xsltprocに、他にあるマッチングテンプレート全部を此処で適用することを命じる。

match="e"のマッチ表現を持つテンプレートがもう一つある。これは、個々のカードを記述するブロックをマッチさせる。これはフラッシュカード記事に対する注釈で説明されている。このブロック内では、oブロックが元の言語用で、tブロックが翻訳用である。value-of 特性を用いて、これらの値を獲得し、それらを丸括弧に入れてその後にfront又はbackを続ける。

これで終わりだ。XSLが ks.xslにあるとして、次のコマンド

xsltproc ks.xsl creatures.kvtml | lpr
を入力すると、フラッシュカードの最初の一式が得られる。
前に述べたように、これは考え方の立証だ。PostScriptの生成、行折返しの取扱い及びこのコマンド行のためシェル・スクリプト・ラッパーを書くなどは、物事を整理して役に立つプログラムを作るだろう。
 
別途の言及がない限り、この記事の著作権 © 2003-2004 はSSC社が全権保有
 
Copyright © 2004, Phil Hughes. Copying license http://www.linuxgazette.com/copying.html
Published in Issue 98 of Linux Gazette, January 2004
 
 
 
troffの新生命
By Phil Hughes
 
未だにtroffで働いているのは私が頓狂なのかも知れないが、頓狂でない人でも、troffに新しい光を当てるかも知れない何かを示す。
先に進む前に、troffに慣れていない人のため解説しよう。troffは、UNIXを作りLinuxを可能にしたA&Tベル研で開発したプログラムだ。UNIXはLinuxのように、趣味のプロジェクトとして発足したが、UNIXの走るコンピュータをスーパーマーケットでは買えなかった1970年代に遡る。UNIXシステムを走らせることを考えるだけでも山程の費用を必要とした。
UNIXは暫く楽しませてくれたが、将来性を持たせるには山程の費用を支払った会社のため何か役立つことをする必要があった。troffが魔術的なアプリケーションだと分かった。

ベル研では、何処でもと同じように、写真植字を行うのに、植字キイボードを誰かが叩いていた。出力はフィルム又は印画紙で、変更はXactoナイフを注意深く使って行っていた。もっと良い方法がある筈だ。良い方法はUNIXシステム、troff及びグラフィックシステムCAT写真植字だと分かった。

レーザ・プリンタを横に置いている我々には変だと思われるが、今でもレーザ・プリンタはコンビニでは買えない。このシステムは、1秒10文字のテレタイプなど遅い入力装置、基本的マークアップコマンドを使ってテキストを入力することの出来るテキスト・エディタを走らせるコンピュータ、マークアップを読込んで植字機に分からせるのに必要なものを作る別のプログラム、及び最後に、コンピュータと会話する写真植字機から構成されていた。

コンピュータはPDP-11で、エディタはedで、写真植字機を駆動するプログラムはtroffであった。CAT写真植字機は、このPDP-11/UNIX/troff コンボに命令するため特別に設計された。その唯一の入力方法は RS-232ケーブルだった。

十分な環境−何が新しいか?

数年経ってtroffは進化した。その二文字コマンドが拡張され、同時に四っつ以上のフォントをサポートするようになってから久しく(これはCATの限界だった−フォントはフィルム・ストリップ上にあった)異なるデバイスに出力を生じる能力が成長した。最も普通の出力フォーマットは、長い間PostScriptだった。PostScriptプリンタがあれば、殆ど何でも出力することが出来る。なければ、GhostScript を使って翻訳することが出来る。

問題は、殆ど全てがウェブ上で公開されるのに伴って、PostScriptでの情報が実際の答にならないことだ。HTMLが必要になる。そこでtroffは今や出力フォーマットとしてHTMLをサポートする。

これは大変なことだろうか?先ず始めに、Linuxシステム上のコマンドに関するマニュアル全部は、manマクロを用いてをtroffで書いてある。これらの一つをHTMLで入手したいとき、しなければならないことは、groff(troff店頭プログラム)を走らせて、HTML出力が必要と命令する。だから数千の理由がある。他にもある。

昔ベル研で行った仕事全部など、沢山の書物がtroffで書かれている。社内的にUNIXに依存した多数の会社もまた、社内文書をtroffで書いた。熱心人は今でもtroffで書いている。

使う方法は?

最も良い手始めは、マニュアルでテストすることだ。マニュアルは普通/usr/share/manのサブディレクトリに圧縮形式で記憶されている。サブディレクトリman1にコマンドに関するマニュアル全部がある。次を試す:

  cd /usr/share/man/man1
  ls
ln.1.gzなどの名のファイルの巨大な一覧表が出る筈だ。このファイルはlnコマンドに関するマニュアルで(1は第1章コマンドを示す) gz は圧縮を意味する。 groffが標準入力から読み取るので、解凍版をセーブする必要はない。次を試す:
  zcat ln.1.gz | groff -man -Thtml > /tmp/ln.html

上手く行くと、マニュアルのHTML版がファイル /tmp/ln.html.に入っている。ブラウザをそこに指定して、見てみる。

上のコマンド行を説明しよう。

・zcat コマンドは、ファイルln.1.gzを解凍して、結果を標準出力に書く。
・groff はその入力流を翻訳しながら標準入力から読取る。
・-man オプションは、groffに、入力を翻訳するときmanマクロ(実際はmがマクロパケージでanがその名称)をロードして使用することを命じる。
・-Thtml オプションは、troffの出力をHTMLデバイスドライバを通じて送ることを命じる。
・> は標準出力を規定のファイル /tmp/ln.htmlに限定する。

troff入力の見掛け

ここまで来るとtroffを使って役立つことが何かあると思う筈だ。入力の見掛けを見てみよう。上の例はマニュアルのマクロ頁を使ったので、余りよい出発点ではない。そこで、代わりに基本的troffプログラムpre> .sp .5i .po .5i .ft HB .ps 24 .ce 1 Simple Test File .sp .2i .ps 11 .vs 13 .ft Rを示して基本的概念を示す。これは簡単なテキストの始まりだ。troffはデフォルトで行を満たすので、行当たりのセンテンスが編集を容易にする。これは自動的に \fIparagraph\fP が満たされ行..spが行末を揃えて終わる。.spコマンドは空白行を作るのに用いられる。引数がないと、垂直間隔(.vs)の値を用いる。

お分かりのように、troffコマンドはドットで始まり、長さは2文字だ(新しいバージョンでは長いコマンド名がサポートされる。何が起こるかを示す:

・ .sp .5i (space) コマンドにより、ペイジ上の現在行を下に.5インチ移動する。
・左余白 (page offset)を .5 インチに設定するコマンド。
・現在フォントを Helvetica 太字 (HB)に設定する。
・フォントの・ポイント数を24ポイントに設定する。
・テキストの作成を1行分だけ起動する。
・"Simple Test File" の行は. so で始まらないので、出力するだけ。
・次の3行は空白で追加の .2i インチだけペイジを下がり、ポイント数を11ポイントに設定し行間を設定する(垂直ポイントを 13 ポイントに).
・フォントをRoman (Times)に設定する。.
・次のコマンド行は.sp で、これは二つの文章の間に空白行を生じる。
・ \fI 現在フォントを Times italic に変更し \fP が元のフォントに戻す。

このファイルをtest1にセーブすると、次のコマンドを走らせて出力を見ることが出来る。

  groff test1 | gv -

マクロパケージ

上で分かるように、沢山のコントロールがあるが、それは沢山の曖昧なコマンドを必要とする。沢山の文書を同じ基本フォーマットで書くときは、ページオフセットとフォントの記入で頭が痛くなる。予定の文章を変更したり、脚注を付けたり、目次を付けたいこともある。そこにマクロパケージが登場する。

規定のフォントを追加すると、基本的troffエンジンは昔のは子供の塗り絵のように働くと考えることが出来る。マクロパケージの追加により、一時的な操作の組を予め定義することが出来る。例えば、一つの文章だ。一旦これを行うと、文書フォーマットを変更するため何か(上の.spなどの)troffコマンドを挿入した全ての場所を変更しなければならないのではなく、マクロを変更する方法を必要とするだけだ。

ここでその働き全部を解説する積もりはなく、既存の能力をお知らせするだけだ。共通マクロパケージは:

・man -- 上述の ln ペイジなど、マニュアルを作成するのに使われる。
・me -- UCバークレーで論文作成に使用される。
・ms -- ベル研で使用される古い一般文書フォーマッター。
・mm -- ベル研で使用される新しい一般文書フォーマッター。

今日では、マニュアル・フォーマット用に使われるmanともっと一般的なmmを見ることがある筈だ。だが、自分のマクロパケージを開発出来ないとは言えない。SSCは20年近くも地方で開発した二つのパケージを使っている。

これらのパケージの第一のものは、SSCポケット参照カード作成のため開発された。これらのカードには3.5 x 8 インチのペイジがある。各ペイジはコマンド情報の表題枠と5色までを使うテキストから構成されている。ここで使用するマクロペイジは、枠の描画、色及びこれらのペイジ二つを一つの物理ペイジ片側に出力することを扱う。片側の利点は、二つの異なるマクロの組があることにより、追加のプログラムや実際の文書を変更することなく、カラープリンタ上で加工してプリンタ用に色を分離した出力を作ることが出来ることだ。

マクロの別の組は、教室の授業用に開発された。ここでも、使用するマクロの変更により異なる出力を作る能力が利用される。完成文書は、大きい字体の本文と小さい字体の議論を含む。これは、教室で使用するスライドを散らかさないで学生のノートに沢山の説明文を含ませることを意味する。

プリ・プロセッサとは?

前に、troffは塗り絵のように働くと言った。それは、一行毎の出力装置でなく書込む作業空間があると言う意味だ。一行毎に作業をするだけなら極く普通だが、これはペイジ上で後に動いて描くことが出来ることを意味する。troffプリ・プロセッサは、この能力を利用する。

最も普及しているプリ・プロセッサはtolで、これは、ご期待通り、テーブルの作成に用いられる。使用が極めて簡単で、枠、表題及び枠内で流れる本文を始めとする表の見掛けを格好良くまとめることが出来る。私はテーブルをHTMLで書くたびにtblを使えば易しいのにと思い出す。

コマンドは少ないが極めて強力なプリ・プロセッサはpicだ。picを使って絵を描くことが出来る。四角形、円形、矢印など、つまり図形だと言えば良いだろう。

まとめ

この記事が、troffとは何か、何が出来るかを理解するのに役立ったことを望む。したいことの全部がtorff文書をHTMLに転換することであれば、十分な情報を入手された筈だ。他方、転換を超える用途を見込んでいるなら、習うことは沢山ある。もしそうなら、これ以上にしたいことに関する御意見を寄せられたい。

別途の言及がない限り、この記事の著作権 © 2003-2004 はSSC社が全権保有
 
Copyright © 2004, Phil Hughes. Copying license http://www.linuxgazette.com/copying.html
Published in Issue 98 of Linux Gazette, January 2004
 
 
 
 
ホーム又はオフィス・ネットワーク用の迷惑メール対策
By Sandro Mangovski
 
私が定期的ユーザーとしてインターネットを使い始めたとき、e-メールの設定は、クライアントがメッセージをpopサーバから受け取るのを構成する程容易だった。後に、システム管理者になったので、私にとってもユーザーにとっても話は変わった。数年前まで誰かが人のe-メールアドレスを不正使用したとき、その人のISPに苦情を言えば話は済んだ。だが今では、膨大な迷惑メールを受け取るユーザーに出来ることは、苦情を言うだけだ。誰に?勿論、我々システム管理者にだ。だから、私は自分に何か出来ることはないかと自問して、インターネットの問題を研究し始めた。沢山のGPLソフトウエアを見付け、何を使うか選んだが、それでも未だ、なすべきコンフィギュアがあった。私のユーザの大部分を満足させる解決策に達するには、数日と、多少の文書と、私の創造性で十分だった。勿論、コンピュータ担当者を憎んで、自分の苦痛をシステム管理者に持ち込む人は常にいるので、抵抗しなければならない。
ここでは私の仕事を、なぞることが出来るように段階的に説明する。自分の迷惑メール撃退策を作ったり、自分の考えを生かす方法を作る指針を差上げるのに役立つことを望む。
この仕事に取組み始めたとき、私は解決策を最初から構築して、前から使っていたソフトウエアと置き換えようと考えた。そこで、新しいツール、Exim MTA, SpamAssassin, Anomy mail sanitizer, vm-pop3dを取り上げた。ソフトウエア全部をダウンロードして構築を開始した。これは諸君の仕事でもある。
 
ステップ1

Step 1.

Exim MTA: www.exim.orgからExim .tar.gzをダウンロードして何かのディレクトリにアンパックする。この文書を書いているとき、最新のEximバージョンは4.24である。作ったばかりのディレクトリ(exim-4.24など)にcdする。次に、ファイルsrc/EDITMEをLocal/Makefileにコピイするが、その前に、src/EDITMEに何か情報を入れなければならない。以下が最低でも設定しなければならない事項だ:

BIN_DIRECTORY=/usr/exim/bin

CONFIGURE_FILE=/usr/exim/configure

EXIM_USER=eximusr

私はこのユーザをEximだけのため作ったが、諸君にもそれを勧める。勿論、ユーザー名を同じにする必要はない。

私はまた、セキュリティの注意のためFIXED_NEVER_USERS=root を設定した。このファイルもまたコメントが良いので、他のオプションが入用のとき、その設定は難しくないが、この構成でオフィス・ネットワーク用に丁度上手く働く筈だ。

Eximモニタを構築するときは、同様の構成手順が必要だ。ファイルexim_monitor/EDITMEを自分のインストレーションに合うように編集して Local/eximon.conf.の名でセーブする。

幸いexim_monitor/EDITMEに記述される規定値設定になっていると、Local/eximon.conf は空かも知れないが、存在する筈だ。

インストール前コンフィギュレーションの後、ソフトウエアをコンパイルする必要がある。コマンドmakemake install が上手くやってくれる。この後、インストール後コンフィギュレーションを行うと、殆ど終わりだ。ファイル/usr/exim/configureを好きなエディタで開いて

domainlist local_domains = @

domainlist local_domains = @ : localhost : foo.bar

か、又はローカルにeximを送りたいドメインに変更する。仮想ドメインを用いるEximの構成は、この文書の範囲を超えるが、最後に一寸触れる。次に必要なのは、コンピュータがブートアップしたときは何時でも、Eximを走らせることだ。私は、これをinetdからするのを好む。それには、/etc/inetd.confに次を追加する。

smtp stream tcp nowait eximusr /usr/sbin/tcpd /usr/exim/bin/exim -bs

ここで eximusr はsrc/EDITMEの中のEXIM_USER変数に設定されるユーザーである。

ここで、inetdをスタートし直してポート25の上の自分のマシンにtelnetする。次のような行が出る筈だ。

220 enterprise ESMTP Exim 4.24 Fri, 28 Nov 2003 20:03:32 +0100

これは、全部が上手く働くことを示す。今eximにしなければならないのはこれで全部だ。

Anomy mail sanitizer: .tar.gzを mailtools.anomy.netから何かのディレクトリ(私のは /usr/local)にアンパックしanomy/binにcdする。次に./sanitizer.plを走らせる。多分何かエラーメッセージが出るだろうが構わない。Parlモジュールが無いとのエラーメッセージなら、後でそこに戻る。何かエラーが出たら、暫くそのままにして読み進む。

SpamAssassin: .tar.gzパケージをアンパックして新しく作ったディレクトリにcdする。インストレーションには二つの方法がある。第一は短いが少し難しい、以下のコマンドの組をルートとしてのシェルにタイプする。

perl -MCPAN -e shell

o conf prerequisites_policy ask

install Mail::SpamAssasin

quit

この方法は、モジュールCPANを用いてSpamAssasinをインストールする。初めてモジュールを使うのであれば、CPANコンフィギュレーションに関する一連の質問を聞かれる。

第二の方法を示す。

perl Makefile.PL

make

make install

spamc 又は spamd を走らせるとき、anomyと同様の問題にぶつかる。気にしないで読むだけだ。ここで、モジュール欠如のエラーを説明する。エラーメッセージがHTML/Test.pmなど不足モジュールに関するときは、MCPANを使ってインストールするか、又はwww.cpan.orgを訪ねてモジュールHTML::Test を探してインストールする。Perlモジュールをインストールする必要があるときは、余り難しくない。 .tar.gz をアンパックして、新しく作ったディレクトリにcdする。次のコマンドの組をルートとしてタイプする。

perl Makefile.PL

make

make test

make install

Perlモジュールをインストールする方法は分かっているので、anomiyのモジュール欠如エラーも直すことが出来る。モジュールをインストールするとき、SpamAssasinやanomyと同じエラーが出るのは、Perlモジュールが働くには別のモジュールが必要な時だ。だからもう一度www.cpan.orgを訪ねて、要件全部を満たすまで繰り返す。例えば、私の場合、anomyとSpamAssasinの両方をインストールするのに、次のモジュールが必要だった:HTML::Parser, HTML::Tree, HTML::Tagset, HTML::Sanitizer, MIME::Base64, Test::Harness, Test::Simple, Digest::MD5 , Devel::CoreStack。残念ながら、どのモジュールが別のものの前提要件か覚えていないので、READMEファイルを読まないと、全部をインストールするまでエラーメッセージが続く。

SpamAssasinには、もう一つすることがある。spamcはspamdに取ってクライアントに過ぎないので、メールがspamcを通じて渡されるときspamdが走っていることを確認しなければならない。initスクリプトに spamd --daemonizeを追加するだけだ。

vm-pop3d: tar.gzソースをwww.reedmedia.netからアンパックして新しく作ったディレクトリにcdする(このパターンが分かるだろうか?)。次のコマンドの組をルートとしてタイプする。

./configure

make

make install

ここで、コンピュータがスタートするときvm-pop3dを走らせなければならない。次の行を、/etc/inetd.confファイルに追加する。

pop3 stream tcp nowait root /usr/sbin/tcpd /usr/local/sbin/vm-pop3d

inetd をスタートし直してポート110の上のローカルホストにtelnet する。

+OK POP3 Welcome to vm-pop3d 1.1.6 <14665.1070049711@enterprise>

に似た行が、ステップ1の終わりにいることを意味する。

次のステップでは、構築するソフトウエアすべてを構成する。

 

ステップ 2.

手引きと御願いを少々。作業を始める前に、Exim文書のメールのdelivery、router、transportに関する章を読んで予備知識を得られたい。これらについて未だ書くことがあるので、Eximがメールを審査するとき、受領されるまでルーターからルーターを訪ねる。メッセージが受領されると、そのルーターがtransportを呼び出してメッセージを処理する。transportを通った後メッセージが配送されないと、受領されて配送されるか又は「配送不能」エラーメッセージを作るまで、もう一度ルーターを巡る。短く言えばこんな具合なので、注意深く読めば、Eximのコンフィギュレーション・ファイルに記載するtranzportの順序は重要でないが、ルーターの順序は重要であることが分かる筈だ。

ここで面倒なことをしないといけない。好きなエディタで /usr/exim/configureを開き、ローカル配送を扱うルーターの前( dnslookupルーターの後)に次を追加する。

# MAIL SCAN ROUTER

mail_scan_router:

no_verify

check_local_user

condition = "${if !eq{$header_X-I-came-to:}{scary devil's monastery}{1}}"

driver = accept

transport = mail_scan_transport

このルーターは、メッセージがX-I-came-to:scary devil's monasteryヘッダを含まない時だけ、又は最初に到着するときだけ別の語により走る。この条件を用いて、これ無しで作られるルーターを無効にした。ここで、条件に合うときこのルーターが呼び出すtranportを追加しなければならない。そこで、以下をtransportセクションの任意の場所に追加する(transporの順序は無関係なのを想起されたい)

#MAIL SCAN TRANSPORT

mail_scan_transport:

driver = pipe

command = /usr/exim/bin/exim -bS

use_bsmtp = true

transport_filter = /usr/exim/mail.sh

home_directory = "/tmp"

current_directory = "/tmp"

user = mail

group = mail

log_output = true

return_fail_output = true

return_path_add = false

message_prefix =

message_suffix =

headers_add = X-I-came-to: scary devil's monastery

このtransportは、transportフィルタを通じてメッセージを扱い、Xヘッダを追加する。これがルーター内の条件との組合せで、infinite filtering/spamcheckingループをいずれも無効にする。

ここでmail.sh. を書こう。これは、単一のtranzportの中でanomy sanitizer と SpamAssasin両方を走らせることが出来るようにするスクリプトだ。次のように進む。

#!/bin/bash

cd /usr/local/anomy/bin

./sanitizer.pl | /usr/local/bin/spamc

cd /tmp

#end of script.

これらのcd全部が奇妙に思われるだろうが、ディレクトリの外からanomyを走らせるときエラーが出た。とにかくこのコードをファイルにコピイする。それを /usr/exim にセーブして、ユーザーメールがそれを走らせるパーミッションを持っているのを確かめる。例えば私のパーミッションは次のようである。

-rwxr-xr-x root root.

もう少しEximコンフィギュレーションを続ける。SpamAssassinがメールをスキャンするとき、これはメールにX-Spam-Statusヘッダを追加する。これを使って、メールが迷惑メールか否かを判定して、何処に配送するかを決める。これをExim コンフィギュレーション・ファイルの中のlocal_deliveryルーター(ルーターの順序が関係することを思い出されたい)直前に追加する。

#SPAM DELIVERY ROUTER

spam_delivery_router:

condition="${if eq {${length_3:$header_X-Spam-Status:}}{Yes}{1}}"

check_local_user

driver=accept

transport = spam_delivery

そこで、X-Spam-Status: ヘッダの最初の3文字がイエスであれば、それは迷惑メールであることを意味するのでspam_delivery transportを使用する。そうでないときは、普通のローカル・デリバリに進む。ここで、コンフィギュレーション・ファイルのtransport部分に次を追加する。

spam_delivery:

driver = appendfile

create_directory

file=/var/spool/virtual/spam.foo/$local_part

delivery_date_add

envelope_to_add

return_path_add

group = mail

mode = 0660

これは、例えば、ローカル・ユーザーsandro ( sandro@localhost)へのメールが /var/spool/virtual/spam.foo/sandroに配達されることを意味する。virtual とspam.fooのディレクトリが、親ディレクトリの中で ls -l をするとき次のように見えることを確認されたい。

drwxrwsrwx 3 mail mail 4096 Stu 27 19:05 virtual

drwxrwxrwx 2 mail mail 4096 Stu 28 21:08 spam.foo

これらの変更の後、inetdをスタートし直すことは言うまでもない。

ここで、これら二つのディレクトリが何のためか分かる筈だ。これは迷惑メールをローカルユーザーに送るためのものだ。その通り、vrm-pop3dのために仮想ドメインspam.foo(今、分からなければpop3デーモン) を作るので、ユーザーは迷惑メールを読むことか出来る。何故かって?私の場合沢山のユーザが、ニュースレター、コマーシャルなどが抜けたと苦情を言うからだ。私の場合、/var/spool/virtual/spam.fooにあるメールは、システムリソースに限界があって、迷惑メールのため必要以上に無駄にしたくないので、一週間で削除するからだ。どうだろうか?

ここで、vm-pop3dのコンフィギュアだ。ローカル・ユーザーの「実際の」メールに関してすることはないが、迷惑メールにはある。各ローカル・ユーザーは、spam.foo仮装ドメインを入手する。MUAコンフィギュレーションはこの時「実際の」メールボックスに関するものと少し異なる。例えば、ユーザーのローカル・ユーザー名が vms であると迷惑メールのメールボックスのユーザー名はvms@spam.foo 又は vms:spam.fooとなる。勿論、これら二つのメールボックスに対するパスワードが同じである必要はない。ここで、Yahoo(trn)Bulkメールホルダと同様の「あり得るまま」概念を持つことに注意。

さて、その迷惑メール・アカウントを作ろう。ディレクトリ /etc/virtualを作る。これは次のようでなければならない。

drwxr-xr-x 3 root root 4096 Stu 25 21:22 virtual.

パーミッションがこの通りであることは重要でないが、vm-pop3dはこのディレクトリを読むことが出来なければならない。だから、これらが嫌なら、別の組合せに代えてもよい。私の方法が唯一の方法だとの印象を持って欲しくないので、これを言う次第。

このディレクトリの下に、同一パーミッションを用いてspam.foo を作る。そのディレクトリには、我々の仮想ドメインのパスワードが含まれる。そのファイルは、次のPerlスクリプトを用いて作る。 vm-pop3d作者のウエブサイトから入手したものだ。

#!/usr/bin/perl

$name = $ARGV[0];

@salt_chars = ('a'..'z','A'..'Z','0'..'9');

$salt = $salt_chars[rand(62)] . $salt_chars[rand(62)];

$passwd = crypt ($ARGV[1], $salt);

print "$name:$passwd\n";

このスクリプトをファイルにセーブして、ルート又はメール管理者なら誰でも実行することが出来るのを確認する。

スクリプトは./script_file_name username password >> /path_to_passwd/passwdの方法で使用する。例えば:

enterprise:/etc/virtual# pop3passwd mosor uncrackable >> spam.foo/passwd

これでspam.fooドメインに関するユーザー名を自分のローカルユーザ全部について追加することが出来るので、vm-pop3dコンフィギュレーションは完成だ。

次はSpamAssasinの微調整だ。/etc/mail/spamassassin/local.cf を開き report_safe 1report_safe 0に変更する。

これを1に設定すると、入信メッセージに迷惑メールのタグが付いているとき、元のメッセージを変更する代わりに、SpamAssassinが新しい報告メッセージを作って、元のメッセージをmessage/rfc822 MIME部分として(元のメッセージを完全に保存し、開封困難で、回収が容易であることを保証しながら)添付する。このオプションを2に設定すると、元のメッセージが、message/rfc822でなくtext/plainの内容型で添付される。この設定は、ユーザーが何もしないのに自動的に添付する敗北メールクライアントに対する安全上の理由から必要になる。この設定ではまた、元のメッセージの抽出又は閲覧が少し難しくなる。このオプションを0に設定すると、入信迷惑メールは何か"X-Spam-" ヘッダと付けて変更されるだけである。

迷惑メールに対処するとき重要な別のことは、迅速に学習する技術である。SpamAssasin学習計画にはマニュアルが最良の資料だ(それと、中の中の参照資料を読むことを強く勧める)が、すべては、フィルタが沢山学習する程、沢山覚える。学習の技術的側面は次だ。

sa-learn --spam path_to/message_file

又は

sa-learn --ham path_to/message_file.

勿論 --spam は迷惑メールの意味で --ham は迷惑でないメールの意味だ。spam とham両方のメールをフィルタに学習させるのは同じように重要だ。

これで終わりだ。迷惑メール撃退システム、コンフィギュレーションが出来上がった。

あと少しの事項がある。常時インターネット接続を持っていないなら、fetchmailがメールを回収する方法だ。そこでfetchmailをコンフィギュアしよう。.tar.gz パケージをアンパックして、新しく作るディレクトリにcdする。ルートとして次をタイプする。

./configure

make

make install

ここでユーザーのためメールを取って来る構成をする必要がある。各ユーザーが自分のホームディレクトリに .fetchmailrcを持つ必要がある。簡単な .fetchmailrc ファイルは次の通りだ。

poll pop.iskon.hr proto pop3 username "amangovs" password "Unkrakkable" is "sandro" here nokeep expunge 3

Fetchmailの構成ファイル・フォーマットは、マニュアルに非常に良い説明がある。是非読まれたい。

もう少し微調整。/etc/aliasesに進んで、何か別名を設定する。最も重要な別名はpostmasterで、これは是非設定しなければならないが、少し余計な時間を掛けて全部設定することを勧める。

メール受信を全部述べたので、ご存知ではあろうが、送信について述べる。インターネットに常時接続しており、完全に資格のあるドメイン名(ダイナミックDNSでも良い)を持っているときは、諸君のユーザはMX DNSエントリを用いて、諸君のメールサーバを彼らのsmtpサーバとして使用することが出来る。そうでなければ(諸君のメールがfetchmailを通じて回収されるとき)ユーザーは自分のプロバイダのsmtpサーバを自分のMUA(メール・ユーザー・エージェント)に入れなければならない。.

約束通りEximの仮想ドメインに付いて少し示す。

local_delivery:

driver = appendfile

file = /var/spool/virtual/$domain/$local_part

delivery_date_add

envelope_to_add

return_path_add

group = mail

mode = 0660

Eximコンフィギュレーション・ファイルの中のlocal_delivery transportをこれに変えると、Eximはsome_username@some_domain.comへのメッセージを/var/spool/virtual/some_domain.com/some_usernameに配送するだろう。ここで更にしなければならないのは、some_domain.com in domainlist local_domains = @ : localhost : foo.bar: domain1.com : domain2.com : some_domain.com (覚えているかな?)を追加して、vm-pop3dを spam.fooドメインについてコンフィギュアしたのと同じようにコンフィギュアすることだ。パーミッションのチェックを忘れないように。役に立つことがある。

これで、本当に全部終わりだ。

別途の言及がない限り、この記事の著作権 © 2003-2004 はSSC社が全権保有
 
Copyright © 2004, Sandro Mangovski. Copying license http://www.linuxgazette.com/copying.html
Published in Issue 98 of Linux Gazette, January 2004
 
 
 
 
Linuxシステムの起動
By Rick Mann
 
今では、OS自体を余り良く知らなくともLinuxディストリビューションを買って、インストールして、使用することが出来る。この記事は、PC上のLinux起動手順の内部を探る。
コンピュータ起動の専門用語はブートストラップだ。短くブートとも言う。この手順の最低部分は、ROMが記憶するコードがおこなう。これはLinux特有ではなく一般的性質のコードだ。その役目は、Linux特有のローダをロードしてそれに制御を渡すことだ。
 
ブートローダ

ブートローダは、ROM(マザーボード上のBIOS又はSCSIディスクコントローラボードなどデバイス特有のコードのいずれか)がロードするプログラムだ。PCには有名なブートローダ二つがある。LILO は伝統的なローダでGRUB は新しい。各プログラムは、何かコンフィギュレーション情報を掴むこと、Linux(又はその他)kernelをロードして制御を渡すことの役目を有する。

LILOとGRUBとの間の最も大きい相違は、コンフィギュレーション情報の入手方法だ。LILO用のコンフィギュレーション情報は、liloコマンドを走らせて静的な形でセーブされる。この情報は、ディスクのマスターブートレコード(MBR)又はLinuxブート・パーティションのブート・レコードに書き込まれる。liloコマンドが使用するコンフィギュレーション情報は通常 /etc/lilo.conf.に記憶される。コンフィギュレーション・ファイルのサンプルを示す。

boot=/dev/hda  # boot loader to MBR

root=/dev/hda1 # root partition

install=/boot/boot.b

map=/boot/map

delay=50    # 5 second delay before auto-boot

image=/vmlinuz # kernel

 label=linux  # name to refer to entry

 read-only

image=/vmlinuz.old   # backup entry

 label=old

 read-only

この例では、ブートするのに可能なkernelが二つある。 /vmlinuz と/vmlinuz.oldだ。LILOプロンプトで、linuxと入力して今のものを選び、oldでバックアップのものを撰ぶことが出来る。LILOプロンプトでTABキイを押すと、これらオプションのリストが出る。kernelを再構築したり、その他の変更をしたいときは、liloコマンドに戻ってコンフィギュレーション・ファイルを読取り直し、この新しいコンフィギュレーション・ファイルを使ってLILOをインストールし直す。

GRUBは、ブート時にコンフィギュレーション・ファイルを読取る。MBRは512バイトだけで済む。MBRにインストールされるGRUBの部分が、システムの基本的初期化をおこない、ブートドライブにアクセスする方法を理解した上で、ドライブから残りのGRUBをロードする。

GRUBはgrub-installプログラムを用いてインストールする。詳細に付いてはman又はinfo頁を利用することが出来る。grub info頁も役に立つ。コンフィギュレーション・ファイルは通常 /boot/grub ディレクトリにある。SuSEはこれを menu.lst に置き、Red Hat は grub.conf に置く。コンフィギュレーション・ファイルのサンプルを示す。

default 0
timeout 8
gfxmenu (hd0,1)/boot/message

title Linux
    kernel (hd0,1)/boot/vmlinuz root=/dev/hda2 desktop showopts
    initrd (hd0,1)/boot/initrd

title Failsafe
    kernel (hd0,1)/boot/vmlinuz root=/dev/hda2 showopts ide=nodma apm=off acpi=o
ff vga=normal nosmp noapic maxcpus=0 3
    initrd (hd0,1)/boot/initrd

title Memory Test
    kernel (hd0,1)/boot/memtest.bin

Redmondからの著作権OSでコンピュータを共有しているときは、これらの人は別のOSがあるのを知らないことに注意。つまり、彼らのシステムをインストールするとMBRを上書きしてしまう。彼らのソフトウエアを先にして後でLinuxをインストールすると、全部が上手く運び、両方のOSでブートすることが出来る。

ランレベル

ランレベルはシステム・コンフィギュレーションのアレーを提供する。別途の命令をしない限り、システムは一般的にレベル3又はレベル5の規定値ランレベルで来る。ラベル名をLILOに入力するか、又はGRUBで boot の語を入力し、続いてブートローダ・プロンプトで single の語を入力すると、この行動を変更することが出来る。

標準のランレベルが、0から6まで七つある。レベル0はシャットダウン、レベル1は単一ユーザー・モードで、レベル6は再ブートを意味する。その他のレベルは、自分の裁量で利用して各種システム・コンフィギュレーションを設定する。最も一般的なのは、GUI(X)を走らせないで完全に作動するシステムとしてのランレベル3を使うか、又はGUIを用いてレベル3と同様にレベル5を使うかである。多数のシステム上に、Sと言うランレベルがあるが、これは、ランレベル1に似ているけれども、入力するにはルートパスワードが必要である。したがってこれには安全上の理由がある。

ファイル /etc/inittab の内容が、各ランレベルで取る行動を決定し、また、規定値ランレベルを規定する。/etc/inittabにあらわれる筈の事柄のサンプルを示す。

#
# /etc/inittab
#
# これは /sbin/initのメイン・コンフィギュレーション・ファイルで
# スタートアップ時にkernelが実行する。
#

# 規定値ランレベル
id:5:initdefault:

# /etc/init.d/rc はランレベル操作を管理する
#
# ランレベル 0  は  システム停止   (初期規定値に用いないこと!)
# ランレベル 1  は  単一ユーザー・モード
# ランレベルl 2  は  遠隔ネットワーク(NFSなど)のないローカルマルチユーザー
# ランレベル 3  は  ネットワークのある完全マルチユーザー
# ランレベル 4  は  未使用
# ランレベル 5  は  ネットワークとxdmのある完全マルチユーザー
# ランレベル 6  は  システム再ブート
#
l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3
l5:5:wait:/etc/init.d/rc 5
l6:6:wait:/etc/init.d/rc 6

# 単一ユーザー・モードでおこなうこと
ls:S:wait:/etc/init.d/rc S
~~:S:respawn:/sbin/sulogin

# CTRL-ALT-DEL が押されるときおこなうこと
ca::ctrlaltdel:/sbin/shutdown -r -t 4 now

# 通常ランレベル用getty-プログラム
# :::
#  "id" フィールドはデバイスの
# 最終文字 ("tty"の後)と同一でなければならない
1:2345:respawn:/sbin/mingetty --noclear tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6

id:5:initdefault:の行は、規定値ランレベルを5に設定する。l1:1:wait:/etc/init.d/rc 1 の形の行は、引数としてランレベルを渡しながら、スクリプト /etc/init.d/rc を呼び出す。このスクリプトは続いて、規定ランレベルに結合するプロセスを開始する(及び他のプロセスを停止する)。各プロセスを制御するスクリプト全部もまた/etc/init.d ディレクトリにある。

一般的に、各ランレベルで開始及び停止するプロセスは、/etc/init.d のサブディレクトリに(例えばランレベル5についてはrc5.d)の置かれる。これらランレベル特有ディレクトリそれぞれにおいては、シンボリック・リンクを用いてプロセスを指定する。Kで始まるリンク名は停止するプロセスを、S で始まるリンク名は開始するプロセスを指す。リンクはアルファベット順でアクセスされる。その意味は、killスクリプトを先に走らせて、killとstarの中のスクリプトの順は、K又はSに続く2桁数を用いて制御する。

これは情報を扱う標準の方法なので、一般的にと言った。ベンダーに依っては、少し違う方法を用いるが、あらゆる場合に、プロセス全体を制御するのはgenerainit プログラムである。UNIXがスタートアップを扱う方法に習熟しているなら、これは System V Init.と極めて良く似ている。

途中で問題に遭遇しなければ、君のシステムは撰ばれたランレベルにある筈だ。システムが立ち上がって走ると、ルートとしてログオンしてinitコマンドを用いることにより、ランレベルを変更することが出来る。例えば、ランレベル3に変更するには、init 3と入力する。

別途の言及がない限り、この記事の著作権 © 2003-2004 はSSC社が全権保有
 
Copyright © 2004, Rick Mann. Copying license http://www.linuxgazette.com/copying.html
Published in Issue 98 of Linux Gazette, January 2004
 
 
 
Suse 9.0上でオートログインを変更
By Willy Smith
 
コンピュータ上にSuSE 9.0をインストールするとき、規定値の一つは、ブート上のオートログイン手順だ。これは、コンピュータをブートし直すか、又はコールドスタートすると、ログイン画面を自動的に迂回して、誰でもコンピュータが使えるようになることを意味する。とにかく、私がSuSE 9.0をコンピュータにインストールしたときは、このオプションに気付かなかった。これを直すのは易しいが、システム管理メニューを見付けるのは少し難しい。その方法を示す。
 
Control Centerプログラムを立ち上げてYaST2をクリックする。これは本当に必要なプログラムなので、代わりに、直接YaST2に行くことも出来る。YaST2メニューからSystemをクリックする。続いて、/etc/sysconfigファイルのためのエディタをクリックする。ルートでログインしていないときは、ルートパスワードを入力して正しいメニューを入手する。Configuration Optionsに入ったら、Desktopをクリックしてツリーを広げる。続いてDisplay Managerをクリックして次のレベルに入る。このツリーの中に、DISPLAYMANAGER_AUTOLOGINと言うエントリがあるので、クリックすると、この設定の現在値を示すテキストウインドウが現れる。プルダウン矢印を用いて私のものをWillyから、空白(入力無し)に変更した。これで、私のシステムはグラフィック・ログイン・プロンプトにブートする。最初に望んだ通りになった。
 
別途の言及がない限り、この記事の著作権 © 2003-2004 はSSC社が全権保有
 
Copyright © 2004, Willy Smith. Copying license http://www.linuxgazette.com/copying.html
Published in Issue 98 of Linux Gazette, January 2004
 
 
 
米英語キイボードを他の西欧語用に構成
By Willy Smith
 
私は、一つ以上の言語をタイプする必要がある。母国語は英語なので、標準米英語キイボードを使っているが、スペイン語、フランス語、ドイツ語をタイプする必要もある。他にイタリー語、ポルトガル語などの西欧語をタイプする必要のある人もいるだろう。これらの言語には、英語キイボードにはない特殊なアクセントと記号がある。配置全体を変えないで英語キイボードにこれらの能力を与えるのは、極めて簡単だ。
 
標準英語キイボード配列に慣れており、殆どの作業は英語なので、言語を変えるとき配列まで変えたくはない。スペイン語、フランス語配列のキイボードを(インターネット・カフェなどで)使うこともあるが、各種言語の必要に合わせて、私のオフィス・コンピュータの配列全体を変えるのは御免だ。また、キイの頭の文字と配列が異なるのではイライラする。Linux KDE環境はこの点で極めて融通性がある。この記事を研究して、融通性は圧倒的だと思った。そこで、この記事では上述の要件を満たす方法を述べる。
 
私はSuSE 9.0 Linux をKDE ウインドウ作成環境付きで走らせている。アクセントが使えるようにするのは、メインメニューでControl Centerにアクセスすれば極めて簡単だ。Linuxの別のバージョンを使っているなら、環境設定メニューを見付ける必要がある。必要な手順は、この記事を読む誰かが意見をくれるだろう。先ず、"Keyboard Layout"をクリックする。ここにはタブが二つある。"Layout"と標識のある最初のタブで、キイボードモデルのリストから撰ぶ。私はここで "Generic 104-key PC"を撰んだ。主要レイアウトは、"U. S. English w/ deadkeys"だ。このレイアウトで、句読点を幾つか変えてアクセント付きの文字を作ることが出来るようにする。スペイン語とフランス語のためには、アキュート、グラーブ、シルコンフレックスを置く必要がある。ドイツ語ではウムラートが入用だ。デッド・キイ・レイアウトが簡単にこれを解決する。このレイアウトで、単一引用符’、左単一引用符`、二重引用符”、波形〜又はシルコンフレックス^をタイプするだけで、必要な文字を得る。可能性のリストを示す。





 
記号 次の文字   結果
 '   aeiou c   áéíóú ç
 `   aeiou   àèìòù
 "   aeiou   äëïöü
 ~   ao n   ãõ ñ
 ^   aeiou   âêîôû
 

大文字についても同じ順序で働く。これは少し慣れる必要がある。引用符だけが必要なときは、それを示すのにスペースを押す必要がある。直ぐに慣れて、自動的に出来るようになった。コンピュータでデッドキイを設定したりしなかったり行き来するのも、キイボード配置全体を変えるより遙かに容易だ。

スペイン語の句読点と英語キイボードにない特殊記号については、別のオプションを設定する必要がある。Control Centerに戻って、Layoutタブの横のOptionsタブをクリックする。"Compose Key" 入力の下のプルダウンをクリックする。ここにこの機能の選択が幾つかある。私は"Right Alt is Compose"を撰んだが、自分に合うなら"Windows"又は "Menu"キイを撰んでも良い。これで、この言語に必要な記号 ¿ と ¡ を得ることが出来る。撰んだComposeキイとこれらの記号を得るための正しい順序を押す。例えば、上下反対の疑問符を得るには、右Alt キイ、shift キイ、 "?"を二回、の順で押す。ここでも、一見複雑だが、直ぐに慣れて自動的になる。

composeキイシーケンスを用いて利用することの出来る記号全部のリストを作るには、コンソール・ウインドウを立ち上げて "dumpkeys | grep compose"とタイプする。dumpkeys とgrepとの間にあるのは縦棒で、縦棒文字が見つからなければ、"dumpkeys"とだけタイプすればよいが、可能なキイのリスト全部を見て"compose"と言うキイを見付けなければならない。どちらの場合も、必要なキイシーケンスと結果の記号が見つかるだろう。例えば、私のコンピュータでは、右Altを押しながら "s"を二回タイプしてドイツ語の ß を、右Altを押しながら"-L"をタイプして £ を、"oc"をタイプしながら右Altを押して © を得ることが出来る。一つだけないのはユーロに対する記号である。誰かが考えて、投稿してくれるだろう。私の記号表を示す。

順序 結果
`A À
`a à
'A Á
'a á
^A Â
^a â
~A Ã
~a ã
"A Ä
"a ä
-a ª
-A ª
OA Å
oa å
0A Å
0a å
AA Å
aa å
°A Å
°a å
AE Æ
ae æ
,C Ç
,c ç
^C Ç
^c ç
`E È
`e è
'E É
'e é
^E Ê
^e ê
"E Ë
"e ë
`I Ì
`i ì
'I Í
'i í
^I Î
^i î
"I Ï
"i ï
-D Ð
-d ð
^D Ð
^d ð
~N Ñ
~n ñ
^N Ñ
^n ñ
`O Ò
`o ò
'O Ó
'o ó
^O Ô
^o ô
~O Õ
~o õ
"O Ö
"o ö
/O Ø
/o ø
-o º
-O º
`U Ù
`u ù
'U Ú
'u ú
^U Û
^u û
"U Ü
"u ü
'Y Ý
'y ý
TH Þ
th þ
ss ß
"y ÿ
sz ß
nn ñ
nh ñ
NY Ñ
NN Ñ
NH Ñ
Ny Ñ
Nn Ñ
Nh Ñ
-L £
<< «
>> »
?? ¿
^? ¿
!! ¡
^! ¡
^1 ¹
^2 ²
^3 ³
+- ±
c= ¢
c/ ¢
/c ¢
-c ¢
-C ¢
|c ¢
|C ¢
L= £
-L £
-l £
^* ×
^x ×
xx ×
^. ·
.. ·
^/ ÷
^: ÷
-: ÷
:- ÷
Y= \
=Y \
-Y \
-l \
(c ©
"c ©
OC ©
(C ©
C) ©
-a ª
-A ª
-o º
-O º
(r ®
"r ®
OR ®
(R ®
R) ®
mu µ
PP
14 ¼
12 ½
34 ¾
e= ¤
-e ¤
-E ¤
=E ¤
vS ¦
^S ¦
vs ¨
^s ¨
vZ ´
^Z ´
vz ¸
^z ¸
OE ¼
Oe ¼
oe ½
"Y ¾
ij ÿ
IJ ¾
|s $
|S $
SS §
=C ¤
C= ¤
ox ¤
xo ¤

 

新しいレイアウトを試す前に、Control Centeの "Apply" を必ず押すこと。これを行うか又は、このプログラムから出るかするまで、変更は有効にならない。

別途の言及がない限り、この記事の著作権 © 2003-2004 はSSC社が全権保有
 
Copyright © 2004, Willy Smith. Copying license http://www.linuxgazette.com/copying.html
Published in Issue 98 of Linux Gazette, January 2004
 
 
 
ドイツから:Linux対XPの使い勝手研究
By Willy Smith
 
2003年8月13日にベルリンのrelavantive株式会社が発表したこの使い勝手研究は、Linuxへの移転を考えている人が期待するものを、一般的なアプリケーションを新しいOSに適応させなければならないユーザーから、入手することが出来るであろう。これは英語ドイツ語. で入手することが出来る(4 MB PDFファイル)。
 
以下はその文書の抄録で、読者に研究の範囲と結論に関する概念を与えるためのものである。
 

---

テスト対象のシステムはSuSE 8.2とKDE 3.1.2をベースとする。

テスト科目毎に、テストは三つの部分から成る:

−経歴実績と人工統計学的データに関する試験前質問票。

−使用試験:典型的事務所業務の実行。

−好み、問題、意見の変化、及び習得の容易さと能力の評価に関する試験後質問票。

全体で80名の参加者を、うち60名はLinux上で、20名はWindows XP上でテストした。使い勝手テストに普通で十分な数は10名乃至20名である。我々が異常に高い数字の参加者を選んだのは、ユーザの型の間で区別するためである。

−ユーザは、Windowsを仕事で日常使用する一般的な能力を有する。

−ユーザには管理権又はルート優先権がないので、アプリケーションをインストールしたり、中心設定を変更することは出来ない。

−コンピュータは、大部分コンフィギュア済みである。

−コンピュータの使用は、殆ど、事実上均質な環境内の特殊用途に限られている。

−ユーザが技術的問題に直面する場合、管理者又は手元の支援職員の構成員がいる。

−何かシステム変更が行われる時、ユーザは、それに応じる訓練を受ける。

課題は:

1.スクリーンサーバをコンフィギュアして、20分後に出るようにする。

2.自分の選んだワード処理プログラムを用いて、次の文を書く。Harry Potter In the latest Harry Potter novel, an important person will lose his or her life. 一行目を中央表題としてフォーマットする。ペイジの右上余白に頁数を入れる。文書を印刷する。文書を、 "Potter.doc"としてWORDフォーマットで自分のフォルダにセーブする。プログラムを閉じる。

3.手元にある音楽CDの3番目の曲目を再生して暫く聴取する。プログラムの音量を快適なレベルに調節する。アプリケーションを閉じてCDをドライブから取り出す。

4.自分の個人フォルダの中に、任意の名称で新しいフォルダを作る。ネットワークに接続されたコンピュータ(名称「henriette」)上で、フォルダ「Unterlagen」にある文書 「Besprechung.doc」を探す。この文書を前に作ったローカルフォルダにコピイする。

5.06/25/2003 に作成した個人フォルダから、すべてのファイルをリストし、文字“Vorschlag"でスタートする。

6.(自分の作成したフォルダの中に)前にコピイした文書を(手元にある)CD上にセーブ(焼付け)する。その後、そのCDをドライブから取り出す。

7.e-メール・アプリケーションを開く。アポイントメントの日付を述べる新しいメールを受領している。organizerを見て、その日付が空いているかどうかを調べる。その日付が未だ利用できるなら、アポイントメントを取り付ける。

8.Michael Meierにe-メールを書く、連絡先はアドレスブックにある。「題名」として「Anfahrt」を、本文領域に「Anbei die Anfahrtsskizze」を入力する。「Anfahrtsskizze.gif」と言う名の文書を添付ファイルとして同封する。これはpictureフォルダの中の個人文書の中にある。メールを送る。

9. .pdf ファイルを表示することの出来るプログラムを探す。そのプログラムを単一クリックでスタートすることが出来るよう、そのプログラムのアイコン/シンボルをボトムバーに置く。

10.ウエブ・ブラウザを開いてブックマーク・フォルダ「Pictures」(「Bilder」)にリストされたウエブペイジをロードする。ウエブペイジに示される絵を自分のコンピュータのデスクトップ背景として設定する。

 

一見して、課題の選択は、音楽CDの演奏又は背景画像など、オフィス用途関連の常用ではないものを含むと思われる。それでもこれらの課題は、テスト科目を異なるユーザ型に類別し、一定の行動パターンに基づく用法パターンを発見するのに役立った。課題の選択は目的に関して「中立」である。これは、テスト設計段階、両システムについて複雑さが査定される前に、問題が決定されたことを意味する。

 
結果は、Linuxデスクトップがユーザの悪夢でないことを示した。反対に、テスト参加者はこれを好み、これを使うのを楽しんだ。見掛けと感触をユーザが受け入れただけでなく、幾つかのアプリケーションは、それらのWindows XP等価物より使い勝手が良い結果となった。また、総合生産性は低下しなかった。

 

加えて、融通性があり高度に快適なシステムであり、個々の会社及びその社員のニーズに極めて適応し易いとの利点がある。Linuxはデスクトップに限らす多くの点で利点を提供する。この適応には、社員の経験、技量、期待及び可能性を考慮に入れなければならない。新しいデスクトップ・システムが広く受け入れられていること、習熟期間が短いこと、訓練の必要が少ないことのため、この比較的小さい投資の代償は大きい。社員の経験を考慮に入れても、移行の過程では肯定的な結果が与えられるであろう。

しかし、これらの概ね肯定的な結果を離れて、次の事実は承知しなければならない。テストシステムは「独創的なもの」でなく使い勝手の指針を頭において予め構成されたものである。これは、ユーザーが何か欠陥のあるシステムを使うとき遭遇する問題の多くに取り組んだ。我々の(及び将来の)使い勝手テストの詳細結果に基づいて、この構成は更に最適化されるであろう。

要約すると:Linuxに向けての移行は、何よりも社員のデスクトップに関係するなら、技術的又は経済的過程であるだけでなく、人的資源の問題である。これを考慮に入れるならば、Linuxへの移行の努力は、他のどのようなOSへの移行とも同等であろう。

---

手短に言うと、これは、デスクトップ上のLinuxに関する我々の立場の簡単な試験だ。Linuxは殆どの言語をサポートするので、この研究は、殆どの場合、コンピュータを扱うことが出来る人を抱えており、新しいソフトウエアの特許使用を考えている会社又は組織に取って役立つであろう。これはまた、移行の準備は出来ていないが、仕事場でLinuxが進歩する脈動の上に指を置いておきたい人々にも役立つであろう。

別途の言及がない限り、この記事の著作権 © 2003-2004 はSSC社が全権保有
 
Copyright © 2004, Willy Smith. Copying license http://www.linuxgazette.com/copying.html
Published in Issue 98 of Linux Gazette, January 2004
 
 
 
コマンド:cdrecordを使う(ISOイメージをCDに書込)
By LG Staff
 
昔のコマンド行の時代には、LinuxシステムでCD-ROMに書き込む唯一の方法は、ISOファイルシステムを構築してそれをCDにコピイするコマンド一式を知ることだった。今では、K3BなどGUIベースのCD作成プログラムを用いると、古いコマンド行方法は大体忘れられてしまった。
ハードディスクに記憶された元のファイル(つまりテキスト、データ、音楽など)からCDを構築するにはそれで良いが、時にはCDイメージの同等物を新しいCD上にコピイする必要がある。これが普通に起こるのは、Linuxディストリビューションについてだ。例えば、KnoppixはSuSE実物評価同様このように配布される。
cp又はddが課題を果たすと思うだろう。どのみち、UNIX人にとって、ファイルはファイルなのだ。残念乍らこれはCDに役立たない。ビットを書き込んだだけで、サヨナラとは言う訳には行かないのだ。
幸い、CD書込方法を理解して、我々を殆どの苦痛から解放してくれるプログラムがある。それはcdrecordで、殆どのGUIベースCD作成プログラムは、実際の書込にcdrecordを使う。

自分のCDライターがあるアドレスがバス上にあるのでない限り、

cdrecord -scanbus

と入力する。このコマンドがデバイスをスキャンして、アドレスをcdredordが望むフォーマットでプリントアウトする。私はSCSI CDライターを使っていることに注意。IDEデバイスではどうなるか知らない。

私の場合、出力中で問題になるのは

0,4,0  4) 'HP  ' 'CD-Writer+ 9600 ' '1.0a' Removable CD-ROM
の行で、この中の0,4,0 がプログラムに渡す必要のある情報だ。

これはcdrecordがデバイスを呼び出すとき必要な情報の全部らしく、規定値になると思われる。そうでなければ、手動でCDライターを掴み、 man cdrecord とタイプすると読取を始める。

念のため付け加えると、dev= で始まりデバイスと書込むISOイメージ名が続く行が、それをしてくれる筈だ。 -v オプションをつけると、プログラムが走っているとき、少し多くの情報を示す。

例えば、私のシステムでは、SuSE 9.0 ISOイメージを書き込むのに

cdrecord -v dev=0,4,0 Suse-9.0*iso

と入力する。* は勿論、長いファイル名をタイプしないで済むようにするシェル・ワイルドカードだ。

比較だけのため、このコマンドからの出力を示す。

Cdrecord 2.0 (i686-suse-linux) Copyright (C) 1995-2002  Jörg  Schilling
TOC Type: 1 = CD-ROM
cdrecord: Warning: not running as root user, fs= option ignored.
scsidev: '0,4,0'
scsibus: 0 target: 4 lun: 0
Linux sg driver version: 3.1.24
Using libscg version 'schily-0.7'
cdrecord: Warning: using inofficial libscg transport code version
(okir@suse.de-scsi-linux-sg.c-1.75-resmgr-patch '@(#)scsi-linux-sg.c
1.75 02/10/21 Copyright 1997 J. Schilling').
atapi: 0
Device type    : Removable CD-ROM
Version        : 4
Response Format: 2
Capabilities   : SYNC
Vendor_info    : 'HP      '
Identifikation : 'CD-Writer+ 9600 '
Revision       : '1.0a'
Device seems to be: Generic mmc CD-RW.
Using generic SCSI-3/mmc CD-R driver (mmc_cdr).
Driver flags   : MMC-2 SWABAUDIO
Supported modes: TAO PACKET SAO SAO/R96R RAW/R96R
Drive buf size : 4183552 = 4085 KB
FIFO size      : 4194304 = 4096 KB
Track 01: data   648 MB
Total size:      745 MB (73:50.37) = 332278 sectors
Lout start:      745 MB (73:52/28) = 332278 sectors
Current Secsize: 2048
ATIP info from disk:
  Indicated writing power: 7
  Is not unrestricted
  Is not erasable
  ATIP start of lead in:  -11597 (97:27/28)
  ATIP start of lead out: 336601 (74:50/01)
Disk type:    Short strategy type (Phthalocyanine or similar)
Manuf. index: 20
Manufacturer: Princo Corporation
Blocks total: 336601 Blocks current: 336601 Blocks remaining: 4323
RBlocks total: 346489 RBlocks current: 346489 RBlocks remaining: 14211
Starting to write CD/DVD at speed 12 in real TAO mode for single session.
Last chance to quit, starting real write    0 seconds. Operation starts.
Waiting for reader process to fill input buffer ... input buffer ready.
Performing OPC...
Starting new track at sector: 0
Track 01:  648 of  648 MB written (fifo 100%) [buf  99%]  12.1x.
Track 01: Total bytes read/written: 680501248/680501248 (332276sectors).
Writing  time:  400.168s
Average write speed  11.9x.
Min drive buffer fill was 99%
Fixating...
Fixating time:   22.958s
cdrecord: fifo had 10719 puts and 10719 gets.
cdrecord: fifo was 0 times empty and 10592 times full, min fill was 93%.

有用な情報が幾つかと、一つだけ極めて重要な情報がある。cdrecordは最後の行で、FIFOが空にになることがあったか否かと、今まで何処まで減ったかを告げる。これはデバイスに対するバッファだ。データをリアルタイムでCDに送る。FIFOが空になることがあればCDは壊れる。最低充填率は、どれだけ良く持ち続けているかをチェックする良い方法だ。この数字が余り低くなると、CDに書き込むとき不要のプロセスを停止しなければならない。

別途の言及がない限り、この記事の著作権 © 2003-2004 はSSC社が全権保有
 
Copyright © 2004, LG Staff. Copying license http://www.linuxgazette.com/copying.html
Published in Issue 98 of Linux Gazette, January 2004
 
 
 
Konquerorを用いる画像集の構築
By Hal Stanton
 
デジタルカメラを始めて数年になる。写真は沢山撮影するが、殆どはCDに記憶されたまま眠っている。画像集を作るのに手間が掛かるからだ。
画像集プログラムは沢山あるが、みんな不便だ。それらは殆どのLinuxディストリビューションに含まれていない。画像集を仕上げるには、複雑な設定を必要とするか、又は沢山のコマンド行作業が必要だ。今、Konqueror、KDEのファイル、ウェブ・ブラウザのメニューを見て、ツールメニューにCreate Image Galleryと言う登録を見付けた。前にこれを見過ごした理由の一つは、Konquerorを "House" アイコンからスタートすると、ツールメニューにだけしか現れないためだ。

このツールがすることを理解するため、新しいディレクトリを作って、幾つかの絵をコピイした。これは如何ようにも出来る。全部をKonquerorの中で行うには Edit メニューの中のNew Directory項目を用い、続いて所望のファイルをそのディレクトリにドラッグすることが出来る。これをするはKonqueror ウインドウ二つを開くのが通常最も易しい。コマンド行ユーザであるなら、mkdircp を同じことに使うことが出来る。

所望の絵を全部ディレクトリに入れたら、Tools メニューでCreate Image Galleryをクリックする。画像集のスタイルを設定するオプションのボックスが出る。オプションには1行写真数、フォント、色及び含むべき情報が含まれる。ペイジ表題を決めることができるし、Directories をクリックして出力ファイル名(規定値はimages.html)を規定し、サブディレクトリに救済するか否か、ファイルをコピイするか、コメントファイルを使うかなどを規定することが出来る。

私はコメントファイルの考えが好きだが、書き込む文書はない。システム上にもウエブ検索でも何も見出されなかった。ここでヘルプがあったらと思う。誰かこの特性を使う方法をご存知だろうか?

[注記: KDE.org サイトで、これをおこなう方法を見出した。"Comments File"フィールドで使用しようとする名のあるテキストファイルを作る。各thumbnail が、ファイル名伸したにコメントを有する:

FILE1:

comment1

FILE2:

comment2

FILE3:

comment3

ファイル名の順序は重要でないが、スペルを間違えないこと。コメントの長さは任意で、ペイジがそれに合わせて下に伸びるだけだ。ファイルを変更する毎に、 "Directories"アイコンの上をクリックするとき現れる "Use Comment File" ボックスをチェックするのを忘れないで、"Create Image Gallery" コマンドをもう一度走らせなければならない−Willy Smith編集者]。

所望のオプションを撰んだら、OKをクリックするだけで、画像集が出来上がって表示される。極めて楽だ。結果が満足でなければ、オプションを変更してもう一度OKをクリックする。

別途の言及がない限り、この記事の著作権 © 2003-2004 はSSC社が全権保有
 
Copyright © 2004, Hal Stanton. Copying license http://www.linuxgazette.com/copying.html
Published in Issue 98 of Linux Gazette, January 2004
 
 
 
Ksnapshotを用いる画面の捕捉
By Hal Stanton
 
私はKDEユーザだ。Linuxを試そうと決心したとき、KDEが私の使い慣れたものに最も似ていると思った。KDEを使うのは難しくなかったが、勉強し直さなければならないことが沢山あった。そのうち一つは画面捕捉の実施だ。Linuxを使う上で最も難しい部分はどのプログラムを使うかの決定だ。沢山の選択肢がある。
 
画面捕捉のための容易な方法が必要だった。色々なプログラムを見て、Ksnapshotを使うことに決めた。Ksnapshotは、驚く程使い易く必要なオプションを全部備えている。その使用法を説明するが、使って貰うことがこの記事の最も重要な部分だと承知する。

私はKsnapshotをKDEのUtilities->Desktop メニューで見付け。これはAlt-F2 を押してラン・ボックスを表示させ、ボックスにksnapshotと入力してスタートさせることも出来る。これを使うとデスクトップ・アイコンが増えることになる。

Ksnapshotをスタートすると、デスクトップ全体のイメージを表示する前にこれを捕捉する。したいのがこれであれば、次にするのはプリント又はセーブだ。多くの場合にしたいことは、デスクトップ・ウインドウ上のスナップショットを捕捉することだ。これにはSnapshotディレイ・オプションを数秒設定して "Only grab the window containing the pointer"(ポインタを含むウインドウだけを捕捉)オプションを撰ぶと良い。続いてNew Snapshot ボタンをクリックして、マウスポインタを自分が捕捉したいウインドウにドラッグし、マウスポインタがブリンクするまで待つ。

スナップショットをセーブするときは、フォーマット選択を求められる。カプセル入りPostScript (EPS)、JPEG、PNGが、システム間で最も移植し易いが、ウインドウ・フォーマット二つ(iconとBMP)、Xフォーマット二つ(X BitMap 画像と X PixMap 画像)も少数ある。

スナップショットをプリント又はセーブするとき、KDEアプリケーションが用いると期待することの出来る標準はダイアログボックスである。これら及び別の標準ダイアログ(ファイルを開くのは別の例)も慣れると、KDEアプリケーションは極めて学習し易い。

この記事の最後は、質問して(Willyから)答を貰った写真集の作成だ。今回はもっと一般的な質問がある。KDEを使ってこれらの型の課題をおこなう方法の要約が見つかる場所があるだろうか?これらの情報があると、人々がLinuxに移行するのが楽になると思う。

別途の言及がない限り、この記事の著作権 © 2003-2004 はSSC社が全権保有
 
Copyright © 2004, Hal Stanton. Copying license http://www.linuxgazette.com/copying.html
Published in Issue 98 of Linux Gazette, January 2004
 
 
 
単語カードを用いる学習
By Hal Stanton
 
Flashkard は、想像されるようにフラッシュカード(単語カード)を作るプログラムだ。言い換えると、表面と裏面が何かの方法で関連するカードだ。これらは語句の定義に用いられる(片側の語句が別の面の語句を定義する)、外国学習(片側に語句又は文章、反対側に訳)やゲームを作るのにさえも使用される。
 
これらのカードの作成は自明だ。データ入力モードでは、今のカードのリスト、新カードの内容を入力する表面と裏面の枠、及び追加,削除、更新のボタンが出る。ファイル・メニューを用いて、更新する既存ファイルを選び、新しいファイルを作成し、変更をセーブすることが出来る。カードの表と裏とは、表示のときボタンが逆になるので、混同の心配はない。

カードの組を表示するには、三つの方法がある。フラッシュカード、ランダム配列クイズ、整列クイズだ。フラッシュカードでは、カードの片側が表示され、タブをクリックして反対側を見る。「次へ」ボタンで次に移り、ウインドウの下にあるバーが閲覧済みの比率を示す。

クイズ・モードでは、カードの片側が示されるとき、枠に答(カードの裏側)をタイプする。チェックボタンを押すと、正解か否かを示して点数を更新する。答が分からないときは、正答ボタンを押すことが出来る。カード全部を表示すると点数が表示されて、もう一度始めからやり直すことが出来る。

このプログラムは洗練されていないが、助けにはなる。私の子供はこれを楽に使いこなしてテストを作っている。使い易いので、自習用に沢山の可能性があると思う。

大変良いことの一つはカードを印刷する能力だ。ファイルの拡張子はkvtmlだ。意味は知らないがHTMLに似ている。例えば、3枚のカードを作った後、私のファイルcolor.kvtmlで見出したものを示す。

<?xml version="1.0"?>
<!DOCTYPE kvtml SYSTEM "kvoctrain.dtd">
<kvtml>
 <e>
  <o>black</o>
  <t>white</t>
 </e>
 <e>
  <o>red</o>
  <t>green</t>
 </e>
 <e>
  <o>yellow</o>
  <t>blue</t>
 </e>
</kvtml>

ここに示すものに基づくと、この情報を読取ってカード上にプリントするのは、それ程難しくないと思われる。それは今の私の能力を超えるが、出来るだろうと思う。

別途の言及がない限り、この記事の著作権 © 2003-2004 はSSC社が全権保有
 
Copyright © 2004, Hal Stanton. Copying license http://www.linuxgazette.com/copying.html
Published in Issue 98 of Linux Gazette, January 2004
 
 
 
DCHP入門
By Dean Wilson
 
DCHPとはDynamic Host Configuration Protocol(動的ホスト構成プロトコル)の略だ。サーバーからネットワーク設定を動的に行う。言い換えると、コンピュータがネットワークと交信する方法に関連するパラメータを構成するのでなく、それを自動的に起こす。
最も基本的のはIPアドレスを動的に割り当てることだが、もっと沢山のことがある。これにはネットマスク、ホスト名、ドメイン名、ゲートウエイ、ネームサーバが含まれる。その上、タイムサーバなど別の情報を供給することが出来る。
 

多くの人がDCHP反対派だ。これを、ISPがIPを提供する方法で、そのIPは変化する、としか理解しないからだ。これで、勿論、サーバの広告が難しくなる。他方、DHCPにより、社内又は組織内で実行している構成作業が少なくなる。

これは、ISP装備DHCPサーバの他に、廉価なルータ・ボックスにも存在する。Netgeark, Linksysその他のベンダーは、これらのシステムを多重LANポート、802.11b無線インターフェイス又は双方に提供する。Netgear RP114は、有線LAN限定の例で、Linksys WAP11は802.11b 型の例だ。その他沢山の選択肢がある。ルーターボックスがISPの認識するシステムとなるので、実際のコンピュータはこのボックスの影に隠れる。

隠れるとは、実際その通りで、公開インターネットから見えるのはルーターなのだ。LANは秘密アドレスを持っており、内部システムからインターネットへの接続を扱うにはネットワーク・アドレス・トランスレーション(NAT)を用いる。これは実際のファイアウォールではないけれども、NATは基本的レベルの保護を提供する。

このクラスのルーターの殆どで出来ることは、

・自分のコンピュータのうち一つのMAC (ハードウエア)アドレスを複製する。これにより、ISPが会話しているのは、多数のマシンが接続されているかも知れないルーターでなく、以前に指定したコンピュータシステムであると考えることが出来る。
・安定IPアドレスを扱う。これは、ローカル・ネットワーク・アドレス(192.168.1.x, など)を取り上げて、この範囲内で固有アドレスを割り当てることを意味する。
・規定範囲内から動的にIPアドレスを割り当てる。例えば、ルーターは192.168.1.100 から192.168.1.119までなど、20ヶの異なるアドレスをDHCPに提供するよう構成することが出来る。

これが初心者に対するDHCPの基本だ。DHCPを使うか安定IPアドレスを使うかの決定迷っている人には、この情報で十分であろう。他方、Linuxシステム上でDHCPサーバーを走らせることが出来る。その場合は、もっと選択肢がある。

DHCPサーバーとしてのLinux

ISC からのdhcpdがLinuxシステムと一緒に出荷される最も普通のDHCPサーバーである。スタートの時、これは、通常 /etc/dhcpd.confにあるコンフィギュレーション・ファイルから命令を貰う。そのコンフィギュレーション・ファイルのサンプルを示す。

# ISCdhcpdのためのコンフィギュレーション・ファイル・サンプル
# 支援ネットワーク全体に共通のオプション定義
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;

default-lease-time 600;
max-lease-time 7200;

#  動的 DNS 更新を使用しないのであれば
#
# dhcpd-3が最低このステートメントを必要とするのでこのこのステートメントは必要
# dhcpd-2は、これを理解しないので削除する。
#
# 動的 DNS 更新を使用するのであれば、先ず下記を読む
# read /usr/share/doc/packages/dhcp-server/DDNS-howto.txt
ddns-update-style none; ddns-updates off;


# このDHCPサーバーが、ローカル・ネットワーク用公式DHCPサーバーで
# あるときは、権威ある命令をアンコメントしなければならない。
#authoritative;

# これを用いてdhcpログメッセージを各種ログファイルに送る
# (宛名書換を完成するには syslog.confにも細工しなければならない)
log-facility local7;

# 以下は極めて基本的なサブネット宣言である

subnet 10.254.239.0 netmask 255.255.255.224 {
  range 10.254.239.10 10.254.239.20;
  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
}

# 内部サブネット用には少し異なるコンフィギュレーション
subnet 10.5.5.0 netmask 255.255.255.224 {
  range 10.5.5.26 10.5.5.30;
  option domain-name-servers ns1.internal.example.org;
  option domain-name "internal.example.org";
  option routers 10.5.5.1;
  option broadcast-address 10.5.5.31;
  default-lease-time 600;
  max-lease-time 7200;
}

# 特殊コンフィギュレーション・オプションを要するホストは、ホストステートメントに
# ホストステートメントに記載することが出来る。
# アドレスを規定しないときは、(可能なら)動的割り当てられるが
# ホスト固有の情報は、ホスト宣言から来る。

host passacaglia {
  hardware ethernet 0:0:c0:5d:bd:95;
  filename "vmunix.passacaglia";
  server-name "toccata.fugue.com";
}

# ホストのため固定IPアドレスを規定することも出来る。これらのアドレス
# もまた動的割り当てに利用出来るものとしてリストしてはならない。
# 固定IPアドレスを規定したホストはBOOTP又はDHCPを用いて
# ブートすることが出来る。固定IPアドレスのないホストは
# サブネット上に、dynamic-bootpフラグのセットされた
# BOOTP クライアントが接続されているのでない限り、
# DHCPでブートすることが出来るだけである。
host fantasia {
  hardware ethernet 08:00:07:26:c0:a5;
  fixed-address fantasia.fugue.com;
}

このファイル、dhcpd.conf(5) に付属するマニュアルは、極めて丁寧なので、その全部をここに再掲することは出来ない。dhcpd.conf とタイプするだけで表示される。25頁以上はあるが、オフライン学習のため印刷するのであれば、以下のコマンドで十分である。

cd /usr/share/man/man5
zcat dhcpd.conf.5.gz | groff -man | lpr

ファイルは、二つの型のステートメントに分かれる。パラメータ・ステートメントは、dhcpdに何かをさせるのに、何をどうするかを述べる。デクラレーション・ステートメントは、ネットワークを記述する。したがって、デクラレーションが依存すべき事柄をパラメータで確定する。上の例においてはdefault-lease-time がパラメータの例である。host fantasia { で始まるブロックがデクラレーションである。何かのブロックの外側に現れるオプション・ステートメントは、範囲がグローバルなグローバル・ステートメントである。デクラレーション内にあるものは適用範囲がローカルある。

この入門がDHCPで仕事をする助けになれば良いと思う。DHCPクライアントになるのは容易だ。サーバー側に全く面倒はない。DHCPにさせたいことが決まったら、その情報を/etc/dhcpd.confで必要なものに翻訳するのは簡単な手順だ。

別途の言及がない限り、この記事の著作権 © 2003-2004 はSSC社が全権保有
 
Copyright © 2004, Dean Wilson. Copying license http://www.linuxgazette.com/copying.html
Published in Issue 98 of Linux Gazette, January 2004
 
 
 
 
Etherealを用いるネットワーク監視
By Dean Wilson
 
誰もが望むのは、ネットワークが思い通りに働くことだが、そうでない場合が多い。お互いに連絡するはずの二つのシステムが、そうならない。大した理由もないのにネットワークが通信で飽和する。何かLinuxでないシステムのすることを知る必要がある。Etherealがその助けになるだろう。
 
例えば、数年前、私はプロジェクト用に無線リンクを設定した。それは比較的遅かった(実際のデータスループットは 300Kbps)けれども、通信量を容易に処理した。だが殆どの時間飽和していると思われた。理論上は支障ない筈だった。リンク容量は通信量より遙かに大きい。それは理論上だった。
 
マスター無線局呼出スイッチは沢山点滅していると思われたが、通信量を測るため点滅光を監視するのは、自分の舌を電池のテストに使う位の正確さだ。etherealをスタートすると、素早く問題を識別する。何か別のOS上で走る非常に沢山のコンピュータがあって、それが、コンピュータのスイッチを入れたとかプリンタ用紙が足りなくなったとかなど自分の関心事の放送パケットをネットワーク上で送るらしい。
問題点が分かれば、直すのは容易い。無線通信をお喋りなOSから別のサブネットに移したら、性能が良くなった。
 
マニュアルの概要ではInteractively browse network traffic(対話形式でネットワーク通信量を眺める)と言う。私の上述の用法はリアルタイムだが、Etherealは同一ファイル・フォーマットをtcpdumpとして使用する。だから、古いdumpファイルを取り上げてそれを解析するのにEtherealを使用することが出来る。このフォーマット(libpcap)の他に、Etherealは、他のOS−お喋りなものでも−の上の捕捉ツールからのものを始めとして、多くの他のdumpフォーマットを読み取る。
 
すべてと言って良い程のプロトコル解析のように、Etherealはパケットに関する要約行、16進ダンプ、プロトコル・ツリーから掘り下げる能力などを示す。その上、フィルタを定義して関心のあるデータを示すことが出来る。コマンド行オプションは少ないが、Etherealをスクリプトに埋め込もうとしない限り、したいことを会話的に設定するのは容易だ。
 
警告を一つ。Ethereal以外が走っているシステムに関する実況通信量を監視するときは、通信量を見る場所に接続していることを確認する。Etherealは自分のローカルEtherealインターフェイスを最も近いモードに設定する。つまり、通信量全部を見る。しかし、自分のシステムがEtherealスイッチに接続されていると、自分のシステムに関する通信量だけがそこに現れ