среда, 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/






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

Linux в браузере

 в интернете запустился проект jslinux (эмулятор PC с Linux на javascript в браузере) от уважаемого мужчины по имени Фабрис Беллар. Эмулятор для запуска Linux полностью написан на JavaScript. При входе на страницу отображается консоль, на которой начинается загрузка Linux с нуля до момента отображения рутовой консоли. В консоли работает куча стандартных команд, вплоть до компилятора TCC. И всё это работает прямо в браузере. Крутизна необыкновенная.

E1 RJ45 Pin-outs

Понадобилось по работе тут подключить E1 на разъём RJ-45. Быстро найти распиновку (да ещё и на русском) не удалось,- выкладываю, чтобы не забылось:
На джеке контакты считаются по порядку слева направо, держа разъём контактными площадками к себе, кабель подводится снизу (как на рисунке).

В табличном виде:
pin назначение
1 Rx RING
2 Rx TIP
3 -
4 Tx RING
5 Tx TIP
6 -
7 -
8 -

Подключенное устройство принимает (Rx) на 1-2 контактах (оранжевая пара). Передача (Tx) ведётся по паре на 4-5 контакте (синяя пара), Остальные контакты не используются.
Понятия TIP и RING здесь условные, обычно современное оборудование умеет определять полярность на парах и корректно использовать. Но, на всякий случай,- почитайте документацию (или проконсультируйтесь с технической поддержкой) перед подключением.