Voyage コンパイル

2009年2月5日 (木) 21:38時点におけるTakahashi (トーク | 投稿記録)による版 (UID/GIDの調整)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)

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を作り直し、オーナ/グループを設定してやります。