Linuxで七転八倒な記録


まず一言。Linux の HowTo に関するページは世の中たくさんあるから、ここを見るよりはそっちを見るのが賢明かと。まだまだ Linux を完全に理解してるわけじゃないから(^^;
それに「前あれってどうやったんだっけ?」とすぐ忘れる自分のための覚え書き的存在なので(笑)

BBS 次 →

2001年06月25日
○xinetd 2.1.8.9pre9-6 → 2.1.8.9pre15-2
古いバージョンには問題があるらしい。もともとこの問題が起きない新しいのを使っていたけど、念の為最新(?)にアップデート。

ルーターのフィルタリングログ(2001/06/17〜2001/06/24)

2001/06/18 06:53:05: PP[01] Rejected at IN(99) filter: TCP 203.151.217.27:2618 > 202.212.91.232:3389
2001/06/20 10:29:57: PP[01] Rejected at IN(99) filter: TCP 211.108.78.8:57361 > 202.229.255.218:8080
2001/06/20 17:57:23: PP[01] Rejected at IN(99) filter: UDP 210.160.144.30:137 > 202.229.255.218:137
2001/06/20 21:06:48: PP[01] Rejected at IN(99) filter: TCP 61.175.141.54:1539 > 202.229.255.218:1080
2001/06/20 21:06:51: PP[01] Rejected at IN(99) filter: TCP 61.175.141.54:1538 > 202.229.255.218:8080



2001年06月17日
ルーターでフィルタリングされたパケットの先週分(2001/06/11〜2001/06/16)のログ。
2001/06/12 12:15:45: PP[01] Rejected at IN(99) filter: UDP 202.186.*.*:137 > 202.212.*.*:137
2001/06/13 10:12:43: PP[01] Rejected at IN(99) filter: TCP 210.73.*.*:4843 > 202.212.*.*:8080
2001/06/13 23:43:17: PP[01] Rejected at IN(99) filter: UDP 202.109.*.*:137 > 202.212.*.*:137
アクセス元は一番上はマレーシア、下二つは中国(しかも一番下のはネットカフェっぽい)のようだ。ターゲットとなったんは 137/UDP → NETBIOS Name Service(Windowsネットワークの一部)、8080/TCP → WWW caching service(Webプロクシ)。ま、良くありげなパターンかな。



2001年05月28日
○Linux kernel 2.4.4 → 2.4.5
2.4.4 の時と同様。



2001年05月6日
○OpenSSH 2.5.2p2 → 2.9p1



2001年05月2日
今日はカーネルをアップ。カーネルのアップ作業って何回やってもドキドキもんだね。失敗すると苦労してきたものが水の泡になるかもしれないからさ。ま、最近はそういうミスをしてないから嬉しいね。

○Linux kernel 2.4.2 → 2.4.4
まず前準備。今のカーネルソースツリーをまるごとリネーム。そして、ダウンしてきたアーカイブを解凍。

# su
$ cd /usr/src
$ mv linux linux-2.4.2   # バージョンに合わせて変える
$ tar xvfI linux-2.4.4.tar.bz2
解凍が済んだら、カーネル設定。コンソールからなら xconfig を指定して X 画面上で設定するのが分かりやすくていいけどリモートログインなんで menuconfig を使う。

$ cd linux
$ make menuconfig
項目を適宜変更。今回はこのように変更。

Processor type and features
 + Processor family --> K6/K6-II/K6-III
 + Symmetric multi-processing support --> N

General setup
 + EISA support --> Y
 + Advanced Power Management BIOS support --> M

ATA/IDE/MFM/RLL support
 + IDE, ATA and ATAPI Block devices
    + Generic PCI bus-master DMA support --> Y
       + Use PCI DMA by default when available --> Y

SCSI support --> N

Network device support
 + Ethernet (10 or 100Mbit)
    + DECchip Tulip (dc21x4x) PCI support --> M
    + EtherExpressPro/100 support --> N
 + PPP (point-to-point protocol) support --> M
    + PPP Deflate compression --> M
 + PCMCIA network device support --> N

Character devices
 + /dev/agpgart (AGP Support) --> N
 + Direct Rendering Manager (XFree86 DRI support) --> N

File systems
 + Microsoft Joliet CDROM extensions --> Y
 + Network File Systems
    + NFS file system support --> N
    + NFS server support --> N
    + SMB file system support --> M
 + Native Language Support
    + Japanese charsets (Shift-JIS, EUC-JP) --> M

Sound
 + Creative Ensoniq AudioPCI 97 (ES1371) --> N
 + OSS sound modules --> M
 + 100% Sound Blaster compatibles --> M
 + AWE32 synth --> M
設定を保存してコンフィグを完了。この後忘れずに依存関係のチェックとお掃除をしないとね。

$ make dep
$ make clean   # なくてもいい(確か)
さ、いよいよ本番カーネルイメージのコンパイル。

$ make bzImage
ん?何やらエラーが。PCMCIAのネットワークデバイスのオブジェクトがない、とか言ってはる。あの〜、コンフィグで使わない設定にしたのですけど。よく分からんのでコンフィグでモジュールを組み込む設定に戻して再コンパイル。今度はOK!いつものことだけど、このステップは時間がかかる。マシンが非力ってのもあるけど、のんびり待ちましょうぞ。(ちなみに今回は20分弱)
カーネルイメージが出来あがったらいつもならブート用ディスクの作成をする(make bzdisk)んけど、面倒なんでパス(^_^;; LILOをインストール。ここでエラー出ると一番痛いから無事済むことを祈りつつ実行〜。

$ make bzlilo
よし出来た。次にモジュールのコンパイル&インスト。これは3分少々。

$ make modules
$ make modules_install
これで全て終わり。再起動してエラーがないかチェック。ログを見ると少しワーニングが吐かれてるけど、動作上問題ないから今のところはこれで良しでしょう、うん。



2001年05月1日
下の qmail のキューからメッセージを強制的に消す方法。すこし補足。 /var/qmail/queue/mess 以下を消しただけでも異常終了するようなことはないんけど、/var/qmail/queue/info の下にヘッダ情報があるみたいやでここも綺麗にしたほうがいいっぽい。あと /var/qmail/queue/local の下なんかもなんかも適宜。



2001年04月27日
ドコモのPHSには2種類のメールサービスがあるんよね。きゃらめーる(CM)とパルディオEメール(EM)。CM の方が安いし、着信通知があるんで上手く使えば便利だけど、Eメールとしてやりとりする時には EM のが便利。しかし普通のプロバイダのようにメールボックスがサーバー上にあり、読み出しはユーザーが自発的に行わないといけない。ケータイのように直接端末までは下りてこないのだ。しかも、少し前の機種はタイマー読み出し(それでも一番短い設定で1時間とか)出来たんけど、今使ってるのはそれすらない。だから、常に意識して読み出し操作をしていないとメール来てることに気付かないで一晩過ぎてしまった、ってことがざらに起きてしまう。これをどうにかできないか?と思って、少し工夫をしてみた。
まず自宅のLinuxサーバーにPHSのメール用にアカウントを作り、受け取ったメールを EM の方に転送する。これだけじゃ意味がないので、同時にモデムを使ってPHSに対して発信をする。そうすれば圏外にいたり睡眠中だったりしなければまず気付くだろう、うん。

まずはアカウント作り。これはいたって簡単だね。

$ /usr/sbin/useradd name
$ passwd name
次に qmail のユーザー設定ファイルを編集して転送の設定をする。

$ su name
# cd ~
# vi .qmail
----- FileName .qmail -----
./Maildir/    # 一応ローカルのメールボックスにも保存
&phsname@xxx.em.nttpnet.ne.jp   # 転送設定。&の後に転送先アドレス
------ end of .qmail ------
あとは発信を行う設定。これには kermit を使ってモデムに対してATコマンドを入力して行う。コマンドはファイルに書いておきそれを読みこんで実行。

----- FileName dial -----
set modem type rockwell-v34
set line /dev/ttyS1
set speed 57600
set flow RTS/CTS
set carrier-watch off   # ここまでモデム初期設定。/dev/ttyS1(COM2)を使用

output AT#CLS=8#VRN=0#VBT=5 \13\10   # ボイスモードに設定
output ATDT070xxxxxxxx# \13\10   # ダイアル開始
input 5 VCON
if failure goto NO_VCON   # 5秒待機後、リザルトが VCON か?
input 6 b
if success goto BUSY   # 6秒待機後、リザルトが BUSY か?
output AT#VTS=5\13\10   # DTMF で「5」を送出
input 1 OK
input 3 5   #「5」がプッシュされたか?
if success echo \10*** Done ***
goto FINISH

# 以後、終了処理
hangup
exit 1 \10*** No VCON ***

:BUSY
hangup
exit 1 \10*** Busy ***

:FINISH
hangup
quit
------ end of dial ------

----- FileName notify -----
#! /bin/sh
kermit dial > notify.log    # 結果をログファイルに落としておく
------ end of notify ------

# chmod 744 notify
最初、BUSYの時やなんかに再実行しようかな〜とか思ってこんな感じで作ったんけど、結局ややこしくなってかえって問題が増えるだろうということで、もっと単純に ATD でダイアル、一定時間 wait してハングアップって具合でも問題なさそう。あとは .qmail にこれを実行するように追加。

----- FileName .qmail -----
./Maildir/
&phsname@xxx.em.nttpnet.ne.jp
| ./notify    # | に続けて実行ファイルを指定
------ end of .qmail ------
試しに notify を実行してみると、ありょ、上手くいかない。原因は /dev/ttyS1 にアクセス権がないらしい。/dev/ttyS1、kermit の属性をチェックして見よう。

# ls -l /dev/ttyS1 /usr/bin/kermit
crw-rw----    1 root     uucp       4,  65  4月 27 21:08 /dev/ttyS1
-rwxr-xr-x    1 root     uucp      1503024  1月 14  2000 /usr/bin/kermit
なるほど。両方とも uucpグループに属してるから、kermit を実行時にグループIDをセットするようにすればOKかな。

# su
$ chmod 2755 /usr/bin/kermit
$ ls -l /usr/bin/kermit
-rwxr-sr-x    1 root     uucp      1503024  1月 14  2000 /usr/bin/kermit
これで無事全ての設定が完了〜〜!あとはPHS側のアドレス帳に番号を登録しておいて着信時に名前(適当に「EM着信」のような)がでるようにすれば完璧。普通の電話との区別もサブアドレスがあるから完璧。ISDN + PHS だからこぞ出きる芸当なのさ〜♪

あと、テストでメールを投げてるときにタイミングが悪くてモデムの電源が切れてるときに実行されて(当然 notify を実行するときに固まる)メールがキューに溜まったままになったことがある。とりあえず再送を試みてみる。再送は qmail-send に ALRMシグナルを送ればよいらしい。キューに残ってるかどうか確認するには qmail-qstat や qmail-qread を使う。

$ ps ax | grep qmail-send
 6796 pts/0    S      0:00 qmail-send    # qmail-send の pid(プロセスID)を確認
 7276 pts/0    S      0:00 grep qmail-send
$ kill -ALRM 6796
$ /var/qmail/bin/qmail-qstat
messages in queue: 0    # キューは空
messages in queue but not yet preprocessed: 0
これでメッセージが再送されればいいんだけど、たまにどうやっても残るときがある。そういう場合は強制的に削除する。

$ /sbin/service qmail stop    # qmail をとめる
$ grep -lr '@' /var/qmail/queue/mess
/var/qmail/queue/mess/xx/zzzz
 → /var/qmail/queue/mess 以下に残っているファイルを確認
$ rm /var/qmail/queue/mess/xx/zzzz    # ファイルを削除。念の為中身はチェックしたほうがいいかも
本当はよろしくないのかもしれないけど、調べても「それらしき」方法が見つからないんよ。誰か知ってたら教えてちょ…



2001年04月22日
この所バージョンアップ作業をしてなかったので、まとめてしておこう。

○Squid 2.3 STABLE 4 → 2.4 STABLE 1
こういうアップデートをする時に厄介なのがサーバーにインストールされてるパスとオリジナルソースのデフォルトパスが違う場合。単純に違うだけならいいんだけど、ファイルの配置構造(?)まで違うことがある。これはRPMパッケージでインストールしたものを使っていた時になる可能性が高い。というわけで、今回もその典型的なパターン。今後のことを考えるとどちらに合わせるのがいいのか悩むけど、面倒なのでソースの方にした。まずは解凍&お決まりの文句。

# tar xvzf squid-2.4.STABLE1-src.tar.gz
# cd squid-2.4.STABLE1
# ./configure
# make
# su
$ make install
これでデフォルトの /usr/local/squid 以下にインストールされる。インスト先を指定するときには configure --prefix=/usr/hoge のようにすればOK。次に /usr/local/squid/etc/squid.conf を編集。キャッシュディレクトリやアクセスコントロールなんかを適当にいじるだけでいいかな。んでもって試しに走らせると怒られた。squid.conf に設定ミスが。お決まりの綴りミスやなんかね(^_^;;
修正したらエラーははかないけどすぐ落ちる。メッセージログを見てみると、
Cannot open '/usr/local/squid/logs/access.log' for writing.
The parent directory must be writeable by the user 'squid',
which is the cache_effective_user set in squid.conf
ということなので、ユーザー権限がちゃんとなってくてログファイルのオープンが出来てないようだ。さくっと直す。
$ chgrp squid /usr/local/squid/logs
$ chown squid /usr/local/squid/logs
これでとりあえずは起動できるようになった。あとは起動スクリプトを変更。
$ cp /etc/init.d/squid /etc/init.d/squid.bak
$ cp contrib/squid.rc /etc/init.d/squid
$ vi /etc/init.d/squid   → sh のパスと PATHの squid のパスを変更

○OpenSSH 2.5.1p1 → 2.5.2p2
解凍して、お決まり三段活用。んだけ。

# tar xvzf openssh-2.5.2p2.tar.gz
# cd openssh-2.5.2p2
# ./configure
# make
# su
$ make install
○OpenSSL 0.9.5a → 0.9.6a
こいつもほぼお決まりパターン。
# tar xvzf openssl-0.9.6a.tar.gz
# cd openssl-0.9.6a
# ./config --prefix=/usr/
# make
# make test
# su
$ make install
○Samba 2.0.5-ja(だったかな?) → 2.0.7-ja22
Samba もソースコンパイルはややこしいので、RPMでお手軽に。
$ rpm -Uvh samba-2.0.7-ja22ssl1.i386.rpm
$ rpm -Uvh samba-common-2.0.7-ja22ssl1.i386.rpm
$ rpm -Uvh samba-client-2.0.7-ja22ssl1.i386.rpm
あとは kernel が残ってるや。こいつはじっくりやった方がいいだろうから、今日はここまでにしておこう、うん。

BBS 次 →

△戻る ▲トップに戻る