LEDE — Сборка из исходников

Давно не писал ничего на блоге. Сейчас вроде время свободного добавилось — пора бы заняться свежими мануалами.

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

От себя — это всё тот же OpenWRT в новом фантике — разработчики охотнее принимают патчи в основную ветку, быстрее добавляются новые устройства.
Чтобы протестировать даже прикупил новый роутер — TP-Link WR842nd третьей ревизии.

Собирать буду на Linux Debian 9.

Подготовка чистого Debian к сборке LEDE

Возможно, вы будете использовать минимальную чистую систему Linux Debian, где кроме пользователя root подавно ничего нет и не было.
В этом случае нам придется создать пользователя. Так как компиляция LEDE, как и OpenWRT требует, чтобы все действия происходили из под обычного пользователя.

Создадим пользователя:

useradd --shell /bin/bash lede
passwd lede

Тут мы создали пользователя lede и создали ему пароль.

Не забудьте добавить домашнюю директорию для пользователя и дать ему там полные права:

mkdir /home/lede
chown -R lede:lede /home/lede

Теперь необходимо для удобства дадим возможность пользователю выполнять команды с правами суперпользователя с помощью команды sudo

apt install sudo
adduser lede sudo

Все, теперь можно авторизоваться от имени новоиспеченного пользователя lede.

Установка необходимых пакетов

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

sudo apt install build-essential libncurses5-dev gawk git subversion libssl-dev gettext zlib1g-dev unzip

Система подтянет зависимостями суммарно до 45 пакетов, в зависимости от «чистоты» вашей системы.
Как и в случае с OpenWRT — если чего то в системе будет не хватать, то среда разработки нам об это сама скажет чуть позже.

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

На всякий случай перемещаемся в домашний каталог нашего пользователя:

cd /home/lede

Исходные коды будем получать с помощью git незамысловатой командой:

git clone https://git.lede-project.org/source.git

В домашней папке пользователя появится папка ~/source — это и есть наши исходники.

cd ~source

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

cp feeds.conf.default feeds.conf
nano feeds.conf

Исходный файл выглядит так:

src-git packages https://git.lede-project.org/feed/packages.git
src-git luci https://git.lede-project.org/project/luci.git
src-git routing https://git.lede-project.org/feed/routing.git
src-git telephony https://git.lede-project.org/feed/telephony.git
#src-git video https://github.com/openwrt/video.git
#src-git targets https://github.com/openwrt/targets.git
#src-git management https://github.com/openwrt-management/packages.git
#src-git oldpackages http://git.openwrt.org/packages.git
#src-link custom /usr/src/openwrt/custom-feed

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

src-git packages https://git.lede-project.org/feed/packages.git
src-git luci https://git.lede-project.org/project/luci.git
#src-git routing https://git.lede-project.org/feed/routing.git
#src-git telephony https://git.lede-project.org/feed/telephony.git
#src-git video https://github.com/openwrt/video.git
#src-git targets https://github.com/openwrt/targets.git
#src-git management https://github.com/openwrt-management/packages.git
#src-git oldpackages http://git.openwrt.org/packages.git
#src-link custom /usr/src/openwrt/custom-feed

Сохраняем Ctrl+W, закрываем Ctrl+X
И скачиваем исходники дополнительных пакетов:

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

Сборка LEDE

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

make prereq

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

Если всё хорошо, то среда сборки оборазит псевдографическое меню конфигуратора.

Выбор целевой платформы

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

Итак, например, для TP-Link WR842nd v3 это все дело выглядит так:

Target System (Atheros AR7xxx/AR9xxx)  --->
Subtarget (Generic)  --->
Target Profile (TP-LINK TL-WR842N/ND v3)  --->

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

Сборка кросскомпилятора

Устаю повторять, но этот пункт НЕобязателен.
Если Вы сейчас его не соберете — то он соберется при первой попытке собрать прошивку. Он собирается один раз, то есть при сборке прошивки он пересобираться не будет.
Итак:

make tools/install && make toolchain/install

Команда выполняется достаточно долго (на самых быстрых процессорах — около 20 минут, на бюджетных — до нескольких часов)
Если в этот момент компьютер не будет интенсивно использоваться, то увеличьте количество потоков добавив параметр -j3, где 3 — количество потоков. Оптимальное число — N+1, где N — количество ядер в системе.
Чтобы убрать вывод лога, а оставить только основную информацию о собираемых пакетом — можно воспользоваться параметром V=-1
Таким образом, команда приобретает вид

make tools/install -j3 V=-1 && make toolchain/install -j3 V=-1

Конфигурация LEDE перед компиляцией

Всё, что написано для OpenWRT должно работать и для LEDE.
По этому для теста соберем дефолтную прошивку, добавив лишь LUCI

make menuconfig

В конфигураторе включаем пункт

LuCI  --->
   1. Collection  --->
      <*> luci

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

LuCI  --->
   2. Modules  --->
      Translations  --->
         <*> Russian (ru)

Выходим, сохраняем..

Компиляция прошивки LEDE

Момент истины.
Запуск компиляции прошивки происходит одной простой командой

make -j3

Остается только ждать.

Как дождетесь — в каталоге ~/source/bin найдете свою прошивку.

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

Кстати, друзья, теперь за всеми свежими и важными записями можете следить прямо из паблика ВКонтакте.

Подпишись в один клик:

Комментариев: 4

  1. Здравствуйте! Хорошая статья. Только учусь собирать прошивки на OpenWRT и LEDE. Почерпнул у Вас много интересного.
    Было бы интересно узнать как можно добавить прошивку OpenWRT в изначально не поддерживаемое устройство.
    Можете ли Вы написать статью о том, как настраивать OpenWRT через веб-интерфейс, а именно как правильно настроить firewall: какое правило написать первым, какое правило написать последним, как прикрыть открытые порты, что бы их не взломали из внешнего интернета?
    Заранее огромное Вам СПАСИБО!

    • Добрый день!
      Разрабатывать свой упаковщик прошивки для роутера я пока не научился — покупаю роутеры, которые уже поддерживаются.

      К вопросу о фаерволу — хотелось бы точно знать, что Вам не понятно.
      Достаточно запретить ssh из wan, дабы не пускать «врагов»

  2. Собирал LEDE ещё год назад, сильно жрало ресурсы процессора, пришлось вернуться на OpenWRT. Так и не понял, в чем собственно был смысл форка, сейчас все изменения вносятся в обе ветки. Есть ли какая то разница между проектами, и перестал ли LEDE кушать проц?

    • По поводу изменений — в lede Они вносятся куда быстрее и интенсивнее. Это можно отследить банально обновляя исходники ежедневно.

      По поводу загрузки процессора — openwrt и lede можно считать полноценным дистрибьютивами и грузить там может какой то определенный пакет. Отключив тотально дебаг, Как в пакетах, так и в логах можно значительно ускорить работу устройства.

Оставьте свой комментарий

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