Попробую и я себя в роли пейсателя... думаю Ачатовцы будут не против... В данной статье я попытаюсь раписать от А до Я весь процесс сборки кастомной прошивки для ОпенВРТ + ништячок в виде балансировки между провайдерами. Собственно для чего нужна кастомная прошивка если на фтп-сервере ОпенВРТ выливают Гигабайты прошивок? Кастомные прошивки нужны для исключительных ситуаций: - Разработка своего функционала и доп.софта - Когда для дополнительных пакетов просто не хватает места - Когда хочется собрать пакет All-In-One (предустановленый софт) Сборка прошивки из исходников. 1) Для начала нужно скачать сурс с которого всё будет собираться в одну кучу... Выбор сурсов тут ... https://dev.openwrt.org/wiki/GetSource Trunk - "основной ресурс OpenWRT" Code: git clone git://github.com/openwrt/openwrt.git Chaos Calmer - "следующая версия OpenWRT, находится в стадии trunk. Обещается в будущем переход на версию kernel 3.14 и подхватывание всех современных тенденций. Версия для экспериментаторов. Временами возникают проблемы, но быстро лечатся. Если руки у Вас прямы, нервы крепки, готовы и морально и физически к трудностям, которые могут возникнут совершено случайно при очередной пересборке, то смотрите лучше на эту версию." Code: git clone -b chaos_calmer git://github.com/openwrt/openwrt.git Barrier Breaker - "версия, обещающая стать заменой предыдущей, на сегодня находится в стадии RC (release candidate). ставшая новым stable-релизом. если случаются обновления исходного кода, то только критические исправления, не замеченные в период тестирования. Пока имеет множество небольшое количество о умолчанию не доступных дополнительных пакетов, но если вы не планируете запускать на маршрутизаторе Web-сервер или еще какое нестандартное извращение, то проблем у Вас не возникнет." Code: git clone -b barrier_breaker git://github.com/openwrt/openwrt.git Attitude Adjustment - "проверенная стабильная версия, однако на фоне неумолимого прогресса в сфере информационных технологий актуальность её угасает" Code: git clone -b attitude_adjustment git://github.com/openwrt/openwrt.git 2)Устанавливаем доп.софт необходимый для компиляции.. apt-get update apt-get install git-core build-essential libssl-dev libncurses5-dev unzip gawk zlib1g-dev libssl1.0-dev subversion mercurial 3) Далее подготавливаем зависимости... (запускаем скрипт в папке с сурсом) ./scripts/feeds update -a ./scripts/feeds install -a 4) Подготовка компиляции (находясь в папке с сурсом ввести) make prereq 5) Выбор платформы. make menuconfig после этой команды должно появится вот такое окошко... Управление тут примитивное Стрелками Вверх-Вниз перемещаемся между строками, вход в подуровень Enter, пометить\снять метку - пробелом. Выбираем Target System, Subtarget, Targer Peofile. Нажимаем Save и Exit. Далее вводим. make defconfig и еще раз make menuconfig и собственно сама сборка... make -j2 V=s FORCE_UNSAFE_CONFIGURE=1 флаг -j указывает количество ядер процессора. флаг s=V значит подробный вывод текущего состояния компилирования флаг FORCE_UNSAFE_CONFIGURE=1 значит сборка под рутом (без этого флага не запустится компиляция) 6) Осталось забрать готовую прошивку по адресу: .../bin/тип процессора/ Предупреждение: После компиляции возможно раздутие папки до 7 Gb! ****************************************** В данной статье использовались следующие материалы Источник - https://github.com/freifunk-gluon/gluon/issues/973 Источник - http://wiki.openwrt.org/doc/howto/buildroot.exigence Источник - https://www.denisyuriev.ru/linux/openwrt-linux/openwrt-sborka-iz-isxodnikov/ Примечание: Для полноценного запуска пришлось столкнутся с костылями которые в процессе пришлось решить что потребовало небольших усилий... Самое печальное что об этих костылях не пишут не в офф.мануале по сборке не в видео-обзорах Ютуба... у них всё в шоколаде! )))) P.S - Время компиляции на моём нетбуке составило ~ 4 часов. 48 минут с ключем j2 Spoiler: Конфигурация такая: - CPU Intel Atom N450 1.66 Ghz (1 ядро x 2 потока) - DDR 2 - 2 Gb - SSD OCZ - 120 Gb
Модификация прошивки из исходников 5.1) Сначала указываем целевое устройство... Допустим для TP-Link TL-WR842ND Target System — Atheros AR7xxx/AR9xxx Subtarget — Generic Target Profile — TP-LINK TL-WR842N/ND TP-Link TL-WR741ND Target System — Atheros AR7xxx/AR9xxx Subtarget — Generic Target Profile — TP-LINK TL-WR741N/ND Если вы не знаете или сомневаетесь посмотрите офф.страницу вашего устройства тут... https://wiki.openwrt.org/toh/start 5.2) Далее подключаем/удаляем модули... Что можно добавить? Spoiler: Web-интерфейс LuCI Управлять прошивкой из командной строки — дело благородное, но не всегда удобное. Посему я всем рекомендую использовать Web-интерфейс. Для этого выбираем следующие пункты LuCI ---> 1. Collections ---> <*> luci 5. Translations ---> <*> luci-i18n-english <*> luci-i18n-russian Spoiler: Протоколы подключения к интернету Зачем нам маршрутизатор, который не умеет подключаться к интернету? Выберем необходимые протоколы: Network ---> <*> ppp <*> ppp-mod-pppoe <*> ppp-mod-pppol2tp <*> ppp-mod-pptp Примечание: если роутер будет использоваться в качестве клиента DHCP или по статическому адресу, тот этот пункт можно отключить... Spoiler: Подключение USB-устройств Наиболее популярной задачей, с которой сталкиваются пользователи OpenWRT — подключение внешних накопителей. Подключение USB-модемов и принтеров рассматривать в этой статье не будем, так как её размер увеличится до бесконечности. Для подключения USB дисков нам первым делом понадобится пакет block-mount, который в прочем не обязателен, но поможет нам подключать диски через Web-интерфейс, а так же автоматически их монтировать после перезагрузки устройства. Иначе придется всё ручками прописывать. Base system ---> <*> block-mount Kernel modules ---> USB Support ---> <*> kmod-usb-core <*> kmod-usb-ohci <*> kmod-usb-storage <*> kmod-usb-usb2 Kernel modules ---> Filesystems ---> <*> kmod-fs-ext4 Примечание: Также советую добавить пакет hd-idle, он отвечает за отключение винчестера во время простоя, очень легко настраивается через консоль. Если консоль НЕОК, тогда добавляем GUI LuCI ---> Application ---> <*> luci-app-hd-idle Spoiler: Transmission Старый добрый трансмишн ну куда без него? Хотите что б роутер сам тянул торренты? Нефиг делать! Network ---> BitTorrent ---> <*> transmission-daemon <*> transmission-remote Если через консоль НЕОК, тогда запиливаем через Люсю... тобишь GUI. LuCI ---> Application ---> <*> luci-app-transmission Spoiler: Редактор Nano Если место Вы экономить не планируете, а с редактором vi, идущем по умолчанию в OpenWRT у вас созревают конфликты, ибо не самое удобное творение человечества, то есть смысл так же добавить в состав прошивки редактор Nano. Хотя он и не очень то и много места займет в Вашем устройстве. Utilities ---> [*] Editors ---> <*> nano Spoiler: WPA-HACK Если вы хотите использовать роутер не по своему назначению, тогда нужно выбрать след. пункты. Network ---> Wireless ---> <*> aircrack-ng Base System ---> <*> wireless-tools Spoiler: MacChanger Обход мак-блокировки? Легко! Utilitues ---> <*> macchanger Spoiler: MultiWAN Очень ништяковый пакет, позволяет добавить WAN'ы путём отрезания "лишних" LAN-портов... очень рекомендую! LuCI ---> Applications ---> <*> luci-app-multiwan Что можно удалить? Spoiler: IPv6 Можно удалить таблицы IPv6 , освободится приблизительно 128 Кб... Global build settings ---> < > Enable IPv6 support in packages Spoiler: OPKG Зачем на устройстве с кастомной прошивкой подливка доп.пакетов? Base system ---> < > opkg Spoiler: PPP У себя я выпилил все PPP пакеты, т.к. инет получаю по DHCP Network ---> <> ppp Kernel modules ---> Network Support ---> < > kmod-ppp 5.3) После окончания выбора пакетов конфигурацию можно сохранить, что бы в дальнейшем нужно было делать меньше действий... В главном меню нажимаем Save И указываем имя файла конфигурации P.S. буду дальше редактировать статью... так как после прошивки Люся не появилась, я так понимаю нужно добавить веб-сервер на котором крутится веб-морда...
Сборка при помощи ImageBuilder Не только лишь все знают (с) , что собирать прошивку можно иначе! Еще не до конца понял в чём разница, просто оставлю это здесь ... Есть еще один способ собрать .... точнее пересобрать прошивку, с помощью ImageBuilder. Идём на офф.сайт ОпенВРТ и ищем нужный нам ImageBuilder... В данном случае я искал для TP-Link 741 wget https://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/generic/OpenWrt-ImageBuilder-15.05.1-ar71xx-generic.Linux-x86_64.tar.bz2 теперь нужно это дело распаковать ... tar -xjvf OpenWrt-ImageBuilder-15.05.1-ar71xx-generic.Linux-x86_64.tar.bz2 Переходим с папку с буилдером... cd OpenWrt-ImageBuilder-15.05.1-ar71xx-generic.Linux-x86_64 теперь собственно пересобираем прошивочку... make image PROFILE=TLWR741 PACKAGES="luci luci-app-qos luci-app-mwan3 -ppp -ppp-mod-pppoe -wget -opkg -ip6tables -kmod-ip6tables -kmod-ipv6 -odhcp6c" теперь по-порядку: make image - собрать образ PROFILE=TLWR741 - указываем какой именно роутер нас интересует PACKGES=... тут мы описываем что мы хотим добавить\удалить в образе... в данном случае я добавил люсю и мультиван а также QoS(для уменьшения аппетитов ВАНов), и удалил ppp-типы подключений , IPv6-таблицы а также wget и opkg так как он мне более не нужен и занимает лишнее драгоценное место (флеш всего 4 Мбайта) И всё ... забираем готовые ништяки тут ../bin/ar71xx/ В пересборке с помощью буилдера весь процесс занимает около 3-4 минут. (в отличие от компиляции ~ 4 часа)
Модификация LAN -> WAN В этой статье я также поведаю как сделать из обычного роутера ... не обычный.... Точнее как заставить наш 741 работать с несколькими провайдерами, сделать это не просто но возможно! Поможет нам в этом пакет - app-luci-mwan3 В настройке есть куча подводных камней, ло этого момента мне казалось что настройка нескольких WAN'ов на Микротике это сложно, но нет... я ошибался. Но познакомившись с ОпенВРТ поближе эта прошивка мне начала даже немножко нравится... Итак приступим... Для начала давайте немного разберёмся с интерфейсами в ОперВРТ. Ethernet Switch: "eth0"- это наши физические порты LAN Ethernet Adapter: "eth1" - это собственно родной WAN (он стоит особняком об этом позже) Wireless Network: Master "OpenWrt" (lan) - это наш физический Вай-Фай Теперь нужно определится какие порты из LAN'ов мы будем рвать.... тут есть один прикольный момент опишу его чуть ниже. Допустим мы хотим завести в 741 три провайдера. Для этого нам необходимо 3 порта 2 порта (заводской WAN + 2 x LAN ) RJ-45, один мы будем брать родной и два придётся "хирургическим путём" отрезать от LAN'а. Далее мы разбираемся какой физический порт соотв. аппаратному в прошивке. Network -> Interfaces -> Switch Физически мой кабель подключен к 741 в порт 3, а ОпенВРТ думает иначе )))) Не скажу почему так происходит... я просто принял суровую реальность и проверил каждый порт... в итоге получилась довольно забавная ситуация... PHYS - APP ---1-----2 ---2-----3 ---3-----4 ---4-----1 Всё очень сложно ! )))) Первый порт лана в роутере это 2 аппаратный, 2 порт в лане это 3 аппаратный и так далее. Теперь когда мы определились с портами приступим далее... Нажимаем Add и добавляем VLANы... максимальное кол-во для ТП-Линка составляет 4 Vlan'a (3 под WAN и один для сети.) Нажимаем Save (только Сейв! пока рано применять!) Далее идём в интерфейсы и грохаем WAN6. Тоже нажимаем только Сейв! Идём в LAN. Interfaces -> LAN -> Physical settings -> Убираем галочку с creates a bridge over specified interface(s) Переставляем галочку с Interface -> Ethernet Adapter: "eth0" (lan) На Interface -> VLAN Interface: "eth0.101" Нажимаем Save Если необходимо изменить настройки DHCP , тогда корректируем... идём во вкладку General setup А теперь можно нажать Save + Apply! Роутер ребутнётся и вы должны получить айпи адресс из нового диапазона или из старого если вы не меняли настройки DHCP. Теперь собственно переходим к подготовке WAN-интерфейсов... Переходим в Interfaces и нажимаем Add new interfaces. указываем имя второго Вана Name of the new interface --> WAN2 указываем тип подключения Protocol of the new interface --> DHCP Client (у вас может быть PPTP или иной) И нажимаем Submit Переходим опять в настройки этого ВАНа и создаём зону фаервола... И указываем метрику интерфейсов... (она необходима нам будет позже) Для WAN - 10, WAN2 - 20, WAN3 - 30, WAN4 - 40 Далее Save and Apply Далее добавляем остальные WANы... Я ограничился 1+2 по витой паре, теоретически можно отрезать еще один ЛАН, но я решил оставить два порта под сеть... А теперь фокус-покус... добавляем еще один Ванчик по вафельке! Переходим в Network --> Wifi --> И нажимаем Scan Выбираем сеть от которой у нас есть ключик и нажимаем Join network. указываем ключ WPA passphrase указываем имя доп.вана Name of the new network: WAN4 указываем зону фаервола: Create / Assign firewall-zone: wan4 Дальше Submit Далее можно тонко настроить беспроводную сеть... Operating frequency я выставил на Legacy и канал auto Save and Apply Далее роутер должен показать что он подключился по вафле , но инета у нас пока еще нет, мы не настроили фаерволл... Собственно что мы и сделаем... Переходим Network --> Firewall В качестве эталона у нас штатный WAN, собственно чекаем по аналогии... Клацаем Save and Apply. Всё после этого у нас появится инет... Ура мы проделали 50% работы! )))))
Настройка MultiWAN (Failover+Load Balancing) Переходим в Network --> Load Balancing По-умолчанию стоят два вана, они не рабочие, просто игнорируем их... Переходим во вкладку Configuration и убиваем интерфейсы... Тут же создаём новые, прописываем имена интерфейсов которые мы создавали ранее... WAN,WAN2,WAN3,WAN4 .... тут регистрозависимые имена! В графе Tracking IP , указываем адрес который будет пинговатся для того что бы понять есть инет на порту или нет, я выбрал Гугловский DNS-сервак... вы можете указать какой угодно хост, для подстраховки можно указать хоть три-четыре хоста.. Если интерфейсы прописаны верно, то в колоке метрика вы увидите заданные ранее значения! Это факт того что МВАН3 правильно понял вас! Далее переходим во вкладку Member, тоже сносим предустановленные настройки... И создаём свои... Тут всё равно что вы напишете... т.к. далее нужно будет указать интерфейс и метрику отдельно, строку Weight укажите 1. По концовке должно получится что-то похожее... Далее идём в Policy, сносим всё кроме строки balanced, её мы редактируем. Сносим все указаные Member used, и добавляем ранее нами созданные... Должно получится что-то такое... Далее идём в MWAN Rule Configuration. Тут просто сносим две верхние строки и оставляем нижнюю и жмём Save and Apply. Ну кажись всё! Теперь проверяем! У нас появились все Ванчики, и один из них горит (Вафля) если мы подрубим три витухи в порты то все провайдеры буду работать но в порядке приоритета... Т.е. если отваливается WAN тогда роутер садится на WAN2, если отваливается WAN2 идёт на WAN3, если отваливается WAN3 идёт на WAN4. В фоновом режиме он пингует хосты по каждому ВАНу, если на каком то появляется инет он перескакивает на него в порядке приоритета! Этот метод называется FAILOVER. Также есть еще один метод LOAD BALANCING. Получить его очень легко, достаточно изменить настройки в MWAN Member Configuration на единицы, то есть для MWAN вы делаете каждого провайдера равноценным и он балансирует между ними (простыми словами суммирует скорости со всех ВАНов) Проверить как он балансирует можно тут... В будущем я добавлю сюда скрин с заведёнными витухами по ВАНам и сделаю скрин с балансировкой и спидтестом.... Сеть будет выглядеть приблизительно так ... Code: [TL-WA5210G]-------------- ------------------- [PC] | | [TL-WA5210G] ---------[TL-WR741ND] ---- [свич]---------------[PC] | | [TL-WA5210G] ------------- -------------------[PC] 741 будет аккумулировать все потоки с CPE-шек 5210 и дальше по свичу раздавать по локалке... даже если по одной CPEшке по каким либо причинам отвалится клиент ничего страшного чуть-чуть упадёт скорость, я это увижу в 741 будет красным гореть ВАН в настройках MWAN3 Чуть ниже я оставил сегодняшние практические данные полученные на коленке в полевых условиях... *************************************************************** Результаты работы LoadBalancing (балансировка WAN-ов) SpeedTest по витой паре... Ping | Download | Upload | 23 | 29.86 Mb | 30.77 Mb | 23 | 31.15 Mb | 30.79 Mb | 23 | 29.78 Mb | 30.79 Mb | SpeedTest через 3g (на смарте) Ping | Download | Upload | 47 | 6.92 Mb | 3.65 Mb | 35 | 8.66 Mb | 3.58 Mb | 49 | 4,76 Mb | 4.11 Mb | Балансировка на роутере (Витая пара + WiFi Client -->(3G)) тут наверное подробнее... В порт WAN ключен кабель от провайдера (пакет 30 Мбит) Через WAN4 (WiFi интерфейс) роутер подключен к смартфону ( считаем 6Мбит) На смартфоне поднята точка доступа.... ниже я привёл пример спидтеста отдельно и вместе. Ping | Download | Upload | 50 | 34.46 Mb | 34.10 Mb | 40 | 35.53 Mb | 34.25 Mb | 39 | 35.49 Mb | 34.17 Mb | Источник - https://habrahabr.ru/post/264299/ ******************************************************* До сегодняшнего эксперимента с балансировкой у меня было не очень хорошее отношение к ОпенВРТ т.к. эта прошивка менее дружелюбная чем ДД-ВРТ, но если вникнуть и проникнутся то потенциал её очень огромен! И фактически можно сделать с железкой за копейки потенциал железа который в 2-3 раза дороже, например если бы у меня не получилось сделать балансировку на TP-Link WR741-ND тогда пришлось бы покупать TL-R470T+ сравнить цены на него можете сами если вам будет интересно... Вот статья про 470+ https://geektimes.ru/post/131933/ тут чел купил его и покрутил, но получил кучу минусов по репе ))))) Мне было очень интересно поковырять эту прошивку. Во время написания данного мана, я прокурил наверное статей 5-6 и просмотрел минимум 7-8 роликов на Ютубе, честно говоря в каждом ролике или статье скрывается часть настроек что не позволяет сразу вьехать где горбыль, приходилось много импровизировать. Раз 10-15 я перепрошивал Туполинк, но он жив здоров и будет далее трудится на благо нации!
Здравствуйте. Есть роутер, Petatel PSR-680W. Ещё давно был прошит на OpenWrt. Подключался я к нему через UART, через ethernet кабель подключится не получается. После многих попыток редактирования файла network подключится удалось. Далее был включен и добавлен в автозагрузку WEB интерфейс и все вроде бы должно работать, но соединения с сетью не было. Следуя по инструкции из интернета соединение с роутером опять пропало. Роутер не выдает IP адрес и компьютер не может подключиться. При изменении адреса на статический было ровно тоже самое. Объясните, пожалуйста, как надо отредактировать файл network, чтобы сеть работала правильно.
Еще можно удалить: Отключение Debug-инфо и DebugFS Данные инструменты абсолютно бесполезны большинству пользователей, а существует для разработчиков ПО. Kernel modules wireless drivers [*] kmod-mac80211 [ ] export mac80211 internal in DebugDS Global build settings [ ] Compile the kernel with Debug FileSystem enabled [ ] Compile the kernel with debug information Теперь после сборки освободится еще 64 kb места для установки своих пакетов прямо в прошивку.
Привет, прошу помощи! Хочу собрать свою прошивку ImageBuiler'ом, делаю все как тут написано. Запускается, пишется много текста, но скоро выскакивает ошибка: make[2]: *** [Makefile:131: package_install] Error 126 make[2]: Leaving directory '/home/test2/OpenWrt-ImageBuilder-15.05.1-ar71xx-generic.Linux-x86_64' make[1]: *** [Makefile:106: _call_image] Error 2 make[1]: Leaving directory '/home/test2/OpenWrt-ImageBuilder-15.05.1-ar71xx-generic.Linux-x86_64' make: *** [Makefile:178: image] Ошибка 2 Система стоит Kali Linux (Light). Два дня мучаюсь, исшерстил весь интернет, не могу найти решения...
Система свежая, поставил буквально несколько дней назад и почти ничего не устанавливал, поэтому даже не могу сообразить, что надо удалить, чтобы попробовать собрать без "добавленного" компонента.
может какие то зависимости не стали, нужно смотреть по факту, так из куска лога только понятно что какой то компонент не установился и дальше билд посыпался. https://openwrt.org/docs/guide-user/additional-software/imagebuilder -- вот офф мануал по сборке Кстати почему билдер 15 версии? уже 18 давно доступна. Может он пытается скачать пакеты которые уже deprecated и их давно убили.
Вначале пробовал 18-ый билд, тоже подобная ошибка выскакивала, поэтому решил "проверенный" 15.05.1 попробовать, и тоже ошибка выскочила... Кстати, тут https://openwrt.org/docs/guide-user/additional-software/imagebuilder сказано: The Image Builder runs only in 64bit linux А у меня 32-bit kali linux... Может, из-за этого ошибка?