Click

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-скрипт (подробная инструкция на английском):

mkdir /var/lib/fs
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 на роутер):

dd if=/dev/zero of=/mnt/myswap.swp bs=1k count=16000
/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:

/mnt/точка_монтирования_внешнего_диска       192.168.0.1/255.255.255.0(rw,sync,no_subtree_check,no_root_squash)

Точку монтирования NAS-диска и маску подсети надо естественно изменить на свои. При перезагрузке роутера portmap и unfs будут стартовать автоматически.
Затем я на ноутбуке установил пакет nfs-client, после чего можно монтировать NAS:

mount -t nfs 192.168.0.1:/mnt /media/NAS

В каталог /mnt примонтирован на роутере внешний HDD.

Небольшие настройки для удобства работы в ash

Штатно в dd-wrt используется оболочка командной строки ash. Конечно можно установить из репозитория bash или любую другую и прописать ее в автозагрузку, но фактически возможностей ash более чем достаточно для роутера. Единственное реальное неудобство, которое возникло у меня при работе с ней – невозможность прописать свои алиасы в конфиге, поскольку при каждой загрузке роутера все системные файлы откатываются к исходному состоянию. Выход – монтировать поверх штатного конфига командной оболочки (/etc/profile) свой, расположенный на внешнем диске (например у меня – /opt/etc/profile) и дополненный нужными опциями, дописав в startup скрипте такую строку:

mount -o bind /opt/etc/profile /etc/profile

Мой profile дополнен следующими командами:

alias vim='vim -u /opt/etc/vim/.vimrc'
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 transmission-daemon
killall unfsd
sleep 1
/opt/bin/busybox swapoff /mnt/routerswap.swp
umount /dev/scsi/host1/bus0/target0/lun0/part1

Еще на похожие темы:

Category Рубрики: Linux, Интернет, Технократия | Tag Метки: , , , , | Comments 3 комментария

Comments

3 комментария to “D-Link DIR-620 и dd-wrt – подключение flash, установка программ, настройка NAS”

  1. Igor пишет:

    Приветствую! А если версия стоит без свап? Как-то есть вариант добавить свап?
    Делаю так:
    /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

    Благодарю!

    • dimio пишет:

      Вариант по сути один – пересобрать ядро с включением поддержки подкачки. Либо самостоятельно, либо взять прошивку, где ядро уже с поддержкой. swapon как раз и ругается на отсутствие поддержки swap в ядре.

  2. Ruslan пишет:

    Спасибо, только у тебя нашел нужную информацию!

Leave a Reply