110 lines
4.6 KiB
ReStructuredText
110 lines
4.6 KiB
ReStructuredText
|
.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
|
||
|
|
||
|
Creating Your Own Distribution
|
||
|
******************************
|
||
|
|
||
|
When you build an image using the Yocto Project and do not alter any
|
||
|
distribution :term:`Metadata`, you are
|
||
|
creating a Poky distribution. If you wish to gain more control over
|
||
|
package alternative selections, compile-time options, and other
|
||
|
low-level configurations, you can create your own distribution.
|
||
|
|
||
|
To create your own distribution, the basic steps consist of creating
|
||
|
your own distribution layer, creating your own distribution
|
||
|
configuration file, and then adding any needed code and Metadata to the
|
||
|
layer. The following steps provide some more detail:
|
||
|
|
||
|
- *Create a layer for your new distro:* Create your distribution layer
|
||
|
so that you can keep your Metadata and code for the distribution
|
||
|
separate. It is strongly recommended that you create and use your own
|
||
|
layer for configuration and code. Using your own layer as compared to
|
||
|
just placing configurations in a ``local.conf`` configuration file
|
||
|
makes it easier to reproduce the same build configuration when using
|
||
|
multiple build machines. See the
|
||
|
":ref:`dev-manual/layers:creating a general layer using the \`\`bitbake-layers\`\` script`"
|
||
|
section for information on how to quickly set up a layer.
|
||
|
|
||
|
- *Create the distribution configuration file:* The distribution
|
||
|
configuration file needs to be created in the ``conf/distro``
|
||
|
directory of your layer. You need to name it using your distribution
|
||
|
name (e.g. ``mydistro.conf``).
|
||
|
|
||
|
.. note::
|
||
|
|
||
|
The :term:`DISTRO` variable in your ``local.conf`` file determines the
|
||
|
name of your distribution.
|
||
|
|
||
|
You can split out parts of your configuration file into include files
|
||
|
and then "require" them from within your distribution configuration
|
||
|
file. Be sure to place the include files in the
|
||
|
``conf/distro/include`` directory of your layer. A common example
|
||
|
usage of include files would be to separate out the selection of
|
||
|
desired version and revisions for individual recipes.
|
||
|
|
||
|
Your configuration file needs to set the following required
|
||
|
variables:
|
||
|
|
||
|
- :term:`DISTRO_NAME`
|
||
|
|
||
|
- :term:`DISTRO_VERSION`
|
||
|
|
||
|
These following variables are optional and you typically set them
|
||
|
from the distribution configuration file:
|
||
|
|
||
|
- :term:`DISTRO_FEATURES`
|
||
|
|
||
|
- :term:`DISTRO_EXTRA_RDEPENDS`
|
||
|
|
||
|
- :term:`DISTRO_EXTRA_RRECOMMENDS`
|
||
|
|
||
|
- :term:`TCLIBC`
|
||
|
|
||
|
.. tip::
|
||
|
|
||
|
If you want to base your distribution configuration file on the
|
||
|
very basic configuration from OE-Core, you can use
|
||
|
``conf/distro/defaultsetup.conf`` as a reference and just include
|
||
|
variables that differ as compared to ``defaultsetup.conf``.
|
||
|
Alternatively, you can create a distribution configuration file
|
||
|
from scratch using the ``defaultsetup.conf`` file or configuration files
|
||
|
from another distribution such as Poky as a reference.
|
||
|
|
||
|
- *Provide miscellaneous variables:* Be sure to define any other
|
||
|
variables for which you want to create a default or enforce as part
|
||
|
of the distribution configuration. You can include nearly any
|
||
|
variable from the ``local.conf`` file. The variables you use are not
|
||
|
limited to the list in the previous bulleted item.
|
||
|
|
||
|
- *Point to Your distribution configuration file:* In your ``local.conf``
|
||
|
file in the :term:`Build Directory`, set your :term:`DISTRO` variable to
|
||
|
point to your distribution's configuration file. For example, if your
|
||
|
distribution's configuration file is named ``mydistro.conf``, then
|
||
|
you point to it as follows::
|
||
|
|
||
|
DISTRO = "mydistro"
|
||
|
|
||
|
- *Add more to the layer if necessary:* Use your layer to hold other
|
||
|
information needed for the distribution:
|
||
|
|
||
|
- Add recipes for installing distro-specific configuration files
|
||
|
that are not already installed by another recipe. If you have
|
||
|
distro-specific configuration files that are included by an
|
||
|
existing recipe, you should add an append file (``.bbappend``) for
|
||
|
those. For general information and recommendations on how to add
|
||
|
recipes to your layer, see the
|
||
|
":ref:`dev-manual/layers:creating your own layer`" and
|
||
|
":ref:`dev-manual/layers:following best practices when creating layers`"
|
||
|
sections.
|
||
|
|
||
|
- Add any image recipes that are specific to your distribution.
|
||
|
|
||
|
- Add a ``psplash`` append file for a branded splash screen, using
|
||
|
the :term:`SPLASH_IMAGES` variable.
|
||
|
|
||
|
- Add any other append files to make custom changes that are
|
||
|
specific to individual recipes.
|
||
|
|
||
|
For information on append files, see the
|
||
|
":ref:`dev-manual/layers:appending other layers metadata with your layer`"
|
||
|
section.
|