klink0v (klink0v) wrote,
klink0v
klink0v

Прошивка Mikrotik-ов в LEDE (часть 2)

Продолжение предыдущего псто.

Напомню, что если мы используем, например RB951Ui-2HnD, то можно его просто прошивать образом прямо с сайта LEDE и не париться. Но у модификации RB951G-2HnD с гигабитными портами после такой операции "отвалится" Ethernet. Нужно патчить модуль "mach-rb95x.c" и пересобирать заново.

Есличто, сам патч вот:

[Код патча]--- target/linux/ar71xx/files/arch/mips/ath79/mach-rb95x.c 2017-12-19 15:04:38.622596336 +0300
+++ target/linux/ar71xx/files/arch/mips/ath79/mach-rb95x.c 2017-12-19 15:04:54.938713022 +0300
@@ -261,6 +261,7 @@
return;

ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_RGMII_GMAC0 |
+ AR934X_ETH_CFG_RXD_DELAY |
AR934X_ETH_CFG_SW_ONLY_MODE);

ath79_register_mdio(0, 0x0);
@@ -271,6 +272,7 @@
ath79_init_mac(ath79_eth0_data.mac_addr, ath79_mac_base, 0);
ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
ath79_eth0_data.phy_mask = BIT(0);
+ ath79_eth0_pll_data.pll_1000 = 0x6f000000;

ath79_register_eth(0);

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


  1. Установить все необходимые пакеты и их зависимости. Для Debian/Ubuntu это:
    subversion g++ zlib1g-dev build-essential git python rsync man-db libncurses5-dev gawk gettext unzip file libssl-dev wget
    


  2. Скачиваем исходные коды. Если хотим собирать snapshot, то произносим заклинание
    git clone https://git.lede-project.org/source.git lede

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

  3. Если мы хотим дополнительно собрать какие-нибудь пакеты, которых нет в официальном репозитарии LEDE, то самое время скачать их исходный код и прописать в файле "feeds.conf.default" путь к соответствующей папке. Например:
    src-link chandongle /mnt/somewhere/Chan_Dongle/asterisk13-chan-dongle/asterisk-chan-dongle-master


  4. Переходим в корневую папку дерева с исходниками и обновляем список того, чего мы хотим собирать:
    cd /mnt/somewhere/lede
    ./scripts/feeds update -a
    ./scripts/feeds install -a


  5. Применяем патч(и). Например:
    patch -u -p0 < Ethernet.patch


  6. Самое сложное и самое геморройное. Формируем конфиг для make-а с указанием того, какие пакеты мы хотим собирать. Тут придется провести полчаса-час за разглядыванием менюшек, которые рисует команда
    make menuconfig

    Особенно сурово придётся помудохаться, если размер встроенной флешки в целевом устройстве сильно ограничен (4 мегабайта и меньше). В случае же с микротиками такой проблемы нет: в 128 мегабайт влезет всё что угодно. Так, я абсолютно не экономил место, включил в комплект Asterisk, IPsec, Midnight Commander, OpenVPN, Joe, драйвера для всех возможных модемов и кучу прочего хлама. В результате получился образ размером 12 мегабайт.
    Опять же, в примере с микротиком в графе "Target System" выбираем "Atheros AR7xxx/AR9xxx", в графе "Subtarget" выставляем "Mikrotik devices with NAND/NOR flash", в "Target Profile" указываем "MikroTik RouterBoard (>= 128 MB NAND)". Остальные пункты — по усмотрению в зависимости от конкретной поставленной задачи. Позволю себе только дать два совета.
    а) Не отключайте IPv6, даже если он вам не нужен. Сетевые утилиты из-за этого могут "глючить".
    б) Флаг "M" (собрать как модуль) не имеет практического смысла когда делаешь образ исключительно для себя-любимого. Выбирайте либо "*" (встроен), либо ничего.

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

  8. Подсовываем сборщику нужную конфигурацию в виде файла ".config" в корне дерева с исходниками.

  9. Запускаем make без параметров. Если свободных ядер процессора много и их не жалко, то можно "make -j N", где N — число ядер плюс один. Разработчики честно предупреждают, что при многопоточной сборке возможно возникновение странных ошибок. И если так произойдет, то в первую очередь нужно попробовать сделать то же самое ещё раз в один поток. Но конкретно у меня с LEDE (в отличие от OpenWRT) не наблюдалось вообще никаких проблем ни разу. Всё компилировалось с первого раза в 5 потоков, что стабильный релиз, что snapshot.

  10. Выждав некоторое время в зависимости от мощности CPU, получим бинарники в подкаталоге "bin/targets/ar71xx/mikrotik" (для моего примера). Дальше зашиваем их во флешку устройства, как было рассказано в предыдущем посте.

Как-то так. Кто дочитал до этого места, тот молодец.

Tags: it, linux, mikrotik, openwrt, администрирование, ссылки
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments