<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
[<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] >

<chapter id='ref-manual-system-requirements'>
<title>System Requirements</title>

    <para>
        Welcome to the Yocto Project Reference Manual!
        This manual provides reference information for the current release
        of the Yocto Project.
        The manual is best 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.
        Use this manual to find variable definitions, class
        descriptions, and so forth as needed during the course of using
        the Yocto Project.
    </para>

    <para>
        For introductory information on the Yocto Project, see the
        <ulink url='&YOCTO_HOME_URL;'>Yocto Project Website</ulink> and the
        "<ulink url='&YOCTO_DOCS_OM_URL;#overview-development-environment'>Yocto Project Development Environment</ulink>"
        chapter in the Yocto Project Overview and Concepts Manual.
    </para>

    <para>
        If you want to use the Yocto Project to quickly build an image
        without having to understand concepts, work through the
        <ulink url='&YOCTO_DOCS_BRIEF_URL;'>Yocto Project Quick Build</ulink>
        document.
        You can find "how-to" information in the
        <ulink url='&YOCTO_DOCS_DEV_URL;'>Yocto Project Development Tasks Manual</ulink>.
        You can find Yocto Project overview and conceptual information in the
        <ulink url='&YOCTO_DOCS_OM_URL;'>Yocto Project Overview and Concepts Manual</ulink>.
        <note><title>Tip</title>
            For more information about the Yocto Project Documentation set,
            see the
            "<link linkend='resources-links-and-related-documentation'>Links and Related Documentation</link>"
            section.
        </note>
    </para>

    <section id='detailed-supported-distros'>
        <title>Supported Linux Distributions</title>

        <para>
            Currently, the Yocto Project is supported on the following
            distributions:
            <note><title>Notes</title>
                <itemizedlist>
                    <listitem><para>
                        Yocto Project releases are tested against the stable
                        Linux distributions in the following list.
                        The Yocto Project should work on other distributions but
                        validation is not performed against them.
                        </para></listitem>
                    <listitem><para>
                        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
                        below.
                        </para></listitem>
                    <listitem><para>
                        The Yocto Project is not compatible with the
                        <ulink url='https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux'>Windows Subsystem for Linux</ulink>
                        (WSL).
                        You cannot use a
                        <link linkend='hardware-build-system-term'>build host</link>
                        that is running WSL.
                        </para></listitem>
                    <listitem><para>
                        If you encounter problems, please go to
                        <ulink url='&YOCTO_BUGZILLA_URL;'>Yocto Project Bugzilla</ulink>
                        and submit a bug.
                        We are interested in hearing about your experience.
                        For information on how to submit a bug, see the
                        Yocto Project
                        <ulink url='&YOCTO_WIKI_URL;/wiki/Bugzilla_Configuration_and_Bug_Tracking'>Bugzilla wiki page</ulink>
                        and the
                        "<ulink url='&YOCTO_DOCS_DEV_URL;#submitting-a-defect-against-the-yocto-project'>Submitting a Defect Against the Yocto Project</ulink>"
                        section in the Yocto Project Development Tasks Manual.
                        </para></listitem>
                </itemizedlist>
            </note>
            <itemizedlist>
                <listitem><para>Ubuntu 16.04 (LTS)</para></listitem>
                <listitem><para>Ubuntu 18.04</para></listitem>
                <listitem><para>Fedora 28</para></listitem>
                <listitem><para>CentOS 7.x</para></listitem>
                <listitem><para>Debian GNU/Linux 8.x (Jessie)</para></listitem>
                <listitem><para>Debian GNU/Linux 9.x (Stretch)</para></listitem>
                <listitem><para>OpenSUSE 42.3</para></listitem>
            </itemizedlist>
        </para>
<!--
Checkout the poky distro you are interested in (by branch or tag).
From the poky directory, run the script:

bitbake -e | grep ^SANITY_TESTED_DISTROS | sed -e 's/.*"\(.*\)".*/\1/g' -e 's!\\n!\n!g' | sed 's/^[\t]*//;s/[ \t]*$//' | grep -v Poky

This returns a list of the supported distros for the release.

