Vine Linux 2.1.5で寺子屋
日経Linux2001年5月号にVine Linux 2.1.5[FTP版]が入っていたので使ってみることにしました。
ハードウエアは
AOpen AX6B
PentiumII 350MHz
Quantum FIREBALL lct 08 13(12GB)
i740ビデオカード
ロジテック3ボタンマウス
128MB SDRAM
VIA Rhine 100BASE-TX LANカード
という構成です。
HDDはすべてLinuxで使うことにします。
インタネットへはLAN上にあるルータ経由で接続するので、PPPの類は使いません。
本文で特に指定されていない部分は、rootの権限で作業します。
1 OSを入れる
インストールの種類はGNOMEワークステーションで入れましょう。
HDDは全部で800MB強程度消費します。
キーボードはきちんと刻印どおりに入力できるか確認しましょう。
どうしても違っている場合は一度別の設定に変えて戻せばよいです。
パーティションは/,/var,/usrに各4GB割り当てましたが、お任せでも良いでしょう。
スワップは100MB程度です。
LILOはLBA32モードを有効にしました。
ネットワークは外部からのコネクションを受け付ける必要があるのでLAN側のIPアドレスを固定にしましたが、DHCPが使えるならそのほうが楽かもしれません。
ホスト名はとりあえずje4smq.felix.or.jpにしました。
タイムゾーンはASIA/Tokyoですね。
アカウントの設定はrootのパスワード設定は言うに及ばず、必ず1つはユーザを作って普段はそのユーザで作業しましょう。
X関係はIntel740でGeneric Monitor That can do 1024x768 @ 60HzなCRTを選びました。
グラフィカルログインを使用にして、見栄えを良くしました。
インストール終了後にNetscape Communicator等で実際にインタネットに接続してみてうまくいけばとりあえずはokです。
2 カーネルの再構築
シェルで作業します。
1)cd /usr/src/linux
2)make menuconfig
3)Amateur Radio supportを選択
[*] Amateur Radio
support
--- Packet Radio protocols
<M>
Amateur Radio AX.25 Level 2 protocol
[ ]
AX.25 DAMA Slave support サテライトで使うそうだが
<M>
Amateur Radio NET/ROM protocol なくてもいいよ
<M>
Amateur Radio X.25 PLP (Rose) なくてもいいよ
--- AX.25
network device drivers
<M>
Serial port KISS driver TNC使うなら必須
5)Exit>Exit>Yesで保存
6)make dep ; make clean ; make bzImage ; make modules ;make modules_install
7)cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz.new
8)/etc/lilo.confの修正
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
message=/boot/message
append="apm=on"
lba32
default=linux
image=/boot/vmlinuz.new ここから追加
label=linux
initrd=/boot/initrd-2.2.18-0vl4.2.img
read-only
root=/dev/hda1 ここまで追加
image=/boot/vmlinuz-2.2.18-0vl4.2
label=org linuxをorgへ変更
initrd=/boot/initrd-2.2.18-0vl4.2.img
read-only
root=/dev/hda1
9)/sbin/liloを実行して認識させる。
再起動して無事起動するか確認して下さい。
だめな場合はCTL-ALT-DELで再起動させ、起動時選択でorgを選ぶと以前のカーネルが起動します。
3 ax25関係コマンドの導入
以下のファイルをrpm -Uvhでインストールします。
http://www.rpmfind.org/で検索してください。
よく似た名前のファイルもあるので注意してください。
libax25-0.0.7-1.i386.rpm
ax25-apps-0.0.4-3.i386.rpm
ax25-tools-0.0.6-2.i386.rpm
node-0.3.0-1.i386.rpm
/usr/binにコマンドがインストールされます。
受信したパケットを表示するlistenは、そのままだとroot権限が無いと動きません。
どうしても一般ユーザで動かしたい場合は、
# chmod +s /usr/bin/listen
でsetuidしておけば動作するようになります。
4 ax.25ドライバの設定
無線ポートの初期設定を行う/etc/rc.d/rc.ax25を作りましょう。
この例ではCOM1(/dev/ttyS0)にyamモデムが、COM2(/dev/ttyS1)にKPC-4が接続されています。
#!/bin/sh
insmod ax25
insmod netrom
insmod rose
insmod mkiss
#echo 'soundmodem initialize'
#insmod hdlcdrv
#indmod soundmodem
#Crystal
#insmod soundmodem mode="wss:afsk1200" iobase=0x530
irq=11 dma=3
#SoundBlaster
#insmod soundmodem mode="sbc:afsk1200" iobase=0x220
irq=5 dma=3
#Crystal
#sethdlc -p -i sm0 mode wss:afsk1200 io 0x530 irq 11 dma 3 pario
0x378
#sethdlc -p -i sm0 mode wss:psk4800 io 0x530 irq 11 dma 3 pario
0x378
#sethdlc -p -i sm0 mode wss:fsk9600 io 0x530 irq 11 dma 3 pario
0x378
#SoundBlaster
#sethdlc -p -i sm0 mode sbc:afsk1200 io 0x220 irq 5 dma 3 pario
0x378
#Timing
#sethdlc -i sm0 -a txd 500 slot 10 ppersist 10 half
#/sbin/ifconfig sm0 133.93.32.4 hw ax25 je4smq-5
#smmixer -i sm0 s=mic i=23 o=0
#
echo yam attach
insmod yam
setserial /dev/ttyS0 uart none
/usr/sbin/yamcfg yam0 iobase 0x3f8 irq 4 bitrate 9600 txdelay 250
txtail 10 slottime 1 persist 128
/sbin/ifconfig yam0 133.93.32.4 netmask 255.255.255.0 hw ax25
je4smq-4 up
#
echo 'KPC-4 2port'
/usr/sbin/mkiss -s 9600 -h /dev/ttyS1 /dev/ptyq0 /dev/ptyq1
/dev/ptyq2
echo 'port attach'
#/usr/sbin/kissattach -m 512 /dev/ttyS0 ax0 133.93.32.4
/usr/sbin/kissattach -m 512 /dev/ttyq0 ax0 133.93.32.4
/usr/sbin/kissattach -m 512 /dev/ttyq1 ax1 133.93.32.4
/usr/sbin/kissattach -m 512 /dev/ttyq2 ax2 133.93.32.4
#/usr/sbin/kissattach -m 512 /dev/ttyS2 ax3 133.93.32.4
/usr/sbin/kissparms -p ax0 -t 500 -r 10 -s 10
/usr/sbin/kissparms -p ax1 -t 500 -r 10 -s 10
/usr/sbin/kissparms -p ax2 -t 500 -r 10 -s 10
#/usr/sbin/kissparms -p ax3 -t 500 -r 10 -s 10
echo 'network configure'
/sbin/ifconfig ax0 133.93.32.4 netmask 255.255.255.255 up
/sbin/ifconfig ax0 broadcast 133.93.32.255 mtu 216
/sbin/ifconfig ax1 133.93.32.4 netmask 255.255.255.255 up
/sbin/ifconfig ax1 broadcast 133.93.32.255 mtu 216
/sbin/ifconfig ax2 133.93.32.4 netmask 255.255.255.255 up
/sbin/ifconfig ax2 broadcast 133.93.32.255 mtu 216
#/sbin/ifconfig ax3 133.93.32.4 netmask 255.255.255.255 up
#/sbin/ifconfig ax3 broadcast 133.93.32.255 mtu 216
#/sbin/ifconfig sm0 133.93.32.4 netmask 255.255.255.255 up
#/sbin/ifconfig sm0 broadcast 133.93.32.255
/sbin/ifconfig yam0 133.93.32.4 netmask 255.255.255.255 up
/sbin/ifconfig yam0 broadcast 133.93.32.255 mtu 1008
echo 'route set'
#/sbin/route add -host dwa window 4096 ax2
/sbin/route add -host dwa ax0
/sbin/route add -host wdu ax1
#/sbin/route add -host yva ax3
/sbin/route add -host cwz yam0
#note pc(linux)
#/sbin/route add -host linux window 4096 ax0
/sbin/route add -host jtp1 gw cwz
/sbin/route add -net 172.25.252.0 netmask 255.255.255.0 gw cwz
/sbin/route add -net 133.93.32.0 netmask 255.255.255.0 gw dwa
#arp lock(Digipeat)
#arp -H ax25 -s dwa jg4dwa-1
#digipeat route set
#axparms -route add ax1 ja5adw-2 jh5yne-2
echo 'NET/ROM start'
nrattach -i 133.93.32.4 netrom
/sbin/ifconfig nr0 133.93.32.4 netmask 255.255.255.255 up
/sbin/ifconfig nr0 broadcast 133.93.32.255 mtu 216
netromd -i -t 30
echo 'mheard log start'
/usr/sbin/mheardd -f -n20
echo 'ax25d start'
/usr/sbin/ax25d
echo 'console user add'
axparms -assoc je4smq maachan
/etc/ax25/axportsも必要です。
# /etc/ax25/axports
#
# The format of this file is:
#
# name callsign speed paclen window description
#
ax0 JE4SMQ-1 9600 512 7 (PORT 1)
ax1 JE4SMQ-2 9600 512 7 (PORT 2)
ax2 JE4SMQ-3 9600 512 7 (PORT 3)
ax3 JE4SMQ-4 9600 512 7 (PORT 4)
他にも必要ですが、NET/ROM関係やnode関係なのでとりあえずは無くても大丈夫かも知れません。
全部載せると先に進まないのでここまでにします。
rc.ax25を起動して(chmod +xしてないとだめ)/etc/rc.d/rc.sysinitの最後で呼び出すようにします。
# Now that we have all of our basic
modules loaded and the kernel going,
# let's dump the syslog ring somewhere so we can find it later
dmesg > /var/log/dmesg
kill -TERM `/sbin/pidof getkey` >/dev/null 2>&1
} &
if [ "$PROMPT" != "no" ]; then
/sbin/getkey i && touch /var/run/confirm
fi
wait
#start ax25
/etc/rc.d/rc.ax25
変更後再起動して、ifconfgコマンドでax0等が出てきているか確認して下さい。
[root@je4smq maachan]# /sbin/ifconfig|less
ax0 リンク方法:AMPR AX.25 ハードウェアアドレス
JE4SMQ-1
inetアドレス:133.93.32.4マスク:255.255.255.255
UP RUNNING MTU:216 Metric:1
RXパケット:14 エラー:0 損失:0 オーバラン:0
フレーム:0
TXパケット:21 エラー:0 損失:0 オーバラン:0
キャリア:0
衝突(Collisions):0 TXキュー長:10
また、pingを打って相手から応答があるか確認して下さい。
[root@je4smq maachan]# ping -i 10 cwz
PING ja5cwz.sman.prug.or.jp (172.25.252.30) 送信元 133.93.32.4
: 56(84) bytes of
data.
64 バイト応答 送信元 ja5cwz.sman.prug.or.jp
(172.25.252.30): icmp_seq=0 ttl=64 時間=2.268秒
64 バイト応答 送信元 ja5cwz.sman.prug.or.jp
(172.25.252.30): icmp_seq=1 ttl=64 時間=1.258秒
--- ja5cwz.sman.prug.or.jp ping 統計 ---
送信パケット数 2, 受信パケット数 2,
パケット損失 0%
Round-Trip 最小/平均/最大/mdev =
1258.434/1763.619/2268.804/505.185ミリ秒
接続先は/etc/hostsに追加してください。
ここまででアマチュア無線でIPパケットが飛ぶようになったので、あとは巷にあるサーバ構築の本を参考に作業すれば、そこそこ遊べると思われます。
6 sendmail
残念ながら、入っていません。
次世代MTAのpostfixが入っているのですが、これはDNSが動いていることを前提とした今風の作りです。
DNSが事実上使えないので、伝統のsendmailにします。
まず、rpm -e postfixします。
おそらく警告が出るので、警告にある依存性のあるパッケージを根こそぎrpm -eしてください。
fetchmail関係が2つほどあると思います。
次にパッケージのsendmailを入れます。
rpmfind.netで以下のファイルを探します。RedHat6.2用バイナリです。
sendmail-8.9.3-20.i386.rpm
rpm -Uvhで入れましょう。
このままではDNSを引くsendmailなので、引かないsendmailを作る必要があります。
ソースを取ってきてコンパイルします。
作業はここが大変参考になりました。
Plamo 2.1と違ってdbはまともですから特に考えなくても良いです。
sendmailをソースからコンパイルします。
上の説明は少々古いバージョンなので、比較的新しいsendmail 8.9.3を対象にします。
sendmail.8.9.3.tar.gzはここ、WIDEパッチのsendmail893+3.2W.patch.gzはここにあります。
とりあえず両方とも/usr/local/srcへ置きます。
展開します。
cd /usr/local/src
tar zxvf sendmail.8.9.3.tar.gz
gzip -d sendmail893+3.2W.patch.gz
WIDEパッチを当てます。
cd sendmail-8.9.3/src
patch < ../../sendmail893+3.2W.patch
エラー無く当たったらまずは成功です。
次にLinux用設定を書き換えます。
cd /usr/local/src/sendmail-8.9.3/BuildTools/OS
vi Linux
以下の内容にします。
confENVDEFからオリジナルと内容が異なっているので注意してください。
# @(#)Linux 8.4 (Berkeley) 3/22/1998
define(`confSTDIR', `/etc')
define(`confHFDIR', `/usr/lib')
define(`confDEPEND_TYPE', `CC-M')
define(`confMANROOT', `/usr/man/man')
define(`confENVDEF', `-DHASSNPRINTF=1 -DUSE_VENDOR_CF_PATH
-DNAMED_BIND=0')
define(`confSBINDIR', `/usr/sbin')
これでMXを引かない設定が入っています。
いよいよコンパイルです。
一度コンパイルしてしまうと上で作ったLinux用設定ファイルを後で書き換えても認識しないので、よく確かめてからコンパイルしましょう。
cd /usr/local/src/sendmail-8.9.3/src/
./Build
結果が良さそうなら
./Build install
これでsendmailが入れ替わります。
デーモンで起動中のsendmailも入れ替えましょう。
分かっていれば現行のsendmailにkill -HUPでも良いでしょうが、一番良いのは再起動です。
再起動後、無事にデーモン状態で動いていればまあ大丈夫でしょう。
bash# ps ax|grep sendmail
107 ? S 0:00 sendmail: accepting connections on port 25
1819 ttyp7 R 0:00 grep sendmail
何か問題があったときにOSからroot宛にメールが来ますが、rootは保守時以外は使わないほうが良いです。
/etc/aliasesを書き換えてroot宛のメールは管理者が普段使うユーザへ転送するようにしたほうが良いです。
こんな感じです。
私はmaachanなので、maachanへ転送するようにしています。
newsやusenetも転送するようにしましょう。
コロンとユーザ名の間はスペースではなくタブです。
# Basic system aliases -- these MUST be
present.
MAILER-DAEMON: postmaster
postmaster: root
# General redirections for pseudo accounts.
bin: root
daemon: root
games: root
ingres: root
nobody: root
system: root
toor: root
uucp: root
news: root
usenet: root
# Well-known aliases.
manager: root
dumper: root
operator: root
# trap decode to catch security attacks
decode: root
# Person who should get root's mail
root: maachan
書き換え後はnewaliasesを実行してsendmailへ認識させましょう。
[root@je4smq /etc]# newaliases
/etc/aliases: 17 aliases, longest 10 bytes, 181 bytes total
これで終了ではありません。
このままでは、LASER5の時と同様になぜかメールが正しく届きません。
それは/usr/sbin/mail.localが古い、あるいは無いからです。
対応は、mail.localディレクトリにあるMakefile.M4を書き換えてmakeします。
#
location of mail.local binary (usually /usr/sbin or /usr/etc)
EBINDIR=${DESTDIR}ifdef(`confEBINDIR', `confEBINDIR', `/usr/sbin')
make install時に文句を言われて失敗したときはobj何とか(私の場合はobj.Linux.2.2.18-0vl4.2.i686)というディレクトリ以下に実体は出来ているので手でコピーすれば良いです。
mail.localは/usr/sbinと/usr/libexecに無いとだめなようです。
必ずPermissionも確認して下さい。
[maachan@je4smq src]$ ls -l /usr/sbin/mail.local
-r-sr-xr-x 1 root root 28055 May 3 00:46
/usr/sbin/mail.local*
[maachan@je4smq src]$ ls -l /usr/libexec/mail.local
-r-sr-xr-x 1 root bin 28055 May 3 00:44
/usr/libexec/mail.local*
setuidされていないとメールが届くと権限が無いと言われてsendmailのデーモンがお隠れになります。
/etc/sendmail.cfを作るCFはPlamo 1.4.*と同じですが、CF自体が無いですね。
rpmfind.netで以下のファイルを探します。RedHat6.2用バイナリです。
CF-3.7Wpl2-5k.noarch.rpm
rpm -Uvhで入れましょう。
その後/usr/local/CF-3.7Wpl2/Samples/へmyhost.def,myhost.deliverを置いてmake myhost.cfして作ります。
6 ニュースサーバINN
必ずsendmailが動くようになってから作業してください。
付属のinn-2.2.2はバグ入りなのでrpm -e inn-2.2.2します。
Plamo 2.1を参考にinn-2.2.3をソースからコンパイルします。
まずinn-2.2.3.tar.gzをgetします。
http://www.isc.org/あたりにあるようです。
とりあえずtarを展開しましょう。
su
cp inn-2.2.3.tar.gz /usr/local/src
cd /usr/local/src
tar zxvf inn-2.2.3.tar.gz
展開できたら早速コンパイルしましょう。
cd inn-2.2.3
./configure
首尾良くMakefile.globalが出来たら
make
コンパイルエラーがなければとりあえず一休みしてください。
いよいよインストール。
make install
ここからは設定ファイルの書き換えです。
ここからはinnの起動が成功するまでnewsの権限で作業です。
su
su news
/usr/local/news/etc/inn.conf(抜粋)
organization: Future Engineering
Laboratory of Internet conneXion
server: localhost
pathhost: je4smq
moderatormailer: news@je4smq.felix.or.jp
domain:
#fromhost:
...
artcutoff: 365
...
innflags:(このあとの空白を削る)
/usr/local/news/etc/newsfeeds(抜粋)
接続タイプに応じて選んでください。
MEとoverchanの行は必須です。
ME:!*::
overview!:*:Tc,WO:/usr/bin/overchan
#VIA Internet
#uucp
june/june:*,!magical-bbs.*,!fj.*,!jlug.*,!tnn.*,!junk,!japan.*,!local.*,!control.*,!prug.*,!zoj.*,!apg.local*,!tiki.*,!tameike.*:Tf,Wnb:
#suck
paku/news.paku.net:*,!magical-bbs.*,!fj.*,!tnn.*,!junk,!japan.*,!local.*,!control.*,!prug.*,!zoj.*,!apg.local*,!tiki.*,!tameike.*:Tf,Wnm:
#nntp
ja5cwz/ja5cwz:*,!magical-bbs.*,!junk,!jlug.*,!kansai.*,!local.*,!control.*,!prug.*,!zoj.*,!apg.local*,!tiki.*,!tameike.*:Tf,Wnm:
/usr/local/news/etc/incoming.conf(抜粋)
外部からこちらに接続を許可する相手の一覧です。
streaming: true # streaming allowed
by default
max-connections: 8 # per feed
peer ME {
hostname: "localhost, 127.0.0.1"
}
peer spd {
hostname: "ja5cwz.sman.prug.or.jp, jg4dwa.spd.prug.or.jp,
jr4snp.spd.prug.or.jp, jk4wdu.spd.prug.or.jp"
}
/usr/local/news/etc/nnrp.access(抜粋)
ニュースリーダからの接続を許可する相手の設定です。
規定値そのままで良いかもしれません。
stdin:Read Post:::*
localhost:Read Post:::*
127.0.0.1:Read Post:::*
*.spd.prug.or.jp:Read Post:::*
*.felix.or.jp:Read Post:::*
/usr/local/news/etc/nntpsend.ctl(抜粋)
ニュースを送る相手を登録します。
この設定で、ある程度以上無通信の場合は自動的にNNTPコネクションを切断します。
ja5cwz:ja5cwz.sman.prug.or.jp:1m:-T1800 -t300
/usr/local/news/db/active
ニュースグループ一覧です。
大きいので、こちらからどうぞ。
ここまで設定できたら
/usr/local/news/bin/innchech
で設定ファイルを確認します。
bash$ /usr/local/news/bin/inncheck
/etc/news/newsfeeds:0: warning you accept all incoming
article distributions
このエラーは無視できますが、他の内容の場合は必ずエラー内容を確認して指示に従って修正して下さい。
間違えていたら指示に従って修正して下さい。
かなり具体的にエラーが出ます。
次にhistoryファイルの再構築をします。
cd /usr/local/news/db
/usr/local/news/bin/makehistory -f history
最低限の設定が完成したので、いよいよ起動実験をします。
/usr/local/news/bin/rc.news
動作チェックはtelnet localhost nntpとしてnews serverと通信出来るか確認します。
200 je4smq InterNetNews server INN 2.2.3 18-Jul-2000 ready
と出たら成功。
quitで終了。
良さそうなら再起動して一般ユーザでmnews -Dlocalhostなりで投稿テストをしましょう。
以下の作業もrootでやっておきましょう。
/var/log/newsにログが集約されます。
cd /var/log/
rm -f news
ln -s
/usr/local/news/log news
/etc/syslog.confにログを残す設定をすることもお忘れ無く。
トラブル時に役に立ちます。
news.crit
/var/log/news/news.crit
news.err
/var/log/news/news.err
news.notice
/var/log/news/news.notice
自動起動のために/etc/rc.d/rc.sysinitからrc.newsを起動するようにします。
ax.25ドライバ起動後に追加すればよいです。
/etc/rc.d/rc.sysinit(抜粋)
#start ax25
/etc/rc.d/rc.ax25
su - news -c /usr/local/news/bin/rc.news
再起動してきちんとinndが動いているか確認します。
[maachan@je4smq rc.d]$ ps ax|grep inn
272 ? S 0:00 /usr/local/news/bin/innd -p8
1131 ? S 0:00 sh /usr/local/news/bin/innwatch
3611 pts/5 R 0:00 grep inn
ここまでで普段の動作は出来ますが、日時のバッチ処理と定期的に外部へ未送信ニュースを送るためにcrontabへ登録です。
/etc/crontabを修正します。
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
#news
1,6,11,16,21,26,31,36,41,46,51,56 * * * * news
/usr/local/news/bin/nntpsend
39 * * * * news /usr/local/news/bin/rnews -U
6 0 * * * news /usr/local/news/bin/news.daily delayrm expireover
0 5 * * 1 news /usr/local/news/bin/expireover -s
ここまででメールとニュースが通せるようになりました。
Vine Linuxは非常に有名なディストリビューションですので、rpm形式でいろいろなソフトが入手できます。
インターネット用の多くがそのまま無線でも使えるので、挑戦してみてください。
suckやuucpはパッケージのまま使えば良いでしょう。