К списку статей

Установка модуля в FreeBSD

Подготовка системы к установке модуля

Модуль bx24asterisk является ELF-файлом для систем Linux X86-64:

$ file bx24asterisk_core
bx24asterisk_core: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.18, not stripped

Для работы модуля в системе FreeBSD должна быть установлена поддержка исполнения кода Linux X86-64. Данная поддержка появилась в версии FreeBSD 10.3. Чтобы её активировать, необходимо сначала подключить модуль ядра. Добавляем в файл /etc/rc.conf строку:

linux_enable="YES"

Эта строка сработает при следующей загрузке системы. Чтобы проверить, загружается ли модуль ядра, выполняем команду

# kldload linux

и проверяем:

# kldstat
Id Refs Address        	Size 	Name
 1   24 0xffffffff80200000 1f67a88  kernel
 2	1 0xffffffff8221f000 7b0f 	linux_common.ko
 3	1 0xffffffff8223e000 42864	linux.ko
 4	1 0xffffffff82281000 3c93f	linux64.ko

Дальше необходимо установить в системе библиотеки ядра Linux. Во FreeBSD 11.1 есть на выбор следующие порты:

# pkg search emulators/linux
emulators/linux-c6   	Meta-port for all things CentOS 6.9
emulators/linux-c7   	Meta-port for all things CentOS 7.4.1708
emulators/linux_base-c6  Base set of packages needed in Linux mode (Linux CentOS 6.9)
emulators/linux_base-c7  Base set of packages needed in Linux mode (Linux CentOS 7.4.1708)

Выбираем и устанавливаем пакет linux_base-c7:

# pkg install linux_base-c7

После установки нам предлагается выполнить дополнительные настройки файловых систем. В файл /etc/fstab добавляем строки:

linprocfs    /compat/linux/proc    linuxproc    rw    0    0
tmpfs   	 /compat/linux/dev/shm    tmpfs    rw,mode=1777    0    0

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

# mount /compat/linux/proc
# mount /compat/linux/dev/shm

Установка модуля

Скачиваем дистрибутив модуля bx24asterisk:

$ wget http://bx24asterisk.ru/download/release.tar.gz
$ tar xzvf release.tar.gz

Настраиваем файл журнала:

# touch /var/log/bx24asterisk.log
# chown asterisk:asterisk /var/log/bx24asterisk.log

Копируем файл конфигурации модуля:

# mkdir /usr/local/etc/bx24asterisk
# cp ./bx24asterisk/config.json.dist /usr/local/etc/bx24asterisk/config.json

Открываем его в любимом редакторе и вносим необходимые правки.

Создаем службу и добавляем её в автозапуск

Создаём файл службы и кладём его в /usr/local/etc/rc.d:

#!/bin/sh
#
# PROVIDE: bx24asterisk
# REQUIRE: DAEMON mysql asterisk
# KEYWORD: shutdown
#
# Add the following to /etc/rc.conf[.local] to enable this service
#
# bx24asterisk_enable="YES"
#

. /etc/rc.subr

name="bx24asterisk"
rcvar="bx24asterisk_enable"

bx24asterisk_user=asterisk
bx24asterisk_group=asterisk

bx24asterisk_flags=${bx24asterisk_configname:---configname=/usr/local/etc/bx24asterisk/config.json &}
command="/home/asev/bx24asterisk/bx24asterisk_core"

load_rc_config $name
run_rc_command "$1"

Чтобы включить автозапуск модуля, добавляем в /etc/rc.conf строку:

bx24asterisk_enable="YES"

Можно указать другое расположение файла конфигурации:

bx24asterisk_configname="--configname=/путь/до/файла/config.json"

Проверяем работу:

Модуль запускается командой:

# service bx24asterisk start
Starting bx24asterisk.

Проверяем статус модуля:

# service bx24asterisk status
bx24asterisk is running as pid 2362.

Останавливаем модуль:

# service bx24asterisk stop
Stopping bx24asterisk.