Kozupon.com    
 
 ノートPCで実際にサーバを作ってみる!


みなさんは、ノートPCでなぜサーバを作るのか。不思議に思ってる人は居ないだろうか?
昨今、ノートPCもデスクトップに変わらぬパフォーマンスを備えている。さらに価格もリーズナブルになってきている。
俺は、そんなノートPCを利用しない手は無いと思っている。さらに、中古のレガシーノートPCなら秋葉原で数千円で購入できる。少々CPUが古くてもメモリーが少なくてもUnixなOSを使えばそこそこ軽快な環境はゲットできる。
俺が思うノートPCをサーバにする利点は、
@ 消費電力が小さい
A スペースを取らない
B メンテナンスをするのにも持ち運びが楽
C バッテリを内蔵してるので別途UPSを購入する必要がない

以上のような理由から、自宅サーバを構築するみなさんには最適な道具ではないかと思っている。
特に、連続運転をしているときの停電対策には威力を発揮する。そもそも、ノートパソコンは持ち運びや電源が無いところでの使用を可能にするPCで有るため、UPSの代わりに内蔵バッテリが使えるので一石二鳥である。

インストールで問題になるのはCD-ROMである。CD-ROMが付いていればOSをCDからセットアップできる。
しかし、CD-ROMが付いてないノートPCは結構多いのでOSのセットアップに一工夫が必要になってくる。
さらに、FDDが付いてないノートPCもあるがここではそのPCは外付けFDDを付けることを前提にしないと話が進まないので無視する(笑)。
さて、ではノートPCにFDDしか付いてない場合のOSのセットアップには以下の方法がある。
@ OSのブートフロッピーでドメイン内のNFSサーバからインストール
A OSのブートフロッピーでFTPサイトもしくはHTTPサイトからインストール
B ハードディスクを取り出して、他のサーバのイメージをコピーする

方法は、このくらいだと思う。俺の場合は、AとBを良くやるがNFS方式はあまりやらない。
それと、OSの選択という問題がある。OSはもちろんUnix系OSだろうが、ネットワークインストールが可能なOSで有ることが前提だ。
Linux及びFreeBSDは両者ともネットワークインストールはサポートしているパッケージがほとんどだ。しかし、もう一つの問題はPCMCIA等のPCカードがターゲットOSに対応しているかという問題がある。俺が今までノートPCへインストールしてきて今まで全ての PCに対応したのはFreeBSDだった。Linuxではどうしても一部のPC CARDが認識できない。さらに、既存でPCにネットワークがオンボードで付いているタイプも要注意。NICドライバをたまたま認識出来なかった場合、手動で設定するにもNICの種類が不明な場合が多い。
注意する点であろう。また、BIOSの設定でPlug & Playの設定がある場合はOFFにすること。これは、Windowsをセットアップする場合はON状態にするが、UnixなOSの場合OFFにしておかないと、セットアップの途中で止まってしまう場合があるので注意が必要だ。


1.今回のレガシーノートのスペック

 東芝 Dynabook SatellitePro 420CTと言う中古ノートPCを購入してサーバを構築した。
この、ノートのスペックは以下である。

CPU:ペンティアム100 メモリ:40MB(増設不可) IDE HDD:800MB FDD付き(CD-ROMドライブなし)
但し、HDDのみ10GBに交換した。 LAN CARD:メルコ LPC2-T


2.Linuxのインストール(NFS&FTP)

 まず、CD-ROMドライブがないので”ノートPCに無理矢理Linuxを入れる(当サイト別技術情報)”の手順でNFS経由でLinuxのインストールを試みた。
