Buildroot использование и документация

Buildroot использование и документация

Приветствую. Как известно, для конфигурирования настроек роутера в OpenWRT преимущественно используется UCI. Мне необходимо сделать тоже самое но не для роутера и в buildroot’e. Я установил пакет с uci. Как я понял, принцип работы такой: создается конфиг в /etc/config ,а дальше набивается соответствующими настройками. Пример тут приводить не буду, тк достаточно много инфы в документации https://openwrt.org/docs/guide-user/base-system/basic-networking. Затем рестартится сервис, допустим /etc/init.d/network restart и настройки вступают в силу. Вопрос такой: у меня в дистрибутиве используется ifupdown и он при загрузке подсасывает конфиг из /etc/network/interfaces. Как его натравить использовать uci конфиги из /etc/config ? И должен ли он быть uci совместимым?

Собираю buildroot. У меня в системе установлен arm-none-eabi-gcc, которым я собирал ядро и загрузчик. buildroot же мне предлагает или собирать весь тулчейн с нуля, или же брать внешний тулчейн, в который уже входит libc и прочее.

А нельзя как-нибудь в рамках buildroot взять компилятор и линковщик из arm-none-eabi, и чтобы билдрут ими собрал libc и прочее? Неохота долго компилировать gcc

При выводе на дисплей кириллицы получаю кроказябры.

Пытался устранить самостоятельно.

В qt creator который установлен в debian не чего не делал .pro не лазил, может что-то там нужно настроить.

Проблему не решил. Кракозябры остались.

Собираю питоновский модуль в билдруте (то есть вместе с рутфс линукса), питон3. Сам модуль оформлен в виде пакэйджа (билдрут стайл) по примеру соседних пакэйдей (тоже питоновских модулей). Модуль pandas — строиться на модуле numpy. Numpy есть родной в билдруте (тоже оформлен в виде пакейджа билдрут стайл). Проблема заключается вот в чем: при сборке родительский модуль не видит уже скомпилированные подмодули — в частности Numpy.

Может есть какие то ньюансы при сборке на хосте а не запуске модуля на таргете?

Хочу взять USB флешку и залить на неё дебиан так, что бы он запускался оттуда, сохранял на неё конфиги, но ничего типа логов не писал.

Для всяких ip-камер и роутеров есть buildroot, который позволяет удобно собрать готовый дистрибутив.

Есть что-то похожее для дебиана?

Не очень понятно: сделать ondemand чтение из сжатого образа ФС на USB флешке или сделать ramdisk, в который копировать всё на старте.

Возникает kernel panic с exitcode = 0x00000004 после запуска /linuxrc (или /init, или /bin/busybox) из рамдиска.

Имеется встраиваемая система с процессором AT91SAM9G45, для которой необходимо собрать ядро linux (в текущий момент версия 4.14.79) и образ файловой системы, которая должна находиться в оперативной памяти.

1. Ядро определенно находит cpio.gz-образ рамдиска, определенно правильно его распаковывает в память и определенно правильно запускает необходимый файл. «Правильно запускает» в данном случае означает, что функция запуска исполняемого файла возвращает ноль, после чего сразу возникает kernel panic. В том случае, если файл не найден, отсутствуют права доступа или он не является исполняемым, функция возвращает другое значение (ненулевое). Все это я выяснил с помощью дебага.

2. Образ файловой системы (rootfs) я компилировал разными способами, как с помощью buxybox, так и с помощью buildroot (который тоже включает в себя busybox). Разницы нет, kernel panic один и тот же. При сборке rootfs и ядра использую кросс-компилятор для ARM.

В чем может быть причина? Какие параметры сборки ядра я мог упустить? Или какие опции командной строки при передаче параметров ядру?

Строчка . ramdisk_execute_command 2 /init 0 означает, что был запущен файл /init и функция запуска возвратила 0 (т. е. функция не вернула ошибку). Если бы я передал ядру заведомо несуществующий файл, н-р, /init12vn7dv21er, то строка выглядела бы так: . ramdisk_execute_command 2 /init -2, что означало бы, что файл не найден.

Здравствуйте! Есть устройство с ARMLinux, менеджера пакетов, как понял в нем никакого нет, возможно ли какими-то способами установить на него rdp-клиента?

# cat /etc/os-release NAME=Buildroot VERSION=2015.08 ID=buildroot VERSION_ID=2015.08 PRETTY_NAME=«Buildroot 2015.08»

Добрый день прошу помощи! При компиляции ядра указал команду для генерации внешних модулей в папку /lib/modules. Получил папку с драйверами. Вопрос как добавить данную папку в Buildroot при генерации ROOTFS. Спасибо

Как обновлять программы в дистре,созданном с помощью сей утилиты?

Хочу собрать buildroot для Orange Pi PC. Скачал версию RC1 (сначала пробовал LTS-версию с абсолютно тем же результатом).

Оно собирается какое-то время, а потом выдаёт ошибку:

Хост-система: Arch Linux.

В чём может быть проблема?

В построенной файловой системе buildroot-ом очень не хватает возможности автоматически инсталить пакеты через apt-get. Как бы туда добавить apt утилиты ? Я нашел пакеты типа apt.deb, но даже через dpkg их поставить не удается, потому что dpkg просто сообщает, что нужно сначала кучу зависимостей поставить. Есть ли способ этот apt как-то удобнее поставить ?

Читайте также:  Феникс восстановление файлов ключ

Указываю экстернал тулчайн в buildroot мой glibc-oabi, но при сборке получаю ошибку

Buildroot строит с EABI поддержкой систему, а как ему указать, чтобы построил со старой OABI. Мне нужно запустить арм программу, которая была давно собрана с OABI поддержкой. То есть хочу, чтобы в построенной системе либы определялись так ELF 32-bit LSB executable, Arm, version 1 (Arm) А не так ELF 32-bit LSB executable, Arm, version 1 (SYSV)

Бьюсь с его настройками, подскажите как там это выбрать.

Ставлю сборку buildroot, в которой выбрал установку directfb вместе с fusion модулем. Но он ругается на этот модуль. Как его все-таки собрать ?

Хотел в 2006-2007 году сделать свою LFS-сборку (linux+uclibc+busybox на основе Gentoo- и FreeBSD-патчей, частью собиралось в buildroot). Научился собирать ISO, делал для него deb-файлы. Даже название выбрал, и бегал с ником PiDGiN в Linux-игрушке Eternal Lands. Но через несколько месяцев это слово «забили» под Instant messenger GAIM. А потом я женился.

Вопрос. Как нынче собирают LFS? Какое руководство самое современное и актуальное?

В 2005-2006 году советовался с друзьями из KirovLUG — сейчас почти все эти люди разъехались из Кирова.

немного длинное повествование. просто хочу описать как это примерно получалось, процесс.

1) скачал дрова 17.40 пробовал варианты rhel7 и ubuntu.

3) прошивки firmware новые на место положил, в buildroot/output/build/linux-firmware-2e87d5268df346f92s48.

4) библиотеки в оверлей + систему линков сделал чётко, «/opt/amdgpu-pro» > "../usr" для убунту «/usr/lib/x86_64-linux-gnu» > "." для RHEL «/usr/lib64 > „lib“ это позволяет обходиться полностью без LD_LIBRARY_PATH

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

1) в dmesg видно что ругается на powerplay и можно управлять только скоростью вентилляторов (разгон карты и частоты не работает — в /sys/class/drm/. просто отсутствуют файлы для управления этими параметрами)

2) при попытки обращения к opencl (простейший clinfo например) в лучшем случае ловим segfault а обычно просто сразу моментальный ребут.

ясное дело — нужно пересобирать сам драйвер в ядре. делаю:

1) скопировал драйвера из скачанного распакованного пакета в разные места. пути вида usr/src/amdgpu-17.40-492261/amd > buildroot/output/build/linux-4.13.12/drivers/gpu/drm/amd/ также ttm, ещё пара каких-то фигней.

ps. если честно, я с трудом вникаю в огород который там нагородили из полуневнятных аббревиатур. моя задача проста — заставить пахать OpenCL на голом ядре.

2) также скопировал include в linux-4.13.12/include

3) в оригинальном linux-headers все те же файлы лежат, в том числе и .с исходники. поэтому я продублировал все эти же действия в linux-headers

4) пересобираю ядро на чистую (из состояния конфигурировано-скачано-распаковано-пропатчено) и не собирается ни amdgpu ни amdkfd. и действительно, компилятор прав — я посмотрел — там различается и число параметров, и типы. что за фигня? у стандартного ядра один интерфейс вызовов а дрова амдейцы пишут под какойто свой другой. о_О

куда копать, какие патчи применять? как превратить кракозябры от амд в нечто что ставится на простое обычное ядро?

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

Добрый день Прошу помощи касательно системы BuildRoot. Собрал U-boot , kernel ,rootfs для ARM9 Soc Altera Все работает грузиться нормально но не могу найти как установить GCC генерации rootfs его нет что я неправильно делаю? Как его установить ? Спасибо

Есть у меня такая плата: CPU686E

И есть задача запустить на ней Embedded Linux. Я до этого ни разу такое не делал, поэтому прошу совета профессионалов в сборке образов Embedded Linux.

Использую я Buildroot. Я почитал кое-какие мануалы по нему (в частности сайта http://free-electrons.com) и понял общий принцип сборки, но возникли некоторые вопросы. Я собрал ядро, rootfs, загрузчик (пробовал grub, grub2). Сделал образ и залил его на CompactFlash. Но при загрузке на плате, после того как загрузчик начал загружать ядро, было выдано сообщение «out of memory». Плата имеет памяти 32М (это старая плата 2001 года). Очевидно, нужно как-то кастомизировать ядро. Этого я не понимаю как делать: в ядре куча настроек и не знаешь что можно выключить. Вообще, реально запустить linux на устройстве с таким объемом памяти? Тренировался на QEmu, там вроде загружается, но как-то через раз, главное что ядро выдает свои логи. Но если там поставить 16М памяти, то тоже будет сообщение о нехватке памяти.

  • Нужно ли использовать initramfs для Embedded Linux? Там есть возможность даже встроить ее в образ ядра. Объясните, можно ли без него обойтись? Просто у меня добавляются некоторые файлы в rootfs (filesystem overlay), и когда я включаю initramfs, эти файлы добавляются и в него. А по идее, он должен быть минимальным.
  • Как можно включить поддержку виртуальной памяти? Можно ли это сделать средствами buildroot? На флэшке можно создать swap раздел. Поможет ли это в данном случае с ограниченным количеством RAM?
  • Где можно почитать про кастомизацию ядра? Именно про то, что необходимо оставить для минимальной системы.
Читайте также:  Как отредактировать старые записи вконтакте

Товарищи с опытом сборки Embedded Linux, пожалуйста подскажите что изучать еще.

Здравствуйте! Работаю с SoC Zynq. До этого использовал систему сборки Petalinux. В своем драйвере использую procfs для отображения различного рода информации и с помощью саt в /proc/mydev информация правильно отображалась. Сейчас перешел на buildroot и когда выполняю cat /proc/mydev вывод зацикливается, т.е. cat не завершается, а постоянно выводит одно и тоже сообщение. Помогите разобраться в чем может быть причина.

В petalinux использовался для компиляции вендорный кросс-компилятор от Xilinx arm-xilinx-linux-gnu-eabi-gcc, сейчас buildroot использует свой arm-buildroot-linux-uclibcgnueabihf-gcc, стоит ли смотреть в сторону того что не правильно может быть компилирую?

Попробовал использовать при сборке тулчейн от Xilinx, та же проблема.

User Tools

Site Tools

Sidebar

Table of Contents

→ вернуться обратно к Получить прошивку или читать →OpenWrt Buildroot – Описание

Условия

Методика

1. Делайте все под обычным пользователем (не под суперпользователем, non-root)
2. Выполняйте все команды в каталоге , например

/openwrt/trunk/

Скачивание исходных кодов

Скачайте исходные коды: Свежая версия (trunk)

(Последний) релиз Chaos Calmer 15.05.1

Последняя версия в ветке Chaos Calmer

Обновление исходных кодов

Обновите исходные коды :

Обновление репозитория

“Установите” загруженные пакеты (не обязательно, но требуется, если вы хотите , к примеру, собрать прошивку с LuCI).
Эта процедура создаст символьные ссылки на подкаталоги пакетов в основном “дереве” исходных текстов.

Для установки индивидуальных пакетов:

Чтобы собрать всё дерево пакетов:

ПРЕДУПРЕЖДЕНИЕ Это может занять много времени и не требуется, если вы не планируете развертывание репозитория пакетов для своей сборки.

Последовательность действий

Типичные действия по сборке:

Настройка параметров сборки

Запустите OpenWrt Buildroot’s ncurses — текстовый интерфейс настройки:

Как и в конфигурации ядра Linux, почти каждая опция имеет 3 значения: y / m / n ,которые представлены следующим образом:
* (нажав `y`) Этот пакет будет включен в образ прошивки
* (нажав `m`) Этот пакет будет скомпилирован (и может быть установлен с помощью opkg после прошивки OpenWrt), но не будет включен в образ прошивки
* (нажав `n`) Этот пакет не будет скомпилирован

Когда вы сохраняете конфигурацию создается файл

/openwrt/trunk/.config содержащий параметры сборки.

Разработчики предлагают такой файл для OpenWrt ‘Backfire’ 10.03.1-RC5,
например для ar71xx.

Defconfig

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

будет проводится проверка для зависимостей. Установите отсутствующие компоненты и запустите снова.

Общая настройка

Menuconfig имеет ТПИ, который предназначен для выбора платформы, пакетов для компиляции, пакетов для включения в файл прошивки, некоторые параметры ядра и т.д.

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

С самого начала было намерение разработать ‘menuconfig’, чтобы создать простую, но мощную среду для конфигурирования индивидуальных образов OpenWrt. Menuconfig более или менее понятен, поэтому даже самые специфические задачи конфигурирования могут быть решены с его помощью. В зависимости от конкретной платформы, необходимых пакетов и модулей ядра стандартный процесс конфигурирования будет включать в себя изменение следующих пунктов:

Платформа выбирается из обширного списка поддерживаемых платформ с многочисленными профилями — начиная от конкретных устройств и заканчивая общими профилями, все зависит от имеющегося устройства. Выбор пакетов имеет несколько вариантов: либо выбрать все пакеты (‘selecting all package’), которые могут быть просто не практичны в конкретной ситуации, либо будет достаточно использовать стандартный набор пакетов, либо сделать индивидуальную подборку. Здесь необходимо отметить, что некоторые комбинации пакетов могут нарушить процесс сборки, так что возможно понадобится поэкспериментировать, прежде чем ожидаемый результат будет достигнут. В дополнение к этому, сами разработчики OpenWrt поддерживают лишь небольшой набор пакетов — который включает в себя все стандартные пакеты — но скрипт репозитория позволяет очень просто обработать локальный поддерживаемый набор пакетов и интегрировать их в процессе сборке.

Существуют 3 значения:

Последний шаг перед началом компиляции образа(ов) — выход из ‘menuconfig’ — здесь можно сохранить определенную конфигурацию или загрузить уже существующую и предварительно настроенную.

Выйти из ТПИ и выбрать save — сохранить ваши настройки.

Настройка ядра

Обычно это не требуется, но вы можете это сделать:

Обратите внимание, что make kernel_menuconfig изменяет конфигурационные шаблоны ядра дерева сборки и очистка build_dir не вернет их. Изменения могут быть просмотрены с помощью команды svn diff target/linux/ и отменены командой svn revert -R target/linux/ .

Читайте также:  Установка автокад 2018 пошаговая инструкция

Зеркала источников

‘Настройки системы сборки’ включают в себя несколько эффективных опций для изменения расположения пакетов, которые позволяют легко управлять локальным набором пакетов:

Опция ‘модули ядра’ нужна если требуются специфические (не стандартные) драйвера и т.д. – это, как правило, могут быть такие вещи, как модули для USB или драйвера конкретного сетевого интерфейса и т.д.

Пользовательские файлы

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

Например, предположим что вы хотите собрать образ с предварительно настроенным /etc/config/firewall , тогда поместите ваш измененный конфигурационный файл firewall сюда:

Сборка образа

Теперь все готово для сборки образа(ов), которая осуществляется с помощью одной команды:

или (то же самое)

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

Последовательность работы make

Команда make world сама выполняет следующую последовательность команд:
make target/compile
make package/cleanup
make package/compile
make package/install
make package/preconfig
make target/install
make package/index

Вы можете выполнить каждую из них отдельно. Например, если процесс компиляции какого-либо пакета прервался с ошибкой, после устранения ошибки можно продолжить сборку (без удаления уже сделанного):
make package/compile
make package/install
make package/preconfig
make target/install
make package/index

Параметры Make

Отладка

Параметр V=xx указывает уровень выдачи сообщений в процессе сборки.

Значением V можно указать:

Трассировка каталогов (путей).

Трассировка с полной информацией о сборке.

Тоже полная трассировка. (Если указать два значения, работает более полный вывод.)

Сборка на многоядерном процессоре

Процесс сборки можно ускорить запустив несколько параллельных задания с использованием параметра -j :

Фоновая сборка

Если вы собираетесь использовать вашу систему во время процесса сборки, вы можете выполнять сборку используя только простой ввода/вывода и мощности процессора, например так (двухъядерный процессор):

Сборка одиночных пакетов

При разработке или создании пакетов для OpenWrt удобно иметь возможность сборки только нужного пакета (пример с пакетом cups ):

Обнаружение ошибок сборки

Если по какой-то причине сборка не удается, то самый простой способ определить ошибки это:

Команда сохраняет полную подробную копию вывода сборки (с stdout переданный в stderr) в /openwrt/trunk/build.log и показывает на экране только ошибки.

Команда сохраняет полную подробную копию вывода сборки (с stdout переданный в stderr) в build.log и показывает только предупреждения и ошибки в процессе сборки используя только фоновые ресурсы двухъядерного процессора.

Включение звуковых уведомлений

В зависимости от вашего процессора этот процесс займет некоторое время или дольше. Если вы хотите включить звуковые уведомления можете использовать echo -e ‘a ‘:

Размещение образов

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

Например, если ваш это /openwrt/trunk, файлы находятся в /openwrt/trunk/bin/ar71xx.

Очистка

Время от времени вам может понадобиться очистить среду сборки. Следующие параметры make подходят для этой цели:

Clean

удаляет содержимое каталогов bin и build_dir .

Dirclean

удаляет содержимое каталогов /bin и /build_dir , а также дополнительно /staging_dir и /toolchain (инструментарий кросс-компиляции). ‘Dirclean’ — основная команда для полной очистки.

Distclean

удаляет все что вы собрали или настроили, а также удаляет все загруженное из репозитория и исходные коды пакетов.

ВНИМАНИЕ : Кроме всего прочего будет стерта ваша конфигурация сборки (.config), ваш набор инструментов (toolchain) и все прочие исходные коды. Используйте с осторожностью!

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

Примеры

Устранение неполадок

В начале получите больше информации о проблеме используя параметр make — “make V=99”.

Решение (ubuntu 12.04LTS): Вводим в теминале команду hg (например). Вывод терминала:

Выполняем что просят: sudo apt-get install mercurial

Запускаем сборку (make) снова.

Решение (ubuntu 12.04LTS):

Попробуйте обновить основной исходный код и все репозитории (Внимание! Может привести к другим проблемам). Поищите похожие ошибки в (TRAC), используйте фильтры, чтобы найти их. В противном случае сообщите об этой проблеме там, указав пакет, выходные данные (процессор, образ и т.п.) и код ревизии (main & package). Компиляция с make -j … иногда дает случайные ошибки. Попробуйте компиляцию без -j прежде чем сообщать об ошибке.

2020 Copyright. All Rights Reserved.

The Sponsored Listings displayed above are served automatically by a third party. Neither the service provider nor the domain owner maintain any relationship with the advertisers. In case of trademark issues please contact the domain owner directly (contact information can be found in whois).

Ссылка на основную публикацию
8007071A удаленный вызов процедуры был отменен
Ошибка 1818 удаленный вызов процедуры был отменен Ошибка 1818 удаленный вызов процедуры был отменен Добрый день уважаемые читатели, продолжаем наш...
Adblock detector