Yocto linux что это

Обновлено: 02.07.2024

Создайте пользовательский встроенный дистрибутив Linux с использованием проекта Yocto

Обзор

Проект Yocto - это проект совместной работы с открытым исходным кодом, который предоставляет несколько шаблонов, инструментов и методов для поддержки пользовательских систем Linux для встроенных продуктов, независимо от архитектуры аппаратного обеспечения. То, что я хочу рассказать тем пользователям, которые не понимают название Yocto, термин yocto Это самая маленькая единица Si. Самый префикс, Yocto представляет 10 ^ -24.

Эта статья предоставит пошаговое руководство для создания пользовательской операционной системы Linux для встроенных устройств с использованием стандартных инструментов открытого исходных устройств Yocto Project, и запустите операционную систему на виртуальной машине с использованием QEMU. Проект Yocto финансируется крупными аппаратными компаниями и поставщиками операционной системы, которая предоставляет некоторые ведущие отраслевые инструменты, методы и метаданные для создания систем Linux.

Два основных компонента проекта Yocto поддерживаются проектами Yocto и OpenEMBedded Projects. Две компоненты представляют собой BitBake и OpeneMedDed-Core, первая - это монтажный двигатель, последний рецепт является основным рецептом, используемым в процессе беговой сборки. Следующий раздел представит все компоненты проекта.

Введение проекта YoCto

В качестве совместного проекта проекта Yocto иногда называют проектом «зонтик», который поглотил множество различных процессов развития. Во всем проекте Yocto эти части называются проект , В том числе инструменты сборки, называется Основная формула Устранение инструкций построить метаданные, библиотеки, утилиты и графические пользовательские интерфейсы (GUI).

Poky - это эталонная строительная система для проекта Yocto. Он содержит BitBake, OpenEMBedDed-Core, пакет поддержки доски (BSP) и любой другой пакет или слой, встроенный в процесс сборки. Это имя, которое также относится к распределению Linux по умолчанию, используя систему эталонной сборки, которая может быть чрезвычайно маленькой, или всей системой Linux с GUI (Core-Image-Sato).

Вы можете просматривать систему сборки Poky в качестве опорной системы для всего проекта, то есть один рабочий пример процесса работы. При загрузке проекта Yocto экземпляры этих инструментов, утилит, библиотеки, цепочки инструментов, метаданные доступны для создания систем по умолчанию. Эта эталонная система, а эталон, созданная ее созданной, названа Poky. Вы также можете создать свой собственный выпуск в качестве отправной точки, конечно, вы можете назвать этот выпуск.

Один проект, который нужен все системы сборки Набор инструментов : Компилятор, ассемблер, линкер и другие бинарные утилиты, необходимые для создания двоичного исполняемого для заданной схемы. Poky использует коллекцию компилятора GNU (GCC), но вы также можете указать другой набор инструментов. Poky использует названный Перекрестная компиляция Технологии: используйте цепочку инструментов на архитектуре для создания бинарного исполняемого файла (например, построить выпуск ARM на систему на основе X86). Разработчики часто используют перекрестную компиляцию в разработке встроенной системы, чтобы использовать высокую производительность хост-системы.

Набор метаданных

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

OpenEMBedDed-Core сообещается проектом Yocto и OpenEMBedded Projects. Слой, который отдельно от проекта Yocto и OpenEMBedDed meta-yocto Слой этот слой обеспечивает конфигурацию распределения Poky и набор основных ссылок BSPS.

Сам проект OpenExeded является независимым проектом с открытым исходным кодом с формулой (большинство) с проектом Yocto и аналогично проекту Yocto, но и имеют разное управление и область применения.

Пакет поддержки доски

BSP содержит базовый пакет и драйверы для строительства Linux для определенной доски или архитектуры. Обычно это поддерживается производителями оборудования производственного совета. BSP - это операционная система Linux и интерфейс между аппаратным обеспечением. Обратите внимание, что вы также можете создать BSP для виртуальной машины.

BitBake

Bitbake - это двигатель сборки. Он читает формулу и уделяет их пристальному вниманию, получая посылку, создает их и включает в себя результат в загрузочном изображении. BitBake поддерживается проектом Yocto и OpenEMBedDed Project.

Чтобы сделать встроенное развитие Linux проще, проект Yocto обеспечивает несколько различных графических методов работы. Новое добавление элемента проекта называется панелью, что обеспечивает фронт изображения в процедуру BitBake и Build. Развитие обоих все еще продолжается, включая исследования пользователей сообщества.

Соответствие лицензии с открытым исходным кодом

Соответствие лицензиям с открытым исходным кодом является чрезвычайно важной частью любых рабочих работ в Linux. Одной из целей проекта Yocto является достижение максимально возможной соблюдения. Вы можете легко использовать инструмент проекта Yocto для создания списка (даже построить весь исходный репозиторий) и процедуры сборки фильтра, которые исключают пакеты, которые используют конкретные лицензии. Проект использует «Программа открытого соответствия» на найденном Linux, который включает в себя спецификацию программного пакета Data Exchange® (SPDXTM).

EGLIBC

Встроенный GLIBC (EGLIBC) - это вариант библиотеки GNU C (GLIBC), чтобы иметь возможность запустить в встроенной системе. Цели EGLIBC включают снижение использования памяти, что позволяет компонентам настроить, лучшую поддержку кросс-компиляции и перекрестного теста. Eglibc является частью проекта Yocto, но он поддерживается в своем собственном управлении структуре.

Комплект разработки приложений

Инструментарий разработки приложений (ADT) позволяет разработчикам системы предоставлять комплект разработки программного обеспечения (SDK) для выпуска инструмента проекта Yocto, предоставляя разработчики приложений с помощью метода разработчиков программного обеспечения. ADT содержит инструменты для инструментов для перекрестных компиляций, инструменты отладки и анализа, а также сценарии моделирования и поддержки QEMU. ADT также предоставляет плагин Eclipse для тех, кто любит использовать интегрированную среду разработки (IDE).

Другие инструменты проекта Yocto

Несколько других инструментов, принадлежащих к части проекта Yocto:

  • Autobuilder: Всегда создайте инструмент проекта Yocto, чтобы включить автоматическую деятельность по обеспечению качества (QA).
  • Cross-Prelink: Обеспечить предварительную связь для скрещенных сред разработки и повысить производительность.
  • Pseudo: Аналоговый доступом корня представляет собой незаменимую часть загрузочного конечного изображения.
  • Swabber: Обнаружение перекрестных версий не будет использоваться компонентом хоста.
  • Build Appliance: Это виртуальная машина для беговой панели, так что люди, которые используют ненуксирующие версии хоста, могут видеть процесс проекта Yocto. ( Примечание: Инструмент сборки проекта Yocto в настоящее время поддерживается только на Linux. Несомненно

Управление и сообщество

Для любого проекта с открытым исходным кодом важная часть - это сообщество, которое разрабатывает и поддерживает его компоненты. Проект Yocto имеет активное сообщество, частично, состоящее из организаторов, поставщиков операционных систем, поставщиков инструментов и производителей электронных устройств, все свышенные обстоятельства, частично состоит из людей, многие из которых являются эти организации институциональной работы.

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

Построить Linux распределение

Этот раздел покажет, как создать базовую встроенную систему Linux, используя Poky (система эталонной сборки). Конструкции потока в настоящем документе относятся к выпуску и построению всех инструментов, необходимых для этого выпуска. Если вам нравится, вы также можете скачать предварительнокомдационный двоичный файл, чтобы избежать компиляции. Пожалуйста, прочитайте руководство быстрого начала проекта Yocto.Справка), Узнайте больше о большем количестве информации.

Сам инструмент поддерживается только на платформе Linux, особенно Ubuntu, Fedora, CentOS и OpenSUSE. Обратите внимание, что, хотя последний выпуск этих систем не был включен в поддерживаемые столбцы, они обычно поддерживаются, и многие другие дистрибутивы Linux также могут поддерживать этот инструмент.

Если ваша хост-система не работает Linux, или если вы хотите установить что-либо, вы можете продолжать работать, вы можете загрузить прибор сборки проекта Yocto. Эта виртуальная машина предварительно установлена ​​последняя официальный выпуск проекта Yocto. Устройство сборки может работать в VMware Player или VirtualBox и загрузиться непосредственно для GOB GUI. Если вы используете устройство сборки, то большинство шагов ниже были завершены, вы можете прыгать напрямуюТестовый плагинодин период. Тем не менее, я предлагаю вам прочитать содержимое средней части, чтобы понять, какая делает валюта. Кроме того, вы должны прочитать некоторые документы для HOB на веб-сайте проекта Yocto, см.Справка。

Используйте любой из двух способов для загрузки проекта Yocto. Обязательно используйте диск с не менее 50 ГБ свободным пространством. Рекомендуется, чтобы свободное пространство было 100 ГБ.

Open source professional-grade tools for embedded Linux development

By Jeffrey Osier-Mixon
Updated August 17, 2018 | Published August 28, 2012

Overview

The Yocto Project is an open source collaboration project that provides templates, tools, and methods supporting custom Linux-based systems for embedded products, regardless of the hardware architecture. For those of you who are wondering about the name, the term yocto is the smallest SI unit. As a prefix, yocto indicates 10^-24.

This article provides a step-by-step walk through on how to use the Yocto Project’s industry-standard open source tools to create a customized Linux operating system for an embedded device and to boot the operating system in a virtual machine using QEMU. The Yocto Project, a Linux Foundation-sponsored open source project funded by major hardware companies and operating systems vendors, provides industry-class tools, methods, and metadata for building Linux systems.

Introducing the Yocto Project

Poky is a reference build system for the Yocto Project. It includes BitBake, OpenEmbedded-Core, a board support package (BSP), and any other packages or layers incorporated into the build. The name Poky also refers to the default Linux distribution resulting from using the reference build system, which can be extremely minimal (core-image-minimal) or a full Linux system with a GUI (core-image-sato).

You can think of the Poky build system as a reference system for the entire project—a working example of the process in action. When you download the Yocto Project, you actually download an instance of those tools, utilities, libraries, toolchain, and metadata that you can use to build the default system, as described here. That reference system and the reference distribution it creates are both named Poky. You can also use this as a starting point to create your own distribution, which of course you can name anything you like.

Metadata set

The metadata set is arranged in layers, such that each layer can provide separate functionality to the layers beneath it. The base layer is OpenEmbedded-Core, or oe-core , which provides recipes, classes, and associated functions that are common and necessary for all builds. You can then customize builds by adding new layers on top of oe-core .

OpenEmbedded-Core is co-maintained by the Yocto Project and the OpenEmbedded project. One layer that separates the Yocto Project from OpenEmbedded is the meta-yocto layer, which provides the Poky distribution configuration and a core set of reference BSPs.

The OpenEmbedded project itself is a separate open source project with (largely) interchangeable recipes and similar goals to the Yocto Project, but different governance and scope.

Board support packages

A BSP contains the essential packages and drivers necessary for building Linux for a specific board or architecture. These are often maintained by the hardware manufacturers who make the boards. BSPs are the interface between the Linux operating system and the hardware that runs it. Note that it is also possible to create BSPs for virtual machines.

BitBake

BitBake is a build engine. It reads recipes and follows them by fetching packages, building them, and incorporating the results into bootable images. BitBake is co-maintained by the Yocto Project and the OpenEmbedded project.

In an effort to make embedded Linux development easier, the Yocto Project provides a few different methods for working graphically. A relatively new addition to the project is called Hob, which provides a graphical front end to BitBake and the build process. Both are under continual development, complete with community user studies.

Open source license compliance

Complying with open source licenses is an extremely important part of any Linux development effort. One goal of the Yocto Project is to make compliance as easy as possible. It is quite easy to use the Yocto Project tools to create manifests and even to build entire source repositories, as well as filtering your build process to exclude packages that use specific licenses. The project is working with the Linux Foundation on its Open Compliance Program in relation to the Software Package Data Exchange® (SPDX™) specification.

EGLIBC

Application Development Toolkit

The Application Development Toolkit (ADT) enables systems developers to provide software development kits (SDKs) for the distributions they create using the Yocto Project tools, providing applications developers a way to develop against the software stacks provided by those systems developers. The ADT includes a cross-compiling toolchain, debugging and profiling tools, and QEMU emulation and support scripts. The ADT also includes an Eclipse plug-in for those who like to work with integrated development environments (IDEs).

Other tools under the Yocto Project umbrella

  • Autobuilder: Creates continuous automated builds of the Yocto Project tools, enabling automated Quality Assurance (QA) activities.
  • Cross-Prelink: Provides prelinking for cross-compilation development environments, improving performance.
  • Pseudo: Emulates root access, an essential part of building a bootable final image.
  • Swabber: Detects when a cross-compilation build has been contaminated by host components.
  • Build Appliance: Is a virtual machine that runs Hob, enabling those who use non-Linux build hosts to see the Yocto Project process firsthand. (Note: The Yocto Project build tools are currently supported on Linux only.)

Governance and community

One vital component for any open source project is the community who develops and supports its components. The Yocto Project has an active community that is made up in part by organizations—including hardware manufacturers, operating systems and tools providers, and electronics manufacturers, thus capturing the entire spectrum of embedded development—and in part by individuals, many of whom work for those organizations.

The project is managed by a chief architect and a set of maintainers and technical leaders, who make all technical decisions. The member organizations, many of which normally compete with each other, collaborate to form an Advisory Board, whose role, as the name suggests, is advisory in nature. This board manages the resources for the project, including infrastructure, advocacy and outreach, and finance.

Build a Linux distribution

This section shows how to build a basic embedded Linux system using Poky, the reference build system. The process described here builds the reference distribution as well as all of the tools needed to build that distribution. If you prefer, you can also download pre-built binaries to avoid the need for compiling. Find details in the Yocto Project Quick Start Guide (see the resources at the right side).

The tools themselves are only supported on Linux platforms, specifically Ubuntu, Fedora, CentOS, and openSUSE. Note that the latest release of each of these systems is frequently not yet listed as being supported, though it often works anyway, and many other Linux distributions might also work.

Download the Yocto Project tools

Download the Yocto Project tools with either of two methods. Make sure to use a disk that has at least 50GB free. 100GB is recommended.

You can download a tar file with the latest fully tested release from the Yocto Project downloads page. Download the tar file and then unpack it into a directory, as in Listing 1.

Listing 1. Downloading poky

You can use git to grab the latest release (or any specific branch), although the master branch of development might be less stable than the tested release represented in the tar file. Listing 2 shows the use of git to download the latest bits.

Listing 2. Getting poky with git

Note that the subdirectory in this case is simply called poky without a release number, as it can be updated at any time using git .

Initialize your environment

To initialize your working environment, follow these steps:


Getting Started: The Yocto Project® Overview

The Yocto Project is an open source collaboration project that helps developers create custom Linux-based systems for embedded products, regardless of the hardware architecture. The project provides a flexible set of tools and a space where embedded developers worldwide can share technologies, software stacks, configurations and best practices which can be used to create tailored Linux images for embedded devices.

The project provides a standard to delivering hardware support and software stacks, allowing the interchange of software configurations and builds. The tools allow users to build and support customizations for multiple hardware platforms and software stacks in a maintainable and scalable way.

Historically the project grew from, and works with the OpenEmbedded Project which is where the build system and some of the meta-data are derived.

The Yocto Project combines, maintains and validates three (3) key development elements.

  1. A set of integrated tools to make working with embedded Linux successful, including tools for automated building and testing, processes for board support and license compliance, and component information for custom Linux-based embedded operating systems
  2. A reference embedded distribution (called Poky)
  3. The OpenEmbedded build system, co-maintained with the OpenEmbedded Project

Deeper into Yocto Project

There are many different open source components and tools within the Yocto Project umbrella.

Poky, the reference embedded OS is actually a working BUILD EXAMPLE which will build a small embedded OS with the included build system (BitBake, the build engine and OpenEmbedded-Core, the core build system metadata).

The build system is downloaded with Poky build instruction "files" called recipes and layers (defined below). You can alter, copy, or use the Poky build specifics in any way you might need to in order to create your custom embedded Linux.


The Layer Model - The Key to Customization

Yocto Project has a development model for embedded Linux creation which distinguishes it from other simple build systems. It is called the Layer Model.

The Layer Model is designed to support both collaboration and customization at the same time. Layers are repositories containing related sets of instructions which tell the build system what to do. Users can collaborate, share, and reuse layers. Layers can contain changes to previous instructions or settings at any time.

This powerful override capability is what allows you to customize previous collaborative or community supplied layers to suit your product requirements.

Use different layers to logically separate information in your build. As an example, you could have a BSP layer, a GUI layer, a distro configuration, middleware, or an application. Putting your entire build into one layer limits and complicates future customization and reuse. Isolating information into layers, on the other hand, helps simplify future customizations and reuse. Use BSP layers from silicon vendors when possible.

Familiarize yourself with the curated (tested) Yocto Project Compatible Layer Index . There is also the OpenEmbedded layer index which contains more layers but the content is less universally validated.

Yocto Project member organizations can provide information about specific BSPs. Please visit the Yocto Project Member BSP page for details.

Components and Tools Maintained by the Yocto Project


There is a collection of components and tools that are used by the project to maintain and update the actual project. There are also those used directly by the project itself. Finally, other components and tools are used by developers to create their custom OSs. These components and tools are open source projects themselves, or metadata. Both are separate from the reference distribution and build system and most are downloaded separately.

Сводка: если для описания построения дистрибутива используется таблица приготовления, Yocto - название ресторана, Poky - кухня (и набор блюд, предоставленный в качестве справочного материала), Metadata - ресурс приготовления (.bb / .bbappend означает рецепт Подсказки, .conf указывает на лидера команды на кухне), Layers - это классификация рецептов (таких как рецепты Сычуани, кантонские рецепты), Bitbake - это повар, а Output - сервированный стол.

2. Архитектура Йокто

Предположим, что среда Yocto уже создана. Для получения подробной информации о конкретной операции и окружающей среде строительства YoctoСлучай использования Yocto

  • Предположим, что наш проект называется imx6_avi, затем введите каталог нашего проекта, просмотрите его структуру

Нетрудно увидеть из каталога, что в основном несколько слоев

  • meta-avi: Создано и поддерживается нами. Формулы, необходимые для AVI связанных проектов. Можно считать, что рецепты в этом каталоге универсальны и не зависят от платформы.
  • meta-imx6-avi: Создано и поддерживается нами. Формула, необходимая для проекта avi платформы imx6
  • meta-Exynos-avi: Создано и поддерживается нами. Формула, необходимая для проекта avi платформы Exynos
  • meta-qt5-avi: Создано и поддерживается нами. Формула, требуемая qt5 в проекте avi
  • meta-fsl-arm: официальные рецепты Freescale
  • meta-openembedded: рецепт для открытого внедрения
  • meta-qt5: qt5 официальные рецепты qt5
  • Куча мета в поки: справочный рецепт, официально выпущенный Yocto Несмотря на то, что эти метаданные размещены в поки, они по-прежнему не влияют на использование, они имеют тот же статус, что и метас выше, как показано ниже.

【 】

Нетрудно видеть, что многие слои просто скопированы у нас, цель состоит в том, чтобы позаимствовать готовые рецепты (вы можете думать об этих слоях как о «библиотеках»), и мы действительно поддерживаем лишь несколько имен с помощью avi. Слои, и они зависят от тех, которые действуют как «библиотеки». Как показано ниже


  • Эти слои в настоящее время включены, так что вы думаете, что все формулы в этих слоях также включены? Ответ - нет, невозможно поместить все пакеты в наш дистрибутив. В Yocto эта операция выбора и конфигурирования завершается несколькими файлами conf и bb.В общем наброске нет, что также является самым большим отличием от buildroot (buildroot использует конфигурацию набросков с помощью menuconfig). Можно понять, что Yocto - это «разделенная система», что, по словам императора, не может быть реализовано, и местные чиновники всех размеров имеют окончательное решение, а buildroot - это «централизованная система власти», а последнее слово имеет император.
  • Как понять метод настройки Yocto? Это начинается с процесса настройки для распространения. Наша цель очень проста. Мы хотим получить три образа uboot, kernel и rootfs. Цель Yocto также очень проста. Он должен пройти конфигурацию первого уровня и постепенно сокращать формулу, пока мы не получим три изображения uboot, kernel и rootfs. , Какие рецепты требуются для каждого уровня, определяется файлом конфигурации (conf / bb), соответствующим этому уровню. Конфигурация более высокого уровня является более общей, а конфигурация более низкого уровня - более подробной. Если элементы конфигурации нижнего уровня являются дополнительными или конфликтуют с более высоким уровнем, содержимое нижнего уровня имеет преимущественную силу, и можно считать, что нижний уровень будет «перезаписывать» более высокий уровень. Это на самом деле похоже на правила дорожного движения

О строительном маршруте и процессе: для всей сборки дистрибутива, хотя рецепт каждого уровня определяется (conf / bb), выбор маршрута и направления каждого уровня определяется нашим конечным объектом bitbake, таким как наш последний bitbake avi-image-core Мы хотим получить rootfs.img, тогда:

  • Первый шаг Poky будет начинаться с local.conf, вплоть до уровня, уровня, пока он не будет настроен на связку bbs, связанных с rootfs, и, наконец, сформирует полную формулу
  • Затем получите ресурсы, необходимые для рецепта, такие как различные пакеты программного обеспечения, такие как исходный код ядра
  • Наконец, скомпилируйте все ресурсы для нужного нам изображения


Наконец, поговорим о bitbake. Например, если мы хотим скомпилировать rootfs.img, используйте bitbake avi-image-core Это хорошо, но часто этот подход не принимается напрямую. В большинстве случаев мы напишем Makefile в каталоге проекта, который содержит различные функции, которые реализуются внутри инструкций bitbake

3. Подробный файл конфигурации

В предыдущем разделе кратко рассказывалось о том, как Yocto настраивает наш проект, этот раздел начинает анализ конкретных файлов конфигурации.

Читайте также: