Linux Gazette 1999年8月号

残暑お見舞い申し上げます。

猛暑が続いておりますが皆様のマシンの具合は如何ですか。クロックアップをしている方はシステムが不安定な場合はまずクロックを標準に戻しましょう。

今月のLinux Gazetteの内容


読者からの投稿

投稿に対する返事はそれぞれの投稿者に直接送ることになっていますがgazette@ssc.comにコピーされたものは次号で紹介する予定です。


今月のニュース

東京7月27日発 Turbo Linuxの売れ行きがWindows 98、Mac OSを上回る

市場調査会社のレポートによると過去3週間のTurbo Linuxのアップグレード版売れ行きがWindows 98とMac OSの売れ行きを上回った。詳細は http://www.cnn.com/TECH/computing/9907/27/linux/index.htm

MicrosoftとRedhatのベンチマーク対決再び

MicrosoftとRedhatのベンチマーク対決が再び行われそうだ。Neal Nelson氏がマイクロソフト主催のベンチマーク評価の後再びベンチマークの評価を呼びかけた。Windows NTとIIS 4.0は最大にチューンアップされていたのに対しLinuxはほとんどチューンアップされていなかったというのが理由だ。

ApplixがSmartBeak.comを立ち上げる

Linux、Unix用のアプリケーションを提供しているApplixがオープンソースソフトウェア開発、ユーザー支援のためにSmartBeak.comを立ち上げた。ユーザーは問題解決のための情報にアクセスすることが可能。情報はHow To、FAQ、HTML、サポートデータベースからなっている。

Debian GNU/Linuxプレインストールのラップトップ

Linux LaptopはLinuxをプレインストールしたラップトップコンピュータを提供している唯一の企業だ。Debian GNU/Linuxをプレインストールしたラップトップは同社のウェブサイトからオーダーできる。


ソフトウェアアナウンス

Turbo Linux ワークステーション 3.6出荷

Turbo LinuxはTurbo Linux ワークステーション英語版を出荷した。カーネルは2.2.9で小売価格は49ドル95セントだ。

Caitoo 0.6.4 KDEベースのインターネットダウンロードマネージャ

Caitoo(旧名KGet)はGo!zillaやGetRightのようなダウンロードマネージャだ。ダイオログから転送の一時停止、再開などの指示が可能。又転送状況、速度などの状態を表示する。http://tux.kawo2.rwth-aachen.de/~caitooからダウンロードできる。 動作環境はLinux, Qt 1.42, KDE 1.1。

SuSE Linux 6.2を8月9日に出荷

8月9日にx86版SuSE Linux 6.2が出荷される。カーネルは最新の2.2.10でStarOffice 5.1、KDE 1.1.1、Apache 1.3.6、GIMP 1.1.4、sendmail 8.9.3などが同梱される。さらにVMwareやRealPlayer 5.0などが 初めて含まれた。


More 2¢チップ

Xtermのフォントを大きくする。

画面解像度を1024x768や1200x1024でXを使っているとフォントが小さくて読み難い場合があります。「Ctrl+マウスの右ボタン」でフォントの大きさを変えることも出来ますが今回はXリソースを修正します。他のプログラムは設定やオプションを環境変数から受け取りますがXクライアントはXサーバーのリソースデータベースを参照します。 .Xdefaultというファイルが起動時に読み込まれサーバーのリソースに取り込まれますから".Xdefault"を変更したらXウィンドウを再起動するか、「xrdb -merge ~/.Xdefault」というコマンドを打ち込めば変更が反映されます。 xtermのフォントサイズを変えるには



  XTerm*VT100*font: 10x20


を追加します。

Redhat 6.0をシャープのワイド画面で使う

シャープのワイド画面のノートのディスプレイサイズは1024x600です。画面下部が若干隠れてしまうのを我慢すれば1024x768の設定で十分使えますが下部のウインドウのパネルが使えません。これを解決するには1024x768のXF86Configファイルの一部を変更して使います。変更する個所はmodelineの768を600にするだけです。つまり、



変更前  Modeline "1024x768" 44.9 1024 1048 1208 1264 768 784 817


変更後  Modeline "1024x768" 44.9 1024 1048 1208 1264 600 784 817


