Проблемы с установкой zaptel
Установил Digium-плату TDM02B в свободный PCI-слот, скачал последнюю стабильную версию драйверов zaptel (1.4.4), распаковал их (исходники) в /usr/src/zaptel и запустил rebuild_zaptel (на всякий случай код скрипта приведён в конце моего сообщения):
# rebuild_zaptel
-------------------------------------------
Rebuilding zaptel drivers
-------------------------------------------
STOPPING ASTERISK
Disconnected from Asterisk server
Asterisk Stopped
STOPPING FOP SERVER
FOP Server Stopped
Notice: Configuration file is /etc/zaptel.conf
line 0: Unable to open master device '/dev/zap/ctl'
1 error(s) detected
Unloading zaptel hardware drivers:.
Removing zaptel module: ERROR: Module zaptel does not exist in /proc/modules
[FAILED]
-------------------------------------------
Kernel setup
-------------------------------------------
Kernel version: 2.6.18-8.el5
Kernel directory: 2.6.18-8.el5-i686
Modules directory: /lib/modules/2.6.18-8.el5/extra
-----------------------------------------------------
Seting up links to kernel sources
-----------------------------------------------------
ln: creating symbolic link `/usr/src/linux' to `/usr/src/kernels/2.6.18-8.el5-i6
86': File exists
ls: linux: No such file or directory
Link linux:
ln: creating symbolic link `/usr/src/linux-2.6' to `/usr/src/kernels/2.6.18-8.el
5-i686': File exists
ls: linux-2.6: No such file or directory
Link linux-2.6:
...
...
...
Вообщем, прихожу к выводу, что в моём дистрибутиве отсутствуют исходники ядра, необходимые для компиляции zaptel-драйверов, которые rebuild_zaptel ожидает увидеть в директории /usr/src/kernels/2.6.18-8.el5-i686 (версия моего ядра - 2.6.18-8.el5).
Я скачал 50 Mb исходников ядра для моей версии вот отсюда - http://www.eu.kernel.org/pub/linux/kerne ... 8.8.tar.gz - хотя, признаться честно, не совсем уверен, что это именно то, что нужно. Вообщем, распаковал я эти исходники в директории /usr/src/kernels/2.6.18-8.el5-i686 как и хотел rebuild_zaptel и запустил его снова:
# rebuild_zaptel
-------------------------------------------
Rebuilding zaptel drivers
-------------------------------------------
STOPPING ASTERISK
Disconnected from Asterisk server
Asterisk Stopped
STOPPING FOP SERVER
FOP Server Stopped
Notice: Configuration file is /etc/zaptel.conf
line 0: Unable to open master device '/dev/zap/ctl'
1 error(s) detected
Unloading zaptel hardware drivers:.
Removing zaptel module: ERROR: Module zaptel does not exist in /proc/modules
[FAILED]
-------------------------------------------
Kernel setup
-------------------------------------------
Kernel version: 2.6.18-8.el5
Kernel directory: 2.6.18-8.el5-i686
Modules directory: /lib/modules/2.6.18-8.el5/extra
-----------------------------------------------------
Seting up links to kernel sources
-----------------------------------------------------
ls: linux: No such file or directory
Link linux:
ls: linux-2.6: No such file or directory
Link linux-2.6:
grep: /lib/modules/2.6.18-8.el5/build/include/linux/autoconf.h: No such file or directory
install -d /etc/udev/rules.d
build_tools/genudevrules > /etc/udev/rules.d/zaptel.rules
grep: /lib/modules/2.6.18-8.el5/build/include/linux/autoconf.h: No such file or directory
make[1]: Entering directory `/usr/src/zaptel/menuselect'
rm -f menuselect gmenuselect *.o
make[2]: Entering directory `/usr/src/zaptel/menuselect/mxml'
/bin/rm -f mxmldoc.o testmxml.o mxml-attr.o mxml-entity.o mxml-file.o mxml-index.o mxml-node.o mxml-search.o mxml-set.o
mxml-private.o mxml-string.o libmxml.a mxmldoc doc/mxml.3 doc/mxmldoc.1 testmxml mxml.xml
/bin/rm -f mxmldoc-static libmxml.a
/bin/rm -f *.bck *.bak
/bin/rm -f config.cache config.log config.status config.h
/bin/rm -f -r autom4te*.cache
make[2]: Leaving directory `/usr/src/zaptel/menuselect/mxml'
make[1]: Leaving directory `/usr/src/zaptel/menuselect'
rm -f torisatool makefw tor2fw.h radfw.h
rm -f fxotune fxstest sethdlc-new ztcfg ztdiag ztmonitor ztspeed zttest zttool
rm -f *.o ztcfg tzdriver sethdlc sethdlc-new
rm -f libtonezone.so libtonezone.a *.lo
make -C /lib/modules/2.6.18-8.el5/build SUBDIRS=/usr/src/zaptel clean
make[1]: Entering directory `/usr/src/kernels/2.6.18-8.el5-i686'
grep: /lib/modules/2.6.18-8.el5/build/include/linux/autoconf.h: No such file or directory
cc1: error: include/linux/autoconf.h: No such file or directory
CLEAN /usr/src/zaptel/.tmp_versions
make[1]: Leaving directory `/usr/src/kernels/2.6.18-8.el5-i686'
make -C xpp/utils clean
make[1]: Entering directory `/usr/src/zaptel/xpp/utils'
rm -f *.o init_fxo_modes print_modes zt_registration.8 xpp_sync.8 lszaptel.8 xpp_blink.8 zapconf.8 zaptel_hardware.8
make[1]: Leaving directory `/usr/src/zaptel/xpp/utils'
make -C firmware clean
make[1]: Entering directory `/usr/src/zaptel/firmware'
rm -f zaptel-fw-*.o
make[1]: Leaving directory `/usr/src/zaptel/firmware'
rm -rf .tmp_versions
rm -f gendigits tones.h
rm -f libtonezone*
rm -f tor2ee
rm -f fxotune
rm -f core
rm -f ztcfg-shared fxstest
rm -rf misdn*
rm -rf mISDNuser*
grep: /lib/modules/2.6.18-8.el5/build/include/linux/autoconf.h: No such file or directory
make[1]: Entering directory `/usr/src/zaptel/menuselect'
make[2]: Entering directory `/usr/src/zaptel/menuselect'
make[3]: Entering directory `/usr/src/zaptel/menuselect/mxml'
if test -f config.status; then \
./config.status --recheck; \
./config.status; \
else \
./configure; \
fi
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking for ranlib... ranlib
checking for ar... /usr/bin/ar
checking for cp... /bin/cp
checking for ln... /bin/ln -s -s -s -s -s
checking for mkdir... /bin/mkdir
checking for nroff... /usr/bin/nroff
checking for rm... /bin/rm
checking for strdup... yes
checking for vsnprintf... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating mxml.list
config.status: creating mxml.pc
config.status: creating config.h
touch config.h
gcc -O -Wall -O -Wall -O -Wall -O -Wall -O -Wall -c mxml-attr.c
gcc -O -Wall -O -Wall -O -Wall -O -Wall -O -Wall -c mxml-entity.c
gcc -O -Wall -O -Wall -O -Wall -O -Wall -O -Wall -c mxml-file.c
gcc -O -Wall -O -Wall -O -Wall -O -Wall -O -Wall -c mxml-index.c
gcc -O -Wall -O -Wall -O -Wall -O -Wall -O -Wall -c mxml-node.c
gcc -O -Wall -O -Wall -O -Wall -O -Wall -O -Wall -c mxml-search.c
gcc -O -Wall -O -Wall -O -Wall -O -Wall -O -Wall -c mxml-set.c
gcc -O -Wall -O -Wall -O -Wall -O -Wall -O -Wall -c mxml-private.c
gcc -O -Wall -O -Wall -O -Wall -O -Wall -O -Wall -c mxml-string.c
/bin/rm -f libmxml.a
/usr/bin/ar crvs libmxml.a mxml-attr.o mxml-entity.o mxml-file.o mxml-index.o mxml-node.o mxml-search.o mxml-set.o
mxml-private.o mxml-string.o
a - mxml-attr.o
a - mxml-entity.o
a - mxml-file.o
a - mxml-index.o
a - mxml-node.o
a - mxml-search.o
a - mxml-set.o
a - mxml-private.o
a - mxml-string.o
ranlib libmxml.a
make[3]: Leaving directory `/usr/src/zaptel/menuselect/mxml'
gcc -Wall -o menuselect.o -g -c -D_GNU_SOURCE menuselect.c
gcc -Wall -o menuselect_curses.o -g -c -D_GNU_SOURCE menuselect_curses.c
gcc -Wall -o strcompat.o -g -c -D_GNU_SOURCE strcompat.c
gcc -g -Wall -o menuselect menuselect.o menuselect_curses.o strcompat.o mxml/libmxml.a -lncurses
make[2]: Leaving directory `/usr/src/zaptel/menuselect'
make[1]: Leaving directory `/usr/src/zaptel/menuselect'
grep: /lib/modules/2.6.18-8.el5/build/include/linux/autoconf.h: No such file or directory
make: *** No rule to make target `linux26'. Stop.
grep: /lib/modules/2.6.18-8.el5/build/include/linux/autoconf.h: No such file or directory
gcc -g -c -DSTANDALONE_ZAPATA -DBUILDING_TONEZONE -DHOTPLUG_FIRMWARE -I. -O4 -g -Wall -DBUILDING_TONEZONE
-DSTANDALONE_ZAPATA -DZAPTEL_CONFIG=\"/etc/zaptel.conf\" -o zttool.o zttool.c
gcc zttool.o -lnewt -o zttool
grep: /lib/modules/2.6.18-8.el5/build/include/linux/autoconf.h: No such file or directory
grep: /lib/modules/2.6.18-8.el5/build/include/linux/autoconf.h: No such file or directory
make[1]: Entering directory `/usr/src/zaptel'
gcc gendigits.c -lm -o gendigits
./gendigits > tones.h
gcc -o makefw makefw.c
./makefw tormenta2.rbt tor2fw > tor2fw.h
Loaded 69900 bytes from file
./makefw pciradio.rbt radfw > radfw.h
Loaded 42096 bytes from file
make -C /lib/modules/2.6.18-8.el5/build SUBDIRS=/usr/src/zaptel modules
make[2]: Entering directory `/usr/src/kernels/2.6.18-8.el5-i686'
ERROR: Kernel configuration is invalid.
include/linux/autoconf.h or include/config/auto.conf are missing.
Run 'make oldconfig && make prepare' on kernel src to fix it.
WARNING: Symbol version dump /usr/src/kernels/2.6.18-8.el5-i686/Module.symvers
is missing; modules will have no dependencies and modversions.
grep: /lib/modules/2.6.18-8.el5/build/include/linux/autoconf.h: No such file or directory
CC [M] /usr/src/zaptel/pciradio.o
cc1: error: include/linux/autoconf.h: No such file or directory
+
ещё куча всякого барахла...
После этого запустил 'make oldconfig && make prepare' в директории исходников ядра и снова запустил rebuild_zaptel:
# rebuild_zaptel
-------------------------------------------
Rebuilding zaptel drivers
-------------------------------------------
STOPPING ASTERISK
STOPPING FOP SERVER
Notice: Configuration file is /etc/zaptel.conf
line 0: Unable to open master device '/dev/zap/ctl'
1 error(s) detected
Unloading zaptel hardware drivers:.
Removing zaptel module: ERROR: Module zaptel does not exist in /proc/modules
[FAILED]
-------------------------------------------
Kernel setup
-------------------------------------------
Kernel version: 2.6.18-8.el5
Kernel directory: 2.6.18-8.el5-i686
Modules directory: /lib/modules/2.6.18-8.el5/extra
-----------------------------------------------------
Seting up links to kernel sources
-----------------------------------------------------
ls: linux: No such file or directory
Link linux:
ls: linux-2.6: No such file or directory
Link linux-2.6:
install -d /etc/udev/rules.d
build_tools/genudevrules > /etc/udev/rules.d/zaptel.rules
make[1]: Entering directory `/usr/src/zaptel/menuselect'
rm -f menuselect gmenuselect *.o
make[2]: Entering directory `/usr/src/zaptel/menuselect/mxml'
/bin/rm -f mxmldoc.o testmxml.o mxml-attr.o mxml-entity.o mxml-file.o mxml-index.o mxml-node.o mxml-search.o mxml-set.o
mxml-private.o mxml-string.o libmxml.a mxmldoc doc/mxml.3 doc/mxmldoc.1 testmxml mxml.xml
/bin/rm -f mxmldoc-static libmxml.a
/bin/rm -f *.bck *.bak
/bin/rm -f config.cache config.log config.status config.h
/bin/rm -f -r autom4te*.cache
make[2]: Leaving directory `/usr/src/zaptel/menuselect/mxml'
make[1]: Leaving directory `/usr/src/zaptel/menuselect'
rm -f torisatool makefw tor2fw.h radfw.h
rm -f fxotune fxstest sethdlc-new ztcfg ztdiag ztmonitor ztspeed zttest zttool
rm -f *.o ztcfg tzdriver sethdlc sethdlc-new
rm -f libtonezone.so libtonezone.a *.lo
make -C /lib/modules/2.6.18-8.el5/build SUBDIRS=/usr/src/zaptel clean
make[1]: Entering directory `/usr/src/kernels/2.6.18-8.el5-i686'
CLEAN /usr/src/zaptel/.tmp_versions
make[1]: Leaving directory `/usr/src/kernels/2.6.18-8.el5-i686'
make -C xpp/utils clean
make[1]: Entering directory `/usr/src/zaptel/xpp/utils'
rm -f *.o init_fxo_modes print_modes zt_registration.8 xpp_sync.8 lszaptel.8 xpp_blink.8 zapconf.8 zaptel_hardware.8
make[1]: Leaving directory `/usr/src/zaptel/xpp/utils'
make -C firmware clean
make[1]: Entering directory `/usr/src/zaptel/firmware'
rm -f zaptel-fw-*.o
make[1]: Leaving directory `/usr/src/zaptel/firmware'
rm -rf .tmp_versions
rm -f gendigits tones.h
rm -f libtonezone*
rm -f tor2ee
rm -f fxotune
rm -f core
rm -f ztcfg-shared fxstest
rm -rf misdn*
rm -rf mISDNuser*
make[1]: Entering directory `/usr/src/zaptel/menuselect'
make[2]: Entering directory `/usr/src/zaptel/menuselect'
make[3]: Entering directory `/usr/src/zaptel/menuselect/mxml'
if test -f config.status; then \
./config.status --recheck; \
./config.status; \
else \
./configure; \
fi
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking for ranlib... ranlib
checking for ar... /usr/bin/ar
checking for cp... /bin/cp
checking for ln... /bin/ln -s -s -s -s -s -s -s
checking for mkdir... /bin/mkdir
checking for nroff... /usr/bin/nroff
checking for rm... /bin/rm
checking for strdup... yes
checking for vsnprintf... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating mxml.list
config.status: creating mxml.pc
config.status: creating config.h
touch config.h
gcc -O -Wall -O -Wall -O -Wall -O -Wall -O -Wall -O -Wall -O -Wall -c mxml-attr.c
gcc -O -Wall -O -Wall -O -Wall -O -Wall -O -Wall -O -Wall -O -Wall -c mxml-entity.c
gcc -O -Wall -O -Wall -O -Wall -O -Wall -O -Wall -O -Wall -O -Wall -c mxml-file.c
gcc -O -Wall -O -Wall -O -Wall -O -Wall -O -Wall -O -Wall -O -Wall -c mxml-index.c
gcc -O -Wall -O -Wall -O -Wall -O -Wall -O -Wall -O -Wall -O -Wall -c mxml-node.c
gcc -O -Wall -O -Wall -O -Wall -O -Wall -O -Wall -O -Wall -O -Wall -c mxml-search.c
gcc -O -Wall -O -Wall -O -Wall -O -Wall -O -Wall -O -Wall -O -Wall -c mxml-set.c
gcc -O -Wall -O -Wall -O -Wall -O -Wall -O -Wall -O -Wall -O -Wall -c mxml-private.c
gcc -O -Wall -O -Wall -O -Wall -O -Wall -O -Wall -O -Wall -O -Wall -c mxml-string.c
/bin/rm -f libmxml.a
/usr/bin/ar crvs libmxml.a mxml-attr.o mxml-entity.o mxml-file.o mxml-index.o mxml-node.o mxml-search.o mxml-set.o
mxml-private.o mxml-string.o
a - mxml-attr.o
a - mxml-entity.o
a - mxml-file.o
a - mxml-index.o
a - mxml-node.o
a - mxml-search.o
a - mxml-set.o
a - mxml-private.o
a - mxml-string.o
ranlib libmxml.a
make[3]: Leaving directory `/usr/src/zaptel/menuselect/mxml'
gcc -Wall -o menuselect.o -g -c -D_GNU_SOURCE menuselect.c
gcc -Wall -o menuselect_curses.o -g -c -D_GNU_SOURCE menuselect_curses.c
gcc -Wall -o strcompat.o -g -c -D_GNU_SOURCE strcompat.c
gcc -g -Wall -o menuselect menuselect.o menuselect_curses.o strcompat.o mxml/libmxml.a -lncurses
make[2]: Leaving directory `/usr/src/zaptel/menuselect'
make[1]: Leaving directory `/usr/src/zaptel/menuselect'
make: *** No rule to make target `linux26'. Stop.
gcc -g -c -DSTANDALONE_ZAPATA -DBUILDING_TONEZONE -DHOTPLUG_FIRMWARE -I. -O4 -g -Wall -DBUILDING_TONEZONE
-DSTANDALONE_ZAPATA -DZAPTEL_CONFIG=\"/etc/zaptel.conf\" -o zttool.o zttool.c
gcc zttool.o -lnewt -o zttool
make[1]: Entering directory `/usr/src/zaptel'
gcc gendigits.c -lm -o gendigits
./gendigits > tones.h
gcc -o makefw makefw.c
./makefw tormenta2.rbt tor2fw > tor2fw.h
Loaded 69900 bytes from file
./makefw pciradio.rbt radfw > radfw.h
Loaded 42096 bytes from file
make -C /lib/modules/2.6.18-8.el5/build SUBDIRS=/usr/src/zaptel modules
make[2]: Entering directory `/usr/src/kernels/2.6.18-8.el5-i686'
WARNING: Symbol version dump /usr/src/kernels/2.6.18-8.el5-i686/Module.symvers
is missing; modules will have no dependencies and modversions.
CC [M] /usr/src/zaptel/pciradio.o
CC [M] /usr/src/zaptel/tor2.o
CC [M] /usr/src/zaptel/torisa.o
CC [M] /usr/src/zaptel/wcfxo.o
CC [M] /usr/src/zaptel/wct1xxp.o
CC [M] /usr/src/zaptel/wctdm.o
CC [M] /usr/src/zaptel/wctdm24xxp.o
CC [M] /usr/src/zaptel/wcte11xp.o
CC [M] /usr/src/zaptel/wcusb.o
CC [M] /usr/src/zaptel/zaptel-base.o
/bin/sh: scripts/genksyms/genksyms: No such file or directory
make[3]: *** [/usr/src/zaptel/zaptel-base.o] Error 1
make[2]: *** [_module_/usr/src/zaptel] Error 2
make[2]: Leaving directory `/usr/src/kernels/2.6.18-8.el5-i686'
make[1]: *** [modules] Error 2
make[1]: Leaving directory `/usr/src/zaptel'
make: *** [all] Error 2
Loading zaptel framework: FATAL: Could not open '/lib/modules/2.6.18-8.el5/misc/zaptel.ko': No such file or directory
[FAILED]
Waiting for zap to come online...Error: missing /dev/zap!
SETTING FILE PERMISSIONS
Permissions OK
STARTING ASTERISK
Asterisk Started
STARTING FOP SERVER
FOP Server Started
Done.
#
Вообщем, на этом этапе у меня нет никаких идей что может быть не так...
P.S. Код скрипта rebuild_zaptel:
#!/bin/sh
echo "-------------------------------------------"
echo "Rebuilding zaptel drivers"
echo "-------------------------------------------"
amportal stop
/etc/init.d/zaptel stop
echo "-------------------------------------------"
echo "Kernel setup"
echo "-------------------------------------------"
SOURCE_DIRECTORY=/usr/src
KERNEL_VERSION=`uname -r`
MODULES_DIRECTORY=/lib/modules/$KERNEL_VERSION/extra
if [ Psmp = P`uname -r|grep -o smp` ]
then
KERNEL_DIRECTORY=${KERNEL_VERSION%%smp}-smp-`uname -m`
KERNEL_CPU=smp
else
KERNEL_DIRECTORY=$KERNEL_VERSION-`uname -m`
KERNEL_CPU=one
fi
echo -e "Kernel version:\t\t$KERNEL_VERSION"
echo -e "Kernel directory:\t$KERNEL_DIRECTORY"
echo -e "Modules directory:\t$MODULES_DIRECTORY"
# check that the kernel libraries for the currently running kernel are present
# if not try and install or update them
echo ""
echo "-----------------------------------------------------"
echo "Seting up links to kernel sources"
echo "-----------------------------------------------------"
echo ""
### If the links exist, remove them in case they are pointing to another version of the kernel.
if [ -d /usr/src/linux/ ]
then
rm -f /usr/src/linux
fi
ln -s $SOURCE_DIRECTORY/kernels/$KERNEL_DIRECTORY /usr/src/linux
echo -e "Link linux:\t\t`ls -l linux`"
if [ -d /usr/src/linux-2.6/ ]
then
rm -f /usr/src/linux-2.6
fi
ln -s $SOURCE_DIRECTORY/kernels/$KERNEL_DIRECTORY /usr/src/linux-2.6
echo -e "Link linux-2.6:\t\t`ls -l linux-2.6`"
cd /usr/src/zaptel
make install-udev
make clean
make linux26
make zttool
make install
/etc/init.d/zaptel start
amportal start
echo "Done."
Если RedHat, то yum'ом, если Mandriva - urpmi.
Что-то в духе urpmi kernel-source.
Тогда в /usr/src поставятся все необходимые исходники ядра со всеми патчами от производителя дистрибутива, отконфигурированные именно так, как оно сейчас работает в вашей системе, и будут созданы все необходимые симлинки.