Voyage コンパイル
Voyage Linuxを使ってAsteriskをコンパイル(セルフ)する環境の構築方法。
以下はVoyage Linux 0.5.xの場合の情報です。
目次
パッケージの追加
Voyage Linuxをインストールしただけでは開発環境が不足しているため、Asteriskをコンパイルすることができません。そこで以下のパッケージをapt-get installなどで追加します。一緒に付いてくるパッケージがある場合には、それもインストールします。
apt-utils gcc g++ libc-dev make linux-source-2.6.23-voyage linux-kernel-headers ncurses-dev perl-modules patch
Asteriskサーバに使うなら ntp も入れておいた方がいいでしょう。
カーネルソースの準備
カーネルソースを/usr/srcに展開します。
ln -s /usr/src/linux-source-2.6.24-voyage /usr/src/linux などしてシンボリックリンクを作成しておきます。
カーネルモジュールをを途中までコンパイルします。一旦、make menuconfigなどして.configを作ります。カーネルそのものを入れ換えるわけではないので、設定は適当でもかまいません。
.configファイルのバージョンを以下のように書き直します。(menuconfigで設定してもかまいませんが)
CONFIG_INIT_ENV_ARG_LIMIT=32 CONFIG_LOCALVERSION="-486-voyage" <これ CONFIG_LOCALVERSION_AUTO=y
カーネルモジュールをmake modulesでコンパイルします。実際に欲しいのはmodpostコマンドなので、これがコンパイルできればCTRL-Cブレークしてかまいません。ただし、モジュールがコンパイルされていないとzaptel/dahdiのmakeが何ぞ文句言うかもしれませんが。
HOSTCC scripts/mod/file2alias.o HOSTCC scripts/mod/modpost.o HOSTCC scripts/mod/sumversion.o HOSTLD scripts/mod/modpost <--これが出たらCTRL-CブレークしてOK HOSTCC scripts/kallsyms
要求ディスク容量
たかはしは開発環境用にはHDDを入れてますが、上記の条件でAsterisk等をコンパイルした場合の使用量は以下のようになっています。
Filesystem Size Used Avail Use% Mounted on rootfs 4.0G 1.1G 2.7G 29% /
cleanしないでもこの状態なので2GBもあればコンパイル環境ができるでしょう。
UID/GIDの調整
ユーザ名、グループ名をAsteriskで動作させるには以下の調整が必要です。
- /etc/init.d/asterisk スクリプトに以下を追加します。
if ! [ -d /etc/asterisk ] ; then echo "ERROR: /etc/asterisk directory not found" exit 0 fi if ! [ -d /var/run/asterisk ] ; then ---ここから mkdir /rw/var/run/asterisk fi if [ $AST_USER ] ; then chown -R asterisk:asterisk /rw/var/run/asterisk fi ---ここまで
ユーザ名、グループ名の設定は普通に、このスクリプト内のコメントを外します。
# Uncomment the following and set them to the user/groups that you # want to run Asterisk as. NOTE: this requires substantial work to # be sure that Asterisk's environment has permission to write the # files required for its operation, including logs, its comm # socket, the asterisk database, etc. AST_USER="asterisk" AST_GROUP="asterisk"
- /etc/asterisk/asterisk.conf を修正します。
[directories] astetcdir => /etc/asterisk astmoddir => /usr/lib/asterisk/modules astvarlibdir => /var/lib/asterisk astagidir => /var/lib/asterisk/agi-bin astspooldir => /var/spool/asterisk astrundir => /var/run/asterisk <--ここ astlogdir => /var/log/asterisk [options] languageprefix=
Voyage Linuxでは/var/runはメモリディスク上に作成されるため、起動の度にディレクトリを作り直す必要があります。このため、Asteriskの起動スクリプト内で/var/run/asteriskを作り直し、オーナ/グループを設定してやります。