Linuxを極める2
大層なタイトルなのがなんですが...まあ自宅で立てているLinuxサーバのS/W側の話である。H/Wの方はこちらを参照。
SSHでリモート管理、VNCで遠隔GUI操作、NTPDで時刻自動補正、DNSキャッシュサーバ、ルータのSYSLOGを受け、外からはhttptunnelで秘密のポートでSSH接続、もちろんSCPでファイル転送可能、隣のWindowsマシンをWakeOnLANで起こせ、httptunnelで外から隣のWindowsマシンにリモートデスクトップ接続を行え、SambaでWindowsマシンからファイル共有でき、WINSサーバなどを動かしている。
- インストール
実はLinuxは前の挫折(5年近くも前か...)以降、会社でLinuxを扱うことになったのでそれなりに使っていたりする。とは言っても人がセットアップした環境上でプログラムを作っているだけなのだが。とりあえず今回はRedHat9のCDイメージ3枚分をダウンロードしてきてCD-Rに焼いて、先日作った新マシンにインストールしてみた。インストールは(えらく時間がかかったが)問題なく終わり、815グラフィックも認識されてGNOMEの画面が出たが、結構遅い。どうもメモリ128Mでは足りていない感じ。
- LAN設定
インストールしてあったIntel82557とDec21143は両方とも自動的に認識され、DHCPクライアントで使えるようになっていた。GUIでいろいろと設定はできるのだが、今回は特に必要なし。
/etc/sysconfig/network 自分のホスト名
/etc/sysconfig/network-scripts/ifcfg-eth0 IPアドレスなど
/etc/hosts 自分を含めて名前を書く。
- IDEディスクDMA転送
/etc/sysconfig/harddisksコメントをオフにする。EXTRA_PARAMS=-X66
- SSH
インストール時にチェックを入れていれば、インストールされ、設定もなく使用可能。クライアント側はTera Term + TTSSHを使っている。Telnetでつなぐことはもうないので、GUIツールでTelnetサーバを使用しないように変更した。更に使わなそうなサーバも止めた。RedHatのGUIツールではrunlevelでのスタートアップとxinetdのデマンド起動とを区別なく起動・非起動の設定ができるようになっている。
- NTPD
Linux時刻を今の時刻に合わせる。
ntpdate ntp1.jst.mfeed.ad.jp
H/Wクロックを合わせる。
hwclock --systohc
/etc/ntp.confにタイムサーバの設定を加える。
server ntp1.jst.mfeed.ad.jp
server ntp2.jst.mfeed.ad.jp
server ntp3.jst.mfeed.ad.jp
自動起動させる。
/sbin/chkconfig ntpd --level 345 on
確認する。
ntpq -p
- VNC
Xの画面を他の端末に出すためにVNCサーバを使用した。
/etc/sysconfig/vncservers
"1:ユーザ名"
自動起動させる。
/sbin/chkconfig vncserver --level 345 on
- DNSキャッシュ
/etc/named.confを設定する。変更すべき点はType Hintにし、プライマリDNS,セカンダリDNSを入れ、アクセス許可IPアドレスを入れるくらい。私の場合ルーターが簡易DNS機能を持っているので、プライマリはルーターに、セカンダリはISPのプライマリDNSに設定した。
PC側ではプライマリにLinuxを、セカンダリにルーターを設定。ルーターにDNSがあるならばそれで済みそうなものだが、このDNSは性能がかなり低いらしく、ちょっとアクセスが増えただけで解決できないことがしょっちゅう起こっていた。この問題は、LinuxでDNSキャッシュを入れたことで殆んど改善された。
options
forwarders{xx.xx.xx.xx; xx.xx.xx.xx}; ISPのプライマリ/セカンダリDNSサーバ
allow-query {xx.xx.xx.0/24;127.0.0.1/32;}; 問い合わせを許すサーバ
zone "."
type hint; これがキャッシュサーバ
- ルータのSYSLOGを受ける
/etc/sysconfig/syslog
-m 0追加
/etc/syslog.conf
user.* /var/log/router.log
/etc/logrotate.d/syslog
/var/log/router.log追加
- 外からのSSH
- 外からのRDC
httptunnelをインストール。
/etc/rc.d/rc.localに起動コマンドを追加。
/usr/local/bin/hts -F localhost:port 8888
クライアント側でもインストール。
htc -F port -P proxy:proxy_port server:8888
使いたいツールでlocalhost:portに接続する。
ちなみにSSHはポート22、RDCはポート3389である。
困ったことにRDCはWindowsXP Proではlocalhostにつなぐことができない(RDC接続を受けられないHomeならば可能)。例えリモートデスクトップ接続を受けない設定にしても、既に接続されているとか言ってだめ。localhost:8888とか別のポートにしてもだめ。単純に相手先がlocalhostだとだめのようだ。対策はもう1台別のマシンを用意するしかない。
- WOL
wakeonlanモジュールをダウンロードしてきて、Linuxマシンでmake installする。Windowsマシン側はBIOSでWOLをEnableにする。するとwakeonlan -i 192.168.1.1 00:00:00:00:00:01などと指定することで、寝ていたWindowsマシンは復活する。ここまでは簡単に試せた。
だが休止状態にしているとなぜか数秒後にすぐに復帰してしまう現象が発生。設定を変えてみたりLANケーブルを抜いてみたりして調査した結果、無線LANアクセスポイントをつないでいると発生することが判明。そういえばこれを入れた頃からは、ディスプレイの自動オフやサスペンドのタイマ実行がちゃんと働かなくなっていたのであった。このまではまずいので、無線LANとLinux/Windowsマシンではネットワークアドレスを変えて、ルータで転送してもらうことにした。うれしいことに私の使っているBA8000PROではLAN側のネットワークを2系統に分けられ、その間のルーティングに関してもフィルタリングやルーティングポリシーを設定できるのだ。これとVLANを使えば完璧だろう。ちなみにプライマリLAN側ではDHCPが使えるがセカンダリでは使えないなど、セカンダリLAN側は結構制限があったりする。説明書を見ている限りどのポートにさしたらプライマリ・セカンダリを使い分けられるのかがわからなかったが、どうやらPCがセカンダリ側のネットワークアドレス(固定)で接続するとセカンダリに、プライマリLANのネットワークアドレスやDHCPで接続するとプライマリ側につながるようになっているもよう。無線LANは(DHCPでつなぎたいので)プライマリに、LinuxとWindowsは固定IPでいいのでセカンダリで使うことにした。
この状態で使っているが、勝手にWindowsマシンが立ち上がったりする現象は発生しなくなった。なぜ無線LANアクセスポイントが同じネットワークにあると勝手に立ち上がってしまうのかはわからない。
- MonsterTV2予約
これらを駆使すればMonsterTV2の予約設定も(一応)可能。実際にはMonsterTV2アプリの作りのせいで、かなり制限されているのだが...リモートデスクトップでつなぐとMonsterTV2が起動できないし。iEPGでTVガイド辺りでクリックすれば予約は設定可能。レジストリをいじって30分で連続分割保存に変更する。電源のプロパティで常にオンを選択する。See the moonというソフトを使って数分後に強制シャットダウン&再起動を設定して、リモートデスクトップを切る(さもないとなぜかシャットダウンできない)。再起動してきたときに自動ログオン&MonsterTV2が自動起動してきて、そのまま予約体勢になる。でもこれでは結局電源入れっぱなしと同じなので、Linux側から時間でWakeOnLANをかけることを検討中。
- SCP
最初PSCPというコマンドをダウンロードして試してみたのだが、1Mバイトも転送しないうちに切断されてうまくいかない。今はWinSCPというGUIツールを使って多少幸せになっている。ディレクトリをコピーするとその下みんなをコピーしてくれるし。SSHDの設定をしてあれば、それ以上のサーバ側の設定は必要ない。極たまにタイムアウトになってしまうのだが、リトライすれば続きから転送を続行してくれるので見張っていればあまり問題はない。そして日本語ファイル名を正常に扱えないので、転送するとおかしなファイル名になってしまう。
- SAMBA
/etc/samba/smb.confを編集する。私はWINSサーバ機能も入れている。
[global]
netbios name = XXXX
client code page = 932
coding system = euc
wins support = yes
パスワードファイルを作る
cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd
必要なもののみ残す。
ルートのみアクセス可にする
chmod 600 /etc/samba/smbpasswd
パスワード設定
smbpasswd username
自動起動設定
/sbin/chkconfig --level 345 smb on
- RDC on SSH
SSHのコネクションを張った上で、ポートフォワーディングを使ってリモートデスクトップ接続を行う。SSHで暗号化されるし、SSHでは3DESより強いといわれるAESを使えるし、秘匿性は強い...と思う。
基本的にはサーバ側には設定変更は不要。
Windowsクライアント側ではPUTTYを使う。ホスト名を入れ、プロトコルをSSHにし、Connection-SSHでSSH2を選択し、TunnelsでL3389 フォワード先ホスト:3389に設定して、Openする。ユーザ名、パスワードを入れると普通にシェルが立ち上がる。だが裏では3389ポートでLISTENしている。リモートデスクトップ接続でlocalhost:3389につなぐと、そのまま接続できる。WindowsXP Proではlocalhostには接続できない(例えポートを変更していても不可)ので、他のマシンでSSH2を動かしてそこにつなぐ、あるいはXP ProでSSH2を動かして他のマシンでモートデスクトップ接続を動かしてつなぐかのどちらかになる。(この辺りの制限はSP2で緩和されるといううわさなのだが...)
これはmstsc*を別ディレクトリにコピーして、互換モードでWindows98/Meにするとある程度回避できる。
もうひとつリモートデスクトップ接続の文句を言っておくと、動画再生が不能という点。なんとなくメディアプレイヤーで再生しているときくらいは、元の圧縮データをクライアントにそのまま送ってクライアント側で普通に再生させるとか、やりようはあると思うのだが...もちろん独自形式にリアルタイムで再圧縮してくれてもいいのだが。
またputtyはstored sessionとして設定を保存でき、PUTTY.EXE @labelで自動的にロード・接続ができるのだが、@の関係でショートカットに入れてもうまくいかない。仕方ないのでバッチファイルに記述するとこれはうまくいく。
日記
・2003年6月17日
- Linuxマシンの現状
Linuxマシンを立ち上げて1週間あまり。
その後大変貌を遂げ、HDDはUDMAに設定変更、SSHでリモート管理、VNCで遠隔GUI操作、NTPDで時刻自動補正、DNSキャッシュサーバ、ルータのSYSLOGを受け、外からはhttptunnelで秘密のポートでSSH接続、隣のWindowsマシンをWakeOnLANで起こせ、httptunnelで外から隣のWindowsマシンにリモートデスクトップ接続を行えるなど、なかなか「使える」環境になってきている。
これらを駆使すればMonsterTV2の予約設定も(一応)可能。実際にはMonsterTV2アプリの作りのせいで、かなり制限されているのだが...リモートデスクトップでつなぐとMonsterTV2が起動できないし。
iEPGでTVガイド辺りでクリックすれば予約は設定可能。レジストリをいじって30分で連続分割保存に変更する。電源のプロパティで常にオンを選択する。See the moonというソフトを使って数分後に強制シャットダウン&再起動を設定して、リモートデスクトップを切る(さもないとなぜかシャットダウンできない)。再起動してきたときに自動ログオン&MonsterTV2が自動起動してきて、そのまま予約体勢になる。
でもこれでは結局電源入れっぱなしと同じなので、Linux側から時間でWakeOnLANをかけることを検討中。
最初はGNOMEでGUI中心に設定していたのだが、結局はSSH接続の方が便利だってことでGNOMEはやめた。GNOMEの頃は200Mほど使っていた使用メモリも、40M前後に減った。結局設定は何でもCUIで設定可能だし。GNOME使って便利だったのは、Mozillaブラウザを使ってインターネット接続してモジュールをダウンロードできることくらいだったし。
今後はちゃんとした予定は立てていないのだが、scpファイル転送とか、Sambaサーバとか、IPSecとか、HTTPサーバとサーブレットとか、気が向いたときにちょろちょろと設定を増やしていく...という感じだろうか。
・2003年6月14日
- WakeOnLAN
常時電源オンのLinuxマシン側から、Windowsマシンに対してリモートで電源を入れたい。そこでWakeOnLANを試すことになった。
wakeonlanモジュールをダウンロードしてきて、Linuxマシンでmake installする。Windowsマシン側はBIOSでWOLをEnableにする。するとwakeonlan -i 10.0.0.11 00:00:00:00:00:01などと指定することで、寝ていたWindowsマシンは復活する。ここまでは簡単に試せた。
だが休止状態にしているとなぜか数秒後にすぐに復帰してしまう現象が発生。設定を変えてみたりLANケーブルを抜いてみたりして調査した結果、無線LANアクセスポイントをつないでいると発生することが判明。そういえばこれを入れた頃からは、ディスプレイの自動オフやサスペンドのタイマ実行がちゃんと働かなくなっていたのであった。
このままではまずいので、無線LANとLinux/Windowsマシンではネットワークアドレスを変えて、ルータで転送してもらうことにした。うれしいことに私の使っているBA8000PROではLAN側のネットワークを2系統に分けられ、その間のルーティングに関してもフィルタリングやルーティングポリシーを設定できるのだ。これとVLANを使えば完璧だろう。ちなみにプライマリLAN側ではDHCPが使えるがセカンダリでは使えないなど、セカンダリLAN側は結構制限があったりする。
BA8000PROの説明書を見ている限りどのポートにさしたらプライマリ・セカンダリを使い分けられるのかがわからなかったが、どうやらPCがセカンダリ側のネットワークアドレス(固定)で接続しているとセカンダリに、プライマリLANのネットワークアドレスやDHCPで接続しにいくとプライマリ側になるもよう。無線LANは(DHCPでつなぎたいので)プライマリに、LinuxとWindowsは固定IPでいいのでセカンダリで使うことにした。
この状態で使っているが、勝手にWindowsマシンが立ち上がったりする現象は発生しなくなった。なぜ無線LANアクセスポイントが同じネットワークにあると勝手に立ち上がってしまうのかはわかっていない。
・2003年6月8日
- コア電圧変更
そして半田ごてをあてて、何度かの失敗の後にようやくコア電圧を1.35Vに変更できた。結局はPWMのHIP6021の4ピンを浮かすことにした。このままではマザーBIOSで電圧がおかしいと怒られるのでMonitorをIgnoreに変更した。1.35Vでも433MHzならば立ち上がり、LinuxもGNOMEも立ち上がっている。結果消費電力は24Wにまで落とせた。予定ではこれに82559LANを入れるつもりなので最終的には25W辺りになるだろうか。
・2003年6月7日
- LANコント
発熱具合から言って82557はかなり食っていそう(ちゃんとは測ってないが3〜5W位?)なので、Intelチップで低いものを探してみた。まずは1000BASEものは元々かなり高いのでパス。100BASEものでもPRO100B,PRO100+,PRO100Sなどがあるが、この中身の事情はかなり厄介なことになっている。PRO100Bは82557でかなり高いことは書いたとおりなのだが、PRO100+には82558のものと82559と82550のもの(マネージメントアダプタという名が付く)があり、PRO100Sには82559と82550のものがあり、更にそれらにはマイクロコードの違いによって機能に差があり...ということになっている。機能に差が...というのはWakeOnLAN対応だったり(82559以上)、IPSecの暗号化をボード上でやってくれたり(PRO100S)、TCPなどのチェックサムをボードで計算・チェックしてくれたり(82559の一部と82550以上)、更に別のチップで暗号化するか1チップになっているか(82559/82550)などいろいろある。更には単体売りはしていないがPRO100Mというもの(82551QM)もあり、暗号化はないがチェックサム計算はある...ようである。
この中で消費電力という点では100+の82559か100Mがよさそうである。まあ100Mなんてものは入手困難(バルクで20枚セット販売らしい)なので買うなら100+だろう。今なら100+は非常にお安い(バルクなら3000円位で見つかる)ようだし。
- メモリ
最初は128Mで使っていたが、ローカルでGNOMEを使うには足りないようなので更に128Mメモリを追加した。すると消費電力があがり、およそ5W程増加したようだ(37W->42W)。調べてみるとメモリの消費電力は結構大きいらしく、1チップ1Wなんて書かれているところもあった。使った128Mメモリは両方とも16チップのものだったので、消費電力は結構大きかったようだ。まあ1チップ1Wではなく1チップ0.3W位だが。それでもかなり食っていることは確かなので、16チップの256Mメモリ(DIMM1枚)と交換することにした。
- 現在の消費電力
82557を外し、128Mメモリのみでlinuxアイドル時で25W位。これならなんの不満もない。まあEden EPIA-VE5000(15Wくらいらしい)と比べるとまだまだ高いのだが。
・2003年6月4日
-
RedHat9 Linux
実はLinuxは前の挫折(5年近くも前か...)以降、会社でLinuxを扱うことになったのでそれなりに使っていたりする。とは言っても人がセットアップした環境上でプログラムを作っているだけなのだが。
とりあえず今回はRedHat9のCDイメージをダウンロードしてきてCD-Rに焼いて先日作った新マシンにインストールしてみた。インストールは(時間がかかったが)問題なく終わり、815グラフィックも認識されてGNOMEの画面が出たが、結構遅い。どうもメモリ128Mでは足りていない感じ。
・2003年6月2日
- 新マシン(実際には旧マシン)
ちょっとLinuxを使いたくなったので、新マシンを立ち上げました。といっても(今のところは)CUSL2にPentium3なんですけど。常時立ち上げマシンにするつもりなので低消費電力+低騒音ということでVIA Eden 533(VE5000とか)を考えたりもしたのだが、今持っているパーツでなんとかならないか?ということで考えたのが、CUSL2+Pentium3 866を466に下げて運用するという案。ATXサイズなのででかくなってしまうのが欠点なのだが。ケースもフルタワーのものしか余ってないし...Edenはいづれ考えるとして、テストとしてこのマシンを使ってみることにした。
低予算でかつ別マシンへの移行性を考えた上で騒音源を排除すべく検討した結果、CPUファン→466に落とせばヒートシンクのみでOK、グラフィック→CUSL2(815E)内蔵を使う(CUSL2ではファンは付いていない)、電源→低騒音ファンに交換(もしかしたら不要)、HDD→2.5インチ物を購入、CD、FDDなし(必要なときに余りパーツから適当に接続)ということになった。HDDはHitachiのTravelstar80GNの20G(IC25N020ATMR04)を購入。カタログスペックを比べて低騒音・低消費電力だったので。本当は40Gでもいいのかもしれないが、結局はOS+αしか入れないので容量は十分であろう(まあ地元に40Gを売っていたらそっちを買っただろうが)。これを3.5インチ変換を使って接続した。当然異様に静かで、ほとんど無音。音は電源ファンからちょっとするくらい。CRTモニタのファンも同程度の音を立てているので、気にはならない。
この状態で消費電力を測定してみる。今付いているものはCLSL2、Pentium3 866(433MHz)、メモリ256Mバイト(SDRAM)、HDD(IC25N020ATMR04)、PCI LAN2枚(Intel82557,DEC21143)、キーボードのみ。FSB66MHz、内蔵ビデオ、サウンドなし、CD,FDDなしという仕様である。ついでにBIOSでシリアル・パラレル・USBも切っている。BIOS画面で止めている(=CPUは働き続けている)と37W前後のようである。思ったほど低くなかったのは残念だ。チップセットがかなり熱いので、この辺りでの消費が多そうである。やはり新しくEdenで作った方が(消費電力という点では)よさそうである。ちなみにCPUクーラーは8cmファンが付いていたでかいヒートシンク(長門)を、ファンを外してファンレスで使用している。できればCPUコア電圧を落としたいのだが...
- Windowsインストール
アイドル時の電力を測ってみるために、試しにWindows2000を入れてみることにした。インストールは簡単に終了。チップセットドライバとグラフィックドライバをインストールして終了。そのまま放っておいて消費電力を測る。結果ほぼ30W。PCとしてはかなり低いのだが、できれば20W前後くらいにはなって欲しい...残る手はCPUコア電圧ダウン(半田ごてが必要)くらいだろうか。そしてどうやら電源ファンは不要なもよう。電源ケースを開けてファンを止めているが、電源内のヒートシンクはほんのりあったかい程度。これでほぼ無音の状態になった。
-
STR
ここで今まで一度も成功したことのなかったSTR(Suspend to RAM)ができることが判明。やっぱり電源を変えればできるもんなんだ...ということで、メインマシンの電源をこれに替えてみることにした。電源を入れて、ちょっと発熱がひどいなぁ(まあ電源ファンを替えているので文句は言えない)と思いつつもスタンバイを試すが、すぐに再起動(いやリセットがかかったのかも?)してうまくいかなかった。この発熱では使う気にならなかったのですぐに元に戻した。
・2003年6月1日
- エコワット
エコワットなる消費電力量を計測できる機械を買ってきた。コンセントとの間に挟むことで、経過時間、消費電力量、電気代が表示されるという代物だ。わざわざ購入してきたのは実際のPCの消費電力がどれほどなのかを知りたかったからだ。
早速私のメインマシンであるAthlon1700+(ほぼ定格動作)につないでみた。数時間測ってみたところ、時間辺り約0.11kWと出た。(消費電力量はkWh表示で出るので、時間で割る)つまりおよそ110W。近頃の世間のPCはもっとクロックが高いのでもうちょっと食っていそうである。これを24時間運転で使うと1日2.5KWhで1ヶ月では75KWh。電気代およそ1800円ほどということになる。ほとんどアイドルだというのにこんなに食っているとは...実は私のPCは前からアイドル時にも異様に電気を食っているようで気になっていたのである。CPUCoolを使おうがCoolonを使おうがうまくいっていない。Coolonには動作報告もあるマザーボードなのだが...アイドル時に冷えてくれれば80W位には落ちてくれそうなものなのだが。
※その後測った冷蔵庫の消費電力にゲンナリしたのは秘密である。
http://www10.plala.or.jp/p205tb16/linux2.html
坂井瑞穂