Here is some old list items to show the form:


                <listitem><para>Ubuntu 10.04</para></listitem>
                <listitem><para>Ubuntu 11.10</para></listitem>
                <listitem><para>Ubuntu 12.04 (LTS)</para></listitem>
                <listitem><para>Ubuntu 13.10</para></listitem>
                <listitem><para>Ubuntu 14.04 (LTS)</para></listitem>
                <listitem><para>Ubuntu 14.10</para></listitem>
                <listitem><para>Ubuntu 15.04</para></listitem>
                <listitem><para>Ubuntu 15.10</para></listitem>
                <listitem><para>Ubuntu 16.04 (LTS)</para></listitem>
                <listitem><para>Ubuntu 16.10 (LTS)</para></listitem>
                <listitem><para>Ubuntu 17.04</para></listitem>
                <listitem><para>Fedora 16 (Verne)</para></listitem>
                <listitem><para>Fedora 17 (Spherical)</para></listitem>
                <listitem><para>Fedora 19 (Schrödinger's Cat)</para></listitem>
                <listitem><para>Fedora release 20 (Heisenbug)</para></listitem>
                <listitem><para>Fedora release 22</para></listitem>
                <listitem><para>Fedora release 23</para></listitem>
                <listitem><para>Fedora release 24</para></listitem>
                <listitem><para>Fedora release 26</para></listitem>
                <listitem><para>CentOS release 5.6 (Final)</para></listitem>
                <listitem><para>CentOS release 5.7 (Final)</para></listitem>
                <listitem><para>CentOS release 5.8 (Final)</para></listitem>
                <listitem><para>CentOS release 6.3 (Final)</para></listitem>
                <listitem><para>CentOS release 6.x</para></listitem>
                <listitem><para>CentOS release 7.x</para></listitem>
                <listitem><para>Debian GNU/Linux 6.0 (Squeeze)</para></listitem>
                <listitem><para>Debian GNU/Linux 7.x (Wheezy)</para></listitem>
                <listitem><para>Debian GNU/Linux 8.x (Jessie)</para></listitem>
                <listitem><para>Debian GNU/Linux 9.x (Stretch)</para></listitem>
                <listitem><para>Debian GNU/Linux 7.1 (Wheezy)</para></listitem>
                <listitem><para>Debian GNU/Linux 7.2 (Wheezy)</para></listitem>
                <listitem><para>Debian GNU/Linux 7.3 (Wheezy)</para></listitem>
                <listitem><para>Debian GNU/Linux 7.4 (Wheezy)</para></listitem>
                <listitem><para>Debian GNU/Linux 7.5 (Wheezy)</para></listitem>
                <listitem><para>Debian GNU/Linux 7.6 (Wheezy)</para></listitem>
                <listitem><para>openSUSE 11.4</para></listitem>
                <listitem><para>openSUSE 12.1</para></listitem>
                <listitem><para>openSUSE 12.2</para></listitem>
                <listitem><para>openSUSE 12.3</para></listitem>
                <listitem><para>openSUSE 13.1</para></listitem>
                <listitem><para>openSUSE 13.2</para></listitem>
                <listitem><para>openSUSE 42.1</para></listitem>
                <listitem><para>openSUSE 42.2</para></listitem>
-->

        <note>
            While the Yocto Project Team attempts to ensure all Yocto Project
            releases are one hundred percent compatible with each officially
            supported Linux distribution, instances might exist where you
            encounter a problem while using the Yocto Project on a specific
            distribution.
        </note>
    </section>

    <section id='required-packages-for-the-build-host'>
    <title>Required Packages for the Build Host</title>

        <para>
            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 provides required packages according to
            Linux distribution and function.
        </para>

        <section id='ubuntu-packages'>
            <title>Ubuntu and Debian</title>

            <para>
                The following list shows the required packages by function
                given a supported Ubuntu or Debian Linux distribution:
                <note>
                    If your build system has the
                    <filename>oss4-dev</filename> package installed, you
                    might experience QEMU build failures due to the package
                    installing its own custom
                    <filename>/usr/include/linux/soundcard.h</filename> on
                    the Debian system.
                    If you run into this situation, either of the following
                    solutions exist:
                    <literallayout class='monospaced'>
     $ sudo apt-get build-dep qemu
     $ sudo apt-get remove oss4-dev
                    </literallayout>
                 </note>
                <itemizedlist>
                    <listitem><para><emphasis>Essentials:</emphasis>
                        Packages needed to build an image on a headless
                        system:
                        <literallayout class='monospaced'>
     $ sudo apt-get install &UBUNTU_HOST_PACKAGES_ESSENTIAL;
                        </literallayout></para></listitem>
                    <listitem><para><emphasis>Graphical and Eclipse Plug-In Extras:</emphasis>
                        Packages recommended if the host system has graphics
                        support or if you are going to use the Eclipse
                        IDE:
                        <literallayout class='monospaced'>
     $ sudo apt-get install libsdl1.2-dev xterm
                        </literallayout></para></listitem>
                    <listitem><para><emphasis>Documentation:</emphasis>
                        Packages needed if you are going to build out the
                        Yocto Project documentation manuals:
                        <literallayout class='monospaced'>
     $ sudo apt-get install make xsltproc docbook-utils fop dblatex xmlto
                        </literallayout></para></listitem>
                    <listitem><para><emphasis>OpenEmbedded Self-Test (<filename>oe-selftest</filename>):</emphasis>
                        Packages needed if you are going to run
                        <filename>oe-selftest</filename>:
                        <literallayout class='monospaced'>
     $ sudo apt-get install python-git
                        </literallayout>
                        </para></listitem>
                </itemizedlist>
            </para>
        </section>

        <section id='fedora-packages'>
            <title>Fedora Packages</title>

            <para>
                The following list shows the required packages by function
                given a supported Fedora Linux distribution:
                <itemizedlist>
                    <listitem><para><emphasis>Essentials:</emphasis>
                        Packages needed to build an image for a headless
                        system:
                        <literallayout class='monospaced'>
     $ sudo dnf install &FEDORA_HOST_PACKAGES_ESSENTIAL;
                        </literallayout></para></listitem>
                    <listitem><para><emphasis>Graphical and Eclipse Plug-In Extras:</emphasis>
                        Packages recommended if the host system has graphics
                        support or if you are going to use the Eclipse
                        IDE:
                        <literallayout class='monospaced'>
     $ sudo dnf install SDL-devel xterm
                        </literallayout></para></listitem>
                    <listitem><para><emphasis>Documentation:</emphasis>
                        Packages needed if you are going to build out the
                        Yocto Project documentation manuals:
                        <literallayout class='monospaced'>
     $ sudo dnf install make docbook-style-dsssl docbook-style-xsl \
     docbook-dtds docbook-utils fop libxslt dblatex xmlto
                        </literallayout></para></listitem>
                    <listitem><para><emphasis>OpenEmbedded Self-Test (<filename>oe-selftest</filename>):</emphasis>
                        Packages needed if you are going to run
                        <filename>oe-selftest</filename>:
                        <literallayout class='monospaced'>
     $ sudo dnf install python3-GitPython
                        </literallayout>
                        </para></listitem>
                </itemizedlist>
            </para>
        </section>

        <section id='opensuse-packages'>
            <title>openSUSE Packages</title>

            <para>
                The following list shows the required packages by function
                given a supported openSUSE Linux distribution:
                <itemizedlist>
                    <listitem><para><emphasis>Essentials:</emphasis>
                        Packages needed to build an image for a headless
                        system:
                        <literallayout class='monospaced'>
     $ sudo zypper install &OPENSUSE_HOST_PACKAGES_ESSENTIAL;
                        </literallayout></para></listitem>
                    <listitem><para><emphasis>Graphical and Eclipse Plug-In Extras:</emphasis>
                        Packages recommended if the host system has graphics
                        support or if you are going to use the Eclipse
                        IDE:
                        <literallayout class='monospaced'>
     $ sudo zypper install libSDL-devel xterm
                        </literallayout></para></listitem>
                    <listitem><para><emphasis>Documentation:</emphasis>
                        Packages needed if you are going to build out the
                        Yocto Project documentation manuals:
                        <literallayout class='monospaced'>
     $ sudo zypper install make dblatex xmlto
                        </literallayout></para></listitem>
                    <listitem><para><emphasis>OpenEmbedded Self-Test (<filename>oe-selftest</filename>):</emphasis>
                        Packages needed if you are going to run
                        <filename>oe-selftest</filename>:
                        <literallayout class='monospaced'>
     $ sudo zypper install python-GitPython
                        </literallayout></para></listitem>
                </itemizedlist>
                <note>
                    Sanity testing, through the
                    <link linkend='ref-classes-testimage*'>testimage</link>
                    classes, does not work on systems using the
                    <ulink url='https://en.opensuse.org/Portal:Wicked'>Wicked</ulink>
                    network manager.
                </note>
            </para>
        </section>

        <section id='centos-packages'>
            <title>CentOS Packages</title>

            <para>
                The following list shows the required packages by function
                given a supported CentOS Linux distribution:
                <itemizedlist>
                    <listitem><para><emphasis>Essentials:</emphasis>
                        Packages needed to build an image for a headless
                        system:
                        <literallayout class='monospaced'>
     $ sudo yum install &CENTOS_HOST_PACKAGES_ESSENTIAL; SDL-devel xterm
                        </literallayout>
                        <note><title>Notes</title>
                            <itemizedlist>
                                <listitem><para>
                                    Extra Packages for Enterprise Linux
                                    (i.e. <filename>epel-release</filename>)
                                    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.
                                    </para></listitem>
                                <listitem><para>
                                    The <filename>makecache</filename> command
                                    consumes additional Metadata from
                                    <filename>epel-release</filename>.
                                    </para></listitem>
                            </itemizedlist>
                        </note>
                        </para></listitem>
                    <listitem><para><emphasis>Graphical and Eclipse Plug-In Extras:</emphasis>
                        Packages recommended if the host system has graphics
                        support or if you are going to use the Eclipse
                        IDE:
                        <literallayout class='monospaced'>
     $ sudo yum install SDL-devel xterm
                        </literallayout></para></listitem>
                    <listitem><para><emphasis>Documentation:</emphasis>
                        Packages needed if you are going to build out the
                        Yocto Project documentation manuals:
                        <literallayout class='monospaced'>
     $ sudo yum install make docbook-style-dsssl docbook-style-xsl \
     docbook-dtds docbook-utils fop libxslt dblatex xmlto
                        </literallayout></para></listitem>
                    <listitem><para><emphasis>OpenEmbedded Self-Test (<filename>oe-selftest</filename>):</emphasis>
                        Packages needed if you are going to run
                        <filename>oe-selftest</filename>:
                        <literallayout class='monospaced'>
     $ sudo yum install GitPython
                        </literallayout>
                        </para></listitem>
                </itemizedlist>
            </para>
        </section>
    </section>

    <section id='required-git-tar-and-python-versions'>
        <title>Required Git, tar, and Python Versions</title>

        <para>
            In order to use the build system, your host development system
            must meet the following version requirements for Git, tar, and
            Python:
            <itemizedlist>
                <listitem><para>Git 1.8.3.1 or greater</para></listitem>
                <listitem><para>tar 1.27 or greater</para></listitem>
                <listitem><para>Python 3.4.0 or greater</para></listitem>
            </itemizedlist>
        </para>

        <para>
            If your host development system does not meet all these requirements,
            you can resolve this by installing a <filename>buildtools</filename>
            tarball that contains these tools.
            You can get the tarball one of two ways: download a pre-built
            tarball or use BitBake to build the tarball.
        </para>

        <section id='downloading-a-pre-built-buildtools-tarball'>
            <title>Downloading a Pre-Built <filename>buildtools</filename> Tarball</title>

            <para>
                Downloading and running a pre-built buildtools installer is
                the easiest of the two methods by which you can get these tools:
                <orderedlist>
                    <listitem><para>
                        Locate and download the <filename>*.sh</filename> at
                        <ulink url='&YOCTO_DL_URL;/releases/yocto/yocto-&DISTRO;/buildtools/'></ulink>.
                        </para></listitem>
                    <listitem><para>
                        Execute the installation script.
                        Here is an example:
                        <literallayout class='monospaced'>
     $ sh ~/Downloads/x86_64-buildtools-nativesdk-standalone-&DISTRO;.sh
                        </literallayout>
                        During execution, a prompt appears that allows you to
                        choose the installation directory.
                        For example, you could choose the following:
                        <literallayout class='monospaced'>
     /home/<replaceable>your-username</replaceable>/buildtools
                        </literallayout>
                        </para></listitem>
                    <listitem><para>
                        Source the tools environment setup script by using a
                        command like the following:
                        <literallayout class='monospaced'>
     $ source /home/<replaceable>your_username</replaceable>/buildtools/environment-setup-i586-poky-linux
                        </literallayout>
                        Of course, you need to supply your installation directory and be
                        sure to use the right file (i.e. i585 or x86-64).
                        </para>
                        <para>
                        After you have sourced the setup script,
                        the tools are added to <filename>PATH</filename>
                        and any other environment variables required to run the
                        tools are initialized.
                        The results are working versions versions of Git, tar,
                        Python and <filename>chrpath</filename>.
                        </para></listitem>
                </orderedlist>
            </para>
        </section>

        <section id='building-your-own-buildtools-tarball'>
            <title>Building Your Own <filename>buildtools</filename> Tarball</title>

            <para>
                Building and running your own 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
                <filename>.sh</filename> file and then
                take steps to transfer and run it on a
                machine that does not meet the minimal Git, tar, and Python
                requirements.
            </para>

            <para>
                Here are the steps to take to build and run your own
                buildtools installer:
                <orderedlist>
                    <listitem><para>
                        On the machine that is able to run BitBake,
                        be sure you have set up your build environment with
                        the setup script
                        (<link linkend='structure-core-script'><filename>&OE_INIT_FILE;</filename></link>).
                        </para></listitem>
                    <listitem><para>
                        Run the BitBake command to build the tarball:
                        <literallayout class='monospaced'>
     $ bitbake buildtools-tarball
                        </literallayout>
                        <note>
                        The
                        <link linkend='var-SDKMACHINE'><filename>SDKMACHINE</filename></link>
                        variable in your <filename>local.conf</filename> file
                        determines whether you build tools for a 32-bit
                        or 64-bit system.
                       </note>
                       Once the build completes, you can find the
                       <filename>.sh</filename> file that installs
                       the tools in the <filename>tmp/deploy/sdk</filename>
                       subdirectory of the
                       <link linkend='build-directory'>Build Directory</link>.
                       The installer file has the string "buildtools"
                       in the name.
                       </para></listitem>
                   <listitem><para>
                       Transfer the <filename>.sh</filename> file from the
                       build host to the machine that does not meet the
                       Git, tar, or Python requirements.
                       </para></listitem>
                   <listitem><para>
                       On the machine that does not meet the requirements,
                       run the <filename>.sh</filename> file
                       to install the tools.
                       Here is an example:
                       <literallayout class='monospaced'>
     $ sh ~/Downloads/x86_64-buildtools-nativesdk-standalone-&DISTRO;.sh
                       </literallayout>
                       During execution, a prompt appears that allows you to
                       choose the installation directory.
                       For example, you could choose the following:
                       <literallayout class='monospaced'>
     /home/<replaceable>your_username</replaceable>/buildtools
                       </literallayout>
                       </para></listitem>
                    <listitem><para>
                        Source the tools environment setup script by using a
                        command like the following:
                        <literallayout class='monospaced'>
     $ source /home/<replaceable>your_username</replaceable>/buildtools/environment-setup-i586-poky-linux
                        </literallayout>
                        Of course, you need to supply your installation directory and be
                        sure to use the right file (i.e. i585 or x86-64).
                        </para>
                        <para>
                        After you have sourced the setup script,
                        the tools are added to <filename>PATH</filename>
                        and any other environment variables required to run the
                        tools are initialized.
                        The results are working versions versions of Git, tar,
                        Python and <filename>chrpath</filename>.
                        </para></listitem>
                </orderedlist>
            </para>
        </section>
    </section>
</chapter>
<!--
vim: expandtab tw=80 ts=4
-->
