Создание своей прошивки для роутера

FIXME This page is not fully translated, yet. Please help completing the translation.
(remove this paragraph once the translation is finished)

Цель этого руководства — позволить вам создать собственную прошивку за несколько шагов. Руковдство предназначено для пользователей Windows и пользователей, у которых уже есть Linux Debian или Ubuntu. Вам необходимо иметь 64-разрядную версию Windows и не менее 8 ГБ свободного дискового пространства. Настройка для сборки под Mac будет очень похожа (Virtualbox доступна), но у меня ее нет, поэтому я не могу ее протестировать.

The main advantage of building your own firmware is that it compresses the files, so that you will have room for much more stuff. It is particularly noticeable on routers with 16 MB flash RAM or less. It also lets you change some options that can only be changed at build time, for instance the features included in BusyBox and the block size of SquashFS. Larger block size will give better compression, but may also slow down the loading of files.

Alternative guides to achieving the same goal:
Beginners guide to building your own firmware, Using the Image Builder.

If you already have a Debian/Ubuntu server you can skip to part 2.

As an alternative to setting up a virtual machine, Windows 10 users can install Ubuntu from Microsoft Store and skip to part 2. Make sure to run these commands after installation:

sudo apt-get update
sudo apt-get upgrade

Disabling the virus scanner will speed up the compilation but Virtualbox is faster still.

This program will let you run a virtual Linux server on you Windows based computer. Download the newest version from virtualbox.org and install using default settings.

Download the newest VirtualBox (VDI) 64bit Debian image (currently 9.3) from osboxes.org and unpack it using 7zip. 7zip can be downloaded from 7-zip.org.

  1. Start Oracle VM Virtualbox

  2. Click New

  3. Name: OpenWrtDev

  4. Type: Linux

  5. Version: Debian (64-bit). See here if 64-bit is not available.

  6. Hard Disk: Select “Use an existing virtual hard disk file” and choose the Debian .vdi file you just unpacked.

  7. Click Create

  8. Right click on the OpenWrtDev image and click Settings

  9. Select General, Advanced, Shared Clipboard: Bidirectional

  10. Select Shared Folders

  11. Right click Machine Folders and select Add Shared Folder

  12. Folder path: Click the down arrow, select Other and then the folder you want to share with the virtual Debian server (for transferring the firmware).

  13. Folder Name: Shared

  14. Select Auto-mount

  1. Select the OpenWrtDev image and click Start

  2. Wait for it to finish booting and click osboxes.org

  3. Password: osboxes.org

  4. Click Activities, type term in the search field and click terminal

The interface for changing the keyboard is a bit weird, but you can find the correct place like this:

  1. Click Activites, type reg, click Region & Language

  2. Click + under Input Sources and then the vertical dots

  3. Click Other, select the language and click Add. You can now delete English.

From now on, whenever you should be in the terminal to type a command the syntax will look like this:

ls -l

meaning you should type ls -l and press enter (try it). Follow up questions with obvious answers like typing the passsword (osboxes.org) og confirming with y will not be included specifically in this guide.
Cut and paste will unfortunately not work at this moment.

su -
nano /etc/apt/sources.list

You are now editing the list of servers to get updates from.

deb http://deb.debian.org/debian/ stretch main contrib
deb-src http://deb.debian.org/debian/ stretch main contrib
apt update
apt dist-upgrade
reboot

Log in and open the terminal again when it has rebooted.

su -
apt install linux-headers-amd64 make sudo

Click Devices (top line), select the last option (Install Guest Additions). The automatic install does not seem to work, so it doesn’t matter if you select cancel or run.

sh /media/cdrom/VBoxLinuxAdditions.run
poweroff

After this you will need to start the server again. Now you can change to a higher resolution so you get a larger window if you like:

  1. Click Activities, type disp in the search field.

  2. Click Displays, VBX

  3. Select a different resolution

And lastly (hopefully you can cut and paste now). Note that cut and paste only works for text without any kind of formatting. You may need to copy the text to notepad and then copy it from there to clean it up.

su -
adduser osboxes sudo
echo ' osboxes ALL=(ALL)   ALL' >> /etc/sudoers
exit

Your virtual Debian server should now be set up correctly for following the rest of the guide. Congratulations. As a bonus, you now have a fully functional Linux computer that you can use for anything, and with the added safety of running it as a virtual machine. If you let the resolution match your monitor and select View/Full-screen mode there is almost no difference from a standalone Linux computer.

You select a package using space one or more times. When you select something, always make sure it has a * and not an M in the selected field. * means it will be included in the image, while M means that it will only create a package for it, which kind of defeats the point of following this guide.

Except for choosing the target I suggest that you don’t mess with the options above Base system. Also, in general, don’t uncheck anything that is selected by default unless you really know what you’re doing. If something is selected with “-*-” (so you can’t uncheck it) it is because something else depends on it.

Instructions on how to include config files in the image (for instance from the backup you can download from the router): Custom files

  1. Do a web search for <your router model> wikidevi. For instance, if you have an Asus RT-N56U then search for RT-N56U wikidevi. This would give https://wikidevi.com/wiki/ASUS_RT-N56U as the first response on most search engines. Find CPU on the page. In the case of RT-N56U it says Ralink RT3662F. If you type / in the builder you can search for RT-N56U. This will give a bunch of hits, which among other things says Symbol: TARGET_DEVICE_PACKAGES_ramips_rt3883_DEVICE_rt-n56u. Notice the ramips part. Now select Target System. In the list you will find “Mediatek Ralink ARM” and “Mediatek Ralink MIPS”. Given the information we have you can probably guess that the correct choice is “Mediatek Ralink MIPS”.

  2. Select Subtarget. From the wikidevi page you know that it is a Ralink RT3662F, and the best fit in the list is “RT3662/RT3883 based boards”.

  3. Select Target Profile. Asus RT-N56U is now listed here, so you know you chose the correct target and subtarget.

Run

make

when you have selected what you want. This will take a very long the first time. Don’t use the -j option mention in the Quick image building guide, it is asking for trouble.

If it completes without errors you should now have images. If not then try running

make -j1 V=s

to get more details about the error. A common mistake is to include packages that are mutually exclusive. After a successful build you can list the generated files using this command:

ls -l bin/targets/*/*/

Copy the image files to your shared Windows path:

sudo cp bin/targets/*/*/* /media/sf_Shared

Important: Make sure the image is at least about 500 KB less than the total amount of flash ROM, as some space is needed for configuration and other data. The absolute limit will vary depending on router model and how much configuration data you want to store. You can get an indication by being on the safe side the first time, and then check how much free space there is when you have installed it.

To erase just the config:

rm ~/openwrt/.config

To check out a different version:

rm -rf ~/openwrt/

the follow part 2 of the guide from the start, except you can skip the sudo apt-get commands.

For users:

Mostly for developers:

Don’t hesitate to ask in this forum thread if anything in this guide is unclear.

Подробности
Категория: Сборка
Опубликовано: 04 февраля 2018
Просмотров: 57965

Сборка своей прошивки LEDE из исходников

Во многих случаях решить поставленную задачу можно только путем сборки прошивки LEDE из исходников со включенными под ваши требования пакетами. Особо остро данная необходимость проявляется, когда вы пытаетесь запихнуть новую версию прошивки в свой старый роутер с 4 мб rom памяти. О том, как собрать свою прошивку LEDE OpenWRT из исходных кодов под ваше устройство, а также как исключить из сборки ненужные вам пакеты и будет эта статья. Мы разделим весь процесс на несколько этапов, чтобы вы всегда знали на каком именно у вас возникает проблема и требуется совет. 

1. Подготовка операционной системы

Для того, чтобы собрать LEDE из исходников нужна Linux машина. Ну или хотя-бы виртуальная, если под рукой нет настоящей. Oracle VM VirtualBox идеально подойдет для этих требований, устанавливайте виртуальную машину хоть в Windows 10, скачивайте любимый Linux дистрибутив и устанавливайте в нее. Далее нужно установить необходимые средства компиляции, которые потребуются для корректной сборки прошивки Lede. Я собираю прошивки в Ubuntu64 из под Oracle VM VirtualBox. Для 64 битной Ubuntu команда устанавливающая набор инструментов выглядит так:

sudo apt-get install build-essential subversion libncurses5-dev zlib1g-dev gawk gcc-multilib flex git-core gettext libssl-dev 

Для других дистрибутивов Linux список необходимых к установке инструментов системы для последующей сборки прошивки LEDE перечислен здесь. 

2. Получение исходных кодов LEDE

git clone https://github.com/openwrt/openwrt.git

Или скачайте архив с исходными кодами по адресу https://github.com/openwrt/openwrt нажав на кнопку  Download ZIP и разархивируйте его в вашу в домашнюю папку. 

Сборка своей прошивки LEDE из исходников

3. Обновление и получение списка доступных пакетов LEDE

Переходим в папку с исходными кодами. Запускаем терминал. Сначала обновляем весь список доступных пакетов 

./scripts/feeds update -a

Показать корректный вывод команды make ./scripts/feeds update -a

Подготавливаем все пакеты к возможности их выбора и установки

./scripts/feeds install -a

Показать вывод команды make ./scripts/feeds install -a

4. Выбираем исходную архитектуру, модель и версию железа роутера

make menuconfig

В пункте Target System выбираем архитектуру на которой построен ваш роутер. 

Сборка своей прошивки LEDE из исходников

В пункте Target Profile ищем и выбираем названием вашего роутера с аппаратной версией железа в нем. Могут быть версии V1, V2 и т.д.

Сборка своей прошивки LEDE из исходников

После чего сохраняем текущую конфигурацию Save и выходим Exit. Далее пробегаемся по зависимостям пакетов от архитектуры железа:

make defconfig

Сборка своей прошивки LEDE из исходников

Конфигурация автоматически сохранится. Можно переходить к следующему шагу. 

5. Установка и компиляция инструментов сборки

Для сборки прошивки OpenWRT/LEDE также нужны свои встроенные в исходный код инструменты компиляции. Как правило они собираются и устанавливаются один раз, после чего сборка прошивок с разными пакетами происходит гораздо быстрее. Вводим команду и ждем результата:

make tools/install

Показать примерный корректный вывод команды make tools/install

make toolchain/install 

Показать примерный корректный вывод команды make toolchain/install

6. Выбор пакетов входящих в состав прошивки

Ну теперь можно перейти и к так называемой кастомизации. 

make menuconfig

В OpenWRT/LEDE расширения есть обязательные — это которые включены в базовый набор и являются основопологающими. Вырезать и отключить такие как правило стандартными средствами нельзя. В меню они помечены звездочкой между тире -*-. Их надо принять как должное и не заморачиваться

Встроенные пакеты LEDE

В случае, когда нужно встроить какой-нибудь пакет в вашу прошивку, нужно поменить его звездочкой используя клавишу пробел или Select. Пакет будет установлен в саму прошивку роутера и будет доступен в OpenWRT/LEDE сразу после прошивки.

Пакет LEDE будет установлен в прошивку

Вы также можете собрать расширение как отдельный пакет, чтобы установить его позже через менеджер OPKG. Такой пакет надо поменить в меню как «M»

собрать расширение как отдельный пакет, чтобы установить его позже

После того, как состав пакетов выбран — сохраняем текущую конфигурацию Save и выходим Exit

7. Сборка прошивки

Если вы любите смотреть как все происходит в режиме реального времени, то для вас команда:

make  V=s

Она будет выводить абсолютно весь ход компиляции. Глаза устанут пытаться что-то уловить. Более понятный вывод результата сборки доступен по команде:

make  V=S

Если у вас многоядерный процессор, то сам процесс сборки можно ускорить таким образом:

make  -jN V=S

Где N — количество ядер вашего процессора + 1 поток. 3,5 и т.д. Процесс займет времени достаточно, чтобы успеть сходить выпить кофе или поиграть с котом.

После успешной сборки прошивки, в папке исходныекоды/bin/ вы сможете найти готовые файлы для последующей заливки на ваш маршрутизатор. Файл со словом factory предназначен для прошивки роутера, на котором еще стоит стандартная прошивка производителя, а файл содержащий sysupgrade может быть залит на роутер, на котором уже установлена OpenWRT / LEDE операционная система. 

Сборка своей прошивки LEDE из исходников

Надеюсь данное руководство помогло вам собрать свою первую прошивку OpenWRT LEDE для вашего роутера.

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

Время на прочтение
7 мин

Количество просмотров 113K

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

Выбор пал на роутер Tp-Link TL-WR741ND v.4.25 (цена 1150 рублей), который я выбрал по следующим характеристикам:

1) Низкая цена
2) Достаточное количество памяти для заявленных требований
3) Возможность запиливания USB (для истинных ценителей поковырять железку)
4) Поддержка OpenWrt Barrier breaker
5) Поддержка vlan-ов
6) Поразительная живучесть (роутер невозможно убить неверной прошивкой, функция восстановления прошивки по tftpd работает как часы, и не раз выручала во время неудачных экспериментов). О методах восстановления напишу в конце статьи.

Стандартная прошивка для данного роутера от OpenWrt не устраивала. Причиной тому были лишние пакеты, которые занимали место в драгоценной памяти данного малыша.

Было решено выпилить: ppp, поддержку ipv6, opkg (ставить же не будем больше ничего).
Добавить: openvpn-polarssl (меньше занимает места), luci-mwan3 (очень понравилась визуальная настройки и индикация работы каналов)

Итак, начнем:

1) Подготовка устройства

Для начала, обновим наше устройство до последней версии стандартной прошивки tp-link. Смысла описывать подробно данное действо я не вижу, все достаточно понятно и просто.

2) Сбор прошивки

Нам понадобится многоядерный процессор для комфортного создания своей прошивки (я собирал на i7). Но и Core2Duo сойдет, разве что подольше собираться будет. OS подойдет Ubuntu 15 x86_64.

Установка необходимых пакетов:
sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install subversion git g++ libncurses5-dev zlib1g-dev gawk -y

Все дальнейшие команды сборки делаются от обычного пользователя, не от рута!

Идем в «магазин» за исходниками. Я выбрал OpenWrt Bariier Breaker за удобство в настройке и отличную стабильность на предыдущем роутере (TP-LINK Archer C7).

svn co svn://svn.openwrt.org/openwrt/branches/barrier_breaker wrt
cd ~/wrt
svn update

В домашней папке у нас появится папка wrt, где мы и будем производить сборку.

Скачаем исходники дополнительных пакетов (типа Luci):

./scripts/feeds update -a
./scripts/feeds install -a

Выполним настройку платформы

make menuconfig

Появится псевдографическое меню, где нас интересуют пункты Target System, Subtarget и Target Profile:

image

Вся навигация свободится к выбору нужного пункта (стрелками) и нажатием enter, выбор компонента — также enter, выход из меню — стрелки вправо-влево — Exit. Не забудьте сохранить конфиг.

Применяем стандартные параметры для профиля:

make defconfig

Модифицируем набор пакетов:

make menuconfig

Удалил:

opkg из (base system)
убрал опцию сборки с поддержкой ipv6 (Global build settings)
ppp (Network).

Добавил:

Luci
luci-app-mwan3 (Luci-Applications)
openvpn-polarssl (Network-vpn).

Не забудьте сохранить конфигурацию!

Начинаем сборку:

make -j5 V=s

Параметр -j5 указывает на количество ядер +1 поток для быстрой сборки, а V=s — на вывод подробностей (если будут ошибки).

Процесс займет долгое время, 10-15 минут на i7 процессоре, после чего в директории /home/user/wrt/bin/ar71xx появятся наши прошивки для различных версий роутера. Если не появились — смотрим в логи сборки — наверняка, вы превысили размер прошивки и увидите строку: «firmware is too big». Придется делать make clean, make distclean и начинать все заново. (с шага ./scripts/feeds update -a )

Нас интересует:

openwrt-ar71xx-generic-tl-wr741nd-v4-squashfs-factory.bin — «заводская» прошивка.

Перекидываем её на компьютер с подключенным по ethernet-у роутером (например, через ftp или winscp).

Заходим по адресу: 192.168.0.1 и прошиваем новоиспеченной прошивкой, ждем перезагрузки, затем заходим по адресу: 192.168.1.1

root без пароля (его назначим при первом входе — вверху будет висеть желтый баннер с предупреждением и ссылкой на смену пароля).

Ну наконец-то, самое сложное позади, теперь у нас современная прошивка и НАШ набор программ.

3) Настройка vlan:

Происходит в меню роутера: network — switch

image

Тут не обошлось без непоняток — нумерация портов в роутере и в конфигурации vlan не совпадает. На скриншоте я постарался объяснить как они изменены. Порт WAN в роутере не участвует в vlan-функционале.

Tagged

— тэгированный трафик, сюда направляются пакеты от каждого vlan (101, 102, 103), которые затем распределяются по интерфейсам wan (основной провайдер), wan2 (резервный провайдер), eth0.103 (vlan для локальной сети).

Untagged

— нетэгированный режим порта (точка входа ethernet-кабеля от нужного провайдера). Тут важно не запутаться в проводах: что куда идет. Я подписал сзади роутера нужные названия, чтобы в будущем не было путаницы (провайдер№1 101, провайдер№2 102, локалка 103).

Проще говоря, мы впускаем через 3 порта 3 разных сети, которые затем внутри устройства распределяются по полочкам.

После изменений нажмите Save, но не Apply! Мы ведь не хотим остаться без сети во время настройки?

Теперь, нужно создать нужные интерфейсы в Network — Interfaces:

image

Удалим wan6 интерфейс (мы не используем ipv6 в данном случае).

Изменим wan интерфейс для первого провайдера, укажем нужные данные для подключения (например, провайдер дает инет по dhcp), и укажем какой vlan использовать для этого интерфейса. Вот тут-то и идет сопоставление vlan: провод: интерфейс.

image

Для второго провайдера wan2 укажем eth0.102.