まず、Laser5Linux6.4のCDからPCMCIAのイメージディスクを作成し、既に動いているLinuxサーバにNFS経由でマウントして、同マシンのCD-ROMドライブを使いインストールしようと考え、イメージディスクで起動したが、そのイメージディスクがLAN CARDを認識しない!?”ドライバーディスクを入れろ!”みたいなメッセージが出力され、メルコのCARDは初っぱなから認識しない。
と言うことで、カードの認識が出来ないため、次にVineLinux2.1で同じ手順でインストールを試みたが、同じくメルコのカードを認識しない。そろそろ、むかついて来たが、落ち着きを取り戻し考えてみた。
PCMCIAのカードドライバについては、特にRedHat系のディストリビューションは、まだ種類が少ないようである。しかし、本来メルコのサイトではRedHat系で標準に用意されているCARDドライバが使える旨が同サイトに書いてあったが、インストール時に組み込めないのは何故か?多分、メルコのカードが互換のNICを使っているため、インストールディスクのコンフィグレーションファイルのデータベース中にメルコのカード情報が無いだけである(最終的に無理な場合は、データベースファイルをカスタマイズするつもりであった)。
そこで、最後にTurboLinux6.0で同じくインストールを試みた。その結果、何とTurboLinuxではメルコのカードを一発で認識した。カード情報も出力する。さすがに、ドライバーデータが豊富なディストリビューションである。
やっと、NFSでマウントしてインストールを終えることが出来た。

■ FTPインストール(2003/10/3 記)

写真のぼろノートにFTPインストールを行った。レガシーノートPCへのインストールは何れにしてもリスクあり!!!
とてもじゃないけど今のRedHat9なんて入れられない(笑)。ばかでかすぎるよOS自体が・・・・(爆爆)。

それでまあちょうど良いのが、VineLinux d(^-^) デショう?
まあ、カーネル2.4で有りながら、ラッパーをinetdとxinetd両方用意してくれるなんて言うのはありがたい。

1) インストールディスクを作る

当然のごとく、このノートPCにはCD-ROMドライブなんて言う都合の良い物はない。PCMCIAのLANカード一枚とFDDである。
したがって、当然のごとくFTPもしくはNFSによるインストールとなる。
ここでは、FTPインストールを行ったのでそれについて書く。
まず、インストールディスクを作るわけだが、ここで間違えやすいのはノートPCでFTPインストールするためのインストールディスクは何でしょう?と言うことである。だいたい1.44のフロッピーimageをサイトからおっこどしてきてDOSのユーティリティのrawrite.exeでフロッピーディスクに書き込むことで出来上がる。もちろん、Unix上でもディスクへの書き込みは可能である。この場合は、pcmcianet.imgと言うイメージをVineの ミラーサイト から落としてくる。
DOSのユーティリティで書き込む場合は、1.44のFDをドライブに入れる。適当なフォルダにrawrite.exeとpcmcianet.imgを置く。そして、カレントディレクトリに移動して、

rawrite -f pcmcianet.img -d a:

で書き込むことが出来る。Unixになれてない人はこの方が簡単である。

2) インストール作業開始

ディスクをPCのFDDへ入れて電源を入れれば勝手にインストールが始まる。まず、この一枚のディスクだけで用は足りるはずである。途中でインストール形式をFTPと選んでFTPサイトを設定するところがあるが、例えば以下のように指定する。

URL :  ring.asahi-net.or.jp
PATH : /pub/linux/Vine/Vine-2.6

みたいな感じで、なるべくミラーサイトを設定する。

次に、ディスクのパーティションと初期化だが、ここはお決まりのfdiskもしくはDisk Druidfで行う。俺の場合は、どうもfdiskには未だに親しめない。Disk Druidでパーティションを切ってしまう。

インストール形式は、もちろん” カスタム ”で行う。早い話、俺は開発ツールだけしか入れない(笑)。あとから、必要なモジュールはソースからコンパイルする。まあ、この方法はマニアックな人しかおすすめはしない(爆爆)。

ネットワークの設定、これはもうご存じの固定もしくはDHCPにするか選んで、固定の場合は、

■ IPアドレス
■ サブネットマスク
■ ネットワークアドレス
■ ブロードキャストアドレス
■ ゲートウェイアドレス
■ ネームサーバアドレス

以上の情報を設定する。

多分一部順不同だが細かい設定の説明を省いて、無事インストールが始まる。

3) 結局これが一番面倒(何でかわからんがネットワークの再設定を余儀なくされる)

インストールは、なんなく終わると思う。殆ど問題ないはず。しかし、恐ろしいのはその後である。結局何が面倒かというと、LANカードのドライバの設定である。インストール時点では問題なくネットワーク接続が出来ていたのにその設定内容がインストールが終わりリセットすると消えてしまい、再立ち上げ時にネットワークに接続できない。
したがって、手動でネットワークの再設定を余儀なくされるのである(;^_^A アセアセ・・・

何故なのか?それは、Kernel2.4になってからのパッケージで発生する。レガシーチップセットで有るが故の問題かもしれない。以下がその問題と回避方法である。まず、

# cd /etc/rc.d/init.d
# vi pcmcia

省略

if [ $PCIC = yenta_socket -a $kernel = 2.2 ]; then
      PCIC=i82365
fi
if [ $PCIC != yenta_socket -a $kernel = 2.4 ]; then
      PCIC=yenta_socket ← これをこれに変更する PCIC=i82365
fi

省略

ここの$kernel = 2.4のところを変更しなければならない。
だいたい、これで再起動すればうまく行く。

これでだめなときは、

# lsmod

でセットアップされてるLANドライバを調べる。セットアップされてないときは、

# cd /lib/modules/2.4.18-0vl3/kernel/drivers/net/

# insmod ドライバー名

これで、ドライバをセットアップする。その後一応、

# netconfig

でネットワークアドレスの設定を行い再起動。

おしまい。


3.不要なモジュールの削除

 TurboLinuxは、Workstation版でインストールしたため、XWindow関係の不要なモジュールがインストールされたため、モジュールの削除を行った。

# rpm -qa | more
   ・
   ・現在、インストールされているモジュールの表示
   ・
   ・

# rpm -e [モジュール名] ← モジュールの削除


4.サーバモジュールのアップデート

 TurboLinuxのサイトから、サーババージョンのアップデートモジュールをダウンロードしてアップデートを行った。今回は、ApacheとBindのアップデートモジュールをダウンロードしてインストールした。

# rpm -qa | grep [アップデートモジュール] でアップデートバイナリの確認。

# rpm -Uvh [アップデートモジュール]

もしくは、

# rpm -Fvh [アップデートモジュール] [アップデートモジュール] [アップデートモジュール]・・・・・・


5.MTAのインストール

 通常、MTAはRedHat系の場合、Sendmailが標準にインストールされてしまう。しかし、今回はQmailの性能を試すために、Qmailをインストールすることとした。
Qmailのインストール方法に関しては、ネットでも複数サイトで情報が得られるので、ここでは、詳細は説明しないが、重要な点だけを説明する。
先ほども話したように、RedHat系では標準でSendmailが自動的にインストールされてしまう。
したがって、Qmailを使用する場合は、Qmailをコンパイルした後、”qmail-inject”で内部配送テストを行い成功したら、以下を実行!

# /usr/sbin/sendmail -q ← sendmail停止

smtpから、sendmailが呼ばれてもあたかもsendmailが動くかのようにqmailが動いてくれる。

# cd /usr/sbin
# chmod 0 sendmail ← sendmailを殺す
# mv sendmail sendmail.bak    ← sendmailのバックアップをとる
# cd /usr/lib
# chmod 0 sendmail ← sendmailを殺す
# mv sendmail sendmail.bak    ← sendmailのバックアップをとる
# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail

このように、リンクを張っておく。
次に、ローカルメーラを変更する。

# chmod 0 /bin/mail

次にsendmailへのリンク。sendmailラッパーを使えるように、シンボルリンクを張る。

ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail

smtpはqmailの場合、/var/qmail/bin/qmail-smtpdが行う。これをinetdから起動するか?tcpserverから起動するか?を選択できるが大量なsmtpをさばく場合は、後者を推奨する。
次に、スプールを決定する。小生の場合、sendmailユーザを既に登録してあり、スプールをMailboxでの運用を継続したいと考えていたので、/home/ユーザ名/のディレクトリにMailboxを作り、/var/spool/mail/ディレクトリのユーザとシンボルリンクを張るため、以下の処理を行う。

# mv /var/spool/mail/ユーザ名 ~ユーザ名/Mailbox
# ln -s ~ユーザ名/Mailbox /var/spool/mail/ユーザ名

以上を、既ユーザ名全てに行う。次に、mailパスを設定する。

# vi /etc/csh.cshrc
  (省略)
  setenv MAIL $HOME/Mailbox ← 追加する
  (省略)

# vi /etc/profile
  (省略)
  MAIL="$HOME/Mailbox" ← 追加する
  export MAIL ← 追加する
  (省略)


小生の場合、inetdから/usr/sbin/tcpdによりqmailのsmtpを起動するように設定した。それを以下に示す。
/etc/inetd.confに、

smtp stream tcp nowait qmaild /usr/sbin/tcpd /var/qmail/bin/tcp-env    /var/qmail/bin/qmail-smtpd ← これを一行に!


さらに、配送形式をsendmailのMailbox形式とqmailのMaildir形式の何れかを選ぶことが出来るが、いずれもUserのHOMEディレクトリに持つことが基本となるので、覚えておいていただきたい。

それと、/var/qmail/controlディレクトリのrcpthostsファイルは重要なファイルである。このファイルは、qmailが受信すべきドメインリストを記述するが、不正中継の許可・不許可の制限をかけるファイルなので設定を間違えないことが重要である。試しに、このファイルを消すと全てのホストから中継を許可してしまうので気をつけて欲しい。自サーバの不正中継確認は、 ここ で確認しながら行うと良いだろう。さらに、rcpthostsに余計な記述を増やすと、クライアントからの送信時間が長くなってしまうので気をつけた方がいいだろう。また、以降で説明するが、TcpWapperでRERAYCLIENT環境変数を設定する場合は、rcphostsファイルの記述は無視されてhosts.allowとhosts.denyの内容が反映される。

小生は、inetdを使っているので、TcpWapperでメールクライアントの制限をしている。Wapperは、/etc/hosts.allowと/etc/hosts.denyで設定する。小生の場合/etc/hosts.allowは、

#qmail RELAY

tcp-env: 127. : setenv = RELAYCLIENT
tcp-env: 192.168.255. : setenv = RELAYCLIENT
tcp-env: ALL

# Suppose Your Network in Xs.

ALL : 127. : allow

# Ok My Network Address Accsess.

ALL : 192.168.255. : allow

# Ok Groval Accsess Allow

in.ftpd in.qpopper : ALL : allow

/etc/hosts.denyは、

ALL : all

としている。

pop3に関しては、通常qmailでは、qmail−pop3dを使うが、小生はqpopperを従来のまま使用している。
qmail−pop3dは、Mailbox形式をサポートしていない。したがって、仕方が無くqpopperを使用した。


6.qmailのqueueの管理

qmailを運用していて、気になるのが”メールキュー”の管理である。このところ、フレッツISDNでの回線増強工事及びプロバイダの回線障害・回線工事等でメールキューが溜まる!したがって、停滞キューの管理を行ったので記述する。

1)メールキューの停滞確認

