Understanding about the MACHINE_FEATURES and DISTRO_FEATURES in the Yocto Project
Yocto Project is used to create the build for a specific machine (target board). In the Yocto project, we need to provide the machine name in the configuration file and each machine refers to a development board or hardware platform.
Most common machine name :
Beaglebone
Raspberry Pi
MACHINE_FEATURES
- MACHINE_FEATURES is a variable that defined hardware-specific features supported on the board.
- MACHINE_FEATURES variable helps to control the software would be included or excluded.
- MACHINE_FEATURES is present in the machine configuration file.
Example:
Suppose if a board supporting Bluetooth and wifi both then machine feature include the Bluetooth and wifi to built the software stack.
MACHINE_FEATURES = " bluethooth wifi"
For raspberry pi board default machine feature in rbi-base.inc MACHINE_FEATURES += "apm usbhost keyboard vfat ext2 screen touchscreen alsa bluetooth wifi sdio ${@bb.utils.contains('DISABLE_VC4GRAPHICS', '1', '', 'vc4graphics', d)}" For beaglebone black board default machine feature in beaglebone-yocto.conf MACHINE_FEATURES = "usbgadget usbhost vfat salsa"
You can remove and add the machine feature based on your board without modifying the default list.
To add wifi as the machine feature: MACHINE_FEATURES:append = " wifi" # syntax for "Honister" or newer releases MACHINE_FEATURES_append = " wifi" # syntax for older version To remove wifi feature: MACHINE_FEATURES:remove = " wifi" # syntax for "Honister" or newer releases MACHINE_FEATURES_remove = " wifi" # syntax for older version
DISTRO_FEATURES
- It is a variable defined in the configuration file which lists the software features you want to distribute or shipped with the custom Linux Image.
- Each distribution contains many packages and utilities like graphical interface packages, package management systems, OpenGL, etc.
Default distro feature on poky thud version:
DISTRO_FEATURES ?= " largefile opengl ptest multiarch wayland vulkan" Suppose You want to remove the wayland distro feature then: DISTRO_FEATURES:remove = " wayland" # syntax for "Honister" or newer releases DISTRO_FEATURES_remove = " wayland" # syntax for older version To add x11 distro feature: DISTRO_FEATURES:append = " x11" # syntax for "Honister" or newer releases DISTRO_FEATURES_append = " x11" # syntax for older version