Продолжая развивать свой опыт по переделке мясорубок в комбайны роутеров в шаринг боксы, столкнулся с тем,что надо стало собрать и скомпилировать прошивку из чистых исходников. О том,что в последствии прошивка была найдена уже готовая и красивая,я скромно умалчиваю(гуглить лучше надо! - Прим. анонимуса).

В принципе все что я опишу далее,придумано не мной. Просто это перевод англоязычных статей и мануалов + аддон моего личного опыта и комментариев. Нашему человеку русский все таки ближе к телу)

Для сборки нам понадобиться машина с Linux (Debian,Ubuntu) - я буду рассказывать о сборке именно на этих ОС. Хотя на других почти так же).

Внимание! Все ниже перечисленные действия вы выполняете на свой страх и риск! Автор хоть и старался все подробнее описать для людей,но он человек,и может допустить ошибку или что то недописать! Претензии не принимаются.Только просьбы о помощи))

Итак,начинаем по инструкции http://wiki.openwrt.org/doc/howto/build

1) Устанавливаем сам компилятор и прочие примочки:

sudo apt-get install subversion build-essential

2) Качаем исходники с помощью svn

mkdir ~/openwrt

cd openwrt

svn co svn://svn.openwrt.org/openwrt/trunk/

cd trunk
Теперь у нас исходники лежат в папке /home/ваш_пользователь/openwrt/trunk/ и вы находитесь в папке trunk/
3)Докачиваем всякие там нужные(и не очень) скрипты

./scripts/feeds update -a

./scripts/feeds install -a
4) Теперь проверяем что у нас есть все нужные компоненты для успешной компиляции

make defconfig

make prereq

make menuconfig - после ввода это команды появляется само меню настройки всех опций компиляции - тут настраивается и тип процессора, и все модули,которые будут в сборке.
Пример меню. Картинка взята с http://wiki.openwrt.org/doc/howto/build

После выбора всех опций, выберите Exit и вам предложат сохранить все изменения. Соглашайтесь)

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

sudo apt-get install libncurses5-dev zlib1g-dev gawk flex

6) Теперь,когда все готово пишем всего одну команду:

make

Теперь ждем. Все зависит от мощности машины. У меня прошивка компилировалась около 50 минут.

7)После завершения компиляции, идем в папку ~/openwrt/trunk/bin/ramips/ Здесь вы найдете кучу файлов с прошивкой. Внимательно читаем название - там указано для какого роутера или процессора эта прошивка. В моем случае, я нашел openwrt-ramips-rt305x-dir-300-b1-squashfs-factory.bin То есть это как раз мой D-link Dir-300.

На заметку:

- файл с окончанием squashfs-factory.bin это прошивка для заливки ее через вебморду родной прошивки роутера. То есть заводская в openwrt.

- файл с окончанием squashfs-sysupgrade.bin это прошивка для обновления на уже установленной линуксовой прошивке(openwrt, dd-wrt, gargoyle).Обновляется загрузкой этого файла в папку /tmp/ через scp  и выполнением команды в консоли SSH

$> sysupgrade /tmp/имя_прошивки.bin

8) Для полной очистки после компиляции выполните команду

make dirclean - все файлы, созданные во время компиляции будут очищены,все настройки сброшены. Это нужно,например,если делаешь не одну сборку для разных платформ.

Ну,собственно, и все! Вы собрали и скомпилили собственную сборку прошивки) Это может стать удобным для тех, кто хочет поэкспериментировать со своим роутером;  кто хочет сделать прошивку с подогнанным под себя набором функций и программ; всем, кто просто хочет что то новое изучать)

Если у кого есть какой то свой опыт на этот счет, или комментарии - прошу,напишите мне! Буду очень рад)

Добавлено 26.10.2012: Вот ссылка на мою версию прошивки для DIR-300 B1 от Дантеса. Есть веб-морда,все функции + mpcs для шаринга.

http://rusua.org.ua/progs/dantes_dir300b1_19.09.zip

38 комментариев

  1. avatar garynych:

    а как бы при сборке прошивки,включить в неё свой файл? к примеру мне нужно что бы после прошивки роутера, в папке /usr/sbin лежал мой файл...

  2. Вопрос интересный) Ни разу не приходилось задумываться,так что сходу не подскажу. Скорее всего надо поискать в структуре исходников,можно ли там подкинуть свой файл в бинарнике или его исходниках.Ну и погуглить,мож чо то подробнее на эту тему будет)

  3. avatar Serg:

    Создайте папку files и все что туда положите попадет с прошивку. Папка files будет корнем прошивки, т.е. в ней уже создавайте /usr/sbin и ложите туда файлы

  4. Хм! Интересно) Спс! Теперь и я буду знать на всякий случай)

  5. Спасибо serg,уже сам допетрил 😉 очень удобно... 😉

  6. avatar Денис:

    Добрый день! А может ли кто-то выложить уже готовую прошивку OpenWRT для DIR-300 B1 и DIR-615 E4? Столкнулся с проблемой поиска таковой и не могу найти! Кроме того, на сайте OpenWRT исчезли исходники для компеляции прошивки под эти роутеры. Да и не могу разобраться как это все сделать...

  7. avatar Денис:

    Благодарю! Попробую!

  8. avatar Андрей:

    Добрый день!!!
    сталкнулся с проблемой и инет смотрю по форумам на "ушах"
    купил dir-620, все бы хорошо, но от куда я знал, что вместо А1 попадет ревизия D1, а на нее ни чего нету, с линухом не совсем
    дружу, если не сложно может ссылку и прошивку под сие чудо
    ---
    хотел его прошить под keenetic, что б потом подвязать dnla сервис и давать IPTV на LG ТВ - но думаю уже не судьба

    • Заинтересовался вашим вопросом. Сам вообще не сталкивался с подобной проблемой,но пошарил по инету по вашему поводу - нашел следы вот тут http://www.dd-wrt.com/phpBB2/viewtopic.php?p=717713 и вот тут https://sat-forum.info/index.php/topic,9318.1350.html Но в первом месте я так понял шьется прошивка от совместимого роутера,и при этом USB не будет работать, а во втором месте автор Дантес выкладывал прошивки,но их на данный момент удалили.Тобишь вариант связаться с ребятами,участвующими в диалоге,и у них если что попросить прошивку - раз они прошивали,знач должна имхо остаться.
      На данный момент я наверно больше ничего не посоветую ((

      • avatar Андрей:

        Спасибо,
        что откликнулись, видел эти ссылки уже 5-й день в инете по гуглям гуляю, по первой ссылке (http://www.dd-wrt.com/phpBB2/viewtopic.php?p=717713) - там я понял, что выпаивали флешь память, иногда сам пишу под МК и паяю, но с линухом не пересекался что б править, но в новую вещь с паяльником лезть как-то не очень охото - это крайняя мера та и то не совсем понятно будет ли жить по се этого...
        по второй ссылке не догадался, что надо быть залогиненным, что б что то увидеть, завтра попробую, надеюсь не убью мой D1-й

        • Надеюсь поделитесь результатами своих опытов) Мне и многим другим,думаю, будет интересно.Тем более раз сейчас как раз пошли роутеры D1 версии.

          • avatar garynych:

            дык,там же коменты есть,народ то шьётся...

            Все работает нормально косяк был в шифрование. Потоки видео по вафле отлично. Два потока в нd без тормозов.
            Нужна настройка по фаерволу скинте сылку! Спасибо за работу по прошивке!

            Интернет и wi-fi работают нормально, только лампочки на морде надо корректировать

            Работает прошивка нормально, прошивается легко вышеизложенным способом, CDMA модемы работают, клиенты не жалуются. Спасибо!

          • avatar Андрей:

            garynych:
            а вы пробовали dnla сервис понимать и через него IPTV на LG пускать?

          • avatar garynych:

            не я не пробовал...не к чему мне... так а в чём проблема то? благо мануалов в сети полно...

          • avatar Андрей:

            garynych:
            ---------
            Согласен с Вами, думаю разберусь, вопрос времени....
            Просто думал что вы это делали и хотел получить практический ответ, что б не пробовать разные вариации решений проблемы...
            Знаю по МК когда начинал, тоже много чего брал с форумов большой процент советов и примеров не жизнеспособные оказались, а времени убитого было очень много...

  9. avatar garynych:

    с чего Вы взяли,что что то по удаляли...
    вот для D1 https://sat-forum.info/index.php/topic,9318.msg211348.html#msg211348

    • Хм,да,действительно.Зашел на форум незалогиненным,потому не показывало вложения вообще.А удалялись предидущие версии,судя по надписям на месте вложений у Дантеса

  10. avatar Алексей:

    Возникла проблема: при установке модуля openl2tp не хватило памяти. Подскажите, пожалуйста, какие модули можно удалить из прошивки от Дантеса для dir300 b1, либо какое нибудь другое решение этой проблемы. Спасибо.

  11. avatar Grimermakov:

    Установил прошивку openwrt, сначала было все нормально, потом начал прописывать ip адреса для работы интерента, начал сохранять и завис. Теперь совсем не запускается веб-интерфейс. Несколько раз перезагружал роутер, сбрасывал его кнопкой на задней панели, ничего не получается. Как теперь можно сбросить его?

    • Сбросить можно двумя способами:
      1)Включенный роутер, жмем и держим кнопку сброса.В идеале индикаторы должны погаснуть и включится.То есть перезагрузка.
      2)Работает чаще. При выключенном питании,зажимаем кнопку сброса,и не отпуская,включаем питание.Держим.Через время отпускаем.В идеале погаснут индикаторы и загорятся снова,показывая перезагрузку.
      После этого все равно ждем какое то время,что бы дать роутеру загрузиться и уже пробуем опять заходить на него.

  12. avatar kordonsv:

    Здравствуйте. У меня DIR-645 rev.A1 - по Вашей инструкции попробовал собрать прошивку, все этапы настройки проходят норм., но после команды 'make' - получаю следующее:

    *** End of OpenWrt configuration.
    *** Execute 'make' to build the OpenWrt or try 'make help'.

    diegrenze@ubuntu:~/openwrt/attitude_adjustment$ sudo apt-get install libncurses5-dev zlib1g-dev gawk flex
    Чтение списков пакетов… Готово
    Построение дерева зависимостей
    Чтение информации о состоянии… Готово
    Уже установлена самая новая версия flex.
    Уже установлена самая новая версия gawk.
    Уже установлена самая новая версия libncurses5-dev.
    Уже установлена самая новая версия zlib1g-dev.
    обновлено 0, установлено 0 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
    diegrenze@ubuntu:~/openwrt/attitude_adjustment$ make
    Checking 'openssl'... ok.
    Checking 'rsync'... ok.
    Checking 'xgettext'... ok.
    Checking '/usr/include/openssl/ssl.h'... failed.

    squid: squid requires the openssl development (named like libssl-dev, depending of your package manager) package be installed on the host-system.

    make[3]: *** [prereq] Error 1
    Checking 'xsltproc'... failed.

    telepathy-python: telepathy-python requires xsltproc installed on the host-system.

    make[3]: *** [prereq] Error 1
    Package prerequisite check failed.
    make[2]: *** [tmp/.prereq_packages] Error 1
    make[1]: *** [prereq] Error 2
    make: *** [world] Ошибка 2

    помогите пожалуйста, подскажите в чем моя ошибка.

    • Насколько я вижу,ошибка в зависимостях. Не хватает ему компонентов.

      Checking ‘/usr/include/openssl/ssl.h’… failed.

      squid: squid requires the openssl development (named like libssl-dev, depending of your package manager) package be installed on the host-system.

  13. avatar kordonsv:

    Спасибо, выполнил: sudo apt-get install libssl-dev
    и все пошло, но в итоге новая ошибка:

    Download failed.
    No more mirrors to try - giving up.
    make[3]: *** [/home/diegrenze/openwrt/attitude_adjustment/dl/openssl-1.0.1e.tar.gz] Error 2
    make[3]: Leaving directory `/home/diegrenze/openwrt/attitude_adjustment/package/openssl'
    make[2]: *** [package/openssl/compile] Error 2
    make[2]: Leaving directory `/home/diegrenze/openwrt/attitude_adjustment'
    make[1]: *** [/home/diegrenze/openwrt/attitude_adjustment/staging_dir/target-mipsel_r2_uClibc-0.9.33.2/stamp/.package_compile] Error 2
    make[1]: Leaving directory `/home/diegrenze/openwrt/attitude_adjustment'
    make: *** [world] Ошибка 2
    diegrenze@ubuntu:~/openwrt/attitude_adjustment$

  14. Сама суть в этом:
    Download failed.
    No more mirrors to try – giving up.
    Он пытается что-то откуда-то скачать,но не получается. И потому он выбивает ошибку. Что то конкретно не могу подсказать,так как тут сильно мало информации что б понять,а лично я с таким тоже не сталкивался

  15. avatar Stanislav:

    Может кто нибудь собрать прошивку для DIR-645 а то нет возможности в данный момент поставить Unix. а под win не получается собрать

  16. avatar Valery:

    А в чем может быть дело? Создаю своё простенькую програмку для openwrt типа Hello world. Через make menuconfig собрал ipk для роутера, залил, установил - работает.Исходник решил усложнить добавив код. Перестал собираться, ругается на операторы new и delete. Причем, если компилировать локально(на ubuntu), через Makefile:
    all:
    g++ main.c -o simple
    прога simple запускается и работает - то есть ошибки в синтаксисе быть не может.

    • Даже не знаю что тут конкретного сказать...Скорее всего разница в компиляторах,или библиотеках которые они юзают - компилятор на убунте явное имеет больше возможностей,чем в роутере.

  17. avatar Максим:

    у меня такой роутер с такой прошивкой http://ftp.dlink.ru/pub/Router/DIR-300_NRU/Source/DIR-300_B1_GPL/2.05/ как понимаю ваша прошивка должна подойти к нему? и ещё главный вопрос работает ли то при этой прошивке http://habrahabr.ru/post/183314/ ну например то
    192.168.0.1/model/__show_info.php?REQUIRE_FILE=/var/etc/httpasswd , а то на моей проишивке работает но прошиться не на что потому что она и так последняя 🙁

    • Насчет дыр в той прошивке я не знаю. Если честно тогда когда ее юзал еще даже не знал про эти баги. Насчет подойти - должна,у вас ведь В1 версия. Но как вариант - попробуйте поискать более новые версии этих прошивок,ибо я их заливал еще оч давно.

  18. avatar Лилипутен:

    Привет! Как собрать из исходников, например, znc версии 1.6, а не 1.4 которая предлагается..

    ПС. уберите эту мерзкую каптчу. Все права защищены Google ? - это ещё что?! вы работаете на гуглберг?

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

%d такие блоггеры, как: