Инструменты пользователя

Инструменты сайта


wiki:openwrt:build_rtk

Это старая версия документа!


Сборка прошивки для роутера 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
wiki/openwrt/build_rtk.1778532454.txt.gz · Последнее изменение: Diman

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki