- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Зарубежная литература о культуре и искусстве
- Пословицы, поговорки
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
Asterisk™: будущее телефонии Второе издание - Джим Меггелен
Шрифт:
Интервал:
Закладка:
# cd /usr/src/
# tar zxvf zaptel-1.4-current.tar.gz
# tar zxvf libpri-1.4-current.tar.gz
# tar zxvf asterisk-1.4-current.tar.gz
В bash (и других командных оболочках, поддерживающих ее) можно использовать исключительно удобную функцию автозаполнения по нажатию клавиши Tab. Это позволяет вводить лишь часть имени файла, а все остальное система дополняет автоматически. Например, если введено tar zxvf zap<tab>, система дополнит имя файла zaptel сама. Если возможно несколько вариантов подстановки, надо нажать Tab дважды - и будет представлен список имен файлов, подходящих под введенную комбинацию символов.
Выполнение этих команд обеспечит извлечение пакетов и исходного кода из архивов в соответствующие папки. Например, файл asterisk- 1.4-current.tar.gz будет извлечен в папку текущей версии Asterisk, то есть asterisk-1.4.4.
Желательно всегда сохранять исходный код последней рабочей версии пакета на случай необходимости выполнить «откат» при обнаружении очередного дефекта или странностей в поведении, которые не получается сразу разрешить.
Окно выбора компонентов сборки
В Asterisk версии 1.4.0 и связанных с ней пакетах была реализована новая система сборки autoconf. Это немного изменило процесс сборки, но предоставило больше гибкости, позволив выбирать модули, подлежащие сборке. Преимущество состоит в том, что в сборке участвуют только необходимые модули, а не весь исходный код. Вместе с системой сборки была введена новая система выбора на основе меню. Спасибо Расселу Брайанту (Russell Bryant). Эта новая система обеспечивает возможность более детального отбора подлежащих сборке модулей перед компиляцией ПО и избавляет пользователя от необходимости редактировать файлы Makefiles. Поэтому, чтобы не рассказывать, как использовать окно выбора компонентов сборки в каждом разделе «Компиляция.», обсудим это здесь, чтобы, увидев опцию make menuselect, вы знали, что должны делать с окном выбора компонентов сборки.
На рис. 3.1 представлено окно выбора компонентов сборки для программного обеспечения Asterisk. Для других пакетов оно будет прак-
*************************************
Asterisk Module Selection *************************************
Press 'h' for help.
-> l. Applications
# Call Detail Recording
# Channel Drivers
# Codec Translators
# Format Interpreters
# Dlalplan Functions
# PBX Modules
# Resource Modules
# Voicemail Build Options 1Э. Compiler Flags
# Module Embedding
# Core Sound Packages
# Music On Hold File Packages
# Extras Sound Packages
Рис. 3.1. Пример окна выбора компонентов сборки
тически таким же, но с меньшим количеством опций. Перемещение вверх и вниз по списку осуществляется с помощью клавиш со стрелками. Выбор опции меню выполняется по нажатию клавиши Enter или клавиши со стрелкой вправо. Для отмены выбора используется клавиша со стрелкой влево.
Рис. 3.2. Список модулей, подлежащих сборке
На рис. 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. Существует проект (http:// www.solarisvoip.com), обеспечивающий поддержку Zaptel для Solaris. Также есть проект разработки драйверов Zapata для BSD. Его можно найти по адресу http://www.voip-info. org/tiki-index.php?page=FreeBSD+zaptel.
Рис. 3.3. Уровни взаимодействия устройств с Asterisk
Начнем наше обсуждение с драйвера 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/), потребуется использовать символическую ссылку.
Хотя Asterisk и сопутствующие пакеты выполняются на ядрах Linux 2.4.x, их разработка ведется прежде всего на ядрах 2.6.x, и нет никакой гарантии, что ядра 2.4.x будут поддерживаться в будущем.
Драйвер 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
Компиляция драйверов телефонии 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 при запуске:

