1.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
2
3*******************
4System Requirements
5*******************
6
7Welcome to the Yocto Project Reference Manual. This manual provides
8reference information for the current release of the Yocto Project, and
9is most effectively used after you have an understanding of the basics
10of the Yocto Project. The manual is neither meant to be read as a
11starting point to the Yocto Project, nor read from start to finish.
12Rather, use this manual to find variable definitions, class
13descriptions, and so forth as needed during the course of using the
14Yocto Project.
15
16For introductory information on the Yocto Project, see the
17:yocto_home:`Yocto Project Website <>` and the
18":ref:`overview-manual/development-environment:the yocto project development environment`"
19chapter in the Yocto Project Overview and Concepts Manual.
20
21If you want to use the Yocto Project to quickly build an image without
22having to understand concepts, work through the
23:doc:`/brief-yoctoprojectqs/index` document. You can find "how-to"
24information in the :doc:`/dev-manual/index`. You can find Yocto Project overview
25and conceptual information in the :doc:`/overview-manual/index`.
26
27.. note::
28
29   For more information about the Yocto Project Documentation set, see
30   the :ref:`ref-manual/resources:links and related documentation` section.
31
32Minimum Free Disk Space
33=======================
34
35To build an image such as ``core-image-sato`` for the ``qemux86-64`` machine,
36you need a system with at least &MIN_DISK_SPACE; Gbytes of free disk space.
37However, much more disk space will be necessary to build more complex images,
38to run multiple builds and to cache build artifacts, improving build efficiency.
39
40If you have a shortage of disk space, see the ":doc:`/dev-manual/disk-space`"
41section of the Development Tasks Manual.
42
43.. _system-requirements-minimum-ram:
44
45Minimum System RAM
46==================
47
48You will manage to build an image such as ``core-image-sato`` for the
49``qemux86-64`` machine with as little as &MIN_RAM; Gbytes of RAM on an old
50system with 4 CPU cores, but your builds will be much faster on a system with
51as much RAM and as many CPU cores as possible.
52
53.. _system-requirements-supported-distros:
54
55Supported Linux Distributions
56=============================
57
58Currently, the &DISTRO; release ("&DISTRO_NAME;") of the Yocto Project is
59supported on the following distributions:
60
61-  Ubuntu 20.04 (LTS)
62
63-  Ubuntu 22.04 (LTS)
64
65-  Fedora 37
66
67-  Fedora 38
68
69-  CentOS Stream 8
70
71-  Debian GNU/Linux 11 (Bullseye)
72
73-  Debian GNU/Linux 12 (Bookworm)
74
75-  OpenSUSE Leap 15.4
76
77-  AlmaLinux 8.8
78
79-  AlmaLinux 9.2
80
81The following distribution versions are still tested (being listed
82in :term:`SANITY_TESTED_DISTROS`), even though the organizations
83publishing them no longer make updates publicly available:
84
85-  Ubuntu 18.04 (LTS)
86
87-  Ubuntu 22.10
88
89-  OpenSUSE Leap 15.3
90
91Note that the Yocto Project doesn't have access to private updates
92that some of these versions may have. Therefore, our testing has
93limited value if you have access to such updates.
94
95Finally, here are the distribution versions which were previously
96tested on former revisions of "&DISTRO_NAME;", but no longer are:
97
98*This list is currently empty*
99
100.. note::
101
102   -  While the Yocto Project Team attempts to ensure all Yocto Project
103      releases are one hundred percent compatible with each officially
104      supported Linux distribution, you may still encounter problems
105      that happen only with a specific distribution.
106
107   -  Yocto Project releases are tested against the stable Linux
108      distributions in the above list. The Yocto Project should work
109      on other distributions but validation is not performed against
110      them.
111
112   -  In particular, the Yocto Project does not support and currently
113      has no plans to support rolling-releases or development
114      distributions due to their constantly changing nature. We welcome
115      patches and bug reports, but keep in mind that our priority is on
116      the supported platforms listed above.
117
118   -  If your Linux distribution is not in the above list, we recommend to
119      get the :term:`buildtools` or :term:`buildtools-extended` tarballs
120      containing the host tools required by your Yocto Project release,
121      typically by running ``scripts/install-buildtools`` as explained in
122      the ":ref:`system-requirements-buildtools`" section.
123
124   -  You may use Windows Subsystem For Linux v2 to set up a build host
125      using Windows 10 or later, or Windows Server 2019 or later, but validation
126      is not performed against build hosts using WSL 2.
127
128      See the
129      :ref:`dev-manual/start:setting up to use windows subsystem for linux (wsl 2)`
130      section in the Yocto Project Development Tasks Manual for more information.
131
132   -  If you encounter problems, please go to :yocto_bugs:`Yocto Project
133      Bugzilla <>` and submit a bug. We are
134      interested in hearing about your experience. For information on
135      how to submit a bug, see the Yocto Project
136      :yocto_wiki:`Bugzilla wiki page </Bugzilla_Configuration_and_Bug_Tracking>`
137      and the ":doc:`../contributor-guide/report-defect`"
138      section in the Yocto Project and OpenEmbedded Contributor Guide.
139
140Required Packages for the Build Host
141====================================
142
143The list of packages you need on the host development system can be
144large when covering all build scenarios using the Yocto Project. This
145section describes required packages according to Linux distribution and
146function.
147
148.. _ubuntu-packages:
149
150Ubuntu and Debian
151-----------------
152
153Here are the packages needed to build an image on a headless system
154with a supported Ubuntu or Debian Linux distribution::
155
156   $ sudo apt install &UBUNTU_HOST_PACKAGES_ESSENTIAL;
157
158.. note::
159
160   -  If your build system has the ``oss4-dev`` package installed, you
161      might experience QEMU build failures due to the package installing
162      its own custom ``/usr/include/linux/soundcard.h`` on the Debian
163      system. If you run into this situation, try either of these solutions::
164
165         $ sudo apt build-dep qemu
166         $ sudo apt remove oss4-dev
167
168Here are the packages needed to build Project documentation manuals::
169
170   $ sudo apt install make python3-pip inkscape texlive-latex-extra
171   &PIP3_HOST_PACKAGES_DOC;
172
173Fedora Packages
174---------------
175
176Here are the packages needed to build an image on a headless system
177with a supported Fedora Linux distribution::
178
179   $ sudo dnf install &FEDORA_HOST_PACKAGES_ESSENTIAL;
180
181Here are the packages needed to build Project documentation manuals::
182
183   $ sudo dnf install make python3-pip which inkscape texlive-fncychap
184   &PIP3_HOST_PACKAGES_DOC;
185
186openSUSE Packages
187-----------------
188
189Here are the packages needed to build an image on a headless system
190with a supported openSUSE distribution::
191
192   $ sudo zypper install &OPENSUSE_HOST_PACKAGES_ESSENTIAL;
193
194Here are the packages needed to build Project documentation manuals::
195
196   $ sudo zypper install make python3-pip which inkscape texlive-fncychap
197   &PIP3_HOST_PACKAGES_DOC;
198
199
200AlmaLinux Packages
201------------------
202
203Here are the packages needed to build an image on a headless system
204with a supported AlmaLinux distribution::
205
206   $ sudo dnf install &ALMALINUX_HOST_PACKAGES_ESSENTIAL;
207
208.. note::
209
210   -  Extra Packages for Enterprise Linux (i.e. ``epel-release``) is
211      a collection of packages from Fedora built on RHEL/CentOS for
212      easy installation of packages not included in enterprise Linux
213      by default. You need to install these packages separately.
214
215   -  The ``PowerTools/CRB`` repo provides additional packages such as
216      ``rpcgen`` and ``texinfo``.
217
218   -  The ``makecache`` command consumes additional Metadata from
219      ``epel-release``.
220
221Here are the packages needed to build Project documentation manuals::
222
223   $ sudo dnf install make python3-pip which inkscape texlive-fncychap
224   &PIP3_HOST_PACKAGES_DOC;
225
226.. _system-requirements-buildtools:
227
228Required Git, tar, Python, make and gcc Versions
229================================================
230
231In order to use the build system, your host development system must meet
232the following version requirements for Git, tar, and Python:
233
234-  Git &MIN_GIT_VERSION; or greater
235
236-  tar &MIN_TAR_VERSION; or greater
237
238-  Python &MIN_PYTHON_VERSION; or greater
239
240-  GNU make &MIN_MAKE_VERSION; or greater
241
242If your host development system does not meet all these requirements,
243you can resolve this by installing a :term:`buildtools` tarball that
244contains these tools. You can either download a pre-built tarball or
245use BitBake to build one.
246
247In addition, your host development system must meet the following
248version requirement for gcc:
249
250-  gcc &MIN_GCC_VERSION; or greater
251
252If your host development system does not meet this requirement, you can
253resolve this by installing a :term:`buildtools-extended` tarball that
254contains additional tools, the equivalent of the Debian/Ubuntu ``build-essential``
255package.
256
257For systems with a broken make version (e.g. make 4.2.1 without patches) but
258where the rest of the host tools are usable, you can use the :term:`buildtools-make`
259tarball instead.
260
261In the sections that follow, three different methods will be described for
262installing the :term:`buildtools`, :term:`buildtools-extended` or :term:`buildtools-make`
263toolset.
264
265Installing a Pre-Built ``buildtools`` Tarball with ``install-buildtools`` script
266--------------------------------------------------------------------------------
267
268The ``install-buildtools`` script is the easiest of the three methods by
269which you can get these tools. It downloads a pre-built :term:`buildtools`
270installer and automatically installs the tools for you:
271
272#. Execute the ``install-buildtools`` script. Here is an example::
273
274      $ cd poky
275      $ scripts/install-buildtools \
276        --without-extended-buildtools \
277        --base-url &YOCTO_DL_URL;/releases/yocto \
278        --release yocto-&DISTRO; \
279        --installer-version &DISTRO;
280
281   During execution, the :term:`buildtools` tarball will be downloaded, the
282   checksum of the download will be verified, the installer will be run
283   for you, and some basic checks will be run to make sure the
284   installation is functional.
285
286   To avoid the need of ``sudo`` privileges, the ``install-buildtools``
287   script will by default tell the installer to install in::
288
289      /path/to/poky/buildtools
290
291   If your host development system needs the additional tools provided
292   in the :term:`buildtools-extended` tarball, you can instead execute the
293   ``install-buildtools`` script with the default parameters::
294
295      $ cd poky
296      $ scripts/install-buildtools
297
298   Alternatively if your host development system has a broken ``make``
299   version such that you only need a known good version of ``make``,
300   you can use the ``--make-only`` option::
301
302      $ cd poky
303      $ scripts/install-buildtools --make-only
304
305#. Source the tools environment setup script by using a command like the
306   following::
307
308      $ source /path/to/poky/buildtools/environment-setup-x86_64-pokysdk-linux
309
310   After you have sourced the setup script, the tools are added to
311   ``PATH`` and any other environment variables required to run the
312   tools are initialized. The results are working versions versions of
313   Git, tar, Python and ``chrpath``. And in the case of the
314   :term:`buildtools-extended` tarball, additional working versions of tools
315   including ``gcc``, ``make`` and the other tools included in
316   ``packagegroup-core-buildessential``.
317
318Downloading a Pre-Built ``buildtools`` Tarball
319----------------------------------------------
320
321If you would prefer not to use the ``install-buildtools`` script, you can instead
322download and run a pre-built :term:`buildtools` installer yourself with the following
323steps:
324
325#. Go to :yocto_dl:`/releases/yocto/yocto-&DISTRO;/buildtools/`, locate and
326   download the ``.sh`` file corresponding to your host architecture
327   and to :term:`buildtools`, :term:`buildtools-extended` or :term:`buildtools-make`.
328
329#. Execute the installation script. Here is an example for the
330   traditional installer::
331
332      $ sh ~/Downloads/x86_64-buildtools-nativesdk-standalone-&DISTRO;.sh
333
334   Here is an example for the extended installer::
335
336      $ sh ~/Downloads/x86_64-buildtools-extended-nativesdk-standalone-&DISTRO;.sh
337
338   An example for the make-only installer::
339
340      $ sh ~/Downloads/x86_64-buildtools-make-nativesdk-standalone-&DISTRO;.sh
341
342   During execution, a prompt appears that allows you to choose the
343   installation directory. For example, you could choose the following:
344   ``/home/your-username/buildtools``
345
346#. As instructed by the installer script, you will have to source the tools
347   environment setup script::
348
349      $ source /home/your_username/buildtools/environment-setup-x86_64-pokysdk-linux
350
351   After you have sourced the setup script, the tools are added to
352   ``PATH`` and any other environment variables required to run the
353   tools are initialized. The results are working versions versions of
354   Git, tar, Python and ``chrpath``. And in the case of the
355   :term:`buildtools-extended` tarball, additional working versions of tools
356   including ``gcc``, ``make`` and the other tools included in
357   ``packagegroup-core-buildessential``.
358
359Building Your Own ``buildtools`` Tarball
360----------------------------------------
361
362Building and running your own :term:`buildtools` installer applies only when you
363have a build host that can already run BitBake. In this case, you use
364that machine to build the ``.sh`` file and then take steps to transfer
365and run it on a machine that does not meet the minimal Git, tar, and
366Python (or gcc) requirements.
367
368Here are the steps to take to build and run your own :term:`buildtools`
369installer:
370
371#. On the machine that is able to run BitBake, be sure you have set up
372   your build environment with the setup script
373   (:ref:`structure-core-script`).
374
375#. Run the BitBake command to build the tarball::
376
377      $ bitbake buildtools-tarball
378
379   or to build the extended tarball::
380
381      $ bitbake buildtools-extended-tarball
382
383   or to build the make-only tarball::
384
385      $ bitbake buildtools-make-tarball
386
387   .. note::
388
389      The :term:`SDKMACHINE` variable in your ``local.conf`` file determines
390      whether you build tools for a 32-bit or 64-bit system.
391
392   Once the build completes, you can find the ``.sh`` file that installs
393   the tools in the ``tmp/deploy/sdk`` subdirectory of the
394   :term:`Build Directory`. The installer file has the string
395   "buildtools" or "buildtools-extended" in the name.
396
397#. Transfer the ``.sh`` file from the build host to the machine that
398   does not meet the Git, tar, or Python (or gcc) requirements.
399
400#. On this machine, run the ``.sh`` file to install the tools. Here is an
401   example for the traditional installer::
402
403      $ sh ~/Downloads/x86_64-buildtools-nativesdk-standalone-&DISTRO;.sh
404
405   For the extended installer::
406
407      $ sh ~/Downloads/x86_64-buildtools-extended-nativesdk-standalone-&DISTRO;.sh
408
409   And for the make-only installer::
410
411      $ sh ~/Downloads/x86_64-buildtools-make-nativesdk-standalone-&DISTRO;.sh
412
413   During execution, a prompt appears that allows you to choose the
414   installation directory. For example, you could choose the following:
415   ``/home/your_username/buildtools``
416
417#. Source the tools environment setup script by using a command like the
418   following::
419
420      $ source /home/your_username/buildtools/environment-setup-x86_64-poky-linux
421
422   After you have sourced the setup script, the tools are added to
423   ``PATH`` and any other environment variables required to run the
424   tools are initialized. The results are working versions versions of
425   Git, tar, Python and ``chrpath``. And in the case of the
426   :term:`buildtools-extended` tarball, additional working versions of tools
427   including ``gcc``, ``make`` and the other tools included in
428   ``packagegroup-core-buildessential``.
429