Для Lan укажем объединить интерфейсы в bridge eth0 и eth0.103:

image

В настройках интерфейсов wan и wan2 укажите метрику устройств (обязательно для работы mwan3):

image

Теперь смело можно жать на Save&Apply и проверить введенные настройки.

4) mwan3 или крутая выручалочка админа

Трудно недооценить данный пакет, ведь пользователи смогут получать сумму скорости двух интернет-каналов, интернет в офисе будет всегда, ведь маловероятно, что упадут оба канала.

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

Я точно знаю, что OpenVPN через 30 секунд переключится на резервный канал (слава параметру multihome), связь с главным офисом в г.Москва восстановится и некоторые пользователи и начальники не заметят данный инцидент.

Приступим:

Зайдем в network — load balancing — configuration:

image

И включим wan2 в работу:

image

Далее, настроим правила работы каналов:

1) Balanced — Каналы складываются, скорость увеличивается, есть отказоустойчивость (переключение). Рекомендую.
2) wan_only — только провайдер№1
3) wan2_only — только провайдер№2

configuration — rules

image

Остальные rules можно удалить или оставить другое правило.

Подробно я останавливаться на mwan3 не буду — скажу только, что есть возможность пускать трафик до определенного ресурса через один из каналов, если есть привязка на данном ресурсе по IP.

5) Офисная дружба или openvpn

Отлично, интернет настроили, теперь нужно соединить 2 офиса вместе.

Будет заходить по статическому ключу. Генерацию ключа можно произвести на клиентской стороне:

sudo openvpn --genkey --secret office2.key

Ключ нужно поместить в /etc/openvpn/keys/ (сервер, клиент).

OpenVPN на роутере у нас уже установлен и мы начнем править конфиг. Для этого зайдем на TP-Link по ssh.

vi /etc/config/openvpn

В шапке конфига изменяем:

package openvpn

#################################################
# Sample to include a custom config file.       #
#################################################

config openvpn custom_config

        # Set to 1 to enable this instance:
        option enabled 1

        # Include OpenVPN configuration
        option config /etc/openvpn/openvpn.conf

Cохраняем, выходим. Тут мы включили кастомный конфиг в /etc/openvpn/openvpn.conf — лично для меня это как-то привычнее.

Далее, сам конфиг:

mkdir /etc/openvpn
mkdir /etc/openvpn/keys
vi /etc/openvpn/openvpn.conf

На роутере у нас серверная сторона openvpn. Приводим конфиг к виду:

port 1194 #порт сервера

proto udp
dev tun-office2 #обзовем интерфейс
multihome #слушаем подключения на wan и wan2

ifconfig 10.0.0.2 10.0.0.3 #IP-шники окончания туннелей

secret /etc/openvpn/keys/office2.key #ключик

keepalive 5 30 #переподключение через 30 сек. 

user nobody
group nogroup

persist-tun
persist-key

status /tmp/office2.status 
log /tmp/office2.log #логи

verb 3

Сохраняем, затем:

/etc/init.d/openvpn restart

Теперь клиент:

Примерный конфиг выглядит так:

remote wan.office2.ru #стучимся сначала сюда
remote wan2.office2.ru #потом сюда (по очереди)

port 1194

proto udp
dev tun-office1

ifconfig 10.0.0.3 10.0.0.2 # наоборот как на сервере
route 192.168.30.0 255.255.255.0 #пропишем роут для включения офисной подсети роутера в главный офис

secret /etc/openvpn/keys/office2.key #клон ключа с сервера
keepalive 5 30 #передергиваем туннель при плохом поведении одного из каналов

user nobody
group nogroup

persist-tun
persist-key

status /var/log/openvpn/office.status
log /var/log/openvpn/office.log

verb 3

Сохраняем конфиг, применяем:

/etc/init.d/openvpn restart

Смотрим ifconfig, логи и радуемся надежному каналу.

Заключение:

Конечно же, вы не один раз убьете свой роутер неудачной прошивкой, позарившись на удаление нужных компонентов base system.
Но ничего страшного!

Самый простой способ реанимировать роутер — это fail safe в openwrt:

1) Назначьте сетевому адаптеру на компьютере IP адрес 192.168.1.2
2) Маска 255.255.255.0
3) Кабель ethernet — в порт LAN1
4) Выключите роутер
5) Включите и дождитесь пока загорится значок шестеренки
6) Зажмите на 1-2 секунды кнопку роутера QSS — шестеренка заморгает очень быстро
7) Запустите телнет-клиент и подсоединитесь по адресу 192.168.1.1
8) Залейте в tmp роутера дефолтную прошифку для вашей модели, например, через мини-веб-сервер tinyweb
9) Выполните:

mtd -r write /tmp/имяпрошивки.bin firmware

Роутер скушает прошивку и перезагрузится.

Шеф, всё пропало!

Да, именно так я подумал, когда убил роутер еще тяжелее. Шестеренка не горела, а роутер циклически ребутался без остановки.

Воспользуемся замечательной функцией в прошивке tp-link-а — загрузка прошивки через tftp:

1) Назначьте сетевому адаптеру на компьютере IP адрес 192.168.0.66
2) Маска 255.255.255.0
3) Кабель ethernet — в порт LAN1
4) Запустите tftp сервер с дефолтной прошивкой в папке под названием «wr741ndv4_tp_recovery.bin» (нужно переименовать файл прошивки)
4) Выключите роутер
5) Возьмите острый и тонкий предмет (ручка)
6) Возьмите роутер в руки, поверните его к лицу портами, ручку держите в свободной руке
7) Включите роутер и тут же зажмите QSS пальцем одной руки+reset ручкой в другой руке. Потренируйтесь и это получится.
8) Удерживайте зажатыми эти 2 кнопки 4-8 секунд, пока в tftp клиенте не пойдет загрузка прошивки в роутер. А она пойдет, не беспокойтесь.

Как только прошивка загрузилась (2-3 сек), отпустите кнопки. Выдохните, роутер спасен.

Использованы статьи:

wiki.openwrt.org/ru/doc/howto/build
openvpn.net/index.php/open-source/documentation/miscellaneous/78-static-key-mini-howto.html
denisyuriev.ru/linux/openwrt-linux/openwrt-sborka-iz-isxodnikov
habrahabr.ru/post/186760
wiki.gentoo.org/wiki/OpenVPN
wiki.openwrt.org/doc/howto/mwan3
wiki.openwrt.org/ru/doc/howto/generic.uninstall

Интернет-роутеры стали неотъемлемой частью нашего повседневного интернет-подключения. Однако, если вы ищете способ улучшить функциональность своего роутера, может быть полезно создать собственную прошивку. Создание собственной прошивки для роутера может дать вам возможность настроить его под свои потребности и добавить новые функции, которых нет в оригинальной прошивке.

Создание прошивки для роутера может показаться сложным процессом, но с помощью этого шаг за шагом руководства вы сможете справиться с ним легко. Вначале вы должны выбрать операционную систему для разработки прошивки, такую как OpenWRT или DD-WRT. Затем вам потребуется установить необходимые инструменты и загрузить исходный код прошивки.

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

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

Содержание

  1. Выбор необходимых инструментов
  2. Подготовка к созданию прошивки
  3. Разработка основного функционала
  4. Тестирование и отладка прошивки
  5. Установка и использование самостоятельно разработанной прошивки

Выбор необходимых инструментов

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

1. Компьютер: Важно иметь доступ к компьютеру, чтобы установить необходимые программы и инструменты для разработки прошивки.

2. IDE (Integrated Development Environment): Рекомендуется использовать IDE для удобной разработки прошивки. Некоторые из популярных IDE для разработки прошивок включают в себя PlatformIO, Arduino IDE, MPLAB X IDE и другие.

3. SDK (Software Development Kit): SDK — это набор инструментов и библиотек для разработки программного обеспечения для конкретной платформы или устройства. Выберите подходящий SDK для выбранного вами роутера.

4. Кабель для подключения: Вам понадобится подходящий кабель для подключения роутера к компьютеру. Например, USB-кабель, UART-кабель или Ethernet-кабель, в зависимости от типа роутера.

5. Документация и ресурсы: Убедитесь, что у вас есть полная документация и доступ к ресурсам разработчика для выбранного вами роутера. Это поможет вам более эффективно разрабатывать прошивку.

Убедитесь, что у вас есть все необходимые инструменты перед тем, как приступить к созданию прошивки. Это гарантирует более успешный и продуктивный процесс разработки.

