DD-WRT — Установка Optware

Optware — это пакет (программа), позволяющая быстро устанавливать, удалять и обновлять прочие программы, установленные на Вашем роутере.
Пожалуй это самый сложный этап, через который Вам придется пройти, далее все большинство программ будут устанавливаться одной командой.

Прежде чем приступить к выполнению инструкции необходимо, чтобы к роутеру под управлением DD-WRT была подключена флешка и смонтирован как минимум один раздел в каталог /opt.
Если вы это еще не сделали, прочитайте предыдущую статью:
Смонтировали? Ну тогда приступаем. Обещаю, это будет легче, чем может показаться. :-)

Установка Optware

Сначала скачиваем установочный скрипт.

Для этого выполняем команду:

wget http://www.3iii.dk/linux/optware/optware-install-ddwrt.sh -O - | tr -d "\r" > /tmp/optware.sh

Команда скачает и сохранит скрипт по адресу /tmp/optware.sh

Теперь запускаем его:

sh /tmp/optware.sh

В процессе установки скрипт скачает из интернета около 2 мб установочных файлов и установит их.

Собственно Optware уже размещен в каталоге /opt и роутер о нём знает.

Но это только пол пути. Без перезагрузок переходим к следующему этапу.

Настройка Optware

Справка по командам Optware

Для работы с optware вам будут полезны следующие команды:

Обновление данных о пакетах (будет загружать сведения о доступных для загрузки пакетах и их версии):

ipkg-opt update

Обновление устаревших пакетов (определяет какие устарели благодаря предыдущей команде):

ipkg-opt upgrade

Установка конкретного пакета (если он доступен, выполнять так же после update)

ipkg-opt install <имя пакета>

Удаление установленного пакета:

ipkg-opt remove <имя пакета>

Просмотр списка всех установленных пакетов:

ipkg-opt list_installed

Просмотр всех доступных для установки пакетов:

ipkg-opt list

Это не весь список, но его будет большинству достаточно.

Установка редактора nano

Примечание: в принципе этот пункт можете пропустить, если вы опытный линуксоид и спокойно общаетесь с редактором vi.

А вот для новичков этот редактор покажется ужасом, ибо в их руках он может выполнять только две функции: ругаться на неправильные действия или всё портить. Поэтому я советую более дружелюбный редактор nano.

Редактор nano нам понадобится для следующего пункта — создания загрузочного скрипта для Optware, который будет роутеру после перезагрузки сообщать о себе, корректирую системные параметры, и запускать демоны (службы), которые мы в процессе эксплуатации роутера установим.

Итак, обновляем информацию о пакетах, обновляем устаревшие (и такое случается сразу после установки :-) ), устанавливаем nano:

# ipkg-opt update
Downloading http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/Packages.gz
Inflating http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/Packages.gz
Updated list of available packages in /opt/lib/ipkg/lists/optware
Successfully terminated.
# ipkg-opt upgrade
Nothing to be done
Successfully terminated.
# ipkg-opt install nano
Installing nano (2.2.6-1) to /opt/...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/nano_2.2.6-1_mipsel.ipk
Installing ncurses (5.7-1) to /opt/...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/ncurses_5.7-1_mipsel.ipk
Configuring nano
Configuring ncurses
update-alternatives: Linking //opt/bin/clear to /opt/bin/ncurses-clear
Successfully terminated.

Примечание: кто внимателен, тот заметит, что помимо nano устанавливается еще и пакет ncurses. Это в порядке вещей, просто nano без этой библиотеки работать не сможет и Optware об этом знает (вернее пакет nano сам об этом ему сообщил). Это явление в linux-based системах именуется зависимостью

Всё, nano установлен, приступаем к настройке.

Создаем загрузочный скрипт Optware

Для начала создадим каталог на флешке/винчестере, в которой будем хранить наши скрипты (можно их и в веб-интерфейс запихать, но в итоге там будет неразбериха):

mkdir /opt/scripts

А теперь создаем скрипт с помощью установленного нами редактора nano:

nano /opt/scripts/start.sh

Пред нами во всей красе предстанет интерфейс редактора nano, запущеного через терминал.

Если кому он покажется странным и не удобным, то видимо вы редактор viеще не видели :-)

Внешний вид редактора nano, запущенного через терминал

Теперь вводим содержимое скрипта:

#!/bin/sh
[ -e /opt/etc/profile ] && mount -o bind /opt/etc/profile /etc/profile
source /etc/profile

if [ -d /opt/etc/init.d ]; then
for f in /opt/etc/init.d/S* ; do
[ -x $f ] && $f start
done
fi

Данный скрипт подменит профиль на нужный нам (создадим его минутой позже) и запустит наши демоны.

Делаем его исполняемым:

chmod +x /opt/scripts/start.sh

Наш новый профиль

Главное в этом профиле — корректная перезагрузка роутера.

Без него демоны будут в наглую убиваться, а с ним — корректно завершать свою работу.

Примечание: остальные авторы статей об этом забывают или просто не знают, в итоге у людей со временем начинается полный фейл в виде груды ошибок и незапускающихся служб.

Итак, создаем:

nano /opt/etc/profile

И вводим его содержимое:

export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/opt/bin:/opt/sbin
export LD_LIBRARY_PATH=/lib:/usr/lib:/opt/lib:/opt/usr/lib
export PS1='\u@\h:\w\$ '

reboot() {
  for f in /opt/etc/init.d/S* ; do
    [ -x "$f" ] && "$f" stop
  done
  echo "#!/bin/sh" > /tmp/.rc_shutdown
  echo "$(nvram get rc_shutdown)" >> /tmp/.rc_shutdown
  if [ -f /tmp/.rc_shutdown ]; then
    chmod +x /tmp/.rc_shutdown
    /tmp/.rc_shutdown
  fi
  /sbin/reboot
  }

Добавляем загрузочный скрипт Optware в автозагрузку

Скрипт добавляем через веб-интерфейс в автозагрузку сразу после монтирования дисков.

В моем случае скрипт Startup это дело выглядит следующим образом, у вас может отличаться:

# DualAccess PPPoE
{
    udhcpc -i vlan1 -s /tmp/custom.sh -b -p /var/run/udhcpc.pid
}&

# mount USB-disk
{
    insmod /lib/modules/$(uname -r)/jbd.o
    insmod /lib/modules/$(uname -r)/ext3.o

    mkdir /tmp/mnt
    ln -s /mnt /tmp

    mount -o noatime /dev/discs/disc0/part2 /opt
    mount -o noatime /dev/discs/disc0/part3 /mnt

    /opt/scripts/start.sh
}

И не забываем добавить демонтирование /etc/profile в скрипт Shutdown:

umount /etc/profile &
umount /opt &
umount /mnt &
umount /tmp/mnt &
umount /jffs

sleep 2

Скрипты Startup и Shutdown в DD-WRT с установленным Optware

Вместо заключения

Вот и всё, уважаемый читатель, теперь можно приступать к установке дополнительных пакетов, торрент-качалок, samba-сервера и прочего и прочего, но об этом в следующих статьях.

Если возникнут вопросы — спрашивайте в комментариях, постараюсь помочь.

Спасибо за внимание. :-)

Помогла статья? Поддержи блог - расскажи о нём на своей странице в социальной сети.

18 комментариев к DD-WRT — Установка Optware

  1. у меня после выполнения команд
    mkdir /opt/scripts

    nano /opt/scripts/start.sh

    ровным счетом ничего не происходит, черный экран и все

    root@DD-WRT:~# mkdir /opt/scripts
    root@DD-WRT:~# nano /opt/scripts/start.sh

    и нано не открывается. Если даже просто прописать команду nano эффект такой же(

  2. Спасибо автору за полезные публикации!
    Для владельцев устройств на процессорах Atheros предлагаю следовать вот этой теме http://www.dd-wrt.com/phpBB2/viewtopic.php?t=177532

  3. Аналогичная проблема с появлением:
    /tmp/optware-install.sh: line 94: /opt/sbin/ldconfig: not found
    /tmp/optware-install.sh: line 95: /opt/bin/ipkg: Permission denied
    /tmp/optware-install.sh: line 96: /opt/bin/ipkg: Permission denied
    /tmp/optware-install.sh: line 97: /opt/bin/ipkg: Permission denied
    после запуска sh /tmp/optware-install.sh. Изменение атрибутов всех файлов в каталоге /opt и подкаталогах на 777 ничего не дает, ошибка прежняя. И похоже у гуру она никогда не возникала, потому что вопросов про нее везде хватает, а ответов нигде не дают :(

  4. andrei-ka-93

    при
    Такая же проблема как и у bigben
    tp-link wdr4300 пробовал на разных прошивках dd-wrt.
    Монтирую opt и mnt, все проходит успешно.
    Качаем wget http://www.3iii.dk/linux/optware/optware-install-ddwrt.sh -O — | tr -d «\r» > /tmp/optware.sh
    Ставим sh /tmp/optware.sh
    хоть даже еси в opt скачивать и от туда ставить одно и тоже..

    wget http://www.3iii.dk/linux/optware/optware-install-ddwrt.sh -O /tmp/optware-install.sh
    chmod 755 sh /tmp/optware-install.sh
    sh /tmp/optware-install.sh

    не помогает!
    ПОМОГИТЕ!! В чем проблема??? (((

    /tmp/optware-install.sh: line 94: /opt/sbin/ldconfig: Permission denied
    /tmp/optware-install.sh: line 95: /opt/bin/ipkg: Permission denied
    /tmp/optware-install.sh: line 96: /opt/bin/ipkg: Permission denied
    /tmp/optware-install.sh: line 97: /opt/bin/ipkg: Permission denied

  5. подскажите кто как решил проблему?
    root@DD-WRT:~# sh /tmp/optware-install.sh
    Installing package ipkg-opt_0.99.163-10_mipsel.ipk …
    Some newer versions of DD-WRT does not show download progress bar,
    so just be patient — or check STATUS -> BANDWIDTH tab for download
    activity in your routers Web-GUI, and then still wait a minute or two.
    Connecting to ipkg.nslu2-linux.org (140.211.169.161:80)
    ipkg-opt_0.99.163-10 100% |*****************************| 75850 0:00:00 ETA
    /tmp/optware-install.sh: line 94: /opt/sbin/ldconfig: not found
    /tmp/optware-install.sh: line 95: /opt/bin/ipkg: Permission denied
    /tmp/optware-install.sh: line 96: /opt/bin/ipkg: Permission denied
    /tmp/optware-install.sh: line 97: /opt/bin/ipkg: Permission denied
    root@DD-WRT:~#


  6. Updating /opt/etc/ld.so.cache
    /tmp/postinst: line 6: /opt/sbin/ldconfig: Permission denied
    Installing package ipkg-opt_0.99.163-10_mipsel.ipk ...
    Some newer versions of DD-WRT does not show download progress bar,
    so just be patient - or check STATUS -> BANDWIDTH tab for download
    activity in your routers Web-GUI, and then still wait a minute or two.
    Connecting to ipkg.nslu2-linux.org (140.211.169.161:80)
    ipkg-opt_0.99.163-10 100% |*******************************| 75850 0:00:00 ETA
    /tmp/optware-install.sh: line 94: /opt/sbin/ldconfig: Permission denied
    /tmp/optware-install.sh: line 95: /opt/bin/ipkg: Permission denied
    /tmp/optware-install.sh: line 96: /opt/bin/ipkg: Permission denied
    /tmp/optware-install.sh: line 97: /opt/bin/ipkg: Permission denied

  7. После запуска

    sh /tmp/optware.sh

    вылезает Permission denied.
    Как это можно побороть?
    Заранее благодарен!
    пробовал так:

    wget http://www.3iii.dk/linux/optware/optware-install-ddwrt.sh -O /tmp/optware-install.sh

    chmod 755 sh /tmp/optware-install.sh

    sh /tmp/optware-install.sh

  8. А не пробовали поднимать почтовый сервер на DD-WRT?

  9. А у меня постоянно ругается на «stalled»

    Connecting to ipkg.nslu2-linux.org (140.211.169.161:80)
    uclibc-opt_0.9.28-13 0% || 7200 — stalled —

    И скачать пакеты роутер не может.

  10. во — прям по этой теме и пишу я реферат — а у вас на ne-ne-ne.ru будет продолжение?

  11. а вы его исполняемым сделали??попробуйте
    chmod +x /tmp/optware-install.sh
    sh /tmp/optware-install.sh

  12. Шиш!
    /tmp/optware-install.sh: line 94: /opt/sbin/ldconfig: Permission denied
    /tmp/optware-install.sh: line 95: /opt/bin/ipkg: Permission denied
    /tmp/optware-install.sh: line 96: /opt/bin/ipkg: Permission denied
    /tmp/optware-install.sh: line 97: /opt/bin/ipkg: Permission denied

  13. Спасибо.
    жду обещанных статей про самба и прочее.

  14. Ильдар

    ввел команду скачивания, в ответ optware-install-ddwr 100% |*******************************| 2895 —:—:— ETA
    далее ввожу: sh /tmp/optware.sh
    пишет в ответ: sh: can’t open /tmp/optware.sh
    что делать?

  15. в догонку…
    скрипт качал командой
    wget http://www.3iii.dk/linux/optware/optware-install-ddwrt.sh -O — | tr -d ‘\r’ > /tmp/optware-install.sh
    соответственно запускал командой
    sh /tmp/optware-install.sh, при этом
    скрипт завершался ошибкой «Error: No default gateway set!»

    Чтобы избавиться от ошибки, нужно сделать следующее:
    Открываем скрипт для редактирования:
    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
    }

    и его вызов в конце скрипта:
    _check_config

    Совет взят

  16. Огромное спасибо эту и предыдущую публикации. Толково и просто. Именно то, что нужно для быстрого достижения результата силами малосведующего в сих делах человека.

Добавить комментарий

Войти с помощью: