diff options
Diffstat (limited to 'documentation/ref-manual/system-requirements.rst')
-rw-r--r-- | documentation/ref-manual/system-requirements.rst | 425 |
1 files changed, 425 insertions, 0 deletions
diff --git a/documentation/ref-manual/system-requirements.rst b/documentation/ref-manual/system-requirements.rst new file mode 100644 index 0000000000..0fc92550a5 --- /dev/null +++ b/documentation/ref-manual/system-requirements.rst @@ -0,0 +1,425 @@ +.. SPDX-License-Identifier: CC-BY-SA-2.0-UK + +******************* +System Requirements +******************* + +Welcome to the Yocto Project Reference Manual. This manual provides +reference information for the current release of the Yocto Project, and +is most effectively used after you have an understanding of the basics +of the Yocto Project. The manual is neither meant to be read as a +starting point to the Yocto Project, nor read from start to finish. +Rather, use this manual to find variable definitions, class +descriptions, and so forth as needed during the course of using the +Yocto Project. + +For introductory information on the Yocto Project, see the +:yocto_home:`Yocto Project Website <>` and the +":ref:`overview-manual/development-environment:the yocto project development environment`" +chapter in the Yocto Project Overview and Concepts Manual. + +If you want to use the Yocto Project to quickly build an image without +having to understand concepts, work through the +:doc:`/brief-yoctoprojectqs/index` document. You can find "how-to" +information in the :doc:`/dev-manual/index`. You can find Yocto Project overview +and conceptual information in the :doc:`/overview-manual/index`. + +.. note:: + + For more information about the Yocto Project Documentation set, see + the :ref:`ref-manual/resources:links and related documentation` section. + +Minimum Free Disk Space +======================= + +To build an image such as ``core-image-sato`` for the ``qemux86-64`` machine, +you need a system with at least &MIN_DISK_SPACE; Gbytes of free disk space. +However, much more disk space will be necessary to build more complex images, +to run multiple builds and to cache build artifacts, improving build efficiency. + +If you have a shortage of disk space, see the ":doc:`/dev-manual/disk-space`" +section of the Development Tasks Manual. + +.. _system-requirements-minimum-ram: + +Minimum System RAM +================== + +You will manage to build an image such as ``core-image-sato`` for the +``qemux86-64`` machine with as little as &MIN_RAM; Gbytes of RAM on an old +system with 4 CPU cores, but your builds will be much faster on a system with +as much RAM and as many CPU cores as possible. + +.. _system-requirements-supported-distros: + +Supported Linux Distributions +============================= + +Currently, the &DISTRO; release ("&DISTRO_NAME;") of the Yocto Project is +supported on the following distributions: + +- Ubuntu 20.04 (LTS) + +- Ubuntu 22.04 (LTS) + +- Fedora 38 + +- CentOS Stream 8 + +- Debian GNU/Linux 11 (Bullseye) + +- Debian GNU/Linux 12 (Bookworm) + +- OpenSUSE Leap 15.4 + +- AlmaLinux 8 + +- AlmaLinux 9 + +- Rocky 9 + +The following distribution versions are still tested, even though the +organizations publishing them no longer make updates publicly available: + +- Ubuntu 18.04 (LTS) + +- Ubuntu 23.04 + +Note that the Yocto Project doesn't have access to private updates +that some of these versions may have. Therefore, our testing has +limited value if you have access to such updates. + +Finally, here are the distribution versions which were previously +tested on former revisions of "&DISTRO_NAME;", but no longer are: + +*This list is currently empty* + +.. note:: + + - While the Yocto Project Team attempts to ensure all Yocto Project + releases are one hundred percent compatible with each officially + supported Linux distribution, you may still encounter problems + that happen only with a specific distribution. + + - Yocto Project releases are tested against the stable Linux + distributions in the above list. The Yocto Project should work + on other distributions but validation is not performed against + them. + + - In particular, the Yocto Project does not support and currently + has no plans to support rolling-releases or development + distributions due to their constantly changing nature. We welcome + patches and bug reports, but keep in mind that our priority is on + the supported platforms listed above. + + - If your Linux distribution is not in the above list, we recommend to + get the :term:`buildtools` or :term:`buildtools-extended` tarballs + containing the host tools required by your Yocto Project release, + typically by running ``scripts/install-buildtools`` as explained in + the ":ref:`system-requirements-buildtools`" section. + + - You may use Windows Subsystem For Linux v2 to set up a build host + using Windows 10 or later, or Windows Server 2019 or later, but validation + is not performed against build hosts using WSL 2. + + See the + :ref:`dev-manual/start:setting up to use windows subsystem for linux (wsl 2)` + section in the Yocto Project Development Tasks Manual for more information. + + - If you encounter problems, please go to :yocto_bugs:`Yocto Project + Bugzilla <>` and submit a bug. We are + interested in hearing about your experience. For information on + how to submit a bug, see the Yocto Project + :yocto_wiki:`Bugzilla wiki page </Bugzilla_Configuration_and_Bug_Tracking>` + and the ":doc:`../contributor-guide/report-defect`" + section in the Yocto Project and OpenEmbedded Contributor Guide. + +Required Packages for the Build Host +==================================== + +The list of packages you need on the host development system can be +large when covering all build scenarios using the Yocto Project. This +section describes required packages according to Linux distribution and +function. + +.. _ubuntu-packages: + +Ubuntu and Debian +----------------- + +Here are the packages needed to build an image on a headless system +with a supported Ubuntu or Debian Linux distribution:: + + $ sudo apt install &UBUNTU_HOST_PACKAGES_ESSENTIAL; + +.. note:: + + - If your build system has the ``oss4-dev`` package installed, you + might experience QEMU build failures due to the package installing + its own custom ``/usr/include/linux/soundcard.h`` on the Debian + system. If you run into this situation, try either of these solutions:: + + $ sudo apt build-dep qemu + $ sudo apt remove oss4-dev + +Here are the packages needed to build Project documentation manuals:: + + $ sudo apt install git make inkscape texlive-latex-extra + $ sudo apt install sphinx python3-saneyaml python3-sphinx-rtd-theme + +Fedora Packages +--------------- + +Here are the packages needed to build an image on a headless system +with a supported Fedora Linux distribution:: + + $ sudo dnf install &FEDORA_HOST_PACKAGES_ESSENTIAL; + +Here are the packages needed to build Project documentation manuals:: + + $ sudo dnf install git make python3-pip which inkscape texlive-fncychap + &PIP3_HOST_PACKAGES_DOC; + +openSUSE Packages +----------------- + +Here are the packages needed to build an image on a headless system +with a supported openSUSE distribution:: + + $ sudo zypper install &OPENSUSE_HOST_PACKAGES_ESSENTIAL; + +Here are the packages needed to build Project documentation manuals:: + + $ sudo zypper install git make python3-pip which inkscape texlive-fncychap + &PIP3_HOST_PACKAGES_DOC; + + +AlmaLinux Packages +------------------ + +Here are the packages needed to build an image on a headless system +with a supported AlmaLinux distribution:: + + $ sudo dnf install &ALMALINUX_HOST_PACKAGES_ESSENTIAL; + +.. note:: + + - Extra Packages for Enterprise Linux (i.e. ``epel-release``) is + a collection of packages from Fedora built on RHEL/CentOS for + easy installation of packages not included in enterprise Linux + by default. You need to install these packages separately. + + - The ``PowerTools/CRB`` repo provides additional packages such as + ``rpcgen`` and ``texinfo``. + + - The ``makecache`` command consumes additional Metadata from + ``epel-release``. + +Here are the packages needed to build Project documentation manuals:: + + $ sudo dnf install git make python3-pip which inkscape texlive-fncychap + &PIP3_HOST_PACKAGES_DOC; + +.. _system-requirements-buildtools: + +Required Git, tar, Python, make and gcc Versions +================================================ + +In order to use the build system, your host development system must meet +the following version requirements for Git, tar, and Python: + +- Git &MIN_GIT_VERSION; or greater + +- tar &MIN_TAR_VERSION; or greater + +- Python &MIN_PYTHON_VERSION; or greater + +- GNU make &MIN_MAKE_VERSION; or greater + +If your host development system does not meet all these requirements, +you can resolve this by installing a :term:`buildtools` tarball that +contains these tools. You can either download a pre-built tarball or +use BitBake to build one. + +In addition, your host development system must meet the following +version requirement for gcc: + +- gcc &MIN_GCC_VERSION; or greater + +If your host development system does not meet this requirement, you can +resolve this by installing a :term:`buildtools-extended` tarball that +contains additional tools, the equivalent of the Debian/Ubuntu ``build-essential`` +package. + +For systems with a broken make version (e.g. make 4.2.1 without patches) but +where the rest of the host tools are usable, you can use the :term:`buildtools-make` +tarball instead. + +In the sections that follow, three different methods will be described for +installing the :term:`buildtools`, :term:`buildtools-extended` or :term:`buildtools-make` +toolset. + +Installing a Pre-Built ``buildtools`` Tarball with ``install-buildtools`` script +-------------------------------------------------------------------------------- + +The ``install-buildtools`` script is the easiest of the three methods by +which you can get these tools. It downloads a pre-built :term:`buildtools` +installer and automatically installs the tools for you: + +#. Execute the ``install-buildtools`` script. Here is an example:: + + $ cd poky + $ scripts/install-buildtools \ + --without-extended-buildtools \ + --base-url &YOCTO_DL_URL;/releases/yocto \ + --release yocto-&DISTRO; \ + --installer-version &DISTRO; + + During execution, the :term:`buildtools` tarball will be downloaded, the + checksum of the download will be verified, the installer will be run + for you, and some basic checks will be run to make sure the + installation is functional. + + To avoid the need of ``sudo`` privileges, the ``install-buildtools`` + script will by default tell the installer to install in:: + + /path/to/poky/buildtools + + If your host development system needs the additional tools provided + in the :term:`buildtools-extended` tarball, you can instead execute the + ``install-buildtools`` script with the default parameters:: + + $ cd poky + $ scripts/install-buildtools + + Alternatively if your host development system has a broken ``make`` + version such that you only need a known good version of ``make``, + you can use the ``--make-only`` option:: + + $ cd poky + $ scripts/install-buildtools --make-only + +#. Source the tools environment setup script by using a command like the + following:: + + $ source /path/to/poky/buildtools/environment-setup-x86_64-pokysdk-linux + + After you have sourced the setup script, the tools are added to + ``PATH`` and any other environment variables required to run the + tools are initialized. The results are working versions versions of + Git, tar, Python and ``chrpath``. And in the case of the + :term:`buildtools-extended` tarball, additional working versions of tools + including ``gcc``, ``make`` and the other tools included in + ``packagegroup-core-buildessential``. + +Downloading a Pre-Built ``buildtools`` Tarball +---------------------------------------------- + +If you would prefer not to use the ``install-buildtools`` script, you can instead +download and run a pre-built :term:`buildtools` installer yourself with the following +steps: + +#. Go to :yocto_dl:`/releases/yocto/yocto-&DISTRO;/buildtools/`, locate and + download the ``.sh`` file corresponding to your host architecture + and to :term:`buildtools`, :term:`buildtools-extended` or :term:`buildtools-make`. + +#. Execute the installation script. Here is an example for the + traditional installer:: + + $ sh ~/Downloads/x86_64-buildtools-nativesdk-standalone-&DISTRO;.sh + + Here is an example for the extended installer:: + + $ sh ~/Downloads/x86_64-buildtools-extended-nativesdk-standalone-&DISTRO;.sh + + An example for the make-only installer:: + + $ sh ~/Downloads/x86_64-buildtools-make-nativesdk-standalone-&DISTRO;.sh + + During execution, a prompt appears that allows you to choose the + installation directory. For example, you could choose the following: + ``/home/your-username/buildtools`` + +#. As instructed by the installer script, you will have to source the tools + environment setup script:: + + $ source /home/your_username/buildtools/environment-setup-x86_64-pokysdk-linux + + After you have sourced the setup script, the tools are added to + ``PATH`` and any other environment variables required to run the + tools are initialized. The results are working versions versions of + Git, tar, Python and ``chrpath``. And in the case of the + :term:`buildtools-extended` tarball, additional working versions of tools + including ``gcc``, ``make`` and the other tools included in + ``packagegroup-core-buildessential``. + +Building Your Own ``buildtools`` Tarball +---------------------------------------- + +Building and running your own :term:`buildtools` installer applies only when you +have a build host that can already run BitBake. In this case, you use +that machine to build the ``.sh`` file and then take steps to transfer +and run it on a machine that does not meet the minimal Git, tar, and +Python (or gcc) requirements. + +Here are the steps to take to build and run your own :term:`buildtools` +installer: + +#. On the machine that is able to run BitBake, be sure you have set up + your build environment with the setup script + (:ref:`structure-core-script`). + +#. Run the BitBake command to build the tarball:: + + $ bitbake buildtools-tarball + + or to build the extended tarball:: + + $ bitbake buildtools-extended-tarball + + or to build the make-only tarball:: + + $ bitbake buildtools-make-tarball + + .. note:: + + The :term:`SDKMACHINE` variable in your ``local.conf`` file determines + whether you build tools for a 32-bit or 64-bit system. + + Once the build completes, you can find the ``.sh`` file that installs + the tools in the ``tmp/deploy/sdk`` subdirectory of the + :term:`Build Directory`. The installer file has the string + "buildtools" or "buildtools-extended" in the name. + +#. Transfer the ``.sh`` file from the build host to the machine that + does not meet the Git, tar, or Python (or gcc) requirements. + +#. On this machine, run the ``.sh`` file to install the tools. Here is an + example for the traditional installer:: + + $ sh ~/Downloads/x86_64-buildtools-nativesdk-standalone-&DISTRO;.sh + + For the extended installer:: + + $ sh ~/Downloads/x86_64-buildtools-extended-nativesdk-standalone-&DISTRO;.sh + + And for the make-only installer:: + + $ sh ~/Downloads/x86_64-buildtools-make-nativesdk-standalone-&DISTRO;.sh + + During execution, a prompt appears that allows you to choose the + installation directory. For example, you could choose the following: + ``/home/your_username/buildtools`` + +#. Source the tools environment setup script by using a command like the + following:: + + $ source /home/your_username/buildtools/environment-setup-x86_64-poky-linux + + After you have sourced the setup script, the tools are added to + ``PATH`` and any other environment variables required to run the + tools are initialized. The results are working versions versions of + Git, tar, Python and ``chrpath``. And in the case of the + :term:`buildtools-extended` tarball, additional working versions of tools + including ``gcc``, ``make`` and the other tools included in + ``packagegroup-core-buildessential``. |