Vine Linux 3.1で寺子屋
GNOMEだけど、MacとWindowsの合いの子みたいなGUIだ
Vine 3.1が上方で評判なので、4年の沈黙を破って導入しました(2005/4/25)。
4年の歳月を経て確実に進化していました。
何とカーネルの再構築以外にコンパイル作業はいらないのです。
導入したハードウエアは
Celeron 1.2GHz
120GB HDD
i740ビデオカード
怪しいAopenの980円光学式スクロールマウス
384MB SDRAM
3Com 3C590 100BASE-TX LANカード
という構成です。
HDDはすべてLinuxで使うことにします。
インタネットへはLAN上にあるルータ経由で接続します。
というか、aptを多用するので最低ADSL常時接続が無いと話になりません!
本文で特に指定されていない部分は、rootの権限で作業します。
ネットワーク構成は以下を仮定します。
目次
インストールの種類は全部で入れましょう。
HDDは全部で1.7GB程度消費します。
パーティションはお任せでも良いでしょう。
スワップも適当に取ってくれます。
ファイルシステムは今時なext3ファイルシステムが良いです。
ジャーナリングしてくれるので電源断等の異常終了後の再起動でfsckが短いですよ。
ネットワークは外部からのコネクションを受け付ける必要があるのでLAN側のIPアドレスを固定にしました.
仮にもサーバであればDHCPでIPアドレスを自動取得するのは止めたほうが無難です。
ホスト名はとりあえずje4smq.spd.jpにしました。
タイムゾーンはASIA/Tokyoですね。
アカウントの設定はrootのパスワード設定は言うに及ばず、必ず1つはユーザを作って普段はそのユーザで作業しましょう。
XはIntel740でGeneric Monitor That can do 1024x768 @ 60HzなCRTを選びました。
遅いカードなので色数は15bit迄にしないとマウスさばきがつらかったです。
インストール終了後にもじら等で実際にインタネットに接続してみてうまくいけばとりあえずはokです。
今回はなるべくコンパイルを避けたいです。
Fedoraとかだとコンパイル無しも可能だそうですが、Vineは残念ながらカーネルの再構築だけは必要です。
1.Webmin
何は無くてもWebminです。
設定作業が格段に楽です。
# apt-get install webmin
https://localhost:10000 に接続すると各種の設定が可能です。
Postfixの設定が出来るのはかなりおいしいです。
2.inn 2.3.2
ニュースサーバです。
INN-2.3.3 インストール & 設定ガイドが詳しいです。
# apt-get install inn
# apt-get install inews
3.その他
sambaがあるとWindowsマシンにファイルのバックアップを簡単にコピー出来るので便利です。
インストール後はWebminで設定できます。
# apt-get install samba
4.カーネルソース
カーネルパッケージのアップグレードを参照してください。
# apt-get install kernel-source
# apt-get install kernet-headers
4.最後に
RPM/APTによるパッケージ管理を参考にバージョンアップしておきましょう。
# apt-get update
# apt-get upgrade
シェルで作業します。
1)# cd /usr/src/linux
2)# make xconfig
3)Amateur Radio supportを選択して全部Mにする。
Mが選べない場合はYにする。
4)水本さんからの情報によると、以下も変えないとUSBがおかしくなるそうです。
このバージョン(3.1)は従来通りにmake oldconfig で既存カーネルの設定で.config が生成されるまではスムースにすすみます。
が、それをベースにmake Xconfig 段階ではなぜか一部パラメーターがdefault がえりして しまうのでAX25 だけを処理すれば、既存カーネルでサポートしていたパラメーターが非サポートになる憂き目をみます。
私の場合は、既存カーネルがサポートしていたUSB Mass Strage support が再構築後はmodule で非サポートになってしまった。
こうなると/sbin/mkinitrd が失敗して次に進めなくなり カーネルの再構築は失敗します。
(このケースでは、/etc/modules.conf のなかの当該module 行の先頭に#をつけてとにかくusb module をカーネルが読み込ませないようにしたら再構築は終了可能です)
で、usb を正常にmoduleでサポートする設定にはカーネルパラメーターが少なくとも以下に分散しているそれぞれの中から選ぶ必要があるので経験者でもたいてい嫌になるはずです。
ATA/IDE/MFM/RLL suport...SCSI emulation suport( CD-RWの利用時)
SCSI suport
inpit core support
USB support
これらの関連パラメーターが再構築時に初インストールのままなぜ踏襲してくれないのか不思議でなりません!
もう一つの問題は、Vine を普通にインストールしたらSMP カーネルでインストールされているようで、これが再構築時にトラブルの火種になります。
カーネルは2.4.27 から現状はセキュリティー問題ですでに2.4.27.3 にUP済みなのでapt で対応アップしたいですね、ところが私は初期インストールがSMPカーネルだと思ってないから、通常カーネルソースを導入してしまいました。
(教訓 以下2つのコマンドで作業前確認して、整合するカーネルソースを見極めて導入すべし!)
uname -r
uname -a
(もっともraid パラメーターが無効ならSMP と非SMPカーネルでも正常に働く実績あり)5)保存して終了する
6)コンパイル開始。
# make dep ; make clean ; make bzImage ; make modules ;make modules_install
7)再構築後のカーネルを/bootにコピー
# cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz.new
8)/etc/lilo.confの修正
要は今ある内容をコピーして、imageとlabelを書き換えるだけです。
prompt
timeout=20
default=linuxax25 起動時に何もしないと再構築後カーネルから起動
boot=/dev/hda
map=/boot/map
install=menu
message=/boot/message
image=/boot/vmlinuz-2.4.27-0vl7
label=linux
initrd=/boot/initrd-2.4.27-0vl7.img
read-only
root=/dev/hda2
append=" resume2=swap:/dev/hda3"image=/boot/vmlinuz.new ←ここから追加
label=linuxax25
initrd=/boot/initrd-2.4.27-0vl7.img
read-only
root=/dev/hda2
append=" resume2=swap:/dev/hda3" ←ここまで追加9)liloを実行して認識させる。
# /sbin/lilo
再起動して無事起動するか確認して下さい。
うまく起動しない場合はCTL-ALT-DELで再起動させ、起動時選択でlinuxを選ぶとインストール時のカーネルが起動します。
以下のファイルを探してrpm -Uvh ファイル名でインストールします。
http://www.rpmseek.com/で検索 すると出てくるでしょう。
拡張子違いのよく似た名前のファイルもあるので注意してください。
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しておけば動作するようになります。
je4smq.spd.jpからja5cwz.sman.jpへアマチュア無線経由で通信可能にする例です。
無線ポートの初期設定を行う/etc/rc.d/rc.ax25を作りましょう。
この例ではCOM1(/dev/ttyS0)にyamモデムが、COM2(/dev/ttyS1)にKPC-4が接続されています。
TNC1台だけならもっと少なく出来ます。
#!/bin/sh
/sbin/insmod ax25
/sbin/insmod netrom
/sbin/insmod rose
/sbin/insmod mkissecho yam attach
/sbin/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
echo 'port attach'
/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/kissparms -p ax0 -t 500 -r 10 -s 10
/usr/sbin/kissparms -p ax1 -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 yam0 133.93.32.4 netmask 255.255.255.255 up
/sbin/ifconfig yam0 broadcast 133.93.32.255 mtu 1008echo 'route set'
/sbin/route add -host cwz yam0
/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 cwzecho '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 30echo 'mheard log start'
/usr/sbin/mheardd -f -n20echo 'ax25d start'
/usr/sbin/ax25decho 'console user add'
axparms -assoc je4smq maachan
作ったら実行権を付けます。
# chmod +x rc.ax25
/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関係なのでとりあえずは無くても大丈夫かも知れません。
全部載せると先に進まないのでここまでにします。
/etc/rc.d/rc.sysinitの最後からrc.ax25を呼び出すようにします。
# 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.jp (172.25.252.30) 送信元 133.93.32.4 : 56(84) bytes of
data.
64 バイト応答 送信元 ja5cwz.sman.jp (172.25.252.30): icmp_seq=0 ttl=64 時間=2.268秒
64 バイト応答 送信元 ja5cwz.sman.jp (172.25.252.30): icmp_seq=1 ttl=64 時間=1.258秒
--- ja5cwz.sman.jp ping 統計 ---
送信パケット数 2, 受信パケット数 2, パケット損失 0%
Round-Trip 最小/平均/最大/mdev = 1258.434/1763.619/2268.804/505.185ミリ秒
接続先は/etc/hostsに追加してください。
#
# hosts This file describes a number of hostname-to-address
# mappings for the TCP/IP subsystem. It is mostly
# used at boot time, when no name servers are running.
# On small systems, this file can be used instead of a
# "named" name server. Just add the names, addresses
# and any aliases to this file...
## For loopbacking.
127.0.0.1 localhost
#LAN内の自分自身
172.24.1.1 je4smq.spd.jp je4smq
#無線ポートのIPアドレス
133.93.32.4 pc.spd.jp pc
#無線の相手
172.25.252.30 ja5cwz.sman.jp cwz
ここまででアマチュア無線でIPパケットが飛ぶようになったので、あとは巷にあるサーバ構築の本を参考に作業すれば、そこそこ遊べると思われます。
メールサーバですね。
今や無視できない人気です。
Postfixのぺーじが有用です。
最初からインストールされているので活用します。
Webminで最低限の設定(ホスト名、ドメイン名程度)はしておきましょう。
あと、各種の管理メールを特定のユーザに投げるよう、/etc/aliasesに追加です。
# 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# Well-known aliases.
manager: root
dumper: root
operator: root# trap decode to catch security attacks
decode: root
news: root
usenet: root# Person who should get root's mail
root: maachan ←管理メールを送りたいユーザ名書き換えたらnewaliasesを実行します。
# newaliases
自前のDNS無し環境で無線側にメールを投げる方法も水本さんから教えてもらいました。
1)postfix は外部サーバーのDNSであれ利用可能(MXをひける)なら自前の物は不要です。
2) MX引けないIP へのメール送受は次の条件を満たす事で可能です。
1. /etc/postfix/main.cf にtransport ファイルを有効にする記述と、dnsを
真っ先に呼ばないで、transport 優先読み指令の2つを追加します。
(具体的には次の2行の追加でok)
transport_maps = hash:/etc/postfix/transport
disable_dns_lookups = yes2. /etc/postfix/transport に当該IPアドレス、転送方式、を記述
括弧で括るとDNSを引かない。
(なお各行は必ず、空白なしで先頭から始めてね!そうでないと誤動作)
#無線直接の相手
ja5cwz.sman.jp smtp:[172.25.252.30]
...
# LANからインターネット経由
jarl.com smtp:www.jarl.com
nifty.ne.jp smtp:smtp.nifty.com
docomo.ne.jp smtp:mfsmax.docomo.ne.jp
ezweb.ne.jp smtp:smtp.nifty.com
kisweb.ne.jp smtp:mb.kisweb.ne.jp
ares.eonet.ne.jp smtp:smtp.eonet.ne.jp3. /etc/resolv.conf にはルーターか、外部DNSを記述
このやりかたの核心は
main.cf のdisable_dns_lookups = yes の行。
これを文字通りに解釈すれば、DNSは無効の設定ですが、正確には
transportを探してなければ、DNSを引いてくれます。
ファイル類が修正終われば、以下のコマンドで設定が反映される。
# /sbin/portmap /etc/postfix/transport
# /usr/sbin/postfix check
# /usr/sbin/postfix reload早速メールを出してみましょう。
最初からSylpheedというメーラが入っているので使います。
まず、設定変更から。
なぜかスプールのパスが間違っているので修正です。
[設定]-[全般の設定]です。
次にアカウントの登録です。
[設定]-[新規アカウントの作成]です。
おもむろに受信ボタンを押すと沢山来ていることでしょう。
設定ファイルの書き換えが中心です。
INN-2.3.3 インストール & 設定ガイドをご覧になった方が良いでしょう。
ここからはinnの起動が成功するまでnewsの権限で作業です。
# su
# su news
/etc/news/inn.conf(抜粋)
mta: /usr/sbin/sendmail -oi -oem %s
organization: SPD-NET(Sanyou Packet Doukoukai OKAYAMA)
ovmethod: tradindexed
pathhost: je4smq
pathnews: /usrserver: localhost
#fromhost:
moderatormailer: news@je4smq.spd.jp
/etc/news/newsfeeds(抜粋)
今はnntp以外はまず使わないでしょうね。
MEの行は必須です。
ME:!*::
#nntp
ja5cwz/ja5cwz:*,!magical-bbs.*,!junk,!jlug.*,!kansai.*,!local.*,!control.*,!prug.*,!zoj.*,!apg.local*,!tiki.*,!tameike.*:Tf,Wnm:/etc/news/incoming.conf(抜粋)
外部からこちらに接続を許可する相手の一覧です。
streaming: true # streaming allowed by default
max-connections: 8 # per feed
peer ME {
hostname: "localhost, 127.0.0.1"
}
peer sman {
hostname: "ja5cwz.sman.jp"
}/etc/news/readers.conf(抜粋)
ニュースリーダからの接続を許可する相手の設定です。
とりあえずLinux Server自分自身ローカルのLANのみ許可します。
ファイルの最後に追加してください。
auth "local" {
hosts: "172.24.1.0/24"
default: "<local>@host.domain"
}
access "local" {
users: "<local>@host.domain"
newsgroups: "*"
}/etc/news/nntpsend.ctl(抜粋)
ニュースを送る相手を登録します。
この設定で、ある程度以上無通信の場合は自動的にNNTPコネクションを切断します。
ja5cwz:ja5cwz.sman.jp:1m:-T1800 -t300
/etc/news/strage.conf
上のほうにある該当行のコメントを外すだけです。
method timehash {
newsgroups: *
class: 0
}/var/lib/news/active
ニュースグループ一覧です。
大きいので、こちらからどうぞ。
ここまで設定できたら
$ innchech
で設定ファイルを確認します。
/etc/news/newsfeeds:0: warning you accept all incoming article distributions
このエラーは無視できますが、他の内容の場合は必ずエラー内容を確認して指示に従って修正して下さい。
間違えていたら指示に従って修正して下さい。
具体的にエラーが出ます。
次にhistoryファイルの再構築をします。
$ cd /var/lib/news
$ makehistory
$ makedbz -s `wc -l < history` -f history
最低限の設定が完成したので、いよいよ起動実験をします。
$ /etc/rc.news
動作チェック
news serverと通信出来るか確認します。
$ telnet localhost nntp
200 je4smq InterNetNews NNRP server INN 2.3.2 ready (posting ok). と出たら成功です。
quit
で終了しましょう。
良さそうならSylpheedにアカウントを作って投稿テストをしましょう。
[設定]-[新規アカウントの作成]です。
問題無さそうならサービスの設定から自動起動するようにしましょう。
画面左上の[アプリケーション]-[システム・ツール]-[サービスの設定]です。
一度OSを再起動して、きちんとinndが動いているか確認します。
inndの行が出てくればOKです。
[maachan@je4smq rc.d]$ ps ax|grep inn
272 ? S 0:00 /usr/bin/innd -p8
1131 ? S 0:00 sh /usr/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/bin/nntpsend
39 * * * * news /usr/bin/rnews -U
0 5 * * 1 news /usr/bin/expireover -s日時のバッチ処理はinn 2.3.2のパッケージ導入時、cron.dailyに勝手に登録されるようです。
ここまででメールとニュースが通せるようになりました。
Vine Linuxは非常に有名なディストリビューションですので、rpm形式でいろいろなソフトが入手できます。
インターネット用の多くがそのまま無線でも使えるので、挑戦してみてください。
ちなみに何もしなくてもWebサーバは動いています。
番外1:USB-Serialコンバータを使ってTNCを繋ぐ(2005/4/28)
昔1980円で買ったUSB-Serialコンバータを繋いでみました。
こちらを参考にしました。
まずベンダーIDを調べます。
おもむろにUSBに差し込んだ後dmesgで見ると、vendor/product IDが分かります。
この機種の場合は0x0557/0x2008と出てきました。
分かったら/etc/modules.confに追加します。
#USB Serial
alias char-major-188 pl2303
alias /dev/ttyUSB0 pl2303
options pl2303 vendor=0x557 product=0x2008
pl2303というのがドライバです。汎用のusbserialで大概動くそうですが、ダメな場合にやってみてください。
なお、私の環境ではpl2303がモジュールになっていなかったので、カーネルの再構築をやるハメに陥りました。
/dev/ttyUSB0がデバイス名です。
mkissやkissattachのデバイス名を書き換えて再起動です。
dmesgで見ると、このようにきっちり認識されています。
usb.c: registered new driver serial
usbserial.c: USB Serial support registered for Generic
usbserial.c: USB Serial Driver core v1.4
usbserial.c: USB Serial support registered for PL-2303
usbserial.c: PL-2303 converter detected
usbserial.c: PL-2303 converter now attached to ttyUSB0 (or usb/tts/0 for devfs)
pl2303.c: Prolific PL2303 USB to serial adaptor driver v0.10