Asteriskインストールメモ

提供: VoIP-Info.jp
2008年2月23日 (土) 21:34時点におけるTakahashi (トーク | 投稿記録)による版 (Asterisk + 非Intel x86)
移動先: 案内検索

AsteriskおよびZaptelのインストールでOS依存部分などのまとめページです。

Zaptel + CentOS 4.3

RedHatのカーネルソースバグによりZaptelのコンパイルが通りません。

まずカーネルのリリースとアーキテクチャを確認します。

# uname -rm

2.6.9-34.0.2.EL i686次に該当するカーネルソースのinclude/linuxディレクトリへ移動します。

# cd /usr/src/kernels/2.6.9-34.EL-i686/include/linux/

ファイルspinlock.hの以下の部分を探します。

#define DEFINE_RWLOCK(x)      rw_lock_t x = RW_LOCK_UNLOCKED

この行を以下のように修正します。

#define DEFINE_RWLOCK(x)      rwlock_t x = RW_LOCK_UNLOCKED

これでZaptelのコンパイルが通るようになります。

Zaptel + Fedora Core 5

とりあえずカーネルを最新のtestバージョンに上げます。

(注:testバージョンに上げなくてもできるかもしれません。どなたか追試を!)

# yum --enablerepo=updates-testing update kernel kernel-devel

リリースとアーキテクチャを確認します。

# uname -rm
2.6.17-1.2159_FC5 i686

カーネルソースをこのあたりから入手し、rpmでインストールしておきます。

rpmbuildします。

# rpmbuild -bp --target i686 /usr/src/redhat/SPECS/kernel-2.6.spec

カーネルソースをZaptelが期待している場所へ移動します。

# mkdir /usr/src/kernels
# mv /usr/src/redhat/BUILD/kernel-2.6.17/linux-2.6.17.i686 /usr/src/kernels/2.6.17-1.2159_FC5-i686

カーネルソースのMakeを若干修正します。

# cd /usr/src/kernels/2.6.17-1.2159_FC5-i686

このディレクトリにあるMakefileのEXTRAVERSIONをコメントアウトします。

VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 17
#EXTRAVERSION = -prep      <--コメントアウト
NAME=Crazed Snow-Weasel

カーネルをconfigしますがファイルを若干修正します。

# cp configs/kernel-2.6.17-i686.config ./.config

.configのローカルバージョンを先ほど調べたリリースにあわせて設定します。

#
# General setup
#
CONFIG_LOCALVERSION="-1.2159_FC5"

カーネルソースをconfigします。

# make oldconfig

カーネルモジュールを生成しておきます。

# make modules

ドライバ類(fs/の下など)を作り始めたらCTRL-Cブレークしてかまいません。Zaptelが必要とするスクリプト類ができていればカーネル・モジュールを全て作る必要はありません。 これでZaptelのコンパイルができるようになります。makeとmake install、make configを行ってください。

以上の作業でFC5でZaptelが動作するようになると思います。 (もっとスマートなやり方があれば、このページを更新してください)

ユーザを"asterisk"で動作させる場合にはudevの調整が必要です。zaptel+udevのページを参照してください。

Asterisk + Fedora Core 5

channels/chan_phone.cがversion.hを見に行きたがるため、そのままではコンパイルが通りません。

  • 対策その1

チャネルドライバそのものを、以下のように修正してしまいます。Fedora Core 5はLinux 2.6なので以下の修正で問題はないでしょう。そもそも、このチャネル・モジュール自体も通常は要りませんが・・・。

-----channels/chan_phone.c 40行目付近
/* Still use some IXJ specific stuff */
/*
#include <linux/version.h>
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
*/
# include <linux/compiler.h>
/*
#endif
*/
#include <linux/ixjuser.h>対策その2

chan_phone.cがversion.hを要求するのであれば、それを用意してやります。カーネルソースにあるversion.hを/usr/include/linuxへコピーすればコンパイルが通るようになります。

# cp /usr/src/kernels/2.6.17-1.2159_FC5-i686/include/linux/version.h /usr/include/linux/.


Asterisk + 非Intel x86

非Intelのx86、例えばVIAプロセッサでは、コンパイルが通りますが実行時にエラーになります。通常はMakefileでPROC=i586を指定しますが、 configureを使う版のasteriskの場合はMakefileでの修正が利きません。以下を実行してからmakeしてください。

./configure --build=i586-pc-linux-gnu

Asterisk+Solaris

Asterisk Solarisのページへ