D-Link DIR-620 и dd-wrt – подключение flash, установка программ, настройка NAS
Итак, после установки на роутер DIR-620 прошивки dd-wrt, можно подключить к нему флешку или внешний диск по USB, установить нужные программы и получить помимо самого роутера – NAS с закачкой торрентов.
Монтирование внешнего диска в dd-wrt
Для начала нужно включить поддержку USB на роутере через веб-интерфейс: Services – USB – USB Support – Core USB Support + USB Storage Support. После подключения внешнего диска проверить успешность при помощи вызова dmesg | grep scsi, где строки вида /dev/scsi/host2/bus0/target0/lun0: p1 p2 укажут на подключенный диск (в данном случае мой диск подключен к третьему порту USB-хаба – host2 и имеет два раздела – p1 p2.
Монтирование на прошивке с поддержкой файловых систем
Поскольку при каждой загрузке роутера его состояние обнуляется до того, что штатно позволяет прошивка, монтирование USB-дисков, применение нужных настроек и запуск требуемых программ следует прописать в startup-скрипте (Administration – Commands – Startup) через веб-интерфейс:
1 2 3 4 5 6 7 8 9 10 11 12 | switch reg w 90 10007f7f insmod jbd.ko insmod mbcache.ko insmod ext3.ko sleep 10 mount -t ext3 -o noatime,nodiratime /dev/scsi/host0/bus0/target0/lun0/part1 /jffs mount -o bind /jffs/opt /opt mount -o bind /opt/etc/profile /etc/profile mount -t ext3 /dev/scsi/host1/bus0/target0/lun0/part1 /mnt /opt/bin/busybox swapon /mnt/routerswap.swp sleep 1 /opt/bin/transmission-daemon -g /opt/etc/transmission |
О некоторых строках расскажу подробней сразу, другие рассмотрены дальше в заметке. Первая – исправляет ошибку невключения LAN-порта, возникующую в dd-wrt 17201. Вторая-четвертая – загрузка модулей для поддержки работы с файловыми системами, модули находятся в /lib/modules/версия_ядра, если прошивка без модулей поддержки ФС – см. ниже. Шестая и девятая строки отвечают за монтирование внешних дисков (флешки для установки софта и USB-HDD, выступающего в роли NAS). Седьмая – монтирование каталога с флешки в каталог ФС роутера, восьмая – замена штатного /etc/profile на измененный (см. ниже). Десятая – подключение своп-файла, создание которого подробно рассмотрено ниже. Последняя – запуск transmission с указанным каталогом в качестве рабочего (в частности там хранится файл настроек).
Монтирование при отсутствии встроенной поддержки файловых систем
Если установленная прошивка не имеет в комплекте модулей поддержки файловых систем – можно поступить следующим образом – записать поблочно с нужными модулями при помощи dd на отдельный раздел флешки (достаточно раздела размером в 1 Мб) и прописать их распаковку и подгрузку при старте роутера, изменив соответствующим образом startup-скрипт ():
cd /var/lib/fs
tar -zxvf /dev/scsi/host0/bus0/target0/lun0/part2
insmod jbd.ko
insmod mbcache.ko
insmod ext3.ko
После этого ext3 монтируется без проблем. Кстати поддержки ext4 я в dd-wrt не обнаружил (по крайней мере на их ftp модулей нет), обратная конвертация из ext3 в ext4 судя по всему невозможна – стоит учесть это заранее.
Включение SWAP на роутере с dd-wrt
Если установлена прошивка с поддержкой swap, то нужно выделить отдельный раздел под него на внешнем диске или создать своп-файл, как поступил я (можно воспользоваться Linux-машиной, можно установить расширенную версию busybox на роутер):
/opt/bin/busybox mkswap /mnt/myswap.swp
/opt/bin/busybox swapon /mnt/myswap.swp
где count=16000 – 16 тысяч блоков размером по одному килобайту, т.е. размер своп-файла составит 16 мегабайт. Советую сделать не меньше 32-х мегабайт, при большом количестве закачек в transmission легко используется по 20-25 Мб подкачки.
Установка программ в dd-wrt
Для установки софта из репозиториев под dd-wrt применяются следующие команды:
- ipkg-opt update – обновить список пакетов, доступных в репозитории;
- ipkg-opt upgrade – обновить установленные пакеты;
- ipkg-opt install – установить пакет;
- ipkg-opt remove – удалить пакет;
- ipkg list – показать список всех доступных пакетов.
Настройка NFS для доступа к NAS
Из вариантов сетевого доступа к внешнему диску я выбрал доступ по NFS – samba медленней и сложней в настройке, большинство машин у меня дома – с Linux или Android, а кроме того – для Windows XP есть официальный NFS-клиент (точнее – клон mount), доступный на сайте Microsoft, а Vindows Vista и старше – поддерживают NFS изначально.
Настройка NFS на роутере производится следующим образом – устанавливаем пакеты portmap (для динамического выделения портов) и unfs3 (NFS-демон). В созданные после установки файлы /opt/etc/init.d/S56unfsd и /opt/etc/init.d/S55portmap добавляем строку LD_LIBRARY_PATH=/opt/lib:${LD_LIBRARY_PATH} – путь к дополнительным библиотекам на внешнем диске. Создаем файл настроек для NFS-демона /opt/etc/exports:
Точку монтирования NAS-диска и маску подсети надо естественно изменить на свои. При перезагрузке роутера portmap и unfs будут стартовать автоматически.
Затем я на ноутбуке установил пакет nfs-client, после чего можно монтировать NAS:
В каталог /mnt примонтирован на роутере внешний HDD.
Небольшие настройки для удобства работы в ash
Штатно в dd-wrt используется оболочка командной строки ash. Конечно можно установить из репозитория bash или любую другую и прописать ее в автозагрузку, но фактически возможностей ash более чем достаточно для роутера. Единственное реальное неудобство, которое возникло у меня при работе с ней – невозможность прописать свои алиасы в конфиге, поскольку при каждой загрузке роутера все системные файлы откатываются к исходному состоянию. Выход – монтировать поверх штатного конфига командной оболочки (/etc/profile) свой, расположенный на внешнем диске (например у меня – /opt/etc/profile) и дополненный нужными опциями, дописав в startup скрипте такую строку:
Мой profile дополнен следующими командами:
alias top='htop'
alias transmission='/opt/bin/transmission-daemon -g /opt/etc/transmission'
alias halt='/opt/sbin/shutdown'
alias ll='ls -lh'
alias la='ls -lha
Полезно сделать shutdown-скрипт, копирующий содержимое секции shutdown (Administration – Commands – Shutdown) из веб-интрефейса, которое выполняется при перезагрузке роутера. Скрипт будет точно также выгружать определенные процессы и отмонтировать внешние диски для последующего безопасного выключения роутера. Мой скрипт выглядит так:
killall unfsd
sleep 1
/opt/bin/busybox swapoff /mnt/routerswap.swp
umount /dev/scsi/host1/bus0/target0/lun0/part1
Еще на похожие темы:
Рубрики: Linux, Интернет, Технократия |
Метки: ddwrt, dir620, how-to, nas, гаджет |
3 комментария

декабря 24, 2011 | Автор: dimio 
Приветствую! А если версия стоит без свап? Как-то есть вариант добавить свап?
Делаю так:
/opt/bin/busybox dd if=/dev/zero of=/mnt/myswap.swp bs=1k count=16000
Файл создается
/opt/bin/busybox mkswap /mnt/myswap.swp
Setting up swapspace version 1, size = 16379904 bytes
/opt/bin/busybox swapon /mnt/myswap.swp
swapon: /mnt/myswap.swp: Function not implemented
Благодарю!
Вариант по сути один – пересобрать ядро с включением поддержки подкачки. Либо самостоятельно, либо взять прошивку, где ядро уже с поддержкой. swapon как раз и ругается на отсутствие поддержки swap в ядре.
Спасибо, только у тебя нашел нужную информацию!