Делаем из роутера минисервер. Часть 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 понадобится любой флэш-накопитель или внешний жесткий диск.

  1. Форматируем флэшку в файловую систему ext3. Это можно сделать любыми доступными вам средствами: из Linux, загрузившись с Linux LiveCD и т.д.
  2. После этого создадим в корне накопителя папку «Optware».
  3. В админке роутера перейдём в раздел «USB and NAS — USB Support» и поставим все галочки.
  4. Подключим флэшку к роутеру. После перезагрузки она должна автоматически примонтироваться к файловой системе роутера в /mnt/имя_раздела .
  5. Подключимся к роутеру через 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

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