среда, 11 апреля 2012 г.

установка asterisk на DIR-620 с нуля

Опишу свой способ прошивки роутера D-Link DIR-620 прошивкой от DD-WRT установки флешки в качестве диска, MC и ASTERISK 1.4
Скачиваем прошивку uboot описание тут далее ставим прошивку DD-WRT с модулями для файловых систем ext3

Подготовка флешки или жесткого диска к подключению в DD-WRT

Необходимо создать на носителей разделы. Их количество, типы файловых систем и размеры надо выставлять смотря какие задачи вы хотите реализовать.
DD-WRT в большинстве случаев поддерживает следующие файловые системы.

Типы файловых систем в DD-WRT

ext3 — журналируемая файловая система, родная для linux-based систем. В случае с DD-WRT она нужна в обязательном порядке для установки различных пакетов (программ). Максимальный размер файла зависит от ядра linux вашей прошивки и составляет не менее 2Tb, что вряд ли как то ограничит Вас
fat32 — всё более устаревающая файловая система, родная для Windows. В DD-WRT пригодна лишь для хранения пользовательский файлов, на неё нельзя установить пакеты. Максимальный размер файла составляет около 4гб, что по современным меркам не фантан. Еще бывают проблемы с длинными именами файлов. Пригодна лишь для использования как раздел под хранения небольших файлов, например документов.
В принципе не советую использовать fat32 вообще никому, все рано или поздно от неё отказываются всё-равно.
swap — это даже не файловая система, это раздел подкачки. Если кроме ftp планируете еще что-то устанавливать, то настоятельно рекомендую создать такой раздел размером 32-64мб. Больше врядли кому пригодится.
Другие файловые системы (ntfs, ext2, ext4 и т.д.) без хитрых манипуляций не подмонтировать, не будем на этом заострять внимание. По крайней мере пока.

Разметка флешки/диска

Раздел 1 / тип ext3 / размер 16 гб — раздел для установки пакетов (optware)

Настройка роутера

Идем на вкладку Службы — USB (Сервис — USB),
1) Включаем поддержку USB
2) На старых прошивках выбираем USB 2.0, на новых этот пункт убрали, но поддержка осталась и включается автоматически.
3) Включаем поддержку USB-дисков (USB Storage Support)

Включение поддержки USB-дисков в DD-WRT
Включать автомонтирование не стоит, так как монтируются в этом случае диски без флага noatime, то есть при обращении к файлам и папкам обновляется информация о последнем доступе к ним.
Роутеры итак медленными процессорами обладают, так что для нас это недопустимая роскошь.

Подключение диска

Подключаем флешку/диск и подключаемся к роутеру через телнет. Там нас спросят логин и пароль — те же самые, что и в веб-интерфейсе.
Далее выполняем команду

Далее выполняем команду
root@DD-WRT:~# dmesg|grep lun
/dev/scsi/host0/bus0/target0/lun0: p1
Строка /dev/scsi/host0/bus0/target0/lun0: p1 говорит нам о том, что наш носитель подключен p1  раздел для установки пакетов (optware).

Монтирование USB-диска

Сначала монтируем первый раздел, который предназначен для optware. Монтировать будем в уже существующую, но пустую папку /opt (в линуксе нет понятия о локальных дисках, все они так или иначе подключены в качестве каталога).
Для этого вводим команду:
root@DD-WRT:~# mount -o noatime /dev/discs/disc0/part1 /opt
Где /dev/discs/disc0 — наша флешка, part1 — первый раздел на ней.
mount -o noatime /dev/scsi/host0/bus0/target0/lun0/part1 /opt
И проверяем смонтировалось или нет:
root@DD-WRT:~# df -h
 
Filesystem Size Used Available Use% Mounted on
/dev/root 2.9M 2.9M 0 100% /
/dev/scsi/host0/bus0/target0/lun0/part1
14.9G 234.5M 13.9G 2% /opt


Если флешка не монтируется в DD-WRT

В новых прошивках поддержка файловых систем зачастую автоматически не подключается.
В этом случае необходимо посмотреть, какие файловые системы поддерживаются:
root@DD-WRT:~# cat /proc/filesystems
nodev rootfs
nodev bdev
nodev proc
nodev sockfs
nodev tmpfs
nodev pipefs
nodev ramfs
nodev devfs
      squashfs
nodev usbdevfs
nodev usbfs
 
и какие модули подключены:
root@DD-WRT:~# lsmod
Module                 Size   Used by
ip_nat_pptp            2560   0 (unused)
ip_conntrack_pptp      3036   1
ip_nat_proto_gre       1664   0 (unused)
ip_conntrack_proto_gre 2584   0 [ip_nat_pptp ip_conntrack_pptp]
usb-storage            40344  0 (unused)
sd_mod                 13092  0 (unused)
scsi_mod               101584 2 [usb-storage sd_mod]
usb-ohci               20352  0 (unused)
ehci-hcd               22060  0 (unused)
usbcore                84576  1 [usb-storage usb-ohci ehci-hcd]
switch-robo            6108   0 (unused)
switch-core            5888   0 [switch-robo]
 
Ага. Нашей ext3 не видно. Как впрочем и модуля jbd, отвечающего за поддержку журналирования в файловых системах.
Пробуем подгрузить вручную этим модули, причем сначала jbd.o, без него ext3.o не загрузится:
Для прошивки с ядром 2.6 и выше:
root@DD-WRT:~# insmod /lib/modules/$(uname -r)/kernel/fs/mbcache.ko 
root@DD-WRT:~# insmod /lib/modules/$(uname -r)/kernel/fs/jbd/jbd.ko
root@DD-WRT:~# insmod /lib/modules/$(uname -r)/kernel/fs/ext3/ext3.ko
 
И проверяем знает ли наше ядро теперь ext3:
root@DD-WRT:~# cat /proc/filesystems
nodev rootfs
nodev bdev
nodev proc
nodev sockfs
nodev tmpfs
nodev pipefs
nodev ramfs
nodev devfs
      squashfs
nodev usbdevfs
nodev usbfs
      ext3

Автоматизируем процесс подключения дисков в DD-WRT

Для автоматизации команд надо занести в скрипт включения.
Для этого в веб-интерфейсе перейдите в раздел Administration — Commands
И в верхнее окно введите команды в нужном порядке, только если у вас уже есть стартовый скрипт, то необходимо их объединить.
В моем случае он выглядит так:

switch reg w 90 10007f7f  (включает wan порт при загрузке роутера)

insmod /lib/modules/$(uname -r)/kernel/fs/mbcache.ko (загружает модуль mbcache.ko)
insmod /lib/modules/$(uname -r)/kernel/fs/jbd/jbd.ko (загружает модуль bd.ko)
insmod /lib/modules/$(uname -r)/kernel/fs/ext3/ext3.ko (загружает модуль поддержки ext3)

mount -o noatime /dev/scsi/host0/bus0/target0/lun0/part1 /opt (монтирует флешку)
 
 
далее скачиваем установочный скрипт

wget http://www.3iii.dk/linux/optware/optware-install-ddwrt.sh -O - | tr -d "\r" > /tmp/optware-install.sh
 
  
 
 и запускаем его

sh /tmp/optware-install.sh  

 
у меня скрипт выдавал ошибку на стадии проверки, открываем скрипт

vi /tmp/optware-install.sh 

и удаляем блок, отвечающий за проверку конфигурации:

_check_config() 
{ 
echo "Checking system config ..." 
GATEWAY=$(netstat -rn | 
sed -n 's/^0.0.0.0[ \t]\{1,\}\([0-9.]\{8,\}\).*/\1/p' ) 
if [ -n "${GATEWAY}" ]; then 
echo "Using ${GATEWAY} as default gateway." 
else 
echo "Error: No default gateway set!" 
exit 2 
fi 
if [ -s /etc/resolv.conf ]; then 
echo "Using the following nameserver(s):" 
if grep nameserver /etc/resolv.conf ; then 
GATEWAY_SUBNET=$(echo "${GATEWAY}" | 
sed 's/\.[0-9]\{1,3\}\.[0-9]\{1,3\}$//') 
if [ "${GATEWAY_SUBNET}" = "192.168" ]; then 
if grep -q ${GATEWAY} /etc/resolv.conf ; then 
echo "Gateway ${GATEWAY} is also nameserver." 
else 
echo "Warning: local nameserver is different than gateway!" 
echo "Check config or enter:" 
if test -L /etc/resolv.conf ; then 
echo " sed -i s/192.168.*/${GATEWAY}/ /tmp/resolv.conf" 
else 
echo " sed -i s/192.168.*/${GATEWAY}/ /etc/resolv.conf" 
fi 
echo "and try again." 
fi 
fi 
else 
echo "Error: No nameserver specified in /etc/resolv.conf" 
exit 5 
fi 
else 
echo "Error: Empty or nonexistent /etc/resolv.conf" 
exit 3 
fi 
if mount | grep -q /opt ; then 
[ -d /opt/etc ] && echo "Warning: /opt partition not empty!" 
else 
echo "Error: /opt partition not mounted." 
echo "Enter" 
echo " mkdir /jffs/opt" 
echo " mount -o bind /jffs/opt /opt" 
echo "to correct this." 
exit 4 
fi 
} 

далее ставим мс

 
ipkg-opt install mc 
 
и asterisk


ipkg-opt install asterisk14

информация взята с:
http://www.dd-wrt.com/wiki/index.php/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_Samba_%D0%BD%D0%B0_%D0%BC%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%B8%D0%B7%D0%B0%D1%82%D0%BE%D1%80_%D1%81_DD-WRT

http://ne-ne-ne.ru/dd-wrt/dd-wrt-mount-usb-flash-usb-hdd.html

http://ajc.su/telefoniya/asterisk-na-routere-ili-byudzhetnyj-voip-gsm-shlyuz/






Комментариев нет:

Отправить комментарий