На рис. 3.2 показан список возможных приложений диалплана, сборка которых может быть выполнена для их использования в Asterisk. Модули, подлежащие сборке, отмечаются символами [*]. Модуль, сборка которого выполняться не будет, отмечается символами [ ]. Если перед модулем стоят символы XXX, значит, присутствуют не все зависимости пакета, которые являются обязательным условием для сборки данного модуля. На рис. 3.2 мы видим, что сборка модуля app_flash не может быть выполнена из-за отсутствия зависимости Zaptel (то есть модуль Zaptel не был собран и установлен в систему с момента последнего вы- полненения команды ./configure). Если требования по зависимости были удовлетворены в период после последнего выполнения команды . /configure, выполните ее снова и повторно откройте окно выбора компонентов сборки. Теперь модуль должен быть доступным для сборки. Завершив работу с окном выбора компонентов сборки, введите символ x, чтобы сохранить изменения и закрыть окно. Ввод символа q также обеспечит выход из окна выбора компонентов сборки, но при этом изменения не будут сохранены. Если вы внесли изменения и ввели q, ваши изменения будут потеряны!
Компиляция Zaptel
На рис. 3.3 показаны уровни взаимодействия между Asterisk и ядром Linux с точки зрения управления аппаратными средствами. Со стороны Asterisk имеется модуль канала Zapata, chan_zap. Asterisk использует этот интерфейс для обмена информацией с ядром Linux, где загружаются драйверы устройств.
Интерфейс Zaptel - это загружаемый модуль ядра, представляющий абстрактный уровень между аппаратными драйверами и модулем Zapata в Asterisk. Именно такая концепция позволяет изменять драйверы устройств без внесения изменения в исходный код Asterisk. Драйверы устройств используются для непосредственной связи с оборудованием и для передачи информации между Zaptel и аппаратными средствами.
Хотя Asterisk может компилироваться на разных платформах, драйверы Zaptel специализированы для конкретных дистрибутивов Linux, они создаются для взаимодействия непосредственно с ядром Linux. Существует проект
Начнем наше обсуждение с драйвера ztdummy, который используется в системах, нуждающихся в интерфейсе синхронизации, но не имеющих соответствующего оборудования. Затем перейдем к компиляции и установке драйверов. (Конфигурация драйверов Zaptel будет обсуждаться в следующей главе.)
Перед компиляцией драйверов Zaptel в системе, выполняющей ядро Linux 2.4, необходимо убедиться в наличии в папке /usr/src/ символической ссылки linux-2.4, указывающей на исходный код используемого ядра. Если символической ссылки нет, ее можно создать с помощью следующей команды (предполагая, что исходный код размещен в папке /usr/src/): # ln -s /usr/src/'uname -r' /usr/src/linux-2.4 Обычно, если на компьютере выполняется один из дистрибутивов на базе ядра Linux 2.6, символическая ссылка не требуется, поскольку эти дистрибутивы осуществляют поиск папки сборки ядра автоматически. Однако, если папка сборки помещена в нестандартное место (то есть не в папку /lib/modules/ <версия ядра>/build/), потребуется использовать символическую ссылку.
Драйвер 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], которые драйвер может использовать для согласования; таким образом, аппаратный USB-контроллер больше не нужен.)
Драйверы телефонии Zapata