Подготовка к созданию прошивки

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

  1. Изучите документацию. Прежде чем приступать к разработке прошивки, необходимо внимательно ознакомиться с документацией производителя роутера. Это поможет понять, какие функции поддерживаются устройством, и какие драйверы и инструменты потребуются для разработки.
  2. Установите необходимые инструменты. Для создания прошивки вам понадобятся специальные инструменты, такие как компилятор языка программирования, пакеты для разработки и отладки и другие необходимые компоненты. Установите и настройте все необходимые инструменты согласно инструкции производителя.
  3. Получите исходный код. Для создания прошивки необходимо иметь доступ к исходному коду операционной системы, которая работает на роутере. В некоторых случаях производители предоставляют этот код для разработчиков. Если исходный код недоступен, вам необходимо обратиться к производителю для получения доступа к нему.
  4. Определите требования к прошивке. Прежде чем приступить к разработке, вы должны определить требования к прошивке. Узнайте, какие функции и возможности должна иметь ваша прошивка, и определите список основных функций и компонентов, которые вам необходимо реализовать.
  5. Создайте план разработки. Планирование поможет вам организовать процесс разработки прошивки. Разбейте проект на мелкие задачи и определите их приоритетность. Это поможет вам следить за прогрессом и управлять вашим временем и ресурсами более эффективно.

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

Разработка основного функционала

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

1. Настройка сетевых параметров

Первым шагом в разработке основного функционала прошивки является определение и настройка сетевых параметров. Это включает в себя задание IP-адресов, настройку DHCP-сервера, определение DNS-серверов и другие сетевые настройки, необходимые для работы роутера.

2. Маршрутизация и пересылка пакетов

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

3. Управление доступом и безопасность

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

4. Управление и настройка

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

Разработка основного функционала прошивки для роутера требует внимания к деталям и понимания основных принципов работы роутеров. Определение и настройка сетевых параметров, маршрутизация и пересылка пакетов, управление доступом и безопасность, а также управление и настройка — это основные компоненты, которые необходимо учесть при создании прошивки на роутер своими силами.

Тестирование и отладка прошивки

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

В процессе тестирования прошивки можно использовать различные инструменты и техники. Одним из основных инструментов является эмулятор роутера, который позволяет запустить прошивку на компьютере и проверить ее работу в контролируемой среде.

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

В процессе тестирования также необходимо уделять внимание отладке прошивки. Для этого можно использовать различные инструменты, такие как отладчики, логирование и мониторинг. Отладка позволяет обнаружить и исправить ошибки в прошивке, а также повысить ее производительность и надежность.

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

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

Выводы:

Тестирование и отладка прошивки — важные этапы в создании прошивки для роутера. Они позволяют обнаружить и исправить ошибки, а также повысить производительность и надежность прошивки. Для тестирования и отладки можно использовать различные инструменты и методы, такие как эмуляторы, функциональное и интеграционное тествирование и отладчики. Тестирование и отладка прошивки должны быть проведены на различных устройствах и операционных системах, чтобы убедиться в ее стабильной работе и совместимости с различными платформами.

Установка и использование самостоятельно разработанной прошивки

После того, как вы успешно разработали свою собственную прошивку для роутера, вам понадобится установить ее на устройстве и приступить к ее использованию. В этом разделе мы рассмотрим основные шаги, которые потребуются для проведения этого процесса.

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

  • Файл прошивки в соответствующем формате;
  • Утилиты для загрузки прошивки на роутер;
  • Роутер, на который вы собираетесь установить прошивку.

Ознакомьтесь с инструкциями по установке прошивки, предоставленными ее автором. Обычно это файл readme или документация к проекту.

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

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

  1. Соедините роутер с компьютером при помощи сетевого кабеля. Удостоверьтесь, что роутер включен в режиме программирования.
  2. Запустите утилиту для загрузки прошивки на роутер и следуйте инструкциям программы.
  3. При необходимости, введите данные, требуемые для подключения к роутеру (логин, пароль).
  4. Выберите файл прошивки и нажмите кнопку загрузки. Дождитесь завершения процесса загрузки.
  5. После завершения загрузки прошивки роутер автоматически перезагрузится.
  6. Проверьте работу самостоятельно разработанной прошивки. Удостоверьтесь, что все функции работают корректно и роутер стабильно соединяется с интернетом.

Если все работает должным образом, значит, вы успешно установили и используете свою собственную прошивку на роутере!

Checking out Source

  • clone latest source repository by git clone https://www.github.com/openwrt/openwrt -b branch_name
  • Now change directory to openwrt by cd openwrt.This is our <buildroot dir> for this guide.

Updating Feeds

  • Update feeds: ./scripts/feeds update -a
  • Make downloaded package(s) available in make menuconfig:
    • single package : ./scripts/feeds install <PACKAGENAME>
    • all packages : ./scripts/feeds install -a

Image Configuration

Make menuconfig

  • run make menuconfig and set «Target System», «Subtarget», «Target Profile» and modify set of package(s).
  • You have three options: y, m, n which are represented as follows:
    • pressing y sets the <*> built-in label
    • This package will be compiled and included in the firmware image file.
    • pressing m sets the package label
    • This package will be compiled, but not included in the firmware image file. (E.g. to be installed with opkg after flashing the firmware image file to the device.)
    • pressing n sets the < > excluded label
    • The source code will not be processed.
  • When you save your configuration, the file <buildroot dir>/.config will be created according to your configuration.

Creating diff file (optional)

  • It also optional for you but i feel like it is a good practice to build diff file.
  • This file includes only the changes compared to the default configuration. A benefit is that this file can be version controlled with your OpenWRT based project. It’s also less affected by OpenWRT updates, because it only contains the changes.
  • ./scripts/diffconfig.sh > diffconfig # write the changes to diffconfig

Patches (optional)

  • As we are building Vanilla , i didn’t use any patches.

Defconfig

  • will produce a general purpose configuration of the build system including a check of dependencies and prerequisites for the build environment etc
  • will check for dependencies. Install missing and run again.
  • make defconfig

Building Images

  • make or make world
  • This simple command will trigger a cascade of activity. As already stated, it will
    • compile the toolchain
    • then crosscompile the sources with this toolchain
    • create opkg-packages
    • generate a firmware image file ready to be flashed.

Locating Images

  • After a successful build, the freshly built image(s) can be found in the newly created <buildroot_dir>/bin directory. The compiled files are additionally classified by the target platform, so e.g. a firmware built for an ar71xx device will be located in <buildroot_dir>/bin/ar71xx directory.

Cleaning Up

You might need to clean your build environment every now and then. The following make-targets are useful for that job:

CAUTION: In addition to all else, this will erase your build configuration (<buildroot_dir>/.config), your toolchain and all other sources. Use with care!

  • Clean
    • make clean
    • deletes contents of the directories /bin and /build_dir. make clean does not remove the toolchain, it also avoids cleaning architectures/targets other than the one you have selected in your .config
  • Dirclean
    • make dirclean
    • deletes contents of the directories /bin and /build_dir and additionally /staging_dir and /toolchain (=the cross-compile tools) and /logs. ‘Dirclean’ is your basic «Full clean» operation.
  • Distclean
    • make distclean
    • nukes everything you have compiled or configured and also deletes all downloaded feeds contents and package sources.
  • Clean small part
    • Clean linux objects : make target/linux/clean
    • Clean package base-files objects : make package/base-files/clean
    • Clean luci : make package/luci/clean

In a Nutshell:

  • git clone https://www.github.com/openwrt/openwrt -b branch_name(master | openwrt-17.01 | openwrt-18.06)
  • cd openwrt
  • ./scripts/feeds update -a
  • ./scripts/feeds install -a
  • make menuconfig and set «Target System», «Subtarget», «Target Profile» and modify set of package(s).
  • make defconfig
  • scripts/diffconfig.sh >mydiffconfig (save your changes in the text file mydiffconfig)
  • make download (download all dependency source files before final make, enables multi-core compilation)
  • make / make world or (make -jx)
  • if build failed …
    • run make -j1 V=s (build OpenWRT with console logging,one job ata a time & can see where build failed.)

Totally Automate

  • Skip all manual work by executing Build-Vanilla.sh
    • It will clone source,update&install feed,manu config and defconfig,download packages as well as start the build process.

Troubleshooting

  • *-factory.bin and *-sysupgrade.bin images for my device do not get generated

    When you execute make to build an OpenWRT image for your device, both a sysupgrade and a factory image should be generated for every board that is linked to the device profile that you have selected via make config or make menuconfig.
    For example, when you select the TP-Link WR710N profile, the should be a seperate sysupgrade and a factory image generated for both the WR710N-v1 and the WR710N-v2 (the main difference between the two devices is the size of the flash chip: the v1 comes with 8MiB of flash while the v2 only has 4MiB).

    If running make does not yield images for one (or even all) of the boards linked to the device profile that you have selected, than you probably have selected/enabled too much stuff, resulting in an image that would be too big to be flashed onto your device.
    Please note that the OpenWRT buildroot will currently (October 2018) not display any warning or error message if an image cannot be created because it would be too big for its designated target board.
    Please keep in mind that in most cases, you will not be able to use all the flash memory in your device exclusively for your OpenWRT image, because there might be several separate flash partitions dedicated to things like the boot loader, the calibration data of the devices wifi card or the partition where your configuration data is stored.

Другие наши интересноые статьи:

  • Спутниковый вай фай роутер мтс
  • Способы крепления роутера к стене
  • Создание роутера из компьютера на windows
  • Спутниковый wifi роутер iridium go
  • Способы войти в настройки роутера

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии