Делаем из роутера минисервер. Часть 1 — установка Optware.
Маршрутизатор D-Link DIR-320 является довольно универсальным устройством. При соответствующей настройке из него можно получить Web-сервер, NAS (сетевое хранилище), прокси-сервер, баннерорезку, медиасервер, можно возложить на него функции управления другой техникой и многое другое.
Итак, дано:
- Роутер D-Link DIR-320 с прошивкой Tomato v1.27;
- 3G-модем Huawei E173 (совсем недавно был Huawei E1550);
- Принтер Samsung ML-1641;
- Жёсткий диск Toshiba MK3265GSX 320Гб во внешнем боксе;
- USB-хаб D-Link DUB-H7.

Установка Optware
Для установки Optware понадобится любой флэш-накопитель или внешний жесткий диск.
- Форматируем флэшку в файловую систему ext3. Это можно сделать любыми доступными вам средствами: из Linux, загрузившись с Linux LiveCD и т.д.
- После этого создадим в корне накопителя папку «Optware».
- В админке роутера перейдём в раздел «USB and NAS — USB Support» и поставим все галочки.
- Подключим флэшку к роутеру. После перезагрузки она должна автоматически примонтироваться к файловой системе роутера в /mnt/имя_раздела .
- Подключимся к роутеру через Telnet или по SSH (рекомендую для этого PuTTY).


Введём команду «mount». Ищем подобную строчку:
/dev/discs/disc0/part1 on /tmp/mnt/system type ext3 (rw,noatime,nodev)
В данном случае system — это имя раздела накопителя.
- Добавляем в админке роутера в поле «Run after mount» следующую команду (system заменить на ваше имя раздела):
mount -o noatime -t ext3 -obind /mnt/system/Optware /opt
Теперь раздел автоматически будет монтироваться в директорию /opt , которая необходима для Optware.
- Перезагружаемся и проверяем, так ли это. Если нет, то смотрим где мы допустили ошибку.
В качестве накопителя можно использовать microSD карточку, вставленную в картридер 3G-модема.

Для монтирования флэшки, в данном случае, в поле «Script hotplug» (USB and NAS — USB Support) необходимо вписать следующий скрипт:
mkdir -p /tmp/mnt/sd
mount -o noatime /dev/discs/disc0/part1 /tmp/mnt/sd
if [ -d /mnt/sd ]; then
mount -o noatime -t ext3 -obind /mnt/sd/Optware /opt
fi
Если всё правильно, то настало время установить Optware. Для этого в консоли даём следующие команды:
wget http://wd.mirmana.com/optware-install-ddwrt2.sh -O - | tr -d '\r' > /tmp/optware-install.sh
sh /tmp/optware-install.sh
Теперь Optware установлено. Для управления пакетами программ служит утилита ipkg-opt.
Команды ipkg-opt
Обновление списка доступных программ:
# ipkg-opt update
Обновление всех установленных пакетов до актуальной версии:
# ipkg-opt upgrade

Две предыдущих команды рекомендую выполнять регулярно, чтобы иметь постоянно свежие версии пакетов.
Просмотреть список всех пакетов:
# ipkg-opt list | more
Просмотреть список всех установленных пакетов:
# ipkg-opt list_installed | more
Установка пакетов:
# ipkg-opt install название_пакета
Удаление пакетов:
# ipkg-opt remove название_пакета
Скачать пакет (файл ipk):
# ipkg-opt download название_пакета
Установить ранее скачанный пакет (ipk):
# ipkg-opt install имя_файла.ipk
Получить информацию о пакете:
# ipkg-opt info название_пакета
- coreutils — набор основных unix утилит
- diffutils — набор unix утилит для работ по сравнению строк, текстов и т.д. (пригодится при написании скриптов)
- man — для чтения мануалов по командам
- mc — файловый менеджер Midnight Commander
- nano — текстовый редактор
- thttpd — web-сервер
- transmission — торрент-клиент
Например, установим файловый менеджер Midnight Commander:
# ipkg-opt install mc
После этого необходимо задать переменные окружения. Для этого создадим (или отредактируем если он существует) файл /opt/etc/profile
# # Bash initialization script # #PS1="[\u@\h \W]$ " export PATH=/opt/sbin:/opt/bin:/sbin:/bin:/usr/sbin:/usr/bin:$PATH LD_LIBRARY_PATH=/opt/lib:${LD_LIBRARY_PATH} export HOSTNAME=`cat /proc/sys/kernel/hostname` export SHELL="/opt/bin/bash" export TERMINFO="/opt/share/terminfo" export TERM="xterm" # Раскоментируйте следующие строки чтобы включить русское меню в MC. # У меня русский язык нормально работал только при подключении через Telnet под убунтой. #export LC_ALL="ru_RU.KOI8-R" #export LANG="ru_RU.KOI8-R" #export LANGUAGE="ru_RU.KOI8-R" #export LC_CTYPE="ru_RU.KOI8-R" #export LC_NUMERIC="ru_RU.KOI8-R" #export LC_TIME="ru_RU.KOI8-R" #export LC_COLLATE="ru_RU.KOI8-R" #export LC_MONETARY="ru_RU.KOI8-R" #export LC_MESSAGES="ru_RU.KOI8-R"
После этого разорвём Telnet/SSH соединение и зайдём снова. Попробуем запустить Midnight Commander:
# mc

Во второй части статьи будет подробнее рассказано про скрипты.
Часть вторая