「玄箱Pro Debian+Asterisk」の版間の差分
(→カーネルソースの準備) |
(→DAHDIのコンパイル) |
||
47行目: | 47行目: | ||
obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_ECHOCAN_JPAH) += dahdi_echocan_jpah.o | obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_ECHOCAN_JPAH) += dahdi_echocan_jpah.o | ||
obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_ECHOCAN_STEVE) += dahdi_echocan_sec.o | obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_ECHOCAN_STEVE) += dahdi_echocan_sec.o | ||
− | これでDAHDIをmakeしmake installします。 | + | これでDAHDIをmakeしmake installします。<br> |
+ | 終わったら depmod -a をやっておきます。<br> | ||
+ | 実はこの状態でモジュールをロードしようとすると | ||
+ | debian:~# modprobe dahdi | ||
+ | FATAL: Error inserting dahdi (/lib/modules/2.6.26-2-orion5x/dahdi/dahdi.ko): Invalid module format | ||
+ | このエラーが出てしまいます。解決方法がイマイチよくわからないので、誰か知ってる人がいたら教えてください。<br> | ||
+ | とりあえず、-f オプションで逃げられるので、/etc/init.d/dahdi を以下のように作ってしまいます。 | ||
+ | #! /bin/sh | ||
+ | |||
+ | PATH=/sbin:/usr/sbin:/bin:/usr/bin | ||
+ | DESC="dahdi telephony driver" | ||
+ | NAME=dahdi | ||
+ | |||
+ | DAHDI_MODULE=dahdi | ||
+ | DAHDI_DUMMY=dahdi_dummy | ||
+ | |||
+ | SCRIPTNAME=/etc/init.d/$NAME | ||
+ | |||
+ | do_start() | ||
+ | { | ||
+ | modprobe -f dahdi | ||
+ | modprobe -f dahdi_dummy | ||
+ | } | ||
+ | |||
+ | do_stop() | ||
+ | { | ||
+ | rmmod dahdi_dummy | ||
+ | rmmod dahdi | ||
+ | } | ||
+ | |||
+ | case "$1" in | ||
+ | start) | ||
+ | do_start | ||
+ | ;; | ||
+ | stop) | ||
+ | do_stop | ||
+ | ;; | ||
+ | reload) | ||
+ | do_stop | ||
+ | do_start | ||
+ | ;; | ||
+ | *) | ||
+ | echo "Usage: $SCRIPTNAME {start|stop|reload}" >&2 | ||
+ | exit 3 | ||
+ | ;; | ||
+ | esac | ||
==Asterisk== | ==Asterisk== |
2009年11月7日 (土) 19:05時点における版
玄箱ProをDebian化する
このへんを参考にDebian化しちゃってください。後はDebianとして扱えますので・・・
コンパイル環境を整える
Debian化したならば、以下のパッケージを追加してAsteriskがコンパイルできるようにします。
gcc g++ libc6-dev make linux-libc-dev ncurses-dev perl-modules patch
# apt-get install gcc g++ libc6-dev make linux-libc-dev ncurses-dev perl-modules patch
いろいろと一緒に付いてくるものもインストールしてしまってください。
DAHDI
カーネルソースの準備
カーネルソースを/usr/srcに展開します。カーネルソースはlinux-libc-devに付いてきます。これを/usr/src/の下で展開し、ln -s linux-source-2.6.26 /usr/src/linux などしてシンボリックリンクを作成しておきます。
カーネルモジュールをを途中までコンパイルします。一旦、make menuconfigなどして.configを作ります。カーネルそのものを入れ換えるわけではないので、設定は適当でもかまいません。
.configファイルのバージョンを以下のように書き直します。(menuconfigで設定してもかまいませんが)
CONFIG_INIT_ENV_ARG_LIMIT=32 CONFIG_LOCALVERSION="-2-orion5x" <これ 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
DAHDIのコンパイル
玄箱ではどのみちdahdi_dummyしか使えないので、余計なものをコンパイル&インストールするのは無駄です。必要なものだけをコンパイルするには以下のように行います。
DAHDIのソースを展開します。今ならDAHDI Completeを落としてきてください。
linux/drivers/dahdi/Kbuild を編集します。要らないものをコメントアウトします。
obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI) += dahdi.o obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_DUMMY) += dahdi_dummy.o #obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_DYNAMIC) += dahdi_dynamic.o #obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_DYNAMIC_LOC) += dahdi_dynamic_loc.o ~略~ #obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_TOR2) += tor2.o #obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_PCIRADIO) += pciradio.o #obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_XPP) += xpp/ obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_ECHOCAN_JPAH) += dahdi_echocan_jpah.o obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_ECHOCAN_STEVE) += dahdi_echocan_sec.o
これでDAHDIをmakeしmake installします。
終わったら depmod -a をやっておきます。
実はこの状態でモジュールをロードしようとすると
debian:~# modprobe dahdi FATAL: Error inserting dahdi (/lib/modules/2.6.26-2-orion5x/dahdi/dahdi.ko): Invalid module format
このエラーが出てしまいます。解決方法がイマイチよくわからないので、誰か知ってる人がいたら教えてください。
とりあえず、-f オプションで逃げられるので、/etc/init.d/dahdi を以下のように作ってしまいます。
#! /bin/sh PATH=/sbin:/usr/sbin:/bin:/usr/bin DESC="dahdi telephony driver" NAME=dahdi DAHDI_MODULE=dahdi DAHDI_DUMMY=dahdi_dummy SCRIPTNAME=/etc/init.d/$NAME do_start() { modprobe -f dahdi modprobe -f dahdi_dummy } do_stop() { rmmod dahdi_dummy rmmod dahdi } case "$1" in start) do_start ;; stop) do_stop ;; reload) do_stop do_start ;; *) echo "Usage: $SCRIPTNAME {start|stop|reload}" >&2 exit 3 ;; esac
Asterisk
やはりGSM CODECがasmで引っかかります。なので、codecs/gsm/Makefileを例によって修正します。
debian:~# uname -a Linux debian 2.6.26-2-orion5x #1 Thu Nov 5 08:02:07 UTC 2009 armv5tel GNU/Linux
codecs/gsm/Makefile に以下のような行が3箇所ほどあるので
ifeq (, $(findstring $(PROC) , x86_64 amd64 ultrasparc sparc64 arm armv5b armeb hppa2.0 ppc powerpc ppc64 ia64 s390 bfin mipsel mips))
次のように追加しておく
ifeq (, $(findstring $(PROC) , x86_64 amd64 ultrasparc sparc64 arm armv5b armv5tel armeb hppa2.0 ppc powerpc ppc64 ia64 s390 bfin mipsel mips))
armv5bの後ろにarmv5telを追加すればOKです。