воскресенье, 22 июля 2012 г.

Установка bash на роутер ASUS RT-N16 руками.



Разжился на днях шайтан-коробкой RT-N16 и начал над ним издеваться. Сторонние прошивки пока ставить не тороплюсь, потому что в заводской уже есть Optware с автоматической установкой всего добра на внешний USB-накопитель.
Решил я из такого счастья сделать качалку картинок на основе своих самопальных скриптов. Проблемы переноса я описывать не буду, а вот про bash расскажу.
Поставить bash на таком агрегате проблемы не составляет. Достаточно подключиться к устройству по telnet и вбить команду:
ipkg-opt install bash
Проблемы начались дальше. После переподключения установщик пакетов начал ругаться, что чего-то там не может записать или скачать. Удаляю bash, переподключаюсь, всё работает. Появилась мысль установить его руками. Для этого надо для начала достать установочный пакет. Найти его можно на сайте http://optwarefind.nslu2-linux.org/. Для моего роутера я выбрал архитектуру "mipsel" и целевую прошивку "dd-wrt", благо, что всё там совместимо, а все зависимости еще в процессе исканий поставились. Загружаем ipk-файл на диск и открываем его архиватором, если я не ошибаюсь, то он упакован в tar.gz. Нам нужно содержимое файла "data.tar.gz", а точнее только файл "data.tar.gz/opt/bin/bash". Я сильно заморачиваться не стал и через общий доступ положил его на USB-флешку в папку "asusware\bin\". Потом через telnet создал символическую ссылку в папке "/opt/bin/":
ln -s /tmp/mnt/Transcend/asusware/bin/bash /opt/bin/bash
После этого оболочкой остался sh из BusyBox, а bash просто доступен из терминала.
По идее всего этого можно было добиться удалением файла "asusware/etc/profile" после установки, но дошел до этого уже после устранения проблемы.