Mac版Vine Linux 3.1で寺子屋
かわいいiMacで電波を飛ばそう
AT互換機版Vine 3.1がなかなか良かったので、iMac Rev.DにMac版をインストールしてTNC接続を行ってみました(2005/5/7)。
さすがにパッケージが無いため、コンパイル作業が発生しましたが無事動きました。
導入したハードウエアは
iMac 333MHz(Rev.D)
384MB SDRAM
60GB HDD
CD-ROMをDVD-Multiドライブに換装
怪しい富士通マークのスクロールマウス
ヒッツコミュニケーションという会社の怪しいUSBシリアル変換機
という構成です。
iMacはキーボードもマウスもUSBなので、普段は抜いておけばいたずらされません。
スクリーンセーバーで画面を消せばセキュリティ上も安心です。
HDDはOSXとLinuxで2OSにします。
インタネットへはLAN上にあるルータ経由で接続します。
というか、aptを多用するので最低ADSL常時接続が無いと話になりません!
本文で特に指定されていない部分は、rootの権限で作業します。
ネットワーク構成は以下を仮定します。
目次
インストールの種類は基本的に全部入れましょう。
PowerBook以外の場合はPowerbook専用は外しても良いです。
HDDは全部で1.8GB程度消費します。
パーティションは以下の割り当てをお勧めします。
8GB制限のあるiMac(Rev.A-D)では1-3迄の合計が8GBを超えないようにしてください!
5.以下は適宜増減してください。
また、MacOSを積極的に使う場合はデータ用にもう1つパーティションを用意したほうが良いでしょう。
6GBではOSだけでいっぱいになります。
1.ブートセレクタ用(magicboot) HFS標準 32MB /magicboot 2.Linux ルートパーティション HFS標準 1000MB / 3.MacOS用(9/X兼用可能) HFS拡張 6000MB 4.Linux swap HFS標準 128MB swap 5.Linux /home HFS標準 2000MB /home 6Linux /usr HFS標準 4000MB /usr 7.Linux /var HFS標準 残り全部 /var ネットワークは外部からのコネクションを受け付ける必要があるのでLAN側のIPアドレスを固定にしました.
仮にもサーバであればDHCPでIPアドレスを自動取得するのは止めたほうが無難です。
ホスト名はとりあえずje4smq.spd.jpにしました。
タイムゾーンはASIA/Tokyoですね。
アカウントの設定はrootのパスワード設定は言うに及ばず、インストール後に必ず1つはユーザを作って普段はそのユーザで作業しましょう。
インストール終了後にもじら等で実際にインタネットに接続してみてうまくいけばとりあえずはokです。
今回はなるべくコンパイルを避けたいです。
Fedoraとかだとコンパイル無しも可能だそうですが、Vineは残念ながらカーネルの再構築だけは必要です。
大概は
# apt-get install パッケージ名
で大丈夫ですが、PowerPC版のバイナリが無いパッケージもかなりあります。
その場合は、
# apt-get -b source パッケージ名
でソースからコンパイルします。
カレントディレクトリに出来たRPMディレクトリ以下にバイナリのrpmが出来ますから、rpm -ivhでインストールしましょう。
コンパイルエラーが出る場合はがんばって修正してください(^^;
大概足りないパッケージがあるから出るようです。
1.Webmin
何は無くてもWebminです。
設定作業が格段に楽です。
# apt-get -b source webmin
でソースからコンパイルします。
https://localhost:10000 に接続すると各種の設定が可能です。
Postfixの設定が出来るのはかなりおいしいです。
2.その他
sambaがあるとWindowsマシンにファイルのバックアップを簡単にコピー出来るので便利です。
インストール後はWebminで設定できます。
# apt-get install samba
3.カーネルソース
カーネルパッケージのアップグレードを参照してください。
# 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シリアルアダプタを使うのでその関係も全てYかMにしておきます。
5)保存して終了する
参考のために出来上がった設定ファイルをここに置いておきます。
.configという名前に変更して(頭のドットに注意)/usr/src/linuxにコピーして下さい。
6)コンパイル開始。
PowerPCにはi386のようなコンベンショナルメモリはありませんので、圧縮カーネルである必要がありません。
普通にvmlinuxを作ります。
# make dep ; make clean ; make vmlinux ; make modules ;make modules_install
7)再構築後のカーネルを/bootにコピー
# cp /usr/src/linux/vmlinux /boot/vmlinuz.new
8)/etc/yaboot.confの修正
要は今ある内容をコピーして、imageとlabelを書き換えるだけです。
###############################################################
## yaboot.conf for ybin and yaboot >= 0.6
## generated by xybin for Vine Linux.
## see man yaboot.conf for more details.
## bootstrap partition
## - its type must be Apple_HFS or Apple_Bootstrap
boot=/dev/hda6
###############################################################
## First stage bootloader options
##
## default os to boot
defaultos=linux
## timeout (in seconds) to boot into default os
delay=10
## other options - see man yaboot.conf for details
protect
###############################################################
## Second stage linux bootloader options
##
install=/usr/lib/yaboot/yaboot
magicboot=/usr/lib/yaboot/ofboot
## init messages to show
## you can customize the message as you wish
init-message="\nWelcome to Vine Linux!\n\nHit <TAB> for boot options.\n\n"
## timeout (in tenth of a second) to load default kernel image
timeout=100
## default Linux label to boot (only by pressing return key)
#linux → linuxax25に変更
default=linuxax25
## image is the kernel itself, commonly kept in /boot.
## Note that /boot should generally not be its own paritions
## on powerpcs, it's not necessary and compilicats things.
## /boot should never be an HFS filesystem. You may point image=
## to a symbolic link as long as the symlink does not cross
## partition boundaries.
image=/pci@80000000/mac-io@10/ide@20000/disk@0:7,/boot/vmlinux-2.4.26-0vl17
label=linux
root=/dev/hda7
read-only
append=" "
#ここから追加
image=/pci@80000000/mac-io@10/ide@20000/disk@0:7,/boot/vmlinux.new
label=linuxax25
root=/dev/hda7
read-only
append=" "
#ここまで追加## MacOS partition
macos=/dev/hda8
## MacOSX partition
macosx=/dev/hda8
brokenosx9)ybinを実行して認識させる。
# /usr/sbin/ybin -v
再起動して無事起動するか確認して下さい。
うまく起動しない場合は再起動させ、2nd StageのBoot:でlinuxを入力するとインストール時のカーネルが起動します。
ソースからコンパイルします。
まず、前準備としてncurses-develをインストールしてください。
# apt-get install ncurses-devel
次にここから以下のファイルを探します。
拡張子違いのよく似た名前のファイルもあるので注意してください。
libax25-0.0.11.tar.gz
ax25-apps-0.0.5p2.tar.gz
ax25-tools-0.0.8.tar.gz
/usr/local/srcあたりに置いて、tar zxvf ファイル名で展開します。
コンパイルですが、必ずlibax25から行ってください。
展開後のディレクトリにcdして、各々で
# ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
# make
# make install
# make installconf
受信したパケットを表示するlistenは、そのままだとroot権限が無いと動きません。
どうしても一般ユーザで動かしたい場合は、
# chmod +s /usr/bin/listen
でsetuidしておけば動作するようになります。
je4smq.spd.jpからja5cwz.sman.jpへアマチュア無線経由で通信可能にする例です。
RS-232Cが無いので、USBシリアル変換機を使えるようにします。
ヒッツコミュニケーションという会社の怪しいUSBシリアル変換機を使ってみました。
こちらを参考にしました。
まずベンダー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がデバイス名です。
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無線ポートの初期設定を行う/etc/rc.d/rc.ax25を作りましょう。
この例では/dev/ttyUSB0にKPC-4が接続されています。
#!/bin/sh
echo 'module activate'
/sbin/insmod pl2303 vendor=0x557 product=0x2008
/sbin/insmod ax25
/sbin/insmod netrom
/sbin/insmod rose
/sbin/insmod mkissecho 'KPC-4 2port'
/usr/sbin/mkiss -s 9600 -h /dev/ttyUSB0 /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 216echo 'route set'
/sbin/route add -host cwz ax0
/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)他にも必要ですが、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-2.3.5をコンパイルしてみました。
まず、byaccが無いので、
# apt-get install byacc
でインストールして下さい。
ここからinn-2.3.5.tar.gz を落としてください。
/usr/local/srcに置いて。
# tar zxvf inn-2.3.5.tar.gz
で展開します。
# cd inn-2.3.5.tar-gz
#./configure
# make
# make install
でコンパイル完了です。
/etc/syslog.confにログを残す設定をしておきましょう。
トラブル時に役に立ちます。
news.crit /var/log/news/news.crit
news.err /var/log/news/news.err
news.notice /var/log/news/news.noticeここからはinnの起動が成功するまでnewsの権限で作業です。
# su
# su news
/usr/local/news/etc/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
/usr/local/news/etc/newsfeeds(抜粋)
今はnntp以外はまず使わないでしょうね。
MEの行は必須です。
ME:!*::
#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 sman {
hostname: "ja5cwz.sman.jp"
}/usr/local/news/etc/readers.conf(抜粋)
ニュースリーダからの接続を許可する相手の設定です。
とりあえずLinux Server自分自身ローカルのLANのみ許可します。
ファイルの最後に追加してください。
auth "local" {
hosts: "172.24.1.0/24"
default: "<local>@host.domain"
}
access "local" {
users: "<local>@host.domain"
newsgroups: "*"
}/usr/local/news/etc/nntpsend.ctl(抜粋)
ニュースを送る相手を登録します。
この設定で、ある程度以上無通信の場合は自動的にNNTPコネクションを切断します。
ja5cwz:ja5cwz.sman.jp:1m:-T1800 -t300
/usr/local/news/etc/strage.conf
上のほうにある該当行のコメントを外すだけです。
method timehash {
newsgroups: *
class: 0
}/usr/local/news/db/active
ニュースグループ一覧です。
大きいので、こちらからどうぞ。
ここまで設定できたら
$ innchech
で設定ファイルを確認します。
/usr/local/news/newsfeeds:0: warning you accept all incoming article distributions
このエラーは無視できますが、他の内容の場合は必ずエラー内容を確認して指示に従って修正してください。
間違えていたら指示に従って修正してください。
具体的にエラーが出ます。
次にhistoryファイルの再構築をします。
$ cd /usr/local/news/db
$ /usr/local/news/bin/makehistory
$ /usr/local/news/bin/makedbz -s `wc -l < history` -f history
最低限の設定が完成したので、いよいよ起動実験をします。
$ /usr/local/news/etc/rc.news
動作チェック
news serverと通信出来るか確認します。
$ telnet localhost nntp
200 je4smq InterNetNews NNRP server INN 2.3.5 ready (posting ok). と出たら成功です。
quit
で終了しましょう。
良さそうならSylpheedにアカウントを作って投稿テストをしましょう。
[設定]-[新規アカウントの作成]です。
問題無さそうならサービスの設定から自動起動するようにしましょう。
自動起動のために/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一度OSを再起動して、きちんとinndが動いているか確認します。
inndの行が出てくればOKです。
[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
0 5 * * 1 news /usr/local/news/bin/expireover -s
6 0 * * * news /usr/local/news/bin/news.daily delayrm
ここまででメールとニュースが通せるようになりました。
Mac版Vineはちょっと手間が掛かりますね。
インターネット用の多くがそのまま無線でも使えるので、挑戦してみてください。
ちなみに何もしなくてもWebサーバは動いています。