====== Сборка прошивки для роутера beeline ====== ===== Подготовка к сборке ===== Все манипуляции проводятся на виртуальном сервере KVM с debian 12. Сборку в docker среде пробовали, но завершилось фейлом. Пробуем на живой ОСи. # обновляем ОС apt-get update & apt-get upgrade # включаем сырцы sed -i '/deb-src/s/^# //' /etc/apt/sources.list && apt update # устанавливаем необходимое ПО apt-get install -y time git-core subversion build-essential g++ bash make \ libssl-dev patch libncurses5 libncurses5-dev zlib1g-dev gawk \ flex gettext wget unzip xz-utils python3 python3-distutils-extra \ python3-setuptools swig rsync curl libsnmp-dev liblzma-dev \ libpam0g-dev cpio rsync gcc-multilib bison apt-get install texinfo # git clone https://github.com/vido89/Open-Wrt-RTK.git cp rtk_deconfig/defconfig_rtl819xd .config ===== Сборка на Ubuntu 16.04 32 bit ===== После нескольких **десятков** часов проб и ошибок наметился тернистый, но вроде как рабочий способ сборки на базе Ubuntu 16 32 bit root@ubuntu16:~# uname -a Linux ubuntu16 4.4.0-142-generic #168-Ubuntu SMP Wed Jan 16 21:01:15 UTC 2019 i686 athlon i686 GNU/Linux ==== Шаг 1. Подготовка системы (Ubuntu 16.04 x86) ==== Сборка прошивок OpenWrt очень требовательна к окружению. Чтобы избежать проблем, лучше всего работать в чистой 32-битной Ubuntu 16.04. * Используйте виртуальную машину: Самый надежный способ — поднять виртуальную машину (VirtualBox, VMware) с Ubuntu 16.04 32-bit (i386) * Это исключит ошибки, связанные с битностью библиотек. Установите зависимости: Внутри виртуальной машины откройте терминал и выполните команду для установки всех необходимых для сборки пакетов sudo apt-get update sudo apt-get install -y build-essential libncurses5-dev zlib1g-dev gawk \ unzip git wget python subversion file gcc g++ perl bzip2 openssl findutils \ libssl-dev autoconf automake libtool patch rsync xz-utils flex bison в Ubuntu 16.04 по умолчанию стоит старая версия automake, установим новее вручную cd /tmp wget https://ftp.gnu.org/gnu/automake/automake-1.16.5.tar.gz tar -xzf automake-1.16.5.tar.gz cd automake-1.16.5 ./configure --prefix=/usr make sudo make install # Проверьте # Убедитесь, что версия automake 1.16 или новее automake --version ==== Шаг 2. Получение и настройка исходного кода ==== Вместо того чтобы брать "голый" OpenWrt, мы будем использовать форк, который уже содержит все необходимые патчи и конфигурации для нашего чипа. # # Клонируем репозиторий разработчика в вашу домашнюю директорию: cd ~ git clone https://github.com/Vyacheslav-S/openwrt-rtk819.git cd openwrt-rtk819 # # Отредактируйте файл конфигурации фидов feeds.conf.default: nano feeds.conf.default # # Приведите его содержимое к следующему виду: # Замените старые URL на актуальные пути с GitHub # Обязательно закомментируйте фид oldpackages, добавив # в начало строки. # Скопируйте и вставьте этот исправленный конфиг: # src-git packages https://git.openwrt.org/feed/packages.git^af8725bc0e2749b422145c9be05a2128e69e7642 src-git luci https://github.com/openwrt/luci.git;luci-0.12 src-git routing https://github.com/openwrt-routing/packages.git;for-14.07 src-git telephony https://github.com/openwrt/telephony.git;for-14.07 src-git management https://github.com/openwrt-management/packages.git;for-14.07 # src-git oldpackages http://git.openwrt.org/14.07/packages.git # src-svn xwrt http://x-wrt.googlecode.com/svn/trunk/package # src-svn phone svn://svn.openwrt.org/openwrt/feeds/phone # src-svn efl svn://svn.openwrt.org/openwrt/feeds/efl # src-svn xorg svn://svn.openwrt.org/openwrt/feeds/xorg # src-svn desktop svn://svn.openwrt.org/openwrt/feeds/desktop # src-svn xfce svn://svn.openwrt.org/openwrt/feeds/xfce # src-svn lxde svn://svn.openwrt.org/openwrt/feeds/lxde # src-link custom /usr/src/openwrt/custom-feed # # Обновляем и установите "фиды" (feeds). # Это символьные ссылки на все доступные пакеты приложений (LuCI, OpenVPN и т.д.) ./scripts/feeds clean ./scripts/feeds update -a ./scripts/feeds install -a ==== Шаг 3. Конфигурация (Выбор пакетов и опций) ==== Теперь нужно настроить, какие именно компоненты войдут в вашу прошивку. # Запускаем псевдографический интерфейс настройки: # make menuconfig Настройте ключевые параметры: * Target System: Должен быть выбран Realtek MIPS (или похожий на rtl819x). Эта опция обычно уже выставлена по умолчанию в форке разработчика * Target Profile: Найдите и выберите модель вашего роутера Beeline N300 или аналогичную (SmartBox ONE). Добавление пакетов: Нажмите клавишу / для поиска по пакетам, введите название и нажмите M (собрать как модуль .ipk), чтобы добавить в прошивку: * luci — веб-интерфейс (отметьте *). * luci-i18n-russian — русский язык для веб-интерфейса. * openvpn-openssl — сам OpenVPN. * openssh-sftp-server — для безопасной передачи файлов (дополнительно к OpenSSH). Сохраните конфигурацию и выйдите из меню. ==== Шаг 4. Процесс сборки ==== Теперь, когда все готово, можно запускать компиляцию. * Начните сборку. Рекомендуется использовать один поток (-j1), чтобы видеть все ошибки, а не пропускать их make V=99 -j1 # # Очень длинный процесс # make world ==== Альтернативный план ==== git clone https://github.com/vido89/Open-Wrt-RTK.git cd Open-Wrt-RTK/rtk_openwrt_src cp rtk_deconfig/defconfig_rtl8196xd .config ./scripts/feeds update -a ./scripts/feeds install -a ./rtk_scripts/rtk_init.sh patch make V=99 В этом месте возникает ошибка **Exec format error**, потому что вы пытаемся собрать Open-Wrt-RTK на 32-битной системе, а его инструменты (find, xzcat) собраны для 64-битной архитектуры. Репозиторий vido89/Open-Wrt-RTK предназначен для сборки в 32-битной среде (i686), о чём явно говорит структура тулчейна и скриптов. cd Open-Wrt-RTK/rtk_openwrt_src # Очистить старые сборки make clean rm -rf staging_dir/host/ # Пересобрать tools для 32-bit make tools/compile V=99 # Затем продолжить make world V=99