JA4PXC/植田さんのご指導の下、DOS/VパソコンのOSにLINUXを導入し、この上でdxnetという名称のパケットクラスタソフトを稼動させてDXクラスターノードを設置することが出来ました。このノードは、インターネット経由での接続は勿論、シリアルポートに接続されたTNCに、アマチュア無線を使って接続することも可能です。今後、同様な作業をする方々の何かのお役に立てばと思い、ノード設置作業の顛末を以下のように分割して掲載させていただきます。
注意!以下に表示されるIPアドレス、URL等は全て架空のものです。
詳細は、↓へお問い合わせください。
mailto:m.mats@gemini.bekkここ取るoame.ne.jp
− 目次 −
導入するOSはTurbo Linux 7です。パソコンに要求される仕様は以下のようです。
1)DOS/V機であること。(ノート型、タワー型両方可)
2)HDD容量が5GB以上あること。
3)CPUはPentium以降であること。
4)CD−Rが必要です。
5)メモリーは64MB以上ですが、128MB以上を推奨します。
6)TNCを使って無線ポートを開く場合は、シリアルポートがあること。
7)LANボードは必須です。
8) 8GBの制限。数年前のパソコンのBIOSには、最大8GBまでしかHDDを取り扱えないものがあります。
9) IBMのパソコンには、キーボード、マウスなどを変えたり、取り外すだけで、起動時にBIOS設定画面が
起動されるものがあります。
【失敗例】NEC、Lavie NXコンパクトタイプのUSBキーボード仕様にはTurbo Linux 7をインストールできなかった。情けないと思われるかもしれないが、インストールできるかどうかは、実際やってみないと判断できない。このため、新品は勿論のこと、中古でも高価なものは避けた方がよい。HP(Compaq),Dell,Fujitsuのなるべく標準的な仕様のものを用意されるのが無難と思われます。
【失敗例2】 Turbo Linux 7をインストール中、頻繁にエラーが発生し、インストールが異常終了となった。原因をパソコンとTurbo Linux 7との相性と最初判断したが、念のため、他のCD-R装置に換装してみたら、インストールが正常に出来た。結局CD-R装置の故障だった。古いパソコンの場合は、動作部分の経年劣化に注意が必要だ。
【失敗例3】 数年前のパソコンの6GB容量のHDDを40GBへ換装したら、ディスクエラーのメッセージが出て起動できなくなった。
【失敗例4】 IBMのパソコンには、キーボード、マウス、モニターを変えたり、取り外すだけで、起動時にBIOS設定
画面が表示されるものがある。非常に煩わしいので、この手の機種は避けた方がよい。。
私は、「はじめてのTurbolinux7」渡辺裕一著、ソフトバンク パブリッシング株式会社を購入して、添付のCDよりインストールしました。インストール方法は本の中に書いてありますので、ここではインストール時に気付いた点を記します。
1)テキストモード(install text)でインストールします。
2)言語はEnglishです。
3)パーティションは/(ルート)だけでOKです。分割の必要はありません。
(ただし、メモリー容量が小さい場合は、スワップ領域を設定しないとインストー
ルが先に進まない場合があります。)
4) Linuxのインストール用CD-ROMをセットして再起動しても、CD-ROMを認識しない場合があります。こ
のような場合は、起動時にDelキーを押してセットアップメニューに移り(この操作方法はパソコンの機種
毎に異なります。)、ブート装置の最優先順位にCD-ROMを設定して下さい。インストール終了後、ブート
装置の最優先順位には、HDDを設定して下さい。
5) LANボードは装着してからインストールを実施して下さい。インストール後にLANボードを装着しても、動作
しないようです。最初から設定し直しとなります。
2-1. Turbo Linux 7をフルでインストール
インストールの最後の方で、Standard Selection を聞いて来ますので、Everythingを選択して下さい。
インストール完了後、ユーザー登録しておいて下さい。例は以下のとおりです。
# adduser USERID
# passwd USERID
# Changing password for user USERID
# New UNIX Password:********
# Retype new UNIX password:********
※上記パスワード入力で、BAD PASSWORDなどとパソコンから文句言われかもしれませんが、無視し
て2回同じパスワードを入力して下さい。hi
※これらの設定には、rootでログインするかまたは、ユーザーIDで入力後、suへ移行しないと設定出来
ないものがあります。
【ヒント】
フロッピーディスクへのコピーは、
# mcopy /bootsect.lnx a:
と行うか、または、
# mount -t msdos /dev/fd0 /mnt
# cp /bootsect.lnx /mnt
# umount /mnt
と行います。
フロッピーディスクの論理フォーマットコマンド
# mformat a:
2-2. timezoneの設定
# dateをやってみます。
所定のtimezoneになっていない場合以下の設定をします。
JSTの場合
# cd /etc
# rm localtime
# ln -s /usr/share/zoneinfo/Japan localtime
再度 dateで確認します。
【ヒント】
設定コマンド例:date 020521052005.00 <--MMDDhhmmYYYY.ss
2-3. ネットワークの設定
デスクトップパソコン(pcmciaのネットワークアダプタじゃない)の場合
2-3-1 /etc/sysconfig/network-scripts/ifcfg-eth0
を編集します。
以下例
DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.1.255
IPADDR=192.168.1.2
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=yes
2-3-2 /etc/sysconfig/network
を編集します。
以下例
NETWORKING=yes
PROFILENAME="No_Profile"
HOSTNAME=ノードのコールサイン-11
DOMAINNAME=ノードのコールサイン.ddo.jp
GATEWAY=192.168.0.1
GATEWAYDEV=eth0
FORWARD_IPV4=no
IPX=no
2-3-3 その他
/etc/resolv.conf
/etc/hosts.deny
などの確認が必要です。
【ヒント】
以上の設定はメニュー(turbonetcfg)からでもきるはずです。
2-4. telnetをアクティブにします。
/etc/xinetd.d/telnet の
# default: off
# description: Telnet server
# securlevel: 30
service telnet
{
disable = no <---- ここを yesから noに変えます。
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/sbin/in.telnetd
server_args = -h
}
2-5. /usr/sbin/serviceboard を使って
xinitd
をアクティブにします。
【ヒント】
# /usr/sbin/serviceboard でService Status Boardを起動し、Running ServiceNameの中
のxinetdの前のRunning欄に*マークが付いていることを確認します。付いていれば、ESC
キーで処理を抜けて下さい。付いていなければ、xinetdにカーソルを合わせて、Startボタン
を押下し*マークを付けて下さい。
2-6. Dynamic DNSの導入(ddo.jpの場合)
2-6-1 http://ddo.jp/
から自分のドメインを登録します。
2-6-2 テキストブラウザ lynxを/usr/local/binにシンボリックリンクします。
# ln -s /usr/bin/lynx /usr/local/bin/lynx
2-6-3 vi で /usr/local/bin/ddoupdate を新規作成します。内容は以下のようです。
#!/bin/sh
TERM=kterm
date
LYNX=/usr/local/bin/lynx
URL="http://ddo.jp/*****.+++"
CMD_UP="dn=ドメイン(ddo.jpは不要)&pw=パスワード"
CMD_OFF="dn=ドメイン&pw=パスワード&ip=0.0.0.0"
case "$1" in
update)
$LYNX -dump $URL\?$CMD_UP
;;
offline)
$LYNX -dump $URL\?$CMD_OFF
;;
*)
echo "How to ddoupdate: ddoupdate {update|offline}"
exit 1
esac
exit 0
【ヒント】
ここでのパスワードは、DDNサービスサイトに登録したものです。
2-7. IPアドレスをネームサーバ経由で取得して"親ノードのコールサイン.fwd"を作るスクリプトを
作成します。
【ヒント】
/dxnet以下のパスは、dxnet導入後に作成されます。ここで説明していますが、dxnet導入
後の処理ですので、ご注意下さい。
【ヒント】
ネームサーバからIPアドレスを引けなかった時"親ノードのコールサイン.fwd"中のIPアドレスが
空になってしまうという問題が発生します。この問題を解決する為のスクリプトです。内容
を簡単に解説しますと、ネームサーバからIPアドレスが引けた場合:引いたIPアドレスから
"親ノードのコールサイン.fwd"を作るとともに引いたIPアドレスをファイル "親ノードのコール
サイン.ip" に保存します。ネームサーバからIPアドレスが引けなかった場合:以前に保存した
"親ノードのコールサイン.ip" から"親ノードのコールサイン.fwd"を作ります。
2-7-1 vi で /usr/local/dxnet/script/fwd-ipset.sh を新規作成します。内容は以下のようです。
#!/bin/sh
IP=`/usr/bin/nslookup -sil www.*****.+++|tail -2|grep Address|cut -d' ' -f2`
if [ "$IP" != "" ]
then
echo $IP > 親ノードコールサイン.ip
else
IP=`cat 親ノードコールサイン.ip`
fi
echo '親ノードのコールサイン-11'
echo '.C inet 親ノードのコールサイン-11 ' | perl -pe chop;
echo $IP|perl -pe chop;
echo ' ポート番号'
echo '#2'
echo '+TELNET'
echo '#2'
echo '.自ノードのコールサイン\r自パスワード'
echo '+Ok'
echo '#2'
【ヒント】
2-7-2. chmod +x fwd-ipset.shとして実行パーミッションをつけます。
2-7-3. /usr/local/dxnet/system/dxtodo.dat
の内容を見て"親ノード-11"に接続する時刻が上記設定と重なる設定になって
いる場合、1分くらいずらす様に変更して下さい。
以下1の位が1分と6分に接続を自動実行する例です。
???1 c 親ノードコールサイン
???6 c 親ノードコールサイン
2-7-4. 毎時0分または30分が過ぎた時に
ls -l /usr/local/dxnet/script/fwd-ipset.sh
としてタイムスタンプを確認して更新されているかどうか確認します。
【ヒント】
下記2-8に示すcrontab -e の設定を先に実施して下さい。
2-7-5. cat /usr/local/dxnet/script/親ノードのコールサイン.fwd
として内容に問題がないかどうか確認します。
2-8 cron に定期的にアップデートする様に設定します。
# crontab -e
をやるとviが起動します。内容は以下のようです。ついでにntp(定期的に時刻を合わ
せる)設定もして下さい。
0 10 * * * /usr/bin/ntpdate -s -b clock.nc.福大.ac.jp
5 10 * * * /sbin/clock -w
0 0 * * * /usr/local/dxnet/logmove.pl
*/10 * * * * /sbin/sh /usr/local/bin/ddoupdate update >> /var/log/ddoupdate
*/30 * * * * cd /usr/local/dxnet/script ; ./fwd-ipset.sh > 親ノードのコールサイン.fwd
2-9. カーネルの最構築
附属のカーネルにはax.25ドライバが組み込まれていないのでカーネルを更新します。
今回 カーネル 2.4.17を組み込みました。
カーネルは、例えば、lynxを使って
# lynx ftp://ftp.kernel.org/pub/リナックス/カーネル
で取得することができます。
バージョン 2.4.17を取得する場合
上記のように、linux-2.4.17.tar.bz2 を/usr/srcのディレクトリ上にダウンロードします。
最新バージョンを取得するのがベストですが以下 2.4.17に
ついて手順を記述します。実際にはバージョンに合わせた操作をする必要があります。
ところで、上記ダウンロードが終了した時に、そのまま"q"を押して終了すると、折角ダウンロードされ
たファイルが消えてしまいます。そこでは、enterキーを押して下さい。ファイル名を聞いてくると思います。
既にファイル名は表示されていると思います。そこで再びenterキーを押します。ここで初めてダウンロード
したファイルがセーブされたことになります。その後に"q"を入力してダウンロード処理を終了します。
解凍展開は
# cd /usr/src
# bunzip2 linux-2.4.17.tar.bz2
# tar xvfp linux-2.4.17.tar
により行います。
/usr/src/linux-2.4.17/
以下がカーネルのソースです。
現在のカーネルをバックアップします。
cd /boot
cp vmlinuz vmlinuz-org
新規 Linuxソースにシンボリックリンクを修正します。
cd /usr/src
rm linux
ln -s linux-2.4.17 linux
cd linux
make mrproper <= デフォルトにします。
TL7デフォルトのコンフィグをコピーします。
cp ../linux-2.4.5/configs/kernel-2.4.5-3-i586.config .config
make menuconfig または make xconfigで
ax.25関連を設定します。
カーネルのコンパイル
make dep
make bzImage
make modules
make modules_install
make install
2-10. liloの設定
/etc/lilo.confを編集します。
=======================
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
message=/boot/message
lba32
default=linux
image=/boot/vmlinuz
label=linux
read-only
root=/dev/hda1 <- /のあるパティションになっています。
image=/boot/vmlinuz-org <--追加
label=linux-org <--
read-only <--
root=/dev/hda1 <-- /のあるパーティションを設定します。
========================
/sbin/liloを実行
2-11.リブート
3-1.ライブラリのコンパイル
libax25-0.0.9
ax25-tools-0.0.8
をそれぞれ展開したディレクトリ内のファイルINSTALL に記述された方法にしたが
って設定します。
注意!! make installconf はlibax25-0.0.9 のみ実行して下さい。
※ダウンロードサイト例
# lynx http://yo2tm.online.ro/files/ダウンロードサイト/libax25-0.0.9.tar.gz
# lynx http://yo2tm.online.ro/files/ダウンロードサイト/ax25-tools-0.0.8.tar.gz
※ダウンロード先ディレクトリ例
/home/mats/appli/ham
※解凍展開は
#
tar xzvf libax25-0.0.9.tar.gz
# tar xzvf ax25-tools-0.0.8.tar.gz
この時
./configure --exec_prefix=/usr --sysconfdir=/etc --localstatedir=/var
の方を使います。
※例
# cd libax25-0.0.9
# ./configure --exec_prefix=/usr --sysconfdir=/etc --localstatedir=/var
# make
# make install
# make installconf <----- libax25.0.0.9でのみやります。
/home/m-ueda/appli/ham/libax25-0.0.9
/home/m-ueda/appli/ham/ax25-tools-0.0.8 以下でコンパイルしたと思います
3-2. /etc/ax25/axportsの設定(わけが判らずに結果オーライで設定しました。)
/etc/ax25 の中身は /etc/ax25/axports 以外は消去します。
#==========================
# /etc/ax25/axports
#
# The format of this file is:
#
# name callsign speed paclen window description
#
ax0 親ノードコールサイン-11 9600 255 2 438.20 MHz (1200 bps)
ax1 親ノードコールサイン-12 9600 255 2 438.20 MHz (1200 bps)
#==========================
コールサインの-11 と -12 は必ず変えて下さい。(両方 -11としたら動作しませんでした。)
もう一つ追加する場合 ax2?
9600 は PC<-> TNC間のボーレートを指定します。
3-3. ax25をロードして COM1にax0 COM2にax1を割り当てます。(わけが判らずに結果オー
ライで設定しました。)
/usr/local/dxnet/kiss2 に記述のとおりです。
#==========================
#!/bin/sh
/sbin/insmod ax25
/sbin/insmod mkiss
/usr/sbin/kissattach /dev/ttyS0 ax0 192.168.1.2
/usr/sbin/kissattach /dev/ttyS1 ax1 192.168.1.2
#==========================
3-4. 止め方は
/usr/local/dxnet/stopに記述のとおりです。
2つの kissattach のプロセスを kill -9で停止します。
/sbin/rmmod mkiss
/sbin/rmmod ax25
※この3章の操作は、例えば、
http://www.tldp.org/HOWTO/ダウンロードサイト
を参照ください。
4-1. dxnet導入
dxnetのソースをコンパイルします。ただし。カーネル2.4.xではコンパイルできませんでした。
簡単な方法がありますので。詳しくは私へメールで問い合わせ下さい。
mailto:m.mats@gemini.bekkここ取るoame.ne.jp
4-2. /usr/local/dxnet/system/dxnet.cfg
基本設定です。ノードが立ち上がるときsysコマンドとして実行するようです。
set/call ノードのコールサイン-11 # ノードのコールです。
set/node # ノードリンク先のコールです。
set/port inet:ポート番号 ax0 ax1 # インターネットポート番号 とax0 ax1を利用します。 COM3追
加時はax2も書く必要があるかもしれません。
set/ssid # 許可するSSIDです。( -11 とか -1 とか)
SET/TEL open # telnetでの接続を許可します。
SET/LOG_level system=7 debug=7 user=1 cluster=1 # ログレベル dxnet/logs の中身
SET/TZ +9 # 時刻表示を UTCに設定
SET/SYS +ノードのコールサイン +ノードのコールサイン +ノードのコールサイン
# sysコマンドの実行許可者
クラスタから sysと入力します。
# 5つ文字が出るのでパスワードを先頭から数えて入力します。
# OKがでたら SYSOPモードです。
SET/BLACK
# ブラックリスト 他のノードのコールでログインできない様にします。
# -0 はSSID無しの指定です。
4-3. /usr/local/dxnet/system/dxtodo.dat
dxnet動作中の設定
???0 c 親ノードのコールサイン
???5 c 親ノードのコールサイン
???2 c 親ノードのコールサイン2
???7 c 親ノードのコールサイン2
毎時 0/5分に親ノードのコールサインと接続します。
毎時 2/7分に親ノードのコールサイン2と接続します。
※2-8.項も再読下さい。
4-4. /usr/local/dxnet/script
ここにノードに対する接続を記述します。
※2-7.項も再読下さい。
例えば "親ノードのコールサイン.fwd"
親ノードのコールサイン
.C ax0 親ノードのコールサイン
親ノードのコールサインにax0ポートに対して接続する
4-5. /usr/local/dxnet/system/passwd.dat
パスワードファイルです。
4-6. /usr/local/dxnet/restart
dxnetをスタートします。一度止めて設定を変えて走らせるときにもそのまま使えます。
4-7. /usr/local/dxnet/stop
ax.25もあわせてdxnetを止めます。
COM1/2を他の目的で使うときはこれをやらないと止まりません。
これをやったときのスタートは
/usr/local/dxnet/kiss
/usr/local/dxnet/restart
の2つが必要です。
以上全て rootで実行します。
/usr/local/dxnet/system/dxnet.cfgで
SET/LOG_level system=7 debug=7 user=1 cluster=1
に設定していますが(マニュアル参照)
system=7 debug=7 は最高のデバッグモードです。
/usr/local/dxnet/logs/debug に一日1Mバイト以上のログデータが溜ります。これを放置しているとすぐに膨れあがり肝心な内容が見たい時に簡単に中身を見れなくなります。そのために作ったスクリプトが以下です。
/usr/local/dxnet/logmove.pl
perlスクリプトですが、
TL7のperlは /usr/bin/perlで
logmove.plは
/usr/bin/local/perl
を指定しています。
このため最初に
1) rootでログイン
2) ln -s /usr/bin/perl /usr/local/bin/perl
によりシンボリックリンクを張ります。
一日一回 logmove.plを起動する方法
cronを用います。
cronについては man cron を参照して下さい。
設定手順は以下のようです。
5-1. rootでログインする。(リモート接続の場合は、su の後rootのパスワード)
5-2. crontab -e <- これでviが起動されます。
5-3. 以下をviで編集します。
- -- ここからです --
0 10 * * * /usr/bin/ntpdate -s -b clock.nc.福大.ac.jp
5 10 * * * /sbin/clock -w
0 0 * * * /usr/local/dxnet/logmove.pl
- -- ここまでです --
1行目 毎日 10時0分に時計をあわせる
2行目 毎日 10時5分に時計をCMOSメモリに記録
3行目 毎日 0時0分にlogmove.plを起動する
5-4. viをセーブして終了です。 これでcronで定期的にプログラムが起動されるはずです。
5-5. 念の為の確認作業
/usr/bin/ntpdate -s -b clock.nc.福大.ac.jp
/sbin/clock -w
/usr/local/dxnet/logmove.pl
これらをそれぞれrootか手動で動かして問題ないことを確認しておくほうがベターです。
5-6. リブートでの起動オプション
/etc/rc.d/rc.local の最後に以下の設定を追加します。
/user/bin/ntpdate -s -b clock.nc.福大.jp
/usr/local/dxnet/kiss
/usr/local/dxnet/restart
5-7. 言語、プロンプト等の設定
/user/loca/dxnet/system/language.dat
english
french
の順に変えます。
/usr/local/dxnet/language/english.txt を修正して、プロンプト等をお好きなように変えて下さい。
6-1. LINUX機付属のコンソールからはroot & root passwordでログイン可能ですが、遠隔
コンソールでは、userid & user passwordでログイン後、su & root passwordで再ロ
グインする必要があります。
6-2. telnetでDxnetにログインする場合、ホストアドレスにddnを指定した
場合に、socketエラーになった場合、ddnでなく、192.168.*.*のIPアドレ
スそのもので指定してください。ノードパソコンと同じLAN内からリモート接続しようとした場合
にこのような症状が現れます。
6-3. telnetで遠隔操作する場合、SSH対応のターミナルソフトを使用して、ポー
ト22に接続しないと、reboot命令を受け付けてくれない場合があります。
6-4. LINUXインストール後にLANボードをPCIバスに増設した場合は、LINUXの再インストールが必
要です。
6-5. 再起動&電源断の命令(Turbo Linux)
再起動 # reboot
電源断 # shutdown -h now
6-6. プログラムの強制終了(Turbo Linux)
コントロールキーとcを同時に押して下さい。