summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Opdenacker <michael.opdenacker@bootlin.com>2022-09-23 14:30:56 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2022-10-07 10:54:25 +0100
commit9dbd27a48aec4aaf235af91a3b7397725b644463 (patch)
tree59eceecd9bc147f56af607431082264807ea0068
parentc3c7344826231d1b2c009dbb317d2373bbdf9ff3 (diff)
downloadpoky-9dbd27a48aec4aaf235af91a3b7397725b644463.tar.gz
manuals: improve initramfs details
- Create a new entry in the glossary - Add implementation details - Replace the mention of "init ramdisk" by "initramfs¨ whenever possible - Remove obsolete and duplicate information - Fix spacing issues in the Sphinx code (From yocto-docs rev: 952c7e6dee49532705b2c162f4728e635c38df3f) Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--documentation/dev-manual/common-tasks.rst114
-rw-r--r--documentation/dev-manual/qemu.rst8
-rw-r--r--documentation/migration-guides/migration-2.4.rst2
-rw-r--r--documentation/migration-guides/migration-3.2.rst4
-rw-r--r--documentation/migration-guides/release-notes-3.4.rst4
-rw-r--r--documentation/migration-guides/release-notes-4.0.rst8
-rw-r--r--documentation/ref-manual/classes.rst6
-rw-r--r--documentation/ref-manual/images.rst6
-rw-r--r--documentation/ref-manual/tasks.rst6
-rw-r--r--documentation/ref-manual/variables.rst118
10 files changed, 138 insertions, 138 deletions
diff --git a/documentation/dev-manual/common-tasks.rst b/documentation/dev-manual/common-tasks.rst
index 559709d6f3..883a1adea7 100644
--- a/documentation/dev-manual/common-tasks.rst
+++ b/documentation/dev-manual/common-tasks.rst
@@ -3882,99 +3882,59 @@ and have separate configuration files, BitBake places the artifacts for
3882each build in the respective temporary build directories (i.e. 3882each build in the respective temporary build directories (i.e.
3883:term:`TMPDIR`). 3883:term:`TMPDIR`).
3884 3884
3885Building an Initial RAM Filesystem (initramfs) Image 3885Building an Initial RAM Filesystem (Initramfs) Image
3886---------------------------------------------------- 3886----------------------------------------------------
3887 3887
3888An initial RAM filesystem (initramfs) image provides a temporary root 3888An initial RAM filesystem (:term:`Initramfs`) image provides a temporary root
3889filesystem used for early system initialization (e.g. loading of modules 3889filesystem used for early system initialization, typically providing tools and
3890needed to locate and mount the "real" root filesystem). 3890loading modules needed to locate and mount the final root filesystem.
3891 3891
3892.. note:: 3892Follow these steps to create an :term:`Initramfs` image:
3893
3894 The initramfs image is the successor of initial RAM disk (initrd). It
3895 is a "copy in and out" (cpio) archive of the initial filesystem that
3896 gets loaded into memory during the Linux startup process. Because
3897 Linux uses the contents of the archive during initialization, the
3898 initramfs image needs to contain all of the device drivers and tools
3899 needed to mount the final root filesystem.
3900
3901Follow these steps to create an initramfs image:
3902 3893
39031. *Create the initramfs Image Recipe:* You can reference the 38941. *Create the Initramfs Image Recipe:* You can reference the
3904 ``core-image-minimal-initramfs.bb`` recipe found in the 3895 ``core-image-minimal-initramfs.bb`` recipe found in the
3905 ``meta/recipes-core`` directory of the :term:`Source Directory` 3896 ``meta/recipes-core`` directory of the :term:`Source Directory`
3906 as an example 3897 as an example from which to work.
3907 from which to work.
3908
39092. *Decide if You Need to Bundle the initramfs Image Into the Kernel
3910 Image:* If you want the initramfs image that is built to be bundled
3911 in with the kernel image, set the
3912 :term:`INITRAMFS_IMAGE_BUNDLE`
3913 variable to "1" in your ``local.conf`` configuration file and set the
3914 :term:`INITRAMFS_IMAGE`
3915 variable in the recipe that builds the kernel image.
3916
3917 .. note::
3918 3898
3919 It is recommended that you bundle the initramfs image with the 38992. *Decide if You Need to Bundle the Initramfs Image Into the Kernel
3920 kernel image to avoid circular dependencies between the kernel 3900 Image:* If you want the :term:`Initramfs` image that is built to be bundled
3921 recipe and the initramfs recipe should the initramfs image include 3901 in with the kernel image, set the :term:`INITRAMFS_IMAGE_BUNDLE`
3922 kernel modules. 3902 variable to ``"1"`` in your ``local.conf`` configuration file and set the
3903 :term:`INITRAMFS_IMAGE` variable in the recipe that builds the kernel image.
3923 3904
3924 Setting the :term:`INITRAMFS_IMAGE_BUNDLE` flag causes the initramfs 3905 Setting the :term:`INITRAMFS_IMAGE_BUNDLE` flag causes the :term:`Initramfs`
3925 image to be unpacked into the ``${B}/usr/`` directory. The unpacked 3906 image to be unpacked into the ``${B}/usr/`` directory. The unpacked
3926 initramfs image is then passed to the kernel's ``Makefile`` using the 3907 :term:`Initramfs` image is then passed to the kernel's ``Makefile`` using the
3927 :term:`CONFIG_INITRAMFS_SOURCE` 3908 :term:`CONFIG_INITRAMFS_SOURCE` variable, allowing the :term:`Initramfs`
3928 variable, allowing the initramfs image to be built into the kernel 3909 image to be built into the kernel normally.
3929 normally. 3910
3930 39113. *Optionally Add Items to the Initramfs Image Through the Initramfs
3931 .. note:: 3912 Image Recipe:* If you add items to the :term:`Initramfs` image by way of its
3932 3913 recipe, you should use :term:`PACKAGE_INSTALL` rather than
3933 Bundling the initramfs with the kernel conflates the code in the initramfs 3914 :term:`IMAGE_INSTALL`. :term:`PACKAGE_INSTALL` gives more direct control of
3934 with the GPLv2 licensed Linux kernel binary. Thus only GPLv2 compatible 3915 what is added to the image as compared to the defaults you might not
3935 software may be part of a bundled initramfs. 3916 necessarily want that are set by the :ref:`image <ref-classes-image>`
3936 3917 or :ref:`core-image <ref-classes-core-image>` classes.
3937 .. note:: 3918
3938 39194. *Build the Kernel Image and the Initramfs Image:* Build your kernel
3939 If you choose to not bundle the initramfs image with the kernel 3920 image using BitBake. Because the :term:`Initramfs` image recipe is a
3940 image, you are essentially using an 3921 dependency of the kernel image, the :term:`Initramfs` image is built as well
3941 `Initial RAM Disk (initrd) <https://en.wikipedia.org/wiki/Initrd>`__.
3942 Creating an initrd is handled primarily through the :term:`INITRD_IMAGE`,
3943 ``INITRD_LIVE``, and ``INITRD_IMAGE_LIVE`` variables. For more
3944 information, see the :ref:`ref-classes-image-live` file.
3945
39463. *Optionally Add Items to the initramfs Image Through the initramfs
3947 Image Recipe:* If you add items to the initramfs image by way of its
3948 recipe, you should use
3949 :term:`PACKAGE_INSTALL`
3950 rather than
3951 :term:`IMAGE_INSTALL`.
3952 :term:`PACKAGE_INSTALL` gives more direct control of what is added to the
3953 image as compared to the defaults you might not necessarily want that
3954 are set by the :ref:`image <ref-classes-image>`
3955 or :ref:`core-image <ref-classes-core-image>`
3956 classes.
3957
39584. *Build the Kernel Image and the initramfs Image:* Build your kernel
3959 image using BitBake. Because the initramfs image recipe is a
3960 dependency of the kernel image, the initramfs image is built as well
3961 and bundled with the kernel image if you used the 3922 and bundled with the kernel image if you used the
3962 :term:`INITRAMFS_IMAGE_BUNDLE` 3923 :term:`INITRAMFS_IMAGE_BUNDLE` variable described earlier.
3963 variable described earlier.
3964 3924
3965Bundling an Initramfs Image From a Separate Multiconfig 3925Bundling an Initramfs Image From a Separate Multiconfig
3966~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3926~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3967 3927
3968There may be a case where we want to build an initramfs image which does not 3928There may be a case where we want to build an :term:`Initramfs` image which does not
3969inherit the same distro policy as our main image, for example, we may want 3929inherit the same distro policy as our main image, for example, we may want
3970our main image to use ``TCLIBC="glibc"``, but to use ``TCLIBC="musl"`` in our initramfs 3930our main image to use ``TCLIBC="glibc"``, but to use ``TCLIBC="musl"`` in our :term:`Initramfs`
3971image to keep a smaller footprint. However, by performing the steps mentioned 3931image to keep a smaller footprint. However, by performing the steps mentioned
3972above the initramfs image will inherit ``TCLIBC="glibc"`` without allowing us 3932above the :term:`Initramfs` image will inherit ``TCLIBC="glibc"`` without allowing us
3973to override it. 3933to override it.
3974 3934
3975To achieve this, you need to perform some additional steps: 3935To achieve this, you need to perform some additional steps:
3976 3936
39771. *Create a multiconfig for your initramfs image:* You can perform the steps 39371. *Create a multiconfig for your Initramfs image:* You can perform the steps
3978 on ":ref:`dev-manual/common-tasks:building images for multiple targets using multiple configurations`" to create a separate multiconfig. 3938 on ":ref:`dev-manual/common-tasks:building images for multiple targets using multiple configurations`" to create a separate multiconfig.
3979 For the sake of simplicity let's assume such multiconfig is called: ``initramfscfg.conf`` and 3939 For the sake of simplicity let's assume such multiconfig is called: ``initramfscfg.conf`` and
3980 contains the variables:: 3940 contains the variables::
@@ -3982,7 +3942,7 @@ To achieve this, you need to perform some additional steps:
3982 TMPDIR="${TOPDIR}/tmp-initramfscfg" 3942 TMPDIR="${TOPDIR}/tmp-initramfscfg"
3983 TCLIBC="musl" 3943 TCLIBC="musl"
3984 3944
39852. *Set additional initramfs variables on your main configuration:* 39452. *Set additional Initramfs variables on your main configuration:*
3986 Additionally, on your main configuration (``local.conf``) you need to set the 3946 Additionally, on your main configuration (``local.conf``) you need to set the
3987 variables:: 3947 variables::
3988 3948
@@ -3997,7 +3957,7 @@ To achieve this, you need to perform some additional steps:
3997 Building a system with such configuration will build the kernel using the 3957 Building a system with such configuration will build the kernel using the
3998 main configuration but the ``do_bundle_initramfs`` task will grab the 3958 main configuration but the ``do_bundle_initramfs`` task will grab the
3999 selected :term:`INITRAMFS_IMAGE` from :term:`INITRAMFS_DEPLOY_DIR_IMAGE` 3959 selected :term:`INITRAMFS_IMAGE` from :term:`INITRAMFS_DEPLOY_DIR_IMAGE`
4000 instead, resulting in a musl based initramfs image bundled in the kernel 3960 instead, resulting in a musl based :term:`Initramfs` image bundled in the kernel
4001 but a glibc based main image. 3961 but a glibc based main image.
4002 3962
4003 The same is applicable to avoid inheriting :term:`DISTRO_FEATURES` on :term:`INITRAMFS_IMAGE` 3963 The same is applicable to avoid inheriting :term:`DISTRO_FEATURES` on :term:`INITRAMFS_IMAGE`
@@ -4171,7 +4131,7 @@ file::
4171Finally, you should consider exactly the type of root filesystem you 4131Finally, you should consider exactly the type of root filesystem you
4172need to meet your needs while also reducing its size. For example, 4132need to meet your needs while also reducing its size. For example,
4173consider ``cramfs``, ``squashfs``, ``ubifs``, ``ext2``, or an 4133consider ``cramfs``, ``squashfs``, ``ubifs``, ``ext2``, or an
4174``initramfs`` using ``initramfs``. Be aware that ``ext3`` requires a 1 4134:term:`Initramfs` using ``initramfs``. Be aware that ``ext3`` requires a 1
4175Mbyte journal. If you are okay with running read-only, you do not need 4135Mbyte journal. If you are okay with running read-only, you do not need
4176this journal. 4136this journal.
4177 4137
@@ -8802,7 +8762,7 @@ perform a one-time setup of your controller image by doing the following:
8802 - Installs normal linux utilities not BusyBox ones (e.g. ``bash``, 8762 - Installs normal linux utilities not BusyBox ones (e.g. ``bash``,
8803 ``coreutils``, ``tar``, ``gzip``, and ``kmod``). 8763 ``coreutils``, ``tar``, ``gzip``, and ``kmod``).
8804 8764
8805 - Uses a custom Initial RAM Disk (initramfs) image with a custom 8765 - Uses a custom :term:`Initramfs` image with a custom
8806 installer. A normal image that you can install usually creates a 8766 installer. A normal image that you can install usually creates a
8807 single root filesystem partition. This image uses another installer that 8767 single root filesystem partition. This image uses another installer that
8808 creates a specific partition layout. Not all Board Support 8768 creates a specific partition layout. Not all Board Support
diff --git a/documentation/dev-manual/qemu.rst b/documentation/dev-manual/qemu.rst
index 88a63c1808..9f4bc264a3 100644
--- a/documentation/dev-manual/qemu.rst
+++ b/documentation/dev-manual/qemu.rst
@@ -123,9 +123,9 @@ available. Follow these general steps to run QEMU:
123 123
124 $ runqemu qemux86-64 core-image-minimal ext4 124 $ runqemu qemux86-64 core-image-minimal ext4
125 125
126 - This example specifies to boot an initial RAM disk image and to 126 - This example specifies to boot an :term:`Initramfs` image and to
127 enable audio in QEMU. For this case, ``runqemu`` set the internal 127 enable audio in QEMU. For this case, ``runqemu`` sets the internal
128 variable ``FSTYPE`` to "cpio.gz". Also, for audio to be enabled, 128 variable ``FSTYPE`` to ``cpio.gz``. Also, for audio to be enabled,
129 an appropriate driver must be installed (see the previous 129 an appropriate driver must be installed (see the previous
130 description for the ``audio`` option for more information). 130 description for the ``audio`` option for more information).
131 :: 131 ::
@@ -394,7 +394,7 @@ command line:
394 options are basically identical. If you do not provide a MACHINE 394 options are basically identical. If you do not provide a MACHINE
395 option, ``runqemu`` tries to determine it based on other options. 395 option, ``runqemu`` tries to determine it based on other options.
396 396
397- ``ramfs``: Indicates you are booting an initial RAM disk (initramfs) 397- ``ramfs``: Indicates you are booting an :term:`Initramfs`
398 image, which means the ``FSTYPE`` is ``cpio.gz``. 398 image, which means the ``FSTYPE`` is ``cpio.gz``.
399 399
400- ``iso``: Indicates you are booting an ISO image, which means the 400- ``iso``: Indicates you are booting an ISO image, which means the
diff --git a/documentation/migration-guides/migration-2.4.rst b/documentation/migration-guides/migration-2.4.rst
index 964ed92937..8904495022 100644
--- a/documentation/migration-guides/migration-2.4.rst
+++ b/documentation/migration-guides/migration-2.4.rst
@@ -54,7 +54,7 @@ occurred:
54 when "pam" is in :term:`DISTRO_FEATURES`. 54 when "pam" is in :term:`DISTRO_FEATURES`.
55 55
56 - The ``switch_root`` program is now packaged in a separate 56 - The ``switch_root`` program is now packaged in a separate
57 "util-linux-switch-root" package for small initramfs images that 57 "util-linux-switch-root" package for small :term:`Initramfs` images that
58 do not need the whole ``util-linux`` package or the busybox 58 do not need the whole ``util-linux`` package or the busybox
59 binary, which are both much larger than ``switch_root``. The main 59 binary, which are both much larger than ``switch_root``. The main
60 ``util-linux`` package has a recommended runtime dependency (i.e. 60 ``util-linux`` package has a recommended runtime dependency (i.e.
diff --git a/documentation/migration-guides/migration-3.2.rst b/documentation/migration-guides/migration-3.2.rst
index 92b7f91f2c..cc6f05322a 100644
--- a/documentation/migration-guides/migration-3.2.rst
+++ b/documentation/migration-guides/migration-3.2.rst
@@ -265,10 +265,10 @@ using the GL options.
265 265
266.. _migration-3.2-initramfs-suffix: 266.. _migration-3.2-initramfs-suffix:
267 267
268initramfs images now use a blank suffix 268Initramfs images now use a blank suffix
269--------------------------------------- 269---------------------------------------
270 270
271The reference initramfs images (``core-image-minimal-initramfs``, 271The reference :term:`Initramfs` images (``core-image-minimal-initramfs``,
272``core-image-tiny-initramfs`` and ``core-image-testmaster-initramfs``) now 272``core-image-tiny-initramfs`` and ``core-image-testmaster-initramfs``) now
273set an empty string for :term:`IMAGE_NAME_SUFFIX`, which otherwise defaults 273set an empty string for :term:`IMAGE_NAME_SUFFIX`, which otherwise defaults
274to ``".rootfs"``. These images aren't root filesystems and thus the rootfs 274to ``".rootfs"``. These images aren't root filesystems and thus the rootfs
diff --git a/documentation/migration-guides/release-notes-3.4.rst b/documentation/migration-guides/release-notes-3.4.rst
index 323e4df7ae..4319bf119d 100644
--- a/documentation/migration-guides/release-notes-3.4.rst
+++ b/documentation/migration-guides/release-notes-3.4.rst
@@ -36,7 +36,7 @@ New Features / Enhancements in 3.4
36 36
37- Kernel-related enhancements: 37- Kernel-related enhancements:
38 38
39 - Support zstd-compressed modules and initramfs images 39 - Support zstd-compressed modules and :term:`Initramfs` images
40 - Allow opt-out of split kernel modules 40 - Allow opt-out of split kernel modules
41 - linux-yocto-dev: base AUTOREV on specified version 41 - linux-yocto-dev: base AUTOREV on specified version
42 - kernel-yocto: provide debug / summary information for metadata 42 - kernel-yocto: provide debug / summary information for metadata
@@ -211,7 +211,7 @@ The following corrections have been made to the LICENSE values set by recipes:
211Other license-related notes: 211Other license-related notes:
212 212
213- When creating recipes for Python software, recipetool will now treat "BSD" as "BSD-3-Clause" for the purposes of setting LICENSE, as that is the most common understanding. 213- When creating recipes for Python software, recipetool will now treat "BSD" as "BSD-3-Clause" for the purposes of setting LICENSE, as that is the most common understanding.
214- Please be aware that an initramfs bundled with the kernel using :term:`INITRAMFS_IMAGE_BUNDLE` should only contain GPLv2-compatible software; this is now mentioned in the documentation. 214- Please be aware that an :term:`Initramfs` bundled with the kernel using :term:`INITRAMFS_IMAGE_BUNDLE` should only contain GPLv2-compatible software; this is now mentioned in the documentation.
215 215
216Security Fixes in 3.4 216Security Fixes in 3.4
217~~~~~~~~~~~~~~~~~~~~~ 217~~~~~~~~~~~~~~~~~~~~~
diff --git a/documentation/migration-guides/release-notes-4.0.rst b/documentation/migration-guides/release-notes-4.0.rst
index b675cae217..a61ccc6913 100644
--- a/documentation/migration-guides/release-notes-4.0.rst
+++ b/documentation/migration-guides/release-notes-4.0.rst
@@ -30,7 +30,7 @@ New Features / Enhancements in 4.0
30 30
31- New :ref:`overlayfs <ref-classes-overlayfs>` and 31- New :ref:`overlayfs <ref-classes-overlayfs>` and
32 :ref:`overlayfs-etc <ref-classes-overlayfs-etc>` classes and 32 :ref:`overlayfs-etc <ref-classes-overlayfs-etc>` classes and
33 ``overlayroot`` support in the initramfs framework to make it easier to 33 ``overlayroot`` support in the :term:`Initramfs` framework to make it easier to
34 overlay read-only filesystems (for example) with 34 overlay read-only filesystems (for example) with
35 `OverlayFS <https://en.wikipedia.org/wiki/OverlayFS>`__. 35 `OverlayFS <https://en.wikipedia.org/wiki/OverlayFS>`__.
36 36
@@ -168,7 +168,7 @@ New Features / Enhancements in 4.0
168 168
169- Kernel-related enhancements: 169- Kernel-related enhancements:
170 170
171 - Allow initramfs to be built from a separate multiconfig 171 - Allow :term:`Initramfs` to be built from a separate multiconfig
172 - Make kernel-base recommend kernel-image, not depend (allowing images containing kernel modules without kernel image) 172 - Make kernel-base recommend kernel-image, not depend (allowing images containing kernel modules without kernel image)
173 - linux-yocto: split vtpm for more granular inclusion 173 - linux-yocto: split vtpm for more granular inclusion
174 - linux-yocto: cfg/debug: add configs for kcsan 174 - linux-yocto: cfg/debug: add configs for kcsan
@@ -182,7 +182,7 @@ New Features / Enhancements in 4.0
182 182
183- FIT image related enhancements: 183- FIT image related enhancements:
184 184
185 - New ``FIT_SUPPORTED_INITRAMFS_FSTYPES`` variable to allow extending initramfs image types to look for 185 - New ``FIT_SUPPORTED_INITRAMFS_FSTYPES`` variable to allow extending :term:`Initramfs` image types to look for
186 - New ``FIT_CONF_PREFIX`` variable to allow overriding FIT configuration prefix 186 - New ``FIT_CONF_PREFIX`` variable to allow overriding FIT configuration prefix
187 - Use 'bbnote' for better logging 187 - Use 'bbnote' for better logging
188 188
@@ -276,7 +276,7 @@ New Features / Enhancements in 4.0
276- volatile-binds: SELinux and overlayfs extensions in mount-copybind 276- volatile-binds: SELinux and overlayfs extensions in mount-copybind
277- gtk-icon-cache: Allow using gtk4 277- gtk-icon-cache: Allow using gtk4
278- kmod: Add an exclude directive to depmod 278- kmod: Add an exclude directive to depmod
279- os-release: add os-release-initrd package for use in systemd-based initramfs images 279- os-release: add os-release-initrd package for use in systemd-based :term:`Initramfs` images
280- gstreamer1.0-plugins-base: add support for graphene 280- gstreamer1.0-plugins-base: add support for graphene
281- gpg-sign: Add parameters to gpg signature function 281- gpg-sign: Add parameters to gpg signature function
282- package_manager: sign DEB package feeds 282- package_manager: sign DEB package feeds
diff --git a/documentation/ref-manual/classes.rst b/documentation/ref-manual/classes.rst
index 11e0d472e8..f402d090c9 100644
--- a/documentation/ref-manual/classes.rst
+++ b/documentation/ref-manual/classes.rst
@@ -1256,9 +1256,9 @@ package installs all packages with modules and various other kernel
1256packages such as ``kernel-vmlinux``. 1256packages such as ``kernel-vmlinux``.
1257 1257
1258The ``kernel`` class contains logic that allows you to embed an initial 1258The ``kernel`` class contains logic that allows you to embed an initial
1259RAM filesystem (initramfs) image when you build the kernel image. For 1259RAM filesystem (:term:`Initramfs`) image when you build the kernel image. For
1260information on how to build an initramfs, see the 1260information on how to build an :term:`Initramfs`, see the
1261":ref:`dev-manual/common-tasks:building an initial ram filesystem (initramfs) image`" section in 1261":ref:`dev-manual/common-tasks:building an initial ram filesystem (Initramfs) image`" section in
1262the Yocto Project Development Tasks Manual. 1262the Yocto Project Development Tasks Manual.
1263 1263
1264Various other classes are used by the ``kernel`` and ``module`` classes 1264Various other classes are used by the ``kernel`` and ``module`` classes
diff --git a/documentation/ref-manual/images.rst b/documentation/ref-manual/images.rst
index 31fb567687..4b771d0601 100644
--- a/documentation/ref-manual/images.rst
+++ b/documentation/ref-manual/images.rst
@@ -78,11 +78,11 @@ Following is a list of supported recipes:
78 libraries you can use in a host development environment. 78 libraries you can use in a host development environment.
79 79
80- ``core-image-minimal-initramfs``: A ``core-image-minimal`` image that 80- ``core-image-minimal-initramfs``: A ``core-image-minimal`` image that
81 has the Minimal RAM-based Initial Root Filesystem (initramfs) as part 81 has the Minimal RAM-based Initial Root Filesystem (:term:`Initramfs`) as part
82 of the kernel, which allows the system to find the first "init" 82 of the kernel, which allows the system to find the first "init"
83 program more efficiently. See the 83 program more efficiently. See the
84 :term:`PACKAGE_INSTALL` variable for 84 :term:`PACKAGE_INSTALL` variable for
85 additional information helpful when working with initramfs images. 85 additional information helpful when working with :term:`Initramfs` images.
86 86
87- ``core-image-minimal-mtdutils``: A ``core-image-minimal`` image that 87- ``core-image-minimal-mtdutils``: A ``core-image-minimal`` image that
88 has support for the Minimal MTD Utilities, which let the user 88 has support for the Minimal MTD Utilities, which let the user
@@ -121,7 +121,7 @@ Following is a list of supported recipes:
121 section in the Yocto Project Development Tasks Manual. 121 section in the Yocto Project Development Tasks Manual.
122 122
123- ``core-image-testmaster-initramfs``: A RAM-based Initial Root 123- ``core-image-testmaster-initramfs``: A RAM-based Initial Root
124 Filesystem (initramfs) image tailored for use with the 124 Filesystem (:term:`Initramfs`) image tailored for use with the
125 ``core-image-testmaster`` image. 125 ``core-image-testmaster`` image.
126 126
127- ``core-image-weston``: A very basic Wayland image with a terminal. 127- ``core-image-weston``: A very basic Wayland image with a terminal.
diff --git a/documentation/ref-manual/tasks.rst b/documentation/ref-manual/tasks.rst
index cb08a75c90..2a692c1725 100644
--- a/documentation/ref-manual/tasks.rst
+++ b/documentation/ref-manual/tasks.rst
@@ -575,10 +575,8 @@ information on live image types.
575``do_bundle_initramfs`` 575``do_bundle_initramfs``
576----------------------- 576-----------------------
577 577
578Combines an initial RAM disk (initramfs) image and kernel together to 578Combines an :term:`Initramfs` image and kernel together to
579form a single image. The 579form a single image.
580:term:`CONFIG_INITRAMFS_SOURCE` variable
581has some more information about these types of images.
582 580
583.. _ref-tasks-rootfs: 581.. _ref-tasks-rootfs:
584 582
diff --git a/documentation/ref-manual/variables.rst b/documentation/ref-manual/variables.rst
index 2971654531..2e2e16574c 100644
--- a/documentation/ref-manual/variables.rst
+++ b/documentation/ref-manual/variables.rst
@@ -1242,24 +1242,24 @@ system and gives an overview of their function and contents.
1242 :term:`Source Directory`. 1242 :term:`Source Directory`.
1243 1243
1244 :term:`CONFIG_INITRAMFS_SOURCE` 1244 :term:`CONFIG_INITRAMFS_SOURCE`
1245 Identifies the initial RAM filesystem (initramfs) source files. The 1245 Identifies the initial RAM filesystem (:term:`Initramfs`) source files. The
1246 OpenEmbedded build system receives and uses this kernel Kconfig 1246 OpenEmbedded build system receives and uses this kernel Kconfig
1247 variable as an environment variable. By default, the variable is set 1247 variable as an environment variable. By default, the variable is set
1248 to null (""). 1248 to null ("").
1249 1249
1250 The :term:`CONFIG_INITRAMFS_SOURCE` can be either a single cpio archive 1250 The :term:`CONFIG_INITRAMFS_SOURCE` can be either a single cpio archive
1251 with a ``.cpio`` suffix or a space-separated list of directories and 1251 with a ``.cpio`` suffix or a space-separated list of directories and
1252 files for building the initramfs image. A cpio archive should contain 1252 files for building the :term:`Initramfs` image. A cpio archive should contain
1253 a filesystem archive to be used as an initramfs image. Directories 1253 a filesystem archive to be used as an :term:`Initramfs` image. Directories
1254 should contain a filesystem layout to be included in the initramfs 1254 should contain a filesystem layout to be included in the :term:`Initramfs`
1255 image. Files should contain entries according to the format described 1255 image. Files should contain entries according to the format described
1256 by the ``usr/gen_init_cpio`` program in the kernel tree. 1256 by the ``usr/gen_init_cpio`` program in the kernel tree.
1257 1257
1258 If you specify multiple directories and files, the initramfs image 1258 If you specify multiple directories and files, the :term:`Initramfs` image
1259 will be the aggregate of all of them. 1259 will be the aggregate of all of them.
1260 1260
1261 For information on creating an initramfs, see the 1261 For information on creating an :term:`Initramfs`, see the
1262 ":ref:`dev-manual/common-tasks:building an initial ram filesystem (initramfs) image`" section 1262 ":ref:`dev-manual/common-tasks:building an initial ram filesystem (Initramfs) image`" section
1263 in the Yocto Project Development Tasks Manual. 1263 in the Yocto Project Development Tasks Manual.
1264 1264
1265 :term:`CONFIG_SITE` 1265 :term:`CONFIG_SITE`
@@ -3182,10 +3182,10 @@ system and gives an overview of their function and contents.
3182 image, do not use the :term:`IMAGE_INSTALL` variable to specify 3182 image, do not use the :term:`IMAGE_INSTALL` variable to specify
3183 packages for installation. Instead, use the 3183 packages for installation. Instead, use the
3184 :term:`PACKAGE_INSTALL` variable, which 3184 :term:`PACKAGE_INSTALL` variable, which
3185 allows the initial RAM filesystem (initramfs) recipe to use a 3185 allows the initial RAM filesystem (:term:`Initramfs`) recipe to use a
3186 fixed set of packages and not be affected by :term:`IMAGE_INSTALL`. 3186 fixed set of packages and not be affected by :term:`IMAGE_INSTALL`.
3187 For information on creating an initramfs, see the 3187 For information on creating an :term:`Initramfs`, see the
3188 ":ref:`dev-manual/common-tasks:building an initial ram filesystem (initramfs) image`" 3188 ":ref:`dev-manual/common-tasks:building an initial ram filesystem (Initramfs) image`"
3189 section in the Yocto Project Development Tasks Manual. 3189 section in the Yocto Project Development Tasks Manual.
3190 3190
3191 - Using :term:`IMAGE_INSTALL` with the 3191 - Using :term:`IMAGE_INSTALL` with the
@@ -3265,7 +3265,7 @@ system and gives an overview of their function and contents.
3265 to distinguish the image file from other files created during image 3265 to distinguish the image file from other files created during image
3266 building; however if this suffix is redundant or not desired you can 3266 building; however if this suffix is redundant or not desired you can
3267 clear the value of this variable (set the value to ""). For example, 3267 clear the value of this variable (set the value to ""). For example,
3268 this is typically cleared in initramfs image recipes. 3268 this is typically cleared in :term:`Initramfs` image recipes.
3269 3269
3270 :term:`IMAGE_OVERHEAD_FACTOR` 3270 :term:`IMAGE_OVERHEAD_FACTOR`
3271 Defines a multiplier that the build system applies to the initial 3271 Defines a multiplier that the build system applies to the initial
@@ -3632,37 +3632,79 @@ system and gives an overview of their function and contents.
3632 even if the toolchain's binaries are strippable, there are other files 3632 even if the toolchain's binaries are strippable, there are other files
3633 needed for the build that are not strippable. 3633 needed for the build that are not strippable.
3634 3634
3635 :term:`Initramfs`
3636 An Initial RAM Filesystem (:term:`Initramfs`) is an optionally compressed
3637 `cpio <https://en.wikipedia.org/wiki/Cpio>`__ archive which is extracted
3638 by the Linux kernel into RAM in a special `tmpfs <https://en.wikipedia.org/wiki/Tmpfs>`__
3639 instance, used as the initial root filesystem.
3640
3641 This is a replacement for the legacy init RAM disk ("initrd")
3642 technique, booting on an emulated block device in RAM, but being less
3643 efficient because of the overhead of going through a filesystem and
3644 having to duplicate accessed file contents in the file cache in RAM,
3645 as for any block device.
3646
3647 .. note:
3648
3649 As far as bootloaders are concerned, :term:`Initramfs` and "initrd"
3650 images are still copied to RAM in the same way. That's why most
3651 most bootloaders refer to :term:`Initramfs` images as "initrd"
3652 or "init RAM disk".
3653
3654 This kind of mechanism is typically used for two reasons:
3655
3656 - For booting the same kernel binary on multiple systems requiring
3657 different device drivers. The Initramfs image is then customized
3658 for each type of system, to include the specific kernel modules
3659 necessary to access the final root filesystem. This technique
3660 is used on all GNU / Linux distributions for desktops and servers.
3661
3662 - For booting faster. As the root filesystem is extracted into RAM,
3663 accessing the first user-space applications is very fast, compared
3664 to having to initialize a block device, to access multiple blocks
3665 from it, and to go through a filesystem having its own overhead.
3666 For example, this allows to display a splashscreen very early,
3667 and to later take care of mounting the final root filesystem and
3668 loading less time-critical kernel drivers.
3669
3670 This cpio archive can either be loaded to RAM by the bootloader,
3671 or be included in the kernel binary.
3672
3673 For information on creating and using an :term:`Initramfs`, see the
3674 ":ref:`dev-manual/common-tasks:building an initial ram filesystem (Initramfs) image`"
3675 section in the Yocto Project Development Tasks Manual.
3676
3635 :term:`INITRAMFS_DEPLOY_DIR_IMAGE` 3677 :term:`INITRAMFS_DEPLOY_DIR_IMAGE`
3636 Indicates the deploy directory used by ``do_bundle_initramfs`` where the 3678 Indicates the deploy directory used by ``do_bundle_initramfs`` where the
3637 :term:`INITRAMFS_IMAGE` will be fetched from. 3679 :term:`INITRAMFS_IMAGE` will be fetched from.
3638 This variable is set by default to ``${DEPLOY_DIR_IMAGE}`` in the 3680 This variable is set by default to ``${DEPLOY_DIR_IMAGE}`` in the
3639 :ref:`kernel <ref-classes-kernel>` class and it's only meant to be changed 3681 :ref:`kernel <ref-classes-kernel>` class and it's only meant to be changed
3640 when building an initramfs image from a separate multiconfig via :term:`INITRAMFS_MULTICONFIG`. 3682 when building an :term:`Initramfs` image from a separate multiconfig via :term:`INITRAMFS_MULTICONFIG`.
3641 3683
3642 :term:`INITRAMFS_FSTYPES` 3684 :term:`INITRAMFS_FSTYPES`
3643 Defines the format for the output image of an initial RAM filesystem 3685 Defines the format for the output image of an initial RAM filesystem
3644 (initramfs), which is used during boot. Supported formats are the 3686 (:term:`Initramfs`), which is used during boot. Supported formats are the
3645 same as those supported by the 3687 same as those supported by the
3646 :term:`IMAGE_FSTYPES` variable. 3688 :term:`IMAGE_FSTYPES` variable.
3647 3689
3648 The default value of this variable, which is set in the 3690 The default value of this variable, which is set in the
3649 ``meta/conf/bitbake.conf`` configuration file in the 3691 ``meta/conf/bitbake.conf`` configuration file in the
3650 :term:`Source Directory`, is "cpio.gz". The Linux kernel's 3692 :term:`Source Directory`, is "cpio.gz". The Linux kernel's
3651 initramfs mechanism, as opposed to the initial RAM filesystem 3693 :term:`Initramfs` mechanism, as opposed to the initial RAM filesystem
3652 `initrd <https://en.wikipedia.org/wiki/Initrd>`__ mechanism, expects 3694 `initrd <https://en.wikipedia.org/wiki/Initrd>`__ mechanism, expects
3653 an optionally compressed cpio archive. 3695 an optionally compressed cpio archive.
3654 3696
3655 :term:`INITRAMFS_IMAGE` 3697 :term:`INITRAMFS_IMAGE`
3656 Specifies the :term:`PROVIDES` name of an image 3698 Specifies the :term:`PROVIDES` name of an image
3657 recipe that is used to build an initial RAM filesystem (initramfs) 3699 recipe that is used to build an initial RAM filesystem (:term:`Initramfs`)
3658 image. In other words, the :term:`INITRAMFS_IMAGE` variable causes an 3700 image. In other words, the :term:`INITRAMFS_IMAGE` variable causes an
3659 additional recipe to be built as a dependency to whatever root 3701 additional recipe to be built as a dependency to whatever root
3660 filesystem recipe you might be using (e.g. ``core-image-sato``). The 3702 filesystem recipe you might be using (e.g. ``core-image-sato``). The
3661 initramfs image recipe you provide should set 3703 :term:`Initramfs` image recipe you provide should set
3662 :term:`IMAGE_FSTYPES` to 3704 :term:`IMAGE_FSTYPES` to
3663 :term:`INITRAMFS_FSTYPES`. 3705 :term:`INITRAMFS_FSTYPES`.
3664 3706
3665 An initramfs image provides a temporary root filesystem used for 3707 An :term:`Initramfs` image provides a temporary root filesystem used for
3666 early system initialization (e.g. loading of modules needed to locate 3708 early system initialization (e.g. loading of modules needed to locate
3667 and mount the "real" root filesystem). 3709 and mount the "real" root filesystem).
3668 3710
@@ -3670,8 +3712,8 @@ system and gives an overview of their function and contents.
3670 3712
3671 See the ``meta/recipes-core/images/core-image-minimal-initramfs.bb`` 3713 See the ``meta/recipes-core/images/core-image-minimal-initramfs.bb``
3672 recipe in the :term:`Source Directory` 3714 recipe in the :term:`Source Directory`
3673 for an example initramfs recipe. To select this sample recipe as 3715 for an example :term:`Initramfs` recipe. To select this sample recipe as
3674 the one built to provide the initramfs image, set :term:`INITRAMFS_IMAGE` 3716 the one built to provide the :term:`Initramfs` image, set :term:`INITRAMFS_IMAGE`
3675 to "core-image-minimal-initramfs". 3717 to "core-image-minimal-initramfs".
3676 3718
3677 You can also find more information by referencing the 3719 You can also find more information by referencing the
@@ -3681,13 +3723,13 @@ system and gives an overview of their function and contents.
3681 class to see how to use the :term:`INITRAMFS_IMAGE` variable. 3723 class to see how to use the :term:`INITRAMFS_IMAGE` variable.
3682 3724
3683 If :term:`INITRAMFS_IMAGE` is empty, which is the default, then no 3725 If :term:`INITRAMFS_IMAGE` is empty, which is the default, then no
3684 initramfs image is built. 3726 :term:`Initramfs` image is built.
3685 3727
3686 For more information, you can also see the 3728 For more information, you can also see the
3687 :term:`INITRAMFS_IMAGE_BUNDLE` 3729 :term:`INITRAMFS_IMAGE_BUNDLE`
3688 variable, which allows the generated image to be bundled inside the 3730 variable, which allows the generated image to be bundled inside the
3689 kernel image. Additionally, for information on creating an initramfs 3731 kernel image. Additionally, for information on creating an :term:`Initramfs`
3690 image, see the ":ref:`dev-manual/common-tasks:building an initial ram filesystem (initramfs) image`" section 3732 image, see the ":ref:`dev-manual/common-tasks:building an initial ram filesystem (Initramfs) image`" section
3691 in the Yocto Project Development Tasks Manual. 3733 in the Yocto Project Development Tasks Manual.
3692 3734
3693 :term:`INITRAMFS_IMAGE_BUNDLE` 3735 :term:`INITRAMFS_IMAGE_BUNDLE`
@@ -3696,32 +3738,32 @@ system and gives an overview of their function and contents.
3696 extra pass 3738 extra pass
3697 (:ref:`ref-tasks-bundle_initramfs`) during 3739 (:ref:`ref-tasks-bundle_initramfs`) during
3698 kernel compilation in order to build a single binary that contains 3740 kernel compilation in order to build a single binary that contains
3699 both the kernel image and the initial RAM filesystem (initramfs) 3741 both the kernel image and the initial RAM filesystem (:term:`Initramfs`)
3700 image. This makes use of the 3742 image. This makes use of the
3701 :term:`CONFIG_INITRAMFS_SOURCE` kernel 3743 :term:`CONFIG_INITRAMFS_SOURCE` kernel
3702 feature. 3744 feature.
3703 3745
3704 .. note:: 3746 .. note::
3705 3747
3706 Bundling the initramfs with the kernel conflates the code in the 3748 Bundling the :term:`Initramfs` with the kernel conflates the code in the
3707 initramfs with the GPLv2 licensed Linux kernel binary. Thus only GPLv2 3749 :term:`Initramfs` with the GPLv2 licensed Linux kernel binary. Thus only GPLv2
3708 compatible software may be part of a bundled initramfs. 3750 compatible software may be part of a bundled :term:`Initramfs`.
3709 3751
3710 .. note:: 3752 .. note::
3711 3753
3712 Using an extra compilation pass to bundle the initramfs avoids a 3754 Using an extra compilation pass to bundle the :term:`Initramfs` avoids a
3713 circular dependency between the kernel recipe and the initramfs 3755 circular dependency between the kernel recipe and the :term:`Initramfs`
3714 recipe should the initramfs include kernel modules. Should that be 3756 recipe should the :term:`Initramfs` include kernel modules. Should that be
3715 the case, the initramfs recipe depends on the kernel for the 3757 the case, the :term:`Initramfs` recipe depends on the kernel for the
3716 kernel modules, and the kernel depends on the initramfs recipe 3758 kernel modules, and the kernel depends on the :term:`Initramfs` recipe
3717 since the initramfs is bundled inside the kernel image. 3759 since the :term:`Initramfs` is bundled inside the kernel image.
3718 3760
3719 The combined binary is deposited into the ``tmp/deploy`` directory, 3761 The combined binary is deposited into the ``tmp/deploy`` directory,
3720 which is part of the :term:`Build Directory`. 3762 which is part of the :term:`Build Directory`.
3721 3763
3722 Setting the variable to "1" in a configuration file causes the 3764 Setting the variable to "1" in a configuration file causes the
3723 OpenEmbedded build system to generate a kernel image with the 3765 OpenEmbedded build system to generate a kernel image with the
3724 initramfs specified in :term:`INITRAMFS_IMAGE` bundled within:: 3766 :term:`Initramfs` specified in :term:`INITRAMFS_IMAGE` bundled within::
3725 3767
3726 INITRAMFS_IMAGE_BUNDLE = "1" 3768 INITRAMFS_IMAGE_BUNDLE = "1"
3727 3769
@@ -3739,7 +3781,7 @@ system and gives an overview of their function and contents.
3739 See the 3781 See the
3740 :yocto_git:`local.conf.sample.extended </poky/tree/meta-poky/conf/templates/default/local.conf.sample.extended>` 3782 :yocto_git:`local.conf.sample.extended </poky/tree/meta-poky/conf/templates/default/local.conf.sample.extended>`
3741 file for additional information. Also, for information on creating an 3783 file for additional information. Also, for information on creating an
3742 initramfs, see the ":ref:`dev-manual/common-tasks:building an initial ram filesystem (initramfs) image`" section 3784 :term:`Initramfs`, see the ":ref:`dev-manual/common-tasks:building an initial ram filesystem (Initramfs) image`" section
3743 in the Yocto Project Development Tasks Manual. 3785 in the Yocto Project Development Tasks Manual.
3744 3786
3745 :term:`INITRAMFS_LINK_NAME` 3787 :term:`INITRAMFS_LINK_NAME`
@@ -3764,7 +3806,7 @@ system and gives an overview of their function and contents.
3764 This allows the kernel to bundle an :term:`INITRAMFS_IMAGE` coming from 3806 This allows the kernel to bundle an :term:`INITRAMFS_IMAGE` coming from
3765 a separate multiconfig, this is meant to be used in addition to :term:`INITRAMFS_DEPLOY_DIR_IMAGE`. 3807 a separate multiconfig, this is meant to be used in addition to :term:`INITRAMFS_DEPLOY_DIR_IMAGE`.
3766 3808
3767 For more information on how to bundle an initramfs image from a separate 3809 For more information on how to bundle an :term:`Initramfs` image from a separate
3768 multiconfig see the ":ref:`dev-manual/common-tasks:Bundling an Initramfs Image From a Separate Multiconfig`" 3810 multiconfig see the ":ref:`dev-manual/common-tasks:Bundling an Initramfs Image From a Separate Multiconfig`"
3769 section in the Yocto Project Development Tasks Manual. 3811 section in the Yocto Project Development Tasks Manual.
3770 3812
@@ -4240,7 +4282,7 @@ system and gives an overview of their function and contents.
4240 :term:`KERNELDEPMODDEPEND` does not control whether or not that data 4282 :term:`KERNELDEPMODDEPEND` does not control whether or not that data
4241 exists, but simply whether or not it is used. If you do not need to 4283 exists, but simply whether or not it is used. If you do not need to
4242 use the data, set the :term:`KERNELDEPMODDEPEND` variable in your 4284 use the data, set the :term:`KERNELDEPMODDEPEND` variable in your
4243 ``initramfs`` recipe. Setting the variable there when the data is not 4285 :term:`Initramfs` recipe. Setting the variable there when the data is not
4244 needed avoids a potential dependency loop. 4286 needed avoids a potential dependency loop.
4245 4287
4246 :term:`KFEATURE_DESCRIPTION` 4288 :term:`KFEATURE_DESCRIPTION`
@@ -5395,9 +5437,9 @@ system and gives an overview of their function and contents.
5395 :term:`IMAGE_INSTALL` variable to specify 5437 :term:`IMAGE_INSTALL` variable to specify
5396 packages for installation. The exception to this is when working with 5438 packages for installation. The exception to this is when working with
5397 the :ref:`core-image-minimal-initramfs <ref-manual/images:images>` 5439 the :ref:`core-image-minimal-initramfs <ref-manual/images:images>`
5398 image. When working with an initial RAM filesystem (initramfs) image, 5440 image. When working with an initial RAM filesystem (:term:`Initramfs`) image,
5399 use the :term:`PACKAGE_INSTALL` variable. For information on creating an 5441 use the :term:`PACKAGE_INSTALL` variable. For information on creating an
5400 initramfs, see the ":ref:`dev-manual/common-tasks:building an initial ram filesystem (initramfs) image`" section 5442 :term:`Initramfs`, see the ":ref:`dev-manual/common-tasks:building an initial ram filesystem (Initramfs) image`" section
5401 in the Yocto Project Development Tasks Manual. 5443 in the Yocto Project Development Tasks Manual.
5402 5444
5403 :term:`PACKAGE_INSTALL_ATTEMPTONLY` 5445 :term:`PACKAGE_INSTALL_ATTEMPTONLY`