# /var/qmail/bin/qmail-qstat

→停滞キューがいくつ有るかを表示

2)メールキューの詳細情報

# /var/qmail/bin/qmail-qread

→停滞キューの詳細情報

3)停滞キューの強制配送

# kill -14 [qmail-sendのPID]

4)停滞キューの寿命時間の設定
  /var/qmail/controlディレクトリに”queuelifetime”と言うファイルを作り、秒単位で指定する。

  例えば、寿命を2日の場合は、

  172800

  と記入!(ちなみに、小生は2日に設定している)
  また、設定が終わったら、qmail-sendにシグナルを与えるのを忘れずに!


7.localeの問題

 メールの問題以外、Web、DNS、Mailと問題はあったが、一応動くようになった。しかし、インストールした状態では、Linuxの言語(locale)がPOSIXになってしまい、とても使いにくい状態になっていた。そこで、日本語環境にlocaleを変更するため、rootの.bashrcに、

export LANG=ja_JP.eucJP

を追加して、起動時にlocaleをEUC_JP環境に設定した。


8.最後に・・・・

 ところが、最終的に試験運転を数日試みたが、致命的な問題があった。
ノートPCサーバの中では以下のデーモンを起動している。

1)Apache
2)Postgresql
3)xntpd
4)Qmail
5)fatchmail
6)Bind

ここまで、動かしていてもあまり問題は無いかと思ったが、QmailがMUAクライアント側から送信する場合、送信時間が異常に長くなった。ISDNのため、帯域が狭いこともあるが、どうもメモリ40MBの限界が支障をきたしていることも考られる。メールの送信待ち時間が耐えられないレベルまで達しているので、レガシーノートサーバでのLinuxの限界を知ることとなった。少し、悔しい気持ちもある。確かに、少しモジュールを欲張りすぎて動かしているが・・・(笑)。

しかし、めげずに次の試みとして、BSDによるサーバ構築を実施してみたい。その時のレポートも報告することとしたい。

以上


 
 
 



Copyright 2005 Kozupon.com.