のように変更します。

コアファイルを残さない

プログラマーでもなければコアファイルは必要ないでしょう。コアファイルがダンプされないようにするには .bashrcか .loginファイルに



  ulimit -c 0 


を追加します。そうするとコアファイルを吐かなくなります。


Ted、リッチテキストワードプロセサ(Larry Ayers)

先月はAbiWordというワードプロセサを紹介しました。今回はTedを紹介します。これはRTF(Rich Text Format)を使ってWindowsユーザーとドキュメントを共有しようというものです。TedのドキュメントはMsWordやワードパッドなどで読み込むことが出来ます。その逆はまだ実現されていませんが、画像を入れたりハイパーリンクを埋め込んだりする場合にはTedは使ってみる価値があると思います。

Tedはftp://ftp.nluug.nl/pub/editors/tedからダウンロードできます。バイナリのコードはスタティックリンクされています。ソースからコンパイルするにはlibtiff、libgif、libjpeg、libpng、libxpmなどのライブラリが必要です。 Windowsユーザーとドキュメントを共有する他にもHTMLやLaTeXのタグを使わずに画像を含んだファイルを簡単に作成する事が出来ます。


The Graphics Muse(The column of Computer Graphics on Linux systems)

アップルのオープンソースのQuickTimeストリーミングサーバーがLinuxに対応

インテルベースのLinuxに対応したアップルのオープンソースストリーミングサーバーのコードがアップロードされた。開発者はソースコードの変更無しにLinuxベースのストリーミングサーバー製品を開発する事が出来る。

SGIのProject MongooseがIRIS PerformerをLinuxに移植

SGIはIRIS PerformerをLinuxプラットフォームに移植中であると発表した。MongooseプロジェクトによるとIRIS Performer APIを1999年末までに公開する模様。

Xi Graphicsの最新版maXimum cde

Xi GraphicsのmaXimum cdeは強力なグラフィック環境をデスクトップ、ラップトップユーザーに提供している。最新パッケージではAccelerate-XサーバーでMotifとCDEを統合している。 さらにXi Graphicsは新ビデオチップの対応も進めた。対応した新ビデオチップはMatrox G400、3dfs/STB、Voodoo3-2000と3000、Diamond Viper 770 Ultra(nVidia Riva TNT2)、Diamond Viper 550(TNT)などだ。

知ってますか?

AC3Dユーザーのためのウェブサイト。場所はhttp://www.eilers.net/ac3d/。


perlpp(Dr. Warren MacEvoy)

ライターが必要に迫られて作ったperlppの紹介です。perlppはCのプリプロセッサ、cppの様なものですが、使うには若干のPerlの知識が必要です。perlppはファイルを読み込んでperlのスクリプトを生成します。 Cのプログラムでの例で良く使われるhello worldの例を使ってhello.c.cppというコードをperlcppで処理すると次のようになります。



#include <\n>


int main()


{


printf("Hello World!\n");


return 0;


}


これを perlpp で処理するには次のようなコマンドを打ち込みます。



perlpp -pl hello.c.ppp


その結果生成されるperlスクリプトは


!/usr/bin/perl<\n>


print '#include 


';


print 'int main()


';


print '{


';


print '  printf("Hello World!\\n");


';


print '  return 0;


';


print '}


';


のようになります。

cppはcppディレクティブを使うと効率的に利用できます。perlppもperlppのディレクティブを利用すると効果的です。Perlはcppに比べてテキスト処理能力が優れているので使えればとても便利でしょう。 perlppはftp://zot.mesastate.edu/pub/wmacevoy/perlpp/perlpp-0.5.tar.gzからダウンロードできます。perlppを使用するにはPerl 5がインストールされていなければなりません。


Linuxでラムディスクを使う(by Mark Nielsen)

Redhat 6.0のラムディスクのセットアップ法です。 ラムディスクとはメモリ上に割り当てられた領域でパーティションとして使われます。つまりハードディスクと同じように使うことができます。何故ラムディスクを使うか? 頻繁に使うファイルがある場合、それがラムディスク上にあればHDDに比べて非常に高速に利用できます。ウェブサーバーなども高速化することができます。あまりないでしょうが、PII 550Mhzのマシンに1GBのメモリと500MBのHDDを搭載しているような場合、またディスクのないマシンを構築するような場合に利用されます。詳細は



    1.http://metalab.unc.edu/LDP/HOWTO/Kernel-HOWTO.html 


    2.http://metalab.unc.edu/LDP/HOWTO/mini/LILO.html 


    3./usr/src/linux/Documentation/ramdisk.txt 


を参照して下さい。

ラムディスクを使用するのは簡単です。Redhat 6.0はデフォルトでラムディスクをサポートしています。必要なのはラムディスクをフォーマットしてマウントするだけです。「ls -al /dev/ram*」とすれば使えるラムディスクが表示されます。利用するには



mkdir -p /tmp/ramdisk0


mkfs -t ext2 /dev/ram0


mount /dev/ram0 /tmp/ramdisk0


とします。これはラムディスクのディレクトリを作成し、フォーマットしています。サイズはデフォルトで4メガバイトです。最後にラムディスクを/tmp/ramdisk0にマウントしています。 注意しなければならないのはマシンを再起動するとラムディスクは消滅してしまうということです。

ではどうすればラムディスクのサイズを変えられるでしょうか。方法は二つあります。

具体的にウェブサーバーでラムディスクを使う方法を説明しましょう。 ラムディスクは3個使います。Apacheウェブサーバーがcgi、html、アイコンなどで9メガバイト以上を使わないことを確認しておいて下さい。 まずウェブサーバーのホームディレクトリを移動しラムディスクをマウントするディレクトリを作ります。



mv /home/httpd/ /home/httpd_real


mkdir /home/httpd


mkdir /home/httpd/cgi-bin


mkdir /home/httpd/html


mkdir /home/httpd/icons


次のように /etc/rc.d/rc.localファイルを修正します。


        ### ラムディスク用のパーティションの作成


/sbin/mkfs -t ext2 /dev/ram0


/sbin/mkfs -t ext2 /dev/ram1


/sbin/mkfs -t ext2 /dev/ram2





        ### ラムディスクをマウントする





mount /dev/ram0 /home/httpd/cgi-bin


mount /dev/ram1 /home/httpd/icons


mount /dev/ram2 /home/httpd/html





        ### 実際のホームディレクトリの内容をラムディスクにコピーする


tar -C /home/httpd_real -c . | tar -C /home/httpd -x





        #### ウェブサーバーを再起動する


/etc/rc.d/init.d/httpd restart  


”/etc/rc.d/rc.local”というコマンドを使う代わりにマシンを再起動します。

最後に次のことに注意して下さい。

  1. データのバックアップを忘れないこと。マシンを再起動するとラムディスクの情報は失われてしまいます。
  2. マザーボードによってはメモリが256メガバイト(まれに128メガバイト)ということがありますので注意しましょう。
  3. 理想的な使い方は1ギガバイトメモリを乗せて256メガバイトを /tmpに割り当てることです。マシンを再起動すると /tmpの内容は破棄されてしまいます。
  4. 最初はlilo.confを修正する方法でラムディスクのサイズを変更しましたがうまく動作しませんでした。それでカーネルを再構築していましたが、現在はlilo.confの修正でもちゃんと動作しています。


I-Nodeとファイルネームを表示するスクリプト(by Steve O’Neil)

ファイルネームとI-Nodeを表示することが大事なことでしょうか。システムの管理者としてはファイルのリンクを理解していることは重要でしょうし、システムへの進入に対しても有効だと思います。基本的なシステムのI-Nodeとファイルネームを保存しておいて定期的にスクリプトを走らせリンクのチェックをするのはセキュリティの観点からも大事なことです。

スクリプトはbashやzshのようなシステムで動作しますがファイルのリストはelsというプログラムを利用しています。elsはlsの拡張版で、
ftp://perseus.elen.utah.edu/pub/markb/els.tar.Z.
からダウンロードできます。

スクリプトの内容は次の通りです。 "findhardlinks.sh"のディレクトリのリストと"showsame.awk"の中のawkの場所を自分のシステムに合わせて修正します。 使い方はコマンドラインから"findhardlinks.sh"を起動するだけです。"allfiles.lst.srt"というファイルが/tempに作られます。"showsame.awk"を同じディレクトリにコピーして「showsame.awk allfiles.lst.srt」のように起動すると"outfile.txt"というファイルが生成されますから「uniq outfile.txt > outfile.nodup」でダブっているラインを削除します。



findhardlinks.sh





#These directories are all under "/" on my system; you may have to change


#the list to suit your configuration. 





for i in bin boot etc home lib opt root sbin tmp usr var


        do





#This line generates a file listing for all the specified directories and


#their subdirectories, showing each files i-node number, and its complete


#path name, and puts all of it into "allfiles.lst"





        els -a -i +R +NF $i >> /temp/allfiles.lst


        done


cd /temp


sort allfiles.lst > allfiles.lst.srt 


rm allfiles.lst











showsame.awk





#! /usr/bin/awk -f


BEGIN {





        getline  #get the first line of the file, then,


        n1=split($0, test1) #put its fields into an array, then,





#increment the line pointer by one





}


{


#this is the i-node comparison loop





        n2=split($0, test2) #put the next line into an array


        if (test1[1] == test2[1]) { #see if the i-node numbers of the two


                                    #lines are the same(field 1 of both


                                    #strings)





#if they're the same, print the contents of both arrays





                for (i=1; i <= n1; i++) {


                        printf ("%s ", test1[i]) >> "outfile.txt"


                                        } #note (space) after %s; this puts


                                          #back spaces between fields lost


                                          #when the strings were split into


                                          #the arrays





                        printf ("\n") >> "outfile.txt"


                for (i=1; i <= n2; i++)  {


                        printf ("%s ", test2[i]) >> "outfile.txt"


                                        }


                        printf ("\n") >> "outfile.txt"  


                                   }





#Now put the most recent string into the array that holds the previous


#string; this allows us to do comparison between each line and the one


#before it.





        for (i=1; i <= n2; i++) { 


                test1[i] = test2[i]


                                }


        n1 = n2 #set the count of fields in the array that is holding what


                #is now the previous string to the number of fields in that


                #string





        next    #go get the next string and do it again


}



ホームネットワークでのDNS(JC Pollman、Bill Mote)

これは完全なマニュアルではありませんが経験に基づくもので実際に動作しているシステムです。初心者にはとても参考になると思います。

まずbind v8.2がインストールされている必要があり、ドメインネームを設定しIPマスカレードを使用していることを前提とします。 DNSとはドメインネームとIPアドレスの変換をするものです。ISPのDNSサーバーを使えば独自でDNSサーバーを立ち上げる必要はありませんがDNSサーバを立ち上げた方が効率はよくなります。IPマスカレードはプライベートのIPアドレスをインターネットで有効なアドレスに変換するものです。

DNSを利用するにはbindをインストールしなければなりません。bindをインストールしたらそれぞれのコンピュータのIPアドレスとホストネームを設定します。 DNSをセットアップしたら次のファイルを修正する必要があります。



              /etc/named.conf 


              /var/named/db.cache 


              /var/named/db.kulai.org        (kulai.orgは自分のドメイン) 


              /var/named/db.124.168.192    (192.168.124.0は自分のネットワーク) 


              /var/named/db.127.0.0


上記のファイルを修正したら/etc/resolv.confを作成し、再起動します。DNSがきちんと動作していれば


              Jul 10 15:54:26 master named: named startup succeeded 


              Jul 10 15:54:26 master named[3523]: Ready to answer queries.


のような文字列が/var/log/messagesに残されているはずです。うまくいったらインターネットに接続して試してみましょう。

もしうまく行かない場合は

  1. "ps ax|grep named [Enter]"でnamedの動作を確認する
  2. IPアドレスと名前で別のマシンにpingを実行する
  3. サーバーにtelnetでアクセスする。もし時間がかかる場合には問題があります
などを試して下さい。

簡単なDNSサーバー構築の例ですが興味があれば次のサイトを参考にして下さい。
The DNS HOWTO
DNS and Bind by O'Reilly
DNS - ZDNet Webopedia Definition and Links
Troubeshooters.com: DNS -- 古いバージョンのbindに対するヒントもあります

来月はホームネットワークのメールに挑戦する予定です。


オープンソースへの参加、貢献

カーネルのハッカーだけがオープンソースに参加できるわけではありません。いろいろな分野でのサポートが必要とされています。とても重要なドキュメンテーションやプログラムのテスターなどです。Linuxの生みの親のTorvalds氏は,米カリフォルニア州サンノゼで開催のLinuxWorld Expoで8月10日夜のいわゆる“基調講演”らしくはない講演で、カーネルデベロッパーだけが重要なのではなくエキサイティングな作業の多くはカーネル以外のところにある。それはプログラム開発ではなく開発そのものだ、と語っています。


Linuxのちょっとした秘訣(By Anderson Silva)

Linuxの初心者、中級者へのちょっとしたヒントのコラムです。筆者が2年間Linuxを使用した経験に基づいて気のついたことを紹介します。

  1. インターネットの接続にRedhatのnetcfgを使っているのならコマンドラインで使えるようにしておくと便利です。例えばppp0に設定してあるなら
    
    
           alias dial="/etc/sysconfig/network-scripts/ifup-ppp
    
    
           /etc/sysconfig/network-scripts/ifcfg-ppp0"
    
    
           alias hangup="/etc/sysconfig/network-scripts/ifdown-ppp
    
    
           /etc/sysconfig/network-scripts/ifcfg-ppp0"
    
    
    
    と/etc/bashrcに記入しておくとコマンドラインで"dial"、"hungup"と入れるだけで接続、切断ができます。
  2. もう一つbashがらみのヒントです。 新しいディレクトリを作るために
    
    
                 # mkdri 
    
    
    
    とタイプしたとします。mkdriでかまいません。このタイプミスを訂正するにはバックスペースで戻って訂正をしますが、その代わりに「Ctrl+t」を押して下さい。最後の2文字が入れ替わります。
  3. 又bashがらみのヒントです。やたらと長い名前のディレクトリに移動するのは嫌なものです。そういう時はTABを使います。例えば what_is_wrong_with_this_directoryというディレクトリへ移動するには
    
    
           # cd what
    
    
    
    の後にTABを押します。するとパスの中から有効なディレクトリ名を検索して補完してくれます。もしTABを一度押しても何も起こらなければTABをもう一度押して下さい。複数の候補が表示されます。
  4. ls --colorでディレクトリがカラー表示されることは良くご存知でしょう。そのカラーをカスタマイズすることができます。/etc/bashrcに
    
    
      eval `dircolors /etc/DIR_COLORS`
    
    
    
    の行を追加します。 /etc/DIR_COLORSにカラーの設定をしておけばいいのです。
  5. X Windowが固まった場合のサーバーのkillの仕方です。 Ctrl+Alt+Backspaceを使うと簡単にXサーバーを終了することができます。 もう一つの方法は「Ctrl+Alt+F2」でバーチュアルコンソールを開いてログインし
    
    
                 # ps -ax | grep startx
    
    
    
    と打ち込むとXサーバーのPIDが表示されますので
    
    
                 # kill -9 PID_Number
    
    
    
    とXサーバーのプロセスを終了します。最初のコンソールに戻るには"Alt-F1"とします。
素晴らしいヒントではありませんがLinuxの初心者には役にたつと思います。

PineとEximのバグ(By Jan Stumpel)

Linux Gazette7月号の「Eximを使ってホームネットワークのメールを設定する」というコラムの中でMTA(メール転送プログラム、この場合はEXIM)でFrom:アドレスの設定の仕方を紹介しました。これはMUA(メール作成プログラム)によってはちゃんと機能しますがPine 3.96ではそうではないようです。問題はメールを書きかけて途中で保存し、再びメールを開いて作成し送信した場合に起こるようです。メールのヘッダーに「Reply-To: あなたのプライベートドメイン」が追加されてしまうのです。pineの新しいバージョンでは解決されています。対処法はメールを書きかけで保存しない、新しいバージョンのpineを使用する、ですがそのまま使っている場合には"/etc/exim.confの



headers_remove = "sender" を





headers_remove = "sender:reply-to" に修正します。