wiki:AsteriskDebian

Version 2 (modified by sgk, 13 years ago) (diff)

--

DebianにAsteriskをインストールする。

 来月(2006年10月)にはAsterisk 1.4がリリースされるそうだけど、とりあえずAsterisk 1.2で環境構築を進めるつもり。社内には ユニデンのWonderTalksっていうIPビジネスホンが既設。回線は、ISDN(INS64)1本からTAでアナログ2本に変換している。また、近々、 ひかり電話を導入する予定。これらをうまく接続することができるだろうか。

まずは、DebianにAsteriskをインストールするところから。 どういうわけか、世の中、DebianにAsteriskをインストールする話が少ない。あまり見かけない。 DebianパッケージにもAsteriskがあるから、これをインストールするという手もある。 しかし、Debianってば非常に保守的で、パッケージ化されているのはいまだにAsterisk 1.0。 かといって、どっかの誰かが作ったパッケージを入れるのはちょっと不安。 なにより、日本語対応パッチなどを導入できないのはつらい。 そんなわけで、Asteriskに関してはDebian流に行かず、自分でソースから入れることにする。

Debian etch

Debianのバージョンはどうしよう。 もうすぐ次期バージョンが出るという時に、今さらsargeってのも不毛だ。 Debian etch(カーネル2.6.16-2-686)にインストールすることにする。

Zaptel 1.2.8

Zaptelのカーネルモジュールのビルドはめんどくさいので、Debianに付属の物を使用することとした。 使用したボードは、X100P(コンパチ品)。

# apt-get install zaptel-source
# apt-get install gcc-4.0
# CFLAGS=-DZERO_BATT_RING m-a a-i zaptel
# depmod
# modprobe wcfxo
# apt-get install zaptel

Zaptelモジュールはバイナリでは提供されていない。 Debianのバイナリパッケージのカテゴリに分類されている不思議なソースパッケージ「zaptel-source」をインストールした上で、ビルドする。 ビルドツール「module-assistantm-a)」は自動的にインストールされる。 カーネルをビルドしたのと同じバージョンのコンパイラが必要だが、これは自動的にはインストールされない。 m-aがエラーとなった場合は、エラーログを読んだ上で、必要なコンパイラをインストールしてからやりなおす。 上記の例では、gcc-4.0が必要だった。

m-a a-i」でビルドとインストールが行われる。 「CFLAGS=-DZERO_BATT_RING」が重要。 これをつけなくても一見うまくいっているように見える。 しかし、ISDN TAに接続すると、何度か発着信を行うと「WARNING: Detected alarm on channel 1: Red Alarm」などというエラーが発生して機能しなくなる。

インストールしただけではmodprobeでモジュールファイルがみつからないので、depmodが必要。 あとは、zaptelパッケージ(initスクリプトなど補助ファイル群)をインストールする。

ここまでの作業のままでは、Linuxを再起動するとwcfxoがロードされない。 /etc/modulesに以下の行を追加しておく。 ただし、これはアナログ回線接続ボード(FXOボード)としてX100Pを使う場合。

wcfxo

/etc/zaptel.confは、こんな感じ。

loadzone=jp
defaultzone=jp
fxsks=1-2

あちこちで注意されていることだが、「FXOボードを使用する場合はfxsksを指定する」ことに注意する。 今回はX100Pを2枚使用したので、「fxsks=1-2」とした。 なお、同じボードを2枚使用するとどのボードが1番だろうかと悩むが、想像通り、PCIスロット番号の若い方が1番として認識されるようだ。

うまくいったかどうかのチェック。

# ztcfg -vv

Zaptel Configuration
======================


Channel map:

Channel 01: FXS Kewlstart (Default) (Slaves: 01)
Channel 02: FXS Kewlstart (Default) (Slaves: 02)

2 channels configured.

Asterisk 1.2.12

# apt-get install ncurses-dev
# apt-get install libssl-dev
# apt-get install libtonezone-dev
# apt-get install libpri-dev

libtonezoneは、本来はZaptelのソースに含まれている。 上記の方法によるZaptelのビルドではインストールされないため、別途インストールした。

Asteriskをそのままビルドすると、/etc/usrなどあちこちにインストールされる。 これではめんどくさいので、/usr/local/asteriskにインストールすることにした。

% wget http://ftp.digium.com/pub/asterisk/releases/asterisk-1.2.12.tar.gz
% tar xzf asterisk-1.2.12.tar.gz
% cd asterisk-1.2.12
% INSTALL_PREFIX=/usr/local/asterisk make
% sudo mkdir /usr/local/asterisk
% sudo chown 自分のID /usr/local/asterisk
% INSTALL_PREFIX=/usr/local/asterisk make install
% INSTALL_PREFIX=/usr/local/asterisk make samples

format_mp3

通常、Asteriskでは「mpg123」を使用して保留音を実現している。 Asteriskのパッケージを展開して「make mpg123」を実行すれば、勝手にmpg123のソースパッケージを取得してきてビルドしてくれる。 ところが、Debian etchではビルドがエラーになってしまった。 また、Debianでバイナリパッケージが用意されているmpg123で代用すると再生スピードが極端に遅くて音楽に聞こえないという問題がある。この問題については未調査だが、Debianのmpg123は実際には「mpg321」という代替品である。

そこで、Asteriskのアドオンに含まれるMP3モジュールをインストールする。 インストールすると、Asterisk自身でMP3ファイルを認識できるようになり、mpg123などの外部プレーヤを使用しなくても保留音を再生できる。

% wget http://ftp.digium.com/pub/asterisk/releases/asterisk-addons-1.2.4.tar.gz
% tar xzf asterisk-addons-1.2.4.tar.gz
% cd asterisk-addons-1.2.4/format_mp3
% make INCLUDE=-I../../asterisk-1.2.12/include
% cp format_mp3.so /usr/local/asterisk/usr/lib/asterisk/modules

modules.confで「autoload=yes」としてあれば、モジュールのファイルを投入するだけで認識される。

musiconhold.confは以下のとおり。

[default]
mode=files
directory=/usr/local/asterisk/var/lib/asterisk/mohmp3
random=yes