355 500 произведений, 25 200 авторов.

Электронная библиотека книг » Джим Меггелен » Asterisk™: будущее телефонии Второе издание » Текст книги (страница 7)
Asterisk™: будущее телефонии Второе издание
  • Текст добавлен: 7 октября 2016, 17:17

Текст книги "Asterisk™: будущее телефонии Второе издание"


Автор книги: Джим Меггелен


Соавторы: Джаред Смит,Лейф Мадсен

Жанр:

   

ОС и Сети


сообщить о нарушении

Текущая страница: 7 (всего у книги 41 страниц)

Драйвер ztdummy

Определенные приложения и функции Asterisk для работы требуют наличия устройства синхронизации (Asterisk даже не скомпилирует их, если не найдет такое устройство). Все PCI-устройства производства Digium обеспечивают интерфейс синхронизации с частотой 1 кГц, что соответствует этому требованию. Если необходимых для обеспечения синхронизации PCI-устройств нет, в качестве устройства синхронизации может использоваться драйвер ztdummy. В дистрибутивах на базе ядра Linux 2.4 ztdummy должен использовать синхронизирующие сигналы, обеспечиваемые контроллером UHCI USB.

Многие более старые (и некоторые новые) системы используют чип контроллера OHCI USB, несовместимый с ztdummy. Однако, если используется ядро 2.6, неважно, какой чип контроллера USB применяется в системе.

Драйвер проверяет, загружен ли модуль usb-uhci и не является ли версия ядра ниже 2.4.5. Более старые версии ядра несовместимы с ztdummy. В дистрибутиве на базе ядра 2.6 ztdummy не требует применения USB– контроллера. (Теперь ядро версии 2.6.0 генерирует синхронизирующие сигналы частотой 1 кГц[48]48
  Обратите внимание, что эта характеристика ядра является настраиваемой, поэтому возможно, что некоторые дистрибутивы будут обеспечивать другую частоту, не 1000 Гц; однако в CentOS установлена именно эта частота.


[Закрыть]
, которые драйвер может использовать для согласования; таким образом, аппаратный USB-контроллер больше не нужен.)

Драйверы телефонии Zapata

Компиляция драйверов телефонии Zapata для использования с оборудованием Digium проста; однако из-за различия сред сборки в версиях 1.2 и 1.4 для этого применяются немного разные методы. Сначала необходимо выполнить команду . /configu re, чтобы определить, какие приложения и библиотеки установлены в системе. Это позволит гарантировать наличие всего необходимого для сборки Zaptel. Выполнение следующих команд обеспечит сборку Zaptel и его модулей:

# cd /usr/src/zaptel-version

# make clean

# ./configure

# make menuselect

# make

# make install

Команда make clean не всегда является обязательной, но лучше выполнять ее перед повторной компиляцией любых модулей, поскольку она удалит скомпилированные двоичные файлы из папки исходного кода. Также ее можно использовать для очистки после установки, чтобы избавиться от двоичных файлов. Обратите внимание, что выполнение данной команды обеспечит удаление двоичных файлов только из папки исходного кода, не из системы.

Кроме исполняемых файлов, make clean удаляет также промежуточные файлы (то есть объектные файлы) после компиляции. Они не нужны и только занимают место на жестком дис-В системе, в которой используются папки /etc/rc.d/init.d/ или /etc/ init.d/ (это такие системы, как CentOS и другие дистрибутивы на базе Red Hat), можно выполнить также команду make config. Это обеспечит установку сценариев запуска и конфигурирование системы. С помощью команды chkconfig задается автоматическая загрузка модуля zaptel при запуске:

# make config

Эквивалент команды chkconfig в Debian – update-rc.d. Хотя Digium официально поддерживает только Zaptel для Linux, следует упомянуть несколько проектов по переносу Zaptel на другие платформы:

Solaris (http://www.solarisvoip.com).BSD (http://lists.digium.com/mailman/listinfo/asterisk-bsd).

Использование ztcfg и zttool

Вместе с Zaptel устанавливаются еще две программы, ztcfg и zttool. Программа ztcfg считывает данные из папки /etc/zaptel.conf для конфигурации аппаратных средств. Программа zttool поможет проверить статус установленного оборудования. Например, если используется плата T1 и между конечными точками не установлена связь, пользователь увидит красный предупреждающий сигнал. Если все конфигурировано правильно и связь возможна, будет выведено сообщение «ОК». Приложение zttool также полезно для аналоговых плат, потому что сообщает об их текущем состоянии ^конфигурирована, с подключенной линией и т. д.). Использование этих программ будет подробно рассмотрено в следующей главе.

Компиляция zttool невозможна, если не установлены библиотеки libnewt и их пакеты для разработки (newt-devel в дистрибутивах на базе Red Hat).

Приложения ztcfg и zttool и другие полезные утилиты располагаются в разделе Utilities (Утилиты) окна выбора компонентов сборки Zaptel.

Компиляция libpri

Для библиотек libpri не используется программа autoconf для настройки среды сборки или окно выбора компонентов сборки, поскольку они не нужны; таким образом, установка упрощается. libpri применяется различными производителями аппаратных средств мультиплексирования с разделением по времени (Time Division Multiplexing, TDM), но даже если такое оборудование не установлено, эту библиотеку можно компилировать и устанавливать. libpri должна быть скомпилирована и установлена перед установкой Asterisk, поскольку она используется при его компиляции. Вот необходимые команды (вместо версия необходимо указать используемую версию libpri):

# cd /usr/src/libpri-версия

# make clean

# make

# make install

Компиляция Asterisk

После компиляции и установки пакетов zaptel и libpri (если они нужны), можно переходить к установке Asterisk. В этом разделе рассматривается стандартная установка и представлены некоторые альтернативные аргументы make, которые могут пригодиться.

Стандартная установка

Компиляция Asterisk выполняется с помощью компилятора gcc посредством использования GNU-программы make. Чтобы начать компиляцию Asterisk, просто выполните следующие команды (вместо версия необходимо указать используемую версию Asterisk).

# cd /usr/src/asterisk-версия

# make clean

# ./configure

# make menuselect

# make install

# make samples

Помните, что время компиляции в разных системах может быть различным. На процессорах современного поколения это не должно занять более пяти минут. На сайте AstriCon (http://www.astricon.net) есть сообщение об успешной компиляции Asterisk на процессоре Pentium с частотой 133 МГц, но это заняло около пяти часов. Считайте сами. Выполнение команды make samples обеспечивает установку стандартных конфигурационных файлов. Ее использование (вместо конфигурации каждого файла вручную) позволит намного быстрее установить и подготовить систему Asterisk к работе. Многие значения по умолчанию нет необходимости изменять, они обеспечивают нормальную работу Asterisk. Файлы, требующие редактирования, будут рассмотрены в следующих главах.

Если в папке /etc/asterisk/ уже есть конфигурационные файлы, при выполнении команды make samples к имени каждого из них будет добавлено в конце расширение .old, например, файл extensions.conf будет переименован в extensions.conf.old. Однако будьте осторожны, потому что повторное выполнение команды make samples приведет к перезаписи исходных конфигурационных файлов!

Образцы конфигурационных файлов также можно найти в под– папке configs/ папки Asterisk sources.

Для систем, которые используют папки /etc/rc.d/init.d/ или /etc/init.d/, также желательно выполнить команду make config. Это обеспечит установку сценариев запуска и конфигурацию системы (с помощью команды chkconfig) для автоматического выполнения Asterisk при запуске: # make config

Альтернативные аргументы make

Существует еще несколько дополнительных аргументов make, которые могут передаваться во время компиляции. Некоторые из них обсуждаются здесь, но остальные используются внутри файла и на самом деле не имеют никакого значения или практической пользы для конечного пользователя. (Конечно, могут быть введены новые функции, поэтому не забывайте просматривать Makefile.) Давайте рассмотрим некоторые полезные аргументы make.

make clean

Команда make clean используется для удаления скомпилированных двоичных файлов из папки исходного кода. Эта команда должна выполняться перед повторной компиляцией или если требуется удалить некоторые файлы в случае недостатка места на жестком диске.

make distclean

Команда make distclean используется для удаления скомпилированных двоичных файлов и для приведения папки исходного кода в начальное состояние, в каком она была после извлечения из архива.

make update

Команда make update используется для замены существующего кода на обновленный код с SVN-сервера Digium. Если исходный код был загружен с FTP-сервера, будет получено уведомление об этом.

make webvmail

Сценарий Asterisk Web Voicemail используется для предоставления графического интерфейса, предназначенного для управления учетной записью голосовой почты, что позволяет взаимодействовать с голосовой почтой удаленно с веб-броузера.

При выполнении команды make webvmail в папку cgi-bin/ вашего HTTP– сервера будет помещен сценарий Asterisk Web Voicemail. Если имеются специальные политики безопасности, необходимо учитывать, что эта программа использует сценарий на Perl setuid root. Установка будет выполнена только в CentOS или Fedora, поскольку в других дистрибутивах путь к папкам cgi-bin/ может быть иным. (Конечно, это можно изменить. На момент написания данной книги для этого необходимо было отредактировать переменную HTTP CFGDIR в строке 133

Makefile.)

make progdocs

По команде make progdocs с помощью программы doxygen из комментариев, внесенных в исходный код разработчиком, будет создана документация. Чтобы это было возможным, в системе должна быть установлена соответствующая программа doxygen. Заметьте, doxygen предполагает, что исходный код хорошо документирован, а это, к сожалению, не всегда так, хотя за последнюю пару лет было опубликовано очень много материалов по этому вопросу! Информация, содержащаяся в системе doxygen, будет полезна только разработчикам.

make config

По команде make config в папки /etc/rc.d/init.d или /etc/init.d, если таковые будут обнаружены, устанавливаются сценарии запуска в стиле дистрибутива Red Hat. Если эти папки существуют, сценарии устанавливаются с правами доступа к файлам 755. Если сценарий определяет, что папка /etc/rc.d/init.d/ существует, выполняется также команда chkconfig –add asterisk, по которой Asterisk будет добавлена в список автозагрузки. Однако в дистрибутивах, использующих только папку /etc/init.d/, этого сделано не будет. Выполнение команды make config никак не повлияет на уже запущенный процесс Asterisk, но запустит его, если он еще не выполняется.

В настоящее время этот сценарий полезен только в системе на базе Red Hat, хотя в папке ./contrib./init.d/ папки исходного кода Asterisk можно найти сценарии запуска и для других дистрибутивов (таких, как Gentoo, Mandrake и Slackware).

Использование предварительно скомпилированных двоичных файлов

Задокументированный процесс установки Asterisk предполагает, что пользователь самостоятельно компилирует исходный код. Однако некоторые дистрибутивы Linux (такие, как Debian) включают предварительно скомпилированные двоичные файлы Asterisk. При наличии таких двоичных файлов пользователи могли бы устанавливать Asterisk с помощью диспетчеров пакетов, которые предоставляются такими дистрибутивами (например, apt-get для Debian и portage для Gentoo[49]49
  Gentoo на самом деле не использует предварительно скомпилированные двоичные файлы, а извлекает исходный код из хранилища и выполняет сборку и установку ПО с помощью собственной системы управления пакетами. Но получаемая в результате версия ПО по-прежнему зависит от того, какой производитель ее скомпоновал. А ведь все можно сделать самостоятельно!


[Закрыть]
). Но можно заметить, что многие из этих предварительно скомпилированных двоичных файлов довольно устаревшие и не соответствуют новейшим разработкам Asterisk.

Наконец, действительно существуют основные предварительно скомпилированные двоичные файлы Asterisk, которые можно загрузить и установить на любом выбранном дистрибутиве Linux. Однако применение таких двоичных файлов на самом деле не сэкономит много времени. Кроме того, мы пришли к выводу, что компиляция Asterisk при каждой установке не является слишком обременительной задачей. Мы верим, что лучший способ установки Asterisk – компиляция из исходного кода, поэтому в данной книге не уделяется много внимания предварительно скомпилированным двоичным файлам. Кроме того, разве вы не хотите быть 133[50]50
  l33 – это забавное название «элиты» на компьютерном сленге leetspeak (написание слов с заменой букв цифрами и символами). Есть занятная, прекрасно и серьезно написанная статья о leetspeak от Майкрософт, которую можно найти по адресуhttp://www.microsoft.com/athome/security/children/leetspeak.mspx.


[Закрыть]
? В следующей главе будет рассмотрено, как с нуля конфигурировать Asterisk и несколько типов каналов.

Установка дополнительных голосовых сообщений

Дополнительные голосовые сообщения устанавливаются с помощью приложения menuselect в папку исходного кода Asterisk. Существует три набора аудиопакетов: Core Sound (Основные звуки), Extra Sound (Дополнительные звуки) и Music On Hold File (Музыка при ожидании). В каждый набор пакетов включены аудиофайлы в разных форматах (и пакеты Core Sound доступны на разных языках). Используя приложение menuselect, можно выбирать комбинации аудиопакетов для среды. Доступны следующие форматы:

• WAV.

• plaw.

• alaw.

• GSM.

• G.729.

• G.722 (широкополосный, 16-разрядный).

На момент написания данной книги пакеты Core Sound доступны на следующих языках:

• Английский.

• Испанский.

• Французский.

Для любых звуков, определенных в окне выбора компонентов сборки, при установке система загрузит соответствующие файлы с FTP-сервера Digium. Размер этих файлов варьируется в диапазоне от 2 до 27 Мб, об этом следует помнить при установке в автономном режиме или загрузке по медленным и дорогим линиям

Другие полезные дополнения

Пакет asterisk-addons содержит код, обеспечивающий возможность хранения записей параметров вызовов (Call Detail Records, CDRs) в базе данных MySQL. Также в нем имеется код, с помощью которого Asterisk может воспроизводить звуковые файлы в формате MP3 (что мы рекомендуем делать только в очень мощной системе с небольшим количеством телефонов). Кому-то также может быть интересен интерпретатор, который позволяет загружать Perl-сце– нарии в память на время активности процесса Asterisk (что может быть очень полезно при поступлении большого количества AGI– обращений к интерпретатору Perl). В asterisk-addons помещаются программы, недостаточно тщательно разработанные для интеграции с Asterisk или те, вопросы лицензирования которых не позволяют реализовать их непосредственно в исходном коде Asterisk. По адресуhttp://ftp.digium.com/pub/asterisk/g729/ располагаются код и программа регистрации специализированного кодека G. 729A. Если установлены аудиопакеты g729, Asterisk сможет связываться с устройствами, поддерживающими кодек G.729A, но не способна преобразовывать сигналы в другие кодеки, пока не получит лицензию на использование G.729A.

Распространенные проблемы компиляции Asterisk

Существует множество проблем компиляции, с которыми часто сталкиваются пользователи. Далее рассматриваются некоторые самые распространенные из них и способы их решения.

Сначала давайте рассмотрим некоторые ошибки, которые могут возникнуть при выполнении сценария configure.

configure: error: no acceptable C compiler found in $PATH

Если при попытке выполнения сценария configure возникает такая ошибка, требуется установить компилятор gcc и его зависимости:

configure: error: no acceptable C compiler found in $PATH

(configure: ошибка: не найден необходимый компилятор C в $PATH)

Для gcc необходимы следующие пакеты:

• gcc

• cpp

• glibc-headers

• glibc-devel

• glibc-kernheaders

Эти пакеты могут быть установлены вручную путем копирования файлов с диска используемого дистрибутива или посредством диспетчера пакетов yum с помощью команды yum install gcc.

configure: error: C++ preprocessor «/lib/cpp» fails sanity check

Эта ошибка возникает, если в системе не обнаружен препроцессор С++. Требуется установить пакет gcc-c++ и его зависимости:

configure: error: C++ preprocessor "/lib/cpp" fails sanity check (configure: ошибка: препроцессор С++ "/lib/cpp" не проходит проверку на готовность к работе)

Препроцессор gcc-c++ требует наличия следующих пакетов; устанавливаются они путем выполнения команды yum install gcc-c++:

• gcc-c++

• libstdc++-devel

configure: error: *** termcap support not found

Следующая ошибка может возникнуть при запуске сценария configure, если не установлен пакет libtermcap-devel:

configure: error: *** termcap support not found (configure: ошибка: поддержка *** termcap не выявлена) Для компиляции Asterisk необходим следующий файл; его можно установить, выполнив команду yum install libtermcap-devel:

• libtermcap-devel

Zaptel

Ошибки могут возникать и при компиляции Zaptel. Здесь представлены некоторые наиболее распространенные проблемы и способы их решения. Если ниже вы не находите ошибки, с которой столкнулись, посмотрите предыдущий раздел, может быть, вы найдете ее там.

make: cc: Command not found

Следующее сообщение об ошибке будет получено при попытке сборки Zaptel без компилятора gcc:

make: cc: Command not found make: *** [gendigits.o] Error 127

(make: сс: Команда не найдена

make: *** [gendigits.o] Ошибка 127)

Убедитесь, что gcc и его зависимости установлены. Больше информации можно найти в подразделе «configure: error: no acceptable C compiler found in $PATH» предыдущего раздела.

FATAL: Module wctdm/fxs/fxo not found

Для плат TDM400P необходима PCI-шина версии 2.2. При попытке загрузить драйверы телефонии Zapata с более старой версией могут возникать следующие ошибки:

• При попытке загрузить драйвер wctdm может появиться такое сообщение об ошибке:

FATAL: Module wctdm not found

(ФАТАЛЬНАЯ ОШИБКА: Модуль wctdm не найден)

• При попытке загрузить драйвер wctdm или wcfxo может появиться такое сообщение об ошибке:

ZT_CHANCONFIG failed on channel 1: No such device or address (6) FATAL: Module wctdm not found

(Не удалось выполнить ZT_CHANCONFIG для канала 1: Такое устройство или адрес не обнаружены (6) ФАТАЛЬНАЯ ОШИБКА: Модуль wctdm не найден) Единственный способ исправить эти ошибки – использовать более новую системную плату, которая поддерживает PCI версии 2.2:

• Также эти ошибки могут возникнуть, если блок питания не подключен в разъем Molex на плате TDM400P.



Неразрешимая символическая ссылка при загрузке ztdummy

Драйвер ztdummy требует наличия доступного контроллера UHCI USB в ядрах Linux 2.4 (USB-котроллер не является обязательным требованием для ядер Linux 2.6, потому что они способны генерировать опорный синхросигнал частотой 1 кГц). Существуют контроллеры вторичного типа, известные как OHCI-контроллеры[51]51
  Open Host Controller Interface – открытый интерфейс хост-контроллера. – Примеч. науч. ред.


[Закрыть]
, которые несовместимы с драйвером ztdummy. Если контроллер UHCI USB недоступен в ядрах Linux 2.4, возникнет следующая ошибка:

/lib/modules/2.4.22/misc/ztdummy.o: /lib/modules/2.4.22/misc/ztdummy.o: unresolved symbol unlink_td

/lib/modules/2.4.22/misc/ztdummy.o: /lib/modules/2.4.22/misc/ztdummy.o: unresolved symbol alloc_td

/lib/modules/2.4.22/misc/ztdummy.o: /lib/modules/2.4.22/misc/ztdummy.o: unresolved symbol delete_desc

/lib/modules/2.4.22/misc/ztdummy.o: /lib/modules/2.4.22/mlsc/ztdummy.o: unresolved symbol uhci_devices

/lib/modules/2.4.22/misc/ztdummy.o: /lib/modules/2.4.22/misc/ztdummy.o: unresolved symbol uhci_interrupt

/lib/modules/2.4.22/misc/ztdummy.o: /lib/modules/2.4.22/misc/ztdummy.o: unresolved symbol fill_td

/lib/modules/2.4.22/misc/ztdummy.o: /lib/modules/2.4.22/misc/ztdummy.o: unresolved symbol insert_td_horizontal

/lib/modules/2.4.22/misc/ztdummy.o: insmod /lib/modules/2.4.22/misc/ ztdummy.o failed

/lib/modules/2.4.22/misc/ztdummy.o: insmod ztdummy failed Убедиться в наличии соответствующего USB-контроллера и связанных с ним драйверов можно с помощью команды lsmod:

# lsmod

Module Size Used by

usb_uhci 26412 0

usbcore 79040 1 [hid usb-uhci]

Как можно увидеть в приведенном выше примере, мы проверяем, загружены ли модули usbcore и usb_uhci. Если эти модули не загружены, необходимо убедиться, что USB в BIOS активирован и что эти модули есть в наличии.

Если драйверы USB не загружены, все равно с помощью команды dmesg есть возможность проверить тип имеющегося USB-контроллера:

# dmesg | grep -i usb

Наличие контроллера UHCI USB подтвердят следующие строки:

uhci_hcd 0000:00:04.2: new USB bus registered, assigned bus number 1 hub 1-0:1.0: USB hub found

uhci_hcd 0000:00:04.3: new USB bus registered, assigned bus number 2 hub 2-0:1.0: USB hub found

(uhci hcd 0000:00:04.2: зарегистрирована новая USB-шина, присвоенный номер шины – 1 hub 1-0: обнаружен концентратор USB

uhci hcd 0000:00:04.3: зарегистрирована новая USB-шина, присвоенный номер шины – 2 hub 2-0:1.0: обнаружен концентратор USB)

Ошибки depmod во время компиляции

Если во время компиляции возникают ошибки depmod, вероятнее всего, отсутствует символическая ссылка на исходные файлы ядра Linux. Если исходные файлы используемого ядра Linux не установлены, необходимо скачать их в Интернете c сайтаhttp://kernel.org, установить и создать символическую ссылку на /usr/src/linux-2.4. Ниже представлен пример ошибки depmod: depmod: *** Unresolved symbols in /lib/modules/2.4.22/kernel/drivers/block/ loop.o

(depmod: *** Неразрешимые символы в /lib/modules/2.4.22/kernel/ drivers/block/loop.o)

Быстрая загрузка Asterisk и Zaptel

Если команда make config выполняется в папках исходного кода Asterisk или Zaptel, сценарии запуска, используемые для управления Asterisk или Zaptel, будут скопированы в папку /etc/rc.d/init.d/. Используя сценарии, можно упростить загрузку Asterisk и Zaptel. Эти сценарии также выполнят команду chkconfig, что обеспечит автоматический запуск Asterisk и Zaptel при загрузке системы. Ниже представлен пример их использования:

# service zaptel start

# service asterisk start

Каждый сценарий запуска имеет несколько опций, с помощью которых можно управлять офисной АТС или драйверами. В табл. 3.2 и 3.3 приведены команды, выполняемые сценарием (но их можно было бы вводить самостоятельно в интерфейсе командной строки (Command– Line Interface, CLI)).

Таблица 3.2. Опции сценария запуска Asterisk



service asterisk <опция> Эквивалент для ввода вручную
startasterisk
stopkillproc asterisk
restartstop; start
reloadasterisk -rx «reload»
statusps aux | grep [a]sterisk

Таблица 3.3. Опции сценария запуска Zaptel



service zaptel <опция> Эквивалент для ввода вручную
startmodprobe zaptel; modprobe <модуль>; /sbin/ztcfg
stoprmmod ztdummy; rmmod zaptel
restartstop; start
reload/sbin/ztcfg

    Ваша оценка произведения:

Популярные книги за неделю