summaryrefslogtreecommitdiffstats
path: root/documentation/overview-manual/yp-intro.rst
diff options
context:
space:
mode:
Diffstat (limited to 'documentation/overview-manual/yp-intro.rst')
-rw-r--r--documentation/overview-manual/yp-intro.rst296
1 files changed, 136 insertions, 160 deletions
diff --git a/documentation/overview-manual/yp-intro.rst b/documentation/overview-manual/yp-intro.rst
index 0ec7e2b961..4a27e12e01 100644
--- a/documentation/overview-manual/yp-intro.rst
+++ b/documentation/overview-manual/yp-intro.rst
@@ -24,7 +24,7 @@ software customizations and build interchange for multiple hardware
24platforms as well as software stacks that can be maintained and scaled. 24platforms as well as software stacks that can be maintained and scaled.
25 25
26.. image:: figures/key-dev-elements.png 26.. image:: figures/key-dev-elements.png
27 :align: center 27 :width: 100%
28 28
29For further introductory information on the Yocto Project, you might be 29For further introductory information on the Yocto Project, you might be
30interested in this 30interested in this
@@ -38,12 +38,11 @@ to the Yocto Project.
38Features 38Features
39-------- 39--------
40 40
41The following list describes features and advantages of the Yocto 41Here are features and advantages of the Yocto Project:
42Project:
43 42
44- *Widely Adopted Across the Industry:* Semiconductor, operating 43- *Widely Adopted Across the Industry:* Many semiconductor, operating
45 system, software, and service vendors exist whose products and 44 system, software, and service vendors adopt and support the Yocto
46 services adopt and support the Yocto Project. For a look at the Yocto 45 Project in their products and services. For a look at the Yocto
47 Project community and the companies involved with the Yocto Project, 46 Project community and the companies involved with the Yocto Project,
48 see the "COMMUNITY" and "ECOSYSTEM" tabs on the 47 see the "COMMUNITY" and "ECOSYSTEM" tabs on the
49 :yocto_home:`Yocto Project <>` home page. 48 :yocto_home:`Yocto Project <>` home page.
@@ -53,8 +52,8 @@ Project:
53 create and supply BSPs that support their hardware. If you have 52 create and supply BSPs that support their hardware. If you have
54 custom silicon, you can create a BSP that supports that architecture. 53 custom silicon, you can create a BSP that supports that architecture.
55 54
56 Aside from lots of architecture support, the Yocto Project fully 55 Aside from broad architecture support, the Yocto Project fully
57 supports a wide range of device emulation through the Quick EMUlator 56 supports a wide range of devices emulated by the Quick EMUlator
58 (QEMU). 57 (QEMU).
59 58
60- *Images and Code Transfer Easily:* Yocto Project output can easily 59- *Images and Code Transfer Easily:* Yocto Project output can easily
@@ -78,10 +77,10 @@ Project:
78 you need for embedded devices. You only add the feature support or 77 you need for embedded devices. You only add the feature support or
79 packages that you absolutely need for the device. For devices that 78 packages that you absolutely need for the device. For devices that
80 have display hardware, you can use available system components such 79 have display hardware, you can use available system components such
81 as X11, GTK+, Qt, Clutter, and SDL (among others) to create a rich 80 as X11, Wayland, GTK+, Qt, Clutter, and SDL (among others) to create
82 user experience. For devices that do not have a display or where you 81 a rich user experience. For devices that do not have a display or
83 want to use alternative UI frameworks, you can choose to not install 82 where you want to use alternative UI frameworks, you can choose to
84 these components. 83 not build these components.
85 84
86- *Comprehensive Toolchain Capabilities:* Toolchains for supported 85- *Comprehensive Toolchain Capabilities:* Toolchains for supported
87 architectures satisfy most use cases. However, if your hardware 86 architectures satisfy most use cases. However, if your hardware
@@ -96,18 +95,18 @@ Project:
96 of your design instead of adopting decisions enforced by some system 95 of your design instead of adopting decisions enforced by some system
97 software provider. 96 software provider.
98 97
99- *Uses a Layer Model:* The Yocto Project `layer 98- *Uses a Layer Model:* The Yocto Project :ref:`layer
100 infrastructure <#the-yocto-project-layer-model>`__ groups related 99 infrastructure <overview-manual/yp-intro:the yocto project layer model>`
101 functionality into separate bundles. You can incrementally add these 100 groups related functionality into separate bundles. You can incrementally
102 grouped functionalities to your project as needed. Using layers to 101 add these grouped functionalities to your project as needed. Using layers to
103 isolate and group functionality reduces project complexity and 102 isolate and group functionality reduces project complexity and
104 redundancy, allows you to easily extend the system, make 103 redundancy, allows you to easily extend the system, make
105 customizations, and keep functionality organized. 104 customizations, and keep functionality organized.
106 105
107- *Supports Partial Builds:* You can build and rebuild individual 106- *Supports Partial Builds:* You can build and rebuild individual
108 packages as needed. Yocto Project accomplishes this through its 107 packages as needed. Yocto Project accomplishes this through its
109 `shared-state cache <#shared-state-cache>`__ (sstate) scheme. Being 108 :ref:`overview-manual/concepts:shared state cache` (sstate) scheme.
110 able to build and debug components individually eases project 109 Being able to build and debug components individually eases project
111 development. 110 development.
112 111
113- *Releases According to a Strict Schedule:* Major releases occur on a 112- *Releases According to a Strict Schedule:* Major releases occur on a
@@ -130,20 +129,18 @@ Project:
130 arbitrarily include packages. 129 arbitrarily include packages.
131 130
132- *License Manifest:* The Yocto Project provides a :ref:`license 131- *License Manifest:* The Yocto Project provides a :ref:`license
133 manifest <dev-manual/common-tasks:maintaining open source license compliance during your product's lifecycle>` 132 manifest <dev-manual/licenses:maintaining open source license compliance during your product's lifecycle>`
134 for review by people who need to track the use of open source 133 for review by people who need to track the use of open source
135 licenses (e.g. legal teams). 134 licenses (e.g. legal teams).
136 135
137Challenges 136Challenges
138---------- 137----------
139 138
140The following list presents challenges you might encounter when 139Here are challenges you might encounter when developing using the Yocto Project:
141developing using the Yocto Project:
142 140
143- *Steep Learning Curve:* The Yocto Project has a steep learning curve 141- *Steep Learning Curve:* The Yocto Project has a steep learning curve
144 and has many different ways to accomplish similar tasks. It can be 142 and has many different ways to accomplish similar tasks. It can be
145 difficult to choose how to proceed when varying methods exist by 143 difficult to choose between such ways.
146 which to accomplish a given task.
147 144
148- *Understanding What Changes You Need to Make For Your Design Requires 145- *Understanding What Changes You Need to Make For Your Design Requires
149 Some Research:* Beyond the simple tutorial stage, understanding what 146 Some Research:* Beyond the simple tutorial stage, understanding what
@@ -154,10 +151,11 @@ developing using the Yocto Project:
154 ":ref:`transitioning-to-a-custom-environment:transitioning to a custom environment for systems development`" 151 ":ref:`transitioning-to-a-custom-environment:transitioning to a custom environment for systems development`"
155 documents on the Yocto Project website. 152 documents on the Yocto Project website.
156 153
157- *Project Workflow Could Be Confusing:* The `Yocto Project 154- *Project Workflow Could Be Confusing:* The :ref:`Yocto Project
158 workflow <#overview-development-environment>`__ could be confusing if 155 workflow <overview-manual/development-environment:the yocto project development environment>`
159 you are used to traditional desktop and server software development. 156 could be confusing if you are used to traditional desktop and server
160 In a desktop development environment, mechanisms exist to easily pull 157 software development.
158 In a desktop development environment, there are mechanisms to easily pull
161 and install new packages, which are typically pre-compiled binaries 159 and install new packages, which are typically pre-compiled binaries
162 from servers accessible over the Internet. Using the Yocto Project, 160 from servers accessible over the Internet. Using the Yocto Project,
163 you must modify your configuration and rebuild to add additional 161 you must modify your configuration and rebuild to add additional
@@ -219,15 +217,15 @@ your Metadata, the easier it is to cope with future changes.
219 - Use Board Support Package (BSP) layers from silicon vendors when 217 - Use Board Support Package (BSP) layers from silicon vendors when
220 possible. 218 possible.
221 219
222 - Familiarize yourself with the `Yocto Project curated layer 220 - Familiarize yourself with the
223 index <https://www.yoctoproject.org/software-overview/layers/>`__ 221 :yocto_home:`Yocto Project Compatible Layers </software-overview/layers/>`
224 or the :oe_layerindex:`OpenEmbedded layer index <>`. 222 or the :oe_layerindex:`OpenEmbedded Layer Index <>`.
225 The latter contains more layers but they are less universally 223 The latter contains more layers but they are less universally
226 validated. 224 validated.
227 225
228 - Layers support the inclusion of technologies, hardware components, 226 - Layers support the inclusion of technologies, hardware components,
229 and software components. The :ref:`Yocto Project 227 and software components. The :ref:`Yocto Project
230 Compatible <dev-manual/common-tasks:making sure your layer is compatible with yocto project>` 228 Compatible <dev-manual/layers:making sure your layer is compatible with yocto project>`
231 designation provides a minimum level of standardization that 229 designation provides a minimum level of standardization that
232 contributes to a strong ecosystem. "YP Compatible" is applied to 230 contributes to a strong ecosystem. "YP Compatible" is applied to
233 appropriate products and software components such as BSPs, other 231 appropriate products and software components such as BSPs, other
@@ -250,8 +248,7 @@ accomplish this through a recipe that is a BitBake append
250.. note:: 248.. note::
251 249
252 For general information on BSP layer structure, see the 250 For general information on BSP layer structure, see the
253 :doc:`/bsp-guide/index` 251 :doc:`/bsp-guide/index`.
254 .
255 252
256The :term:`Source Directory` 253The :term:`Source Directory`
257contains both general layers and BSP layers right out of the box. You 254contains both general layers and BSP layers right out of the box. You
@@ -262,8 +259,7 @@ with the string ``meta-``.
262.. note:: 259.. note::
263 260
264 It is not a requirement that a layer name begin with the prefix 261 It is not a requirement that a layer name begin with the prefix
265 meta- 262 ``meta-``, but it is a commonly accepted standard in the Yocto Project
266 , but it is a commonly accepted standard in the Yocto Project
267 community. 263 community.
268 264
269For example, if you were to examine the :yocto_git:`tree view </poky/tree/>` 265For example, if you were to examine the :yocto_git:`tree view </poky/tree/>`
@@ -272,8 +268,8 @@ of the ``poky`` repository, you will see several layers: ``meta``,
272``meta-yocto-bsp``. Each of these repositories represents a distinct 268``meta-yocto-bsp``. Each of these repositories represents a distinct
273layer. 269layer.
274 270
275For procedures on how to create layers, see the 271For procedures on how to create layers, see the
276":ref:`dev-manual/common-tasks:understanding and creating layers`" 272":ref:`dev-manual/layers:understanding and creating layers`"
277section in the Yocto Project Development Tasks Manual. 273section in the Yocto Project Development Tasks Manual.
278 274
279Components and Tools 275Components and Tools
@@ -283,8 +279,7 @@ The Yocto Project employs a collection of components and tools used by
283the project itself, by project developers, and by those using the Yocto 279the project itself, by project developers, and by those using the Yocto
284Project. These components and tools are open source projects and 280Project. These components and tools are open source projects and
285metadata that are separate from the reference distribution 281metadata that are separate from the reference distribution
286(:term:`Poky`) and the 282(:term:`Poky`) and the :term:`OpenEmbedded Build System`. Most of the
287:term:`OpenEmbedded Build System`. Most of the
288components and tools are downloaded separately. 283components and tools are downloaded separately.
289 284
290This section provides brief overviews of the components and tools 285This section provides brief overviews of the components and tools
@@ -293,8 +288,8 @@ associated with the Yocto Project.
293Development Tools 288Development Tools
294----------------- 289-----------------
295 290
296The following list consists of tools that help you develop images and 291Here are tools that help you develop images and applications using
297applications using the Yocto Project: 292the Yocto Project:
298 293
299- *CROPS:* `CROPS <https://github.com/crops/poky-container/>`__ is an 294- *CROPS:* `CROPS <https://github.com/crops/poky-container/>`__ is an
300 open source, cross-platform development framework that leverages 295 open source, cross-platform development framework that leverages
@@ -325,7 +320,7 @@ applications using the Yocto Project:
325 320
326 You can read about the ``devtool`` workflow in the Yocto Project 321 You can read about the ``devtool`` workflow in the Yocto Project
327 Application Development and Extensible Software Development Kit 322 Application Development and Extensible Software Development Kit
328 (eSDK) Manual in the 323 (eSDK) Manual in the
329 ":ref:`sdk-manual/extensible:using \`\`devtool\`\` in your sdk workflow`" 324 ":ref:`sdk-manual/extensible:using \`\`devtool\`\` in your sdk workflow`"
330 section. 325 section.
331 326
@@ -345,18 +340,30 @@ applications using the Yocto Project:
345 view information about builds. For information on Toaster, see the 340 view information about builds. For information on Toaster, see the
346 :doc:`/toaster-manual/index`. 341 :doc:`/toaster-manual/index`.
347 342
343- *VSCode IDE Extension:* The `Yocto Project BitBake
344 <https://marketplace.visualstudio.com/items?itemName=yocto-project.yocto-bitbake>`__
345 extension for Visual Studio Code provides a rich set of features for working
346 with BitBake recipes. The extension provides syntax highlighting,
347 hover tips, and completion for BitBake files as well as embedded Python and
348 Bash languages. Additional views and commands allow you to efficiently
349 browse, build and edit recipes. It also provides SDK integration for
350 cross-compiling and debugging through ``devtool``.
351
352 Learn more about the VSCode Extension on the `extension's frontpage
353 <https://marketplace.visualstudio.com/items?itemName=yocto-project.yocto-bitbake>`__.
354
348Production Tools 355Production Tools
349---------------- 356----------------
350 357
351The following list consists of tools that help production related 358Here are tools that help with production related activities using the
352activities using the Yocto Project: 359Yocto Project:
353 360
354- *Auto Upgrade Helper:* This utility when used in conjunction with the 361- *Auto Upgrade Helper:* This utility when used in conjunction with the
355 :term:`OpenEmbedded Build System` 362 :term:`OpenEmbedded Build System`
356 (BitBake and 363 (BitBake and
357 OE-Core) automatically generates upgrades for recipes that are based 364 OE-Core) automatically generates upgrades for recipes that are based
358 on new versions of the recipes published upstream. See 365 on new versions of the recipes published upstream. See
359 :ref:`dev-manual/common-tasks:using the auto upgrade helper (auh)` 366 :ref:`dev-manual/upgrading-recipes:using the auto upgrade helper (auh)`
360 for how to set it up. 367 for how to set it up.
361 368
362- *Recipe Reporting System:* The Recipe Reporting System tracks recipe 369- *Recipe Reporting System:* The Recipe Reporting System tracks recipe
@@ -366,7 +373,7 @@ activities using the Yocto Project:
366 of the :oe_layerindex:`OpenEmbedded Layer Index <>`, which 373 of the :oe_layerindex:`OpenEmbedded Layer Index <>`, which
367 is a website that indexes OpenEmbedded-Core layers. 374 is a website that indexes OpenEmbedded-Core layers.
368 375
369- *Patchwork:* `Patchwork <http://jk.ozlabs.org/projects/patchwork/>`__ 376- *Patchwork:* `Patchwork <https://patchwork.yoctoproject.org/>`__
370 is a fork of a project originally started by 377 is a fork of a project originally started by
371 `OzLabs <https://ozlabs.org/>`__. The project is a web-based tracking 378 `OzLabs <https://ozlabs.org/>`__. The project is a web-based tracking
372 system designed to streamline the process of bringing contributions 379 system designed to streamline the process of bringing contributions
@@ -376,7 +383,7 @@ activities using the Yocto Project:
376 383
377- *AutoBuilder:* AutoBuilder is a project that automates build tests 384- *AutoBuilder:* AutoBuilder is a project that automates build tests
378 and quality assurance (QA). By using the public AutoBuilder, anyone 385 and quality assurance (QA). By using the public AutoBuilder, anyone
379 can determine the status of the current "master" branch of Poky. 386 can determine the status of the current development branch of Poky.
380 387
381 .. note:: 388 .. note::
382 389
@@ -392,58 +399,27 @@ activities using the Yocto Project:
392 You can learn more about the AutoBuilder used by the Yocto Project 399 You can learn more about the AutoBuilder used by the Yocto Project
393 Autobuilder :doc:`here </test-manual/understand-autobuilder>`. 400 Autobuilder :doc:`here </test-manual/understand-autobuilder>`.
394 401
395- *Cross-Prelink:* Prelinking is the process of pre-computing the load
396 addresses and link tables generated by the dynamic linker as compared
397 to doing this at runtime. Doing this ahead of time results in
398 performance improvements when the application is launched and reduced
399 memory usage for libraries shared by many applications.
400
401 Historically, cross-prelink is a variant of prelink, which was
402 conceived by `Jakub
403 Jelínek <https://people.redhat.com/jakub/prelink.pdf>`__ a number of
404 years ago. Both prelink and cross-prelink are maintained in the same
405 repository albeit on separate branches. By providing an emulated
406 runtime dynamic linker (i.e. ``glibc``-derived ``ld.so`` emulation),
407 the cross-prelink project extends the prelink software's ability to
408 prelink a sysroot environment. Additionally, the cross-prelink
409 software enables the ability to work in sysroot style environments.
410
411 The dynamic linker determines standard load address calculations
412 based on a variety of factors such as mapping addresses, library
413 usage, and library function conflicts. The prelink tool uses this
414 information, from the dynamic linker, to determine unique load
415 addresses for executable and linkable format (ELF) binaries that are
416 shared libraries and dynamically linked. The prelink tool modifies
417 these ELF binaries with the pre-computed information. The result is
418 faster loading and often lower memory consumption because more of the
419 library code can be re-used from shared Copy-On-Write (COW) pages.
420
421 The original upstream prelink project only supports running prelink
422 on the end target device due to the reliance on the target device's
423 dynamic linker. This restriction causes issues when developing a
424 cross-compiled system. The cross-prelink adds a synthesized dynamic
425 loader that runs on the host, thus permitting cross-prelinking
426 without ever having to run on a read-write target filesystem.
427
428- *Pseudo:* Pseudo is the Yocto Project implementation of 402- *Pseudo:* Pseudo is the Yocto Project implementation of
429 `fakeroot <http://man.he.net/man1/fakeroot>`__, which is used to run 403 `fakeroot <http://man.he.net/man1/fakeroot>`__, which is used to run
430 commands in an environment that seemingly has root privileges. 404 commands in an environment that seemingly has root privileges.
431 405
432 During a build, it can be necessary to perform operations that 406 During a build, it can be necessary to perform operations that
433 require system administrator privileges. For example, file ownership 407 require system administrator privileges. For example, file ownership
434 or permissions might need definition. Pseudo is a tool that you can 408 or permissions might need to be defined. Pseudo is a tool that you
435 either use directly or through the environment variable 409 can either use directly or through the environment variable
436 ``LD_PRELOAD``. Either method allows these operations to succeed as 410 ``LD_PRELOAD``. Either method allows these operations to succeed
437 if system administrator privileges exist even when they do not. 411 even without system administrator privileges.
438 412
439 You can read more about Pseudo in the "`Fakeroot and 413 Thanks to Pseudo, the Yocto Project never needs root privileges to
440 Pseudo <#fakeroot-and-pseudo>`__" section. 414 build images for your target system.
415
416 You can read more about Pseudo in the
417 ":ref:`overview-manual/concepts:fakeroot and pseudo`" section.
441 418
442Open-Embedded Build System Components 419Open-Embedded Build System Components
443------------------------------------- 420-------------------------------------
444 421
445The following list consists of components associated with the 422Here are components associated with the :term:`OpenEmbedded Build System`:
446:term:`OpenEmbedded Build System`:
447 423
448- *BitBake:* BitBake is a core component of the Yocto Project and is 424- *BitBake:* BitBake is a core component of the Yocto Project and is
449 used by the OpenEmbedded build system to build images. While BitBake 425 used by the OpenEmbedded build system to build images. While BitBake
@@ -479,9 +455,9 @@ The following list consists of components associated with the
479 455
480 Sharing a core set of metadata results in Poky as an integration 456 Sharing a core set of metadata results in Poky as an integration
481 layer on top of OE-Core. You can see that in this 457 layer on top of OE-Core. You can see that in this
482 `figure <#yp-key-dev-elements>`__. The Yocto Project combines various 458 :ref:`figure <overview-manual/yp-intro:what is the yocto project?>`.
483 components such as BitBake, OE-Core, script "glue", and documentation 459 The Yocto Project combines various components such as BitBake, OE-Core,
484 for its build system. 460 script "glue", and documentation for its build system.
485 461
486Reference Distribution (Poky) 462Reference Distribution (Poky)
487----------------------------- 463-----------------------------
@@ -489,8 +465,8 @@ Reference Distribution (Poky)
489Poky is the Yocto Project reference distribution. It contains the 465Poky is the Yocto Project reference distribution. It contains the
490:term:`OpenEmbedded Build System` 466:term:`OpenEmbedded Build System`
491(BitBake and OE-Core) as well as a set of metadata to get you started 467(BitBake and OE-Core) as well as a set of metadata to get you started
492building your own distribution. See the 468building your own distribution. See the figure in
493`figure <#what-is-the-yocto-project>`__ in "What is the Yocto Project?" 469":ref:`overview-manual/yp-intro:what is the yocto project?`"
494section for an illustration that shows Poky and its relationship with 470section for an illustration that shows Poky and its relationship with
495other parts of the Yocto Project. 471other parts of the Yocto Project.
496 472
@@ -502,14 +478,14 @@ To use the Yocto Project tools and components, you can download
502 Poky does not contain binary files. It is a working example of how to 478 Poky does not contain binary files. It is a working example of how to
503 build your own custom Linux distribution from source. 479 build your own custom Linux distribution from source.
504 480
505You can read more about Poky in the "`Reference Embedded Distribution 481You can read more about Poky in the
506(Poky) <#reference-embedded-distribution>`__" section. 482":ref:`overview-manual/yp-intro:reference embedded distribution (poky)`"
483section.
507 484
508Packages for Finished Targets 485Packages for Finished Targets
509----------------------------- 486-----------------------------
510 487
511The following lists components associated with packages for finished 488Here are components associated with packages for finished targets:
512targets:
513 489
514- *Matchbox:* Matchbox is an Open Source, base environment for the X 490- *Matchbox:* Matchbox is an Open Source, base environment for the X
515 Window System running on non-desktop, embedded platforms such as 491 Window System running on non-desktop, embedded platforms such as
@@ -553,35 +529,34 @@ Historically, the Build Appliance was the second of three methods by
553which you could use the Yocto Project on a system that was not native to 529which you could use the Yocto Project on a system that was not native to
554Linux. 530Linux.
555 531
5561. *Hob:* Hob, which is now deprecated and is no longer available since 532#. *Hob:* Hob, which is now deprecated and is no longer available since
557 the 2.1 release of the Yocto Project provided a rudimentary, 533 the 2.1 release of the Yocto Project provided a rudimentary,
558 GUI-based interface to the Yocto Project. Toaster has fully replaced 534 GUI-based interface to the Yocto Project. Toaster has fully replaced
559 Hob. 535 Hob.
560 536
5612. *Build Appliance:* Post Hob, the Build Appliance became available. It 537#. *Build Appliance:* Post Hob, the Build Appliance became available. It
562 was never recommended that you use the Build Appliance as a 538 was never recommended that you use the Build Appliance as a
563 day-to-day production development environment with the Yocto Project. 539 day-to-day production development environment with the Yocto Project.
564 Build Appliance was useful as a way to try out development in the 540 Build Appliance was useful as a way to try out development in the
565 Yocto Project environment. 541 Yocto Project environment.
566 542
5673. *CROPS:* The final and best solution available now for developing 543#. *CROPS:* The final and best solution available now for developing
568 using the Yocto Project on a system not native to Linux is with 544 using the Yocto Project on a system not native to Linux is with
569 `CROPS <#gs-crops-overview>`__. 545 :ref:`CROPS <overview-manual/yp-intro:development tools>`.
570 546
571Development Methods 547Development Methods
572=================== 548===================
573 549
574The Yocto Project development environment usually involves a 550The Yocto Project development environment usually involves a
575:term:`Build Host` and target 551:term:`Build Host` and target
576hardware. You use the Build Host to build images and develop 552hardware. You use the Build Host to build images and develop
577applications, while you use the target hardware to test deployed 553applications, while you use the target hardware to execute deployed
578software. 554software.
579 555
580This section provides an introduction to the choices or development 556This section provides an introduction to the choices or development
581methods you have when setting up your Build Host. Depending on the your 557methods you have when setting up your Build Host. Depending on your
582particular workflow preference and the type of operating system your 558particular workflow preference and the type of operating system your
583Build Host runs, several choices exist that allow you to use the Yocto 559Build Host runs, you have several choices.
584Project.
585 560
586.. note:: 561.. note::
587 562
@@ -593,11 +568,11 @@ Project.
593 system running Linux as its native operating system allows you to 568 system running Linux as its native operating system allows you to
594 develop software by directly using the 569 develop software by directly using the
595 :term:`BitBake` tool. You can 570 :term:`BitBake` tool. You can
596 accomplish all aspects of development from a familiar shell of a 571 accomplish all aspects of development from a regular shell in a
597 supported Linux distribution. 572 supported Linux distribution.
598 573
599 For information on how to set up a Build Host on a system running 574 For information on how to set up a Build Host on a system running
600 Linux as its native operating system, see the 575 Linux as its native operating system, see the
601 ":ref:`dev-manual/start:setting up a native linux host`" 576 ":ref:`dev-manual/start:setting up a native linux host`"
602 section in the Yocto Project Development Tasks Manual. 577 section in the Yocto Project Development Tasks Manual.
603 578
@@ -621,47 +596,46 @@ Project.
621 ":ref:`dev-manual/start:setting up to use cross platforms (crops)`" 596 ":ref:`dev-manual/start:setting up to use cross platforms (crops)`"
622 section in the Yocto Project Development Tasks Manual. 597 section in the Yocto Project Development Tasks Manual.
623 598
624- *Windows Subsystem For Linux (WSLv2):* You may use Windows Subsystem 599- *Windows Subsystem For Linux (WSL 2):* You may use Windows Subsystem
625 For Linux v2 to set up a build host using Windows 10. 600 For Linux version 2 to set up a Build Host using Windows 10 or later,
626 601 or Windows Server 2019 or later.
627 .. note::
628
629 The Yocto Project is not compatible with WSLv1, it is compatible
630 but not officially supported nor validated with WSLv2, if you
631 still decide to use WSL please upgrade to WSLv2.
632 602
633 The Windows Subsystem For Linux allows Windows 10 to run a real Linux 603 The Windows Subsystem For Linux allows Windows to run a real Linux
634 kernel inside of a lightweight utility virtual machine (VM) using 604 kernel inside of a lightweight virtual machine (VM).
635 virtualization technology.
636 605
637 For information on how to set up a Build Host with WSLv2, see the 606 For information on how to set up a Build Host with WSL 2, see the
638 ":ref:`dev-manual/start:setting up to use windows subsystem for linux (wslv2)`" 607 ":ref:`dev-manual/start:setting up to use windows subsystem for linux (wsl 2)`"
639 section in the Yocto Project Development Tasks Manual. 608 section in the Yocto Project Development Tasks Manual.
640 609
641- *Toaster:* Regardless of what your Build Host is running, you can use 610- *Toaster:* Regardless of what your Build Host is running, you can use
642 Toaster to develop software using the Yocto Project. Toaster is a web 611 Toaster to develop software using the Yocto Project. Toaster is a web
643 interface to the Yocto Project's :term:`OpenEmbedded Build System`. 612 interface to the Yocto Project's :term:`OpenEmbedded Build System`.
644 The interface 613 The interface allows you to configure and run your builds. Information
645 enables you to configure and run your builds. Information about 614 about builds is collected and stored in a database. You can use Toaster
646 builds is collected and stored in a database. You can use Toaster to 615 to configure and start builds on multiple remote build servers.
647 configure and start builds on multiple remote build servers.
648 616
649 For information about and how to use Toaster, see the 617 For information about and how to use Toaster, see the
650 :doc:`/toaster-manual/index`. 618 :doc:`/toaster-manual/index`.
651 619
620- *Using the VSCode Extension:* You can use the `Yocto Project BitBake
621 <https://marketplace.visualstudio.com/items?itemName=yocto-project.yocto-bitbake>`__
622 extension for Visual Studio Code to start your BitBake builds through a
623 graphical user interface.
624
625 Learn more about the VSCode Extension on the `extension's marketplace page
626 <https://marketplace.visualstudio.com/items?itemName=yocto-project.yocto-bitbake>`__
627
652Reference Embedded Distribution (Poky) 628Reference Embedded Distribution (Poky)
653====================================== 629======================================
654 630
655"Poky", which is pronounced *Pock*-ee, is the name of the Yocto 631"Poky", which is pronounced *Pock*-ee, is the name of the Yocto
656Project's reference distribution or Reference OS Kit. Poky contains the 632Project's reference distribution or Reference OS Kit. Poky contains the
657:term:`OpenEmbedded Build System` 633:term:`OpenEmbedded Build System` (:term:`BitBake` and
658(:term:`BitBake` and 634:term:`OpenEmbedded-Core (OE-Core)`) as well as a set of
659:term:`OpenEmbedded-Core (OE-Core)`) as well as a set 635:term:`Metadata` to get you started building your own distro. In other
660of :term:`Metadata` to get you started 636words, Poky is a base specification of the functionality needed for a
661building your own distro. In other words, Poky is a base specification 637typical embedded system as well as the components from the Yocto Project
662of the functionality needed for a typical embedded system as well as the 638that allow you to build a distribution into a usable binary image.
663components from the Yocto Project that allow you to build a distribution
664into a usable binary image.
665 639
666Poky is a combined repository of BitBake, OpenEmbedded-Core (which is 640Poky is a combined repository of BitBake, OpenEmbedded-Core (which is
667found in ``meta``), ``meta-poky``, ``meta-yocto-bsp``, and documentation 641found in ``meta``), ``meta-poky``, ``meta-yocto-bsp``, and documentation
@@ -679,7 +653,7 @@ these items that make up the Poky repository in the
679The following figure illustrates what generally comprises Poky: 653The following figure illustrates what generally comprises Poky:
680 654
681.. image:: figures/poky-reference-distribution.png 655.. image:: figures/poky-reference-distribution.png
682 :align: center 656 :width: 100%
683 657
684- BitBake is a task executor and scheduler that is the heart of the 658- BitBake is a task executor and scheduler that is the heart of the
685 OpenEmbedded build system. 659 OpenEmbedded build system.
@@ -729,8 +703,9 @@ Sato.
729 703
730One of the most powerful properties of Poky is that every aspect of a 704One of the most powerful properties of Poky is that every aspect of a
731build is controlled by the metadata. You can use metadata to augment 705build is controlled by the metadata. You can use metadata to augment
732these base image types by adding metadata 706these base image types by adding metadata :ref:`layers
733`layers <#the-yocto-project-layer-model>`__ that extend functionality. 707<overview-manual/yp-intro:the yocto project layer model>` that extend
708functionality.
734These layers can provide, for example, an additional software stack for 709These layers can provide, for example, an additional software stack for
735an image type, add a board support package (BSP) for additional 710an image type, add a board support package (BSP) for additional
736hardware, or even create a new image type. 711hardware, or even create a new image type.
@@ -745,11 +720,11 @@ other build process, in which case the basic functionality can be
745defined by the classes it inherits from the OE-Core layer's class 720defined by the classes it inherits from the OE-Core layer's class
746definitions in ``./meta/classes``. Within a recipe you can also define 721definitions in ``./meta/classes``. Within a recipe you can also define
747additional tasks as well as task prerequisites. Recipe syntax through 722additional tasks as well as task prerequisites. Recipe syntax through
748BitBake also supports both ``_prepend`` and ``_append`` operators as a 723BitBake also supports both ``:prepend`` and ``:append`` operators as a
749method of extending task functionality. These operators inject code into 724method of extending task functionality. These operators inject code into
750the beginning or end of a task. For information on these BitBake 725the beginning or end of a task. For information on these BitBake
751operators, see the 726operators, see the
752":ref:`bitbake:bitbake-user-manual/bitbake-user-manual-metadata:appending and prepending (override style syntax)`" 727":ref:`bitbake-user-manual/bitbake-user-manual-metadata:appending and prepending (override style syntax)`"
753section in the BitBake User's Manual. 728section in the BitBake User's Manual.
754 729
755The OpenEmbedded Build System Workflow 730The OpenEmbedded Build System Workflow
@@ -760,41 +735,41 @@ accomplish image and SDK generation. The following figure overviews that
760workflow: 735workflow:
761 736
762.. image:: figures/YP-flow-diagram.png 737.. image:: figures/YP-flow-diagram.png
763 :align: center 738 :width: 100%
764 739
765Following is a brief summary of the "workflow": 740Here is a brief summary of the "workflow":
766 741
7671. Developers specify architecture, policies, patches and configuration 742#. Developers specify architecture, policies, patches and configuration
768 details. 743 details.
769 744
7702. The build system fetches and downloads the source code from the 745#. The build system fetches and downloads the source code from the
771 specified location. The build system supports standard methods such 746 specified location. The build system supports standard methods such
772 as tarballs or source code repositories systems such as Git. 747 as tarballs or source code repositories systems such as Git.
773 748
7743. Once source code is downloaded, the build system extracts the sources 749#. Once source code is downloaded, the build system extracts the sources
775 into a local work area where patches are applied and common steps for 750 into a local work area where patches are applied and common steps for
776 configuring and compiling the software are run. 751 configuring and compiling the software are run.
777 752
7784. The build system then installs the software into a temporary staging 753#. The build system then installs the software into a temporary staging
779 area where the binary package format you select (DEB, RPM, or IPK) is 754 area where the binary package format you select (DEB, RPM, or IPK) is
780 used to roll up the software. 755 used to roll up the software.
781 756
7825. Different QA and sanity checks run throughout entire build process. 757#. Different QA and sanity checks run throughout entire build process.
783 758
7846. After the binaries are created, the build system generates a binary 759#. After the binaries are created, the build system generates a binary
785 package feed that is used to create the final root file image. 760 package feed that is used to create the final root file image.
786 761
7877. The build system generates the file system image and a customized 762#. The build system generates the file system image and a customized
788 Extensible SDK (eSDK) for application development in parallel. 763 Extensible SDK (eSDK) for application development in parallel.
789 764
790For a very detailed look at this workflow, see the "`OpenEmbedded Build 765For a very detailed look at this workflow, see the
791System Concepts <#openembedded-build-system-build-concepts>`__" section. 766":ref:`overview-manual/concepts:openembedded build system concepts`" section.
792 767
793Some Basic Terms 768Some Basic Terms
794================ 769================
795 770
796It helps to understand some basic fundamental terms when learning the 771It helps to understand some basic fundamental terms when learning the
797Yocto Project. Although a list of terms exists in the ":doc:`Yocto Project 772Yocto Project. Although there is a list of terms in the ":doc:`Yocto Project
798Terms </ref-manual/terms>`" section of the Yocto Project 773Terms </ref-manual/terms>`" section of the Yocto Project
799Reference Manual, this section provides the definitions of some terms 774Reference Manual, this section provides the definitions of some terms
800helpful for getting started: 775helpful for getting started:
@@ -816,14 +791,14 @@ helpful for getting started:
816 isolate information used when building for multiple architectures. 791 isolate information used when building for multiple architectures.
817 Layers are hierarchical in their ability to override previous 792 Layers are hierarchical in their ability to override previous
818 specifications. You can include any number of available layers from 793 specifications. You can include any number of available layers from
819 the Yocto Project and customize the build by adding your layers after 794 the Yocto Project and customize the build by adding your own layers
820 them. You can search the Layer Index for layers used within Yocto 795 after them. You can search the Layer Index for layers used within
821 Project. 796 Yocto Project.
822 797
823 For more detailed information on layers, see the 798 For more detailed information on layers, see the
824 ":ref:`dev-manual/common-tasks:understanding and creating layers`" 799 ":ref:`dev-manual/layers:understanding and creating layers`"
825 section in the Yocto Project Development Tasks Manual. For a 800 section in the Yocto Project Development Tasks Manual. For a
826 discussion specifically on BSP Layers, see the 801 discussion specifically on BSP Layers, see the
827 ":ref:`bsp-guide/bsp:bsp layers`" section in the Yocto 802 ":ref:`bsp-guide/bsp:bsp layers`" section in the Yocto
828 Project Board Support Packages (BSP) Developer's Guide. 803 Project Board Support Packages (BSP) Developer's Guide.
829 804
@@ -851,7 +826,7 @@ helpful for getting started:
851 BitBake is similar to the ``make`` tool. 826 BitBake is similar to the ``make`` tool.
852 827
853 During a build process, the build system tracks dependencies and 828 During a build process, the build system tracks dependencies and
854 performs a native or cross-compilation of the package. As a first 829 performs a native or cross-compilation of each package. As a first
855 step in a cross-build setup, the framework attempts to create a 830 step in a cross-build setup, the framework attempts to create a
856 cross-compiler toolchain (i.e. Extensible SDK) suited for the target 831 cross-compiler toolchain (i.e. Extensible SDK) suited for the target
857 platform. 832 platform.
@@ -878,10 +853,11 @@ helpful for getting started:
878 subtle meanings. For example, the packages referred to in the 853 subtle meanings. For example, the packages referred to in the
879 ":ref:`ref-manual/system-requirements:required packages for the build host`" 854 ":ref:`ref-manual/system-requirements:required packages for the build host`"
880 section in the Yocto Project Reference Manual are compiled binaries 855 section in the Yocto Project Reference Manual are compiled binaries
881 that, when installed, add functionality to your Linux distribution. 856 that, when installed, add functionality to your host Linux
857 distribution.
882 858
883 Another point worth noting is that historically within the Yocto 859 Another point worth noting is that historically within the Yocto
884 Project, recipes were referred to as packages - thus, the existence 860 Project, recipes were referred to as packages --- thus, the existence
885 of several BitBake variables that are seemingly mis-named, (e.g. 861 of several BitBake variables that are seemingly mis-named, (e.g.
886 :term:`PR`, 862 :term:`PR`,
887 :term:`PV`, and 863 :term:`PV`, and