Опишу свой способ прошивки роутера 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/