Джим Меггелен - Asterisk™: будущее телефонии Второе издание стр 20.

Шрифт
Фон

/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

Загрузка модулей Zaptel без использования сценариев

В данном разделе будет кратко рассмотрена загрузка модулей zaptel и ztdummy без сценария запуска CentOS. Если модуль zaptel будет использоваться только для модуля ztdummy, он не требует никакой конфигурации. Если планируется загружать модуль ztdummy в качестве источника временных интервалов (и таким образом, в системе не будут использоваться никакие PCI-устройства), самое время загрузить оба драйвера.

Системы, выполняющие udevd

В эпоху юности Linux системная папка /dev/ заполнялась списком устройств, с которыми система потенциально могла взаимодействовать. В то время в этом списке было примерно 18 000 устройств. Все изменилось с появлением devfs, обеспечившего динамическое создание файлов устройств, которые активно используются системой. Некоторые последние выпущенные дистрибутивы включают программу-демон udev для динамического заполнения папки /dev/ списками устройств. Чтобы Zaptel и другие драйверы устройств могли работать с PCI-уст- ройствами, установленными в системе, необходимо определить несколько правил. В своем любимом текстовом редакторе откройте файл правил udevd. В CentOS, например, этот файл находится по адресу /etc/udev/rules.d/50-udev.rules. В конце файла правил необходимо добавить следующие строки:

# Раздел для zaptel device

KERNEL="zapctl", NAME="zap/ctl"

KERNEL="zaptimer", NAME="zap/timer"

KERNEL="zapchannel", NAME="zap/channel"

KERNEL="zappseudo", NAME="zap/pseudo"

KERNEL="zap[0-9]*", NAME="zap/%n"

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

Возможно, вам не придется ничего редактировать в своей системе, потому что сценарий установки Zaptel попытается определить все правила сам; однако мы приводим эти рекомендации здесь для тех систем, которые конфигурируются не автоматически.

Загрузка Zaptel

Модуль zaptel должен быть загружен до того, как будут загружены и использованы все остальные модули. Следует отметить, что, если модуль zaptel будет использоваться с PCI-устройствами, перед его загрузкой необходимо выполнить конфигурирование в файле /etc/zaptel. conf. (Конфигурация zaptel.conf для использования с аппаратными средствами обсуждается в главе 4.) Если zaptel предназначен только для доступа к ztdummy, его можно загрузить с помощью команды modprobe следующим образом:

# modprobe zaptel

Если все проходит нормально, на экран ничего не выводится. Проверить успешность загрузки модуля zaptel можно с помощью команды lsmod. В результате ее выполнения должна быть возвращена строка с именем модуля и указанием занимаемого им объема оперативной памяти, например:

# lsmod | grep zaptel

zaptel 201988 0

Загрузка ztdummy

Модуль ztdummy - это интерфейс устройства, обеспечивающий генерирование временных интервалов. Благодаря ему Asterisk, в свою очередь, может предоставлять временные интервалы различным приложениям и функциям, которым это необходимо. Модуль ztdummy загружается после загрузки zaptel с помощью команды modprobe:

# modprobe ztdummy

Если загрузка ztdummy проходит успешно, на экран ничего не выводится. Проверить, что ztdummy загружен и используется модулем zaptel, можно с помощью команды lsmod. Следующий вывод получен на компьютере, выполняющем ядро 2.6:

# lsmod | grep ztdummy

Module Size Used by

ztdummy 3796 0

zaptel 201988 1 ztdummy

На компьютере, на котором выполняется ядро 2.4, в выводе, полученном в результате выполнения lsmod, будет показано, что ztdummy использует модуль usb-uhci:

# lsmod | grep ztdummy

Module Size Used by

ztdummy 3796 0

zaptel 201988 0 ztdummy

usb-uhci 24524 0 ztdummy

Загрузка libpri без использования сценария

Библиотеки libpri не требуется загружать, как модули. Asterisk ищет libpri во время компиляции и, если находит их, конфигурируется на использование библиотек самостоятельно.

Запуск Asterisk без использования сценариев

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

Linux. Точно так же Asterisk можно запускать и перезапускать и в системе, использующей сценарии init.d. Однако предпочтительнее запускать Asterisk с помощью сценария safe_asterisk.

Команды консоли

Двоичный файл Asterisk по умолчанию располагается по адресу /usr/ sbin/asterisk. Если запустить файл /usr/sbin/asterisk, Asterisk загрузится как программа-демон. Существует также несколько ключей, которые позволяют (повторно) запускать CLI Asterisk, задавать степень детальности вывода CLI и создавать дампы ядра в случае сбоя Asterisk (для отладки с помощью gdb). Чтобы увидеть все возможные опции, запустите Asterisk с ключом -h:

# /usr/sbin/asterisk -h Вот список наиболее часто используемых опций:

-c

Консоль. Эта опция обеспечит запуск Asterisk как пользовательского процесса (не сервера) и предоставит окно командной строки Asterisk. Она пригодится при настройке параметров запуска, но не должна использоваться при нормальной работе системы (если Asterisk уже выполняется, эта опция не сработает и будет выдано сообщение об ошибке).

-v

Детальность сообщений. Используется для определения степени детальности сообщений, выводимых при отладке с помощью CLI. Чем выше значение v, тем более детальными будут сообщения.

-g

Дамп ядра. При неожиданном сбое Asterisk этот ключ обусловил бы создание файла ядра для последующей его трассировки с помощью gdb. Обычно этот ключ не используется в производственной эксплуатации, а применяется только в том случае, если пишется код для Asterisk и требуется отладить все возникающие сбои.

-r

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке