| Oct 2025: Updated to support the same version as the latest reference environment (Yocto 5.2.4 walnascar). (See Releases · altera-fpga/gsrd-socfpga for the version used in the latest reference environment.) |
This article explains how to build the Yocto Poky reference Linux environment used for the Altera® SoC FPGA system reference environment (GSRD: Golden System Reference Design).
The SoC FPGA Embedded Development Suite (SoC EDS) is not required to build Linux, so you do not have to worry about whether or not the SoC EDS is installed or what version it is. The latest and final version of SoC EDS is v20.1 Standard Edition or v20.1 Pro Edition, but if you have an older SoC EDS version, you can use this procedure to build a Linux environment.
For official build instructions, please refer to the GSRD page for each device family on Rocketboards.org or altera-fpga.github.io.
- altera-fpga.github.io "Cyclone® V SX SoC Development Kit - Rebuilding the GSRD Binaries"
- altera-fpga.github.io "Arria® 10 SX SoC Development Kit ‐ Building the GSRD"
- altera-fpga.github.io "Stratix® 10 SX SoC Development Kit - Rebuild the GSRD"
- altera-fpga.github.io "Agilex™ 7 F-Series SoC Development Kit - Rebuild the GSRD"
- altera-fpga.github.io "Agilex™ 7 I-Series FPGA Development Kit - Build GSRD for XX"
- altera-fpga.github.io "Agilex™ 7 M-Series HBM2e Development Kit - Build the GSRD"
- altera-fpga.github.io "Agilex™ 5 E-Series Premium Development Kit - Rebuilding the GSRD"
- altera-fpga.github.io "Agilex™ 5 E-Series Modular Development Kit - Rebuilding the GSRD"
- altera-fpga.github.io "Agilex™ 3 C-Series Development Kit - Rebuilding the GSRD"
Most of the official procedures are scripted, so you will need to read the scripts to understand the details. This article does not use the official scripts, but rather executes the commands necessary for building directly on the terminal.
Steps
1. Preparing the host machine
2. Setting up the Yocto environment - getting a recipe (first time only)
3. Script execution and environment setting (first time only)
4. Execution of build (bitbake)
5. Confirming the build result
Although this procedure is written for Agilex™ 5 FPGA, it can be used for all SoC FPGA device families (Cyclone® V FPGA / Arria® V FPGA / Arria® 10 FPGA / Stratix® 10 FPGA / Agilex™ 7 FPGA / Agilex™ 5 FPGA / Agilex™ 3 FPGA). The procedure is the same for all of these products.
After following the steps, you should be able to generate a set of files needed to create an SD card image for Linux booting, but you will need to consider hardware differences in the Preloader/U-Boot (boot loader) and Linux device tree, such as board and FPGA side design. However, for the Preloader/U-Boot (boot loader) and Linux device tree, it is recommended to use a different flow since hardware differences such as board and FPGA side design must be considered.
Please refer to the following pages for each.
[ Preloader/U-Boot (Bootloader) ]
RocketBoards.org " Building Bootloader for Cyclone V and Arria 10 "
RocketBoards.org " Building Bootloader for Stratix10 "
RocketBoards.org " Building Bootloader for Agilex 7 "
RocketBoards.org " Building Bootloader for Agilex 5 "
Macnica Altera FPGA Insights "Configure new U-Boot handoffs and device trees"
[Linux Device Tree]
Macnica Altera FPGA Insights "How to Create and Edit a Linux Device Tree for SoC FPGAs"
Point:
For Sulfur Type-A Development Kit with Agilex™ 5 FPGA, please refer to the following page.
Macnica Altera FPGA Insights "How to build a boot loader/Linux kernel: for Mpression Sulfur Type-A Development Kit"
The Linux build procedure described in this article uses Yocto Project (Yocto) as the build system. is available in your network environment before attempting to build Yocto.
Below is a list of Yocto versions and statuses.
| Version | Codename | Status / Supplemental |
| 5.3 | whinlatter | Active Development |
| 5.2 | walnascar | Current Release (Stable until Nov 2025) / Used in latest GSRD |
| 5.1 | styhead | Previous Release (EOL) |
| 5.0 | scarthgap | Current Release (LTS until Apr.2028) |
| 4.3 | nanbield | Previous Release (EOL) |
| 4.2 | mickledore | Previous Release (EOL) |
| 4.1 | langdale | Previous Release (EOL) |
| 4.0 | kirkstone | Current Release (LTS until Apr.2026) |
| : | ||
Yocto Version and Codename Correspondence and Status (as of Oct 2025)
Point:
For versions listed as "Previous Release (EOL)", it means that maintenance and updates have been completed. Even after EOL, you can still download the Yocto environment, so there is no problem running the build.
For more information on Yocto and how to customize your environment, please refer to the official Yocto documentation.
- yoctoproject.org "Yocto Project - It's not an embedded Linux distribution – it creates a custom one for you"
- yoctoproject.org "Welcome to the Yocto Project Documentation - The Yocto Project® documentation"
- yoctoproject.org "Supported Release Manuals - The Yocto Project® documentation"
- yoctoproject.org "Outdated Release Manuals - The Yocto Project® documentation"
Relationship between the content of this article and the GSRD build flow (taken from RocketBoards.org)
1. Preparing the host machine
Prepare a Linux-based host machine. It is possible to build a virtual machine, but note that a minimum of 50 GByte of free disk space is a requirement. In practice, however, it is better to have at least 100 GByte free disk space, as 50 GByte is not enough to build one type of image. Memory requirements are not mentioned. We have had good success with 8 GByte.
The Linux distribution of the host machine should be selected and prepared from the environments listed in the official Yocto Project documentation. The procedure described in this article has been tested on Ubuntu 22.04 (LTS).
yoctoproject.org "Supported Linux Distributions"
Recent versions of Yocto seem to support Windows Subsystem for Linux (WSL). However, note that WSLv1 is not supported, so you need to build your environment with WSLv2 if you want to try it. Also, the procedure using WSL is clearly stated as an unofficial procedure in the official documentation. (If you try to build your environment with WSL, please do so at your own risk.)
yoctoproject.org "Setting Up to Use Windows Subsystem For Linux (WSLv2)"
Here are the steps needed to prepare the host machine. (For Ubuntu 22.04 (LTS))
Note: The commands listed in the procedure are only available with user privileges: The commands described in this procedure are assumed to be executed on a terminal with user privileges (prompt starting with $). Be careful not to mistakenly use a terminal with root privileges (prompt beginning with #).
Execute the following commands to update and add the packages required for the build. These packages are the minimum required to build the image.
sudo apt update
sudo apt upgrade
sudo apt install gawk wget git diffstat unzip texinfo gcc build-essential chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev python3-subunit mesa-common-dev zstd liblz4-tool file locales libacl1
sudo locale-gen en_US.UTF-8
sudo apt install bison flex ncurses-dev swig libssl-dev u-boot-tools device-tree-compiler
Also install the following. These are the packages required to create the documentation.
sudo apt install librsvg2-bin make python3-saneyaml python3-sphinx-rtd-theme sphinx
sudo apt install fonts-freefont-otf latexmk tex-gyre texlive-fonts-extra texlive-fonts-recommended texlive-lang-all texlive-latex-extra texlive-latex-recommended texlive-xetexIn addition, if necessary, install the following packages. The final "g++-multilib" is not officially documented. It was added as a workaround to an error that occurred when building with dunfell (Yocto 3.1.7) in the past. The other packages were included in the official Yocto requirements in previous versions and are not required to use the latest version.
sudo apt install make inkscape
sudo pip3 install sphinx sphinx_rtd_theme pyyaml
sudo apt install libegl1-mesa libsdl1.2-dev mesa-common-dev
sudo apt install g++-multilib
Notes:
If you are using Ubuntu, use the dpkg-reconfigure command to switch the standard shell (/bin/sh) to bash. You may get errors if you perform the Yocto procedure on the dash terminal.
The following command displays a <Yes>/<No> prompt asking if you want to apply dash to the system shell. Select <No> to switch to bash. (<Yes> to dash)
sudo dpkg-reconfigure dash
For Ubuntu 22.04 (LTS), the host machine is ready at this point.
If you are using other distributions, please check the required packages listed in the official documentation.
yoctoproject.org "Required Packages for the Build Host"
Also note the version of each package listed below. Also make sure that each package meets the requirements.
- Git 1.8.3.1 or greater
- tar 1.28 or greater
- Python 3.9.0 or greater
(*Yocto versions 4.1 (langdale) and earlier require 3.6.0 or greater, and 5.1 (styhead) and earlier require 3.8.0 or greater.) - GNU make 4.0 or greater
(*Additional requirement since Yocto version 4.1 (langdale)) - gcc 10.1 or greater
(*Yocto versions 4.1 (langdale) and earlier require 7.5 or greater, and 5.1 (styhead) and earlier require 8.0 or greater.)
Note:
The official documentation also includes instructions for installing buildtools, which includes the appropriate version of the tools for users of distributions that do not meet the above requirements.
yoctoproject.org "Required Git, tar, Python and gcc Versions"
2. Setting up the Yocto environment - getting a recipe (first time only)
The following command will extract the meta layer structure containing the Yocto packages (build tools) and recipe files (e.g. .bbclass .bb) with build instructions to the layers directory directly under the working directory "poky-socfpga". The meta layer structure including recipe files (.bbclass .bb, etc.) is expanded under the layers directory directly under the working directory "poky-socfpga". (The working directory "poky-socfpga" can be named arbitrarily.)
The following is an example for Yocto 5.2.4 (walnascar).
export YOCTO_VER=walnascar
rm -rf ~/poky-socfpga && mkdir ~/poky-socfpga && cd ~/poky-socfpga
git clone -b $YOCTO_VER https://git.yoctoproject.org/git/poky.git
mkdir layers && cd layers
ln -s ./../poky/meta meta
ln -s ./../poky/meta-poky meta-poky
ln -s ./../poky/meta-yocto-bsp meta-yocto-bsp
git clone -b $YOCTO_VER https://github.com/kraj/meta-clang
git clone -b $YOCTO_VER https://git.openembedded.org/meta-openembedded
git clone -b $YOCTO_VER https://git.yoctoproject.org/meta-virtualization
git clone -b $YOCTO_VER https://git.yoctoproject.org/git/meta-intel-fpga
git clone -b $YOCTO_VER https://github.com/altera-opensource/meta-intel-fpga-refdes.git
cd .. Point:
The branch name for the -b option of the git clone command should be the name of the Yocto version (e.g., styhead, scarthgap, kirkstone, etc.). If you want to specify the latest version, use -b master. (In the example above, this can be done by changing the YOCTO_VER environment variable set in export.)
Point:
The folder named meta-xxxx where recipes are stored is called a meta layer. Each layer contains a configuration file named conf/layer.conf that contains information about the layer. layer.conf specifies the Yocto version that the layer corresponds to in the format LAYERSERIES_COMPAT_meta-xxxx. Therefore, if different Yocto versions are used, the contents of layer.conf should also be noted.
For example, in the case of meta-intel-fpga, a setting like "LAYERSERIES_COMPAT_meta-intel-fpga = "master honister"" is used to indicate that master (the latest version) and honister (Yocto 3.4) are supported. It means that master (the latest version) and honister (Yocto 3.4) are supported. If a layer supports multiple Yocto versions, there are cases where multiple different versions are described, such as "LAYERSERIES_COMPAT_meta-intel-fpga = "dunfell gatesgarth hardknott"".
Hints:
In the example command, the working directory is written as ~/poky-socfpga. It is possible to work in a different directory, but in that case, replace the working directory written as ~/poky-socfpga with a different path.
3. Script execution and environment setting (first time only)
3-1. Setup for Linux build (common to all device families)
Execute the following commands to set up the build environment.
First, run the setup script oe-init-build-env, which is stored directly under poky. Under the build/conf directory, configuration files called bblayers.conf and local.conf are created. configuration files called bblayers.conf and local.conf will be generated under the build/conf directory.
cd ~/poky-socfpga
# Run script to initialize the build environment for bitbake
# Note: You will be redirected to the "build" folder once you execute the command below
source poky/oe-init-build-env
Rewrite build/conf/bblayers.conf with the following command.
Here, settings are added to add layer structures (meta-intel-fpga, meta-intel-fpga-refdes, meta-openembedded/meta-xxxx) obtained from other sources than poky to the build target.
# Settings for bblayers.conf
echo 'BBLAYERS += " ${TOPDIR}/../layers/meta-intel-fpga "' >> conf/bblayers.conf
echo 'BBLAYERS += " ${TOPDIR}/../layers/meta-intel-fpga-refdes "' >> conf/bblayers.conf
echo 'BBLAYERS += " ${TOPDIR}/../layers/meta-openembedded/meta-oe "' >> conf/bblayers.conf
echo 'BBLAYERS += " ${TOPDIR}/../layers/meta-openembedded/meta-networking "' >> conf/bblayers.conf
echo 'BBLAYERS += " ${TOPDIR}/../layers/meta-openembedded/meta-python "' >> conf/bblayers.conf
echo 'BBLAYERS += " ${TOPDIR}/../layers/meta-openembedded/meta-gnome "' >> conf/bblayers.conf
echo 'BBLAYERS += " ${TOPDIR}/../layers/meta-openembedded/meta-xfce "' >> conf/bblayers.conf
echo 'BBLAYERS += " ${TOPDIR}/../layers/meta-openembedded/meta-initramfs "' >> conf/bblayers.conf
echo 'BBLAYERS += " ${TOPDIR}/../layers/meta-openembedded/meta-multimedia "' >> conf/bblayers.conf
echo 'BBLAYERS += " ${TOPDIR}/../layers/meta-openembedded/meta-webserver "' >> conf/bblayers.conf
echo 'BBLAYERS += " ${TOPDIR}/../layers/meta-openembedded/meta-filesystems "' >> conf/bblayers.conf
echo 'BBLAYERS += " ${TOPDIR}/../layers/meta-openembedded/meta-perl "' >> conf/bblayers.conf
echo 'BBLAYERS += " ${TOPDIR}/../layers/meta-clang "' >> conf/bblayers.conf
Rewrite the settings in build/conf/local.conf with the following command.
local.conf describes various variables for specifying various build-related options.
# Set the MACHINE from "stratix10", "arria10", "cyclone5", "agilex7_xxx (ex. agilex7_dk_si_agf014ea)", or "agilex5"
sed -i 's/^MACHINE .*=.*$/MACHINE = "agilex5"/g' conf/local.conf
# Set the Path for download directory
sed -i 's/#DL_DIR ?= "${TOPDIR}\/downloads"/DL_DIR = "${TOPDIR}\/..\/downloads"/g' conf/local.conf
# Add functions to the Linux image to add functionality needed for basic debugging.
sed -i 's/EXTRA_IMAGE_FEATURES ?= "allow-empty-password empty-root-password allow-root-login"/EXTRA_IMAGE_FEATURES ?= "allow-empty-password empty-root-password allow-root-login ssh-server-openssh tools-debug package-management"/g' conf/local.conf
# Use the LTS kernel and set version
echo 'PREFERRED_PROVIDER_virtual/kernel = "linux-socfpga-lts"' >> conf/local.conf
echo 'PREFERRED_VERSION_linux-socfpga-lts = "6.12%"' >> conf/local.conf
# Use systemd
echo 'DISTRO_FEATURES:append = " systemd usrmerge"' >> conf/local.conf
echo 'VIRTUAL-RUNTIME_init_manager = "systemd"' >> conf/local.conf
# Build additional rootfs type
echo 'IMAGE_FSTYPES += "jffs2 tar.gz"' >> conf/local.conf
# Ensure we build in all kernel-modules
echo "MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += \"kernel-modules\"" >> conf/local.conf
# Other settings
echo 'INHERIT += "rm_work"' >> conf/local.conf
echo 'DEPLOY_DIR = "${TOPDIR}/../deploy"' >> conf/local.conf
echo 'BB_GENERATE_MIRROR_TARBALLS = "1"' >> conf/local.conf
echo 'DISTRO_FEATURES:remove = "ptest"' >> conf/local.conf
echo 'IMAGE_FSTYPES:remove = "multiubi"' >> conf/local.conf
echo 'INHERIT += "archiver"' >> conf/local.conf
echo 'ARCHIVER_MODE[src] = "original"' >> conf/local.conf
echo 'COPY_LIC_MANIFEST = "1"' >> conf/local.conf
echo 'COPY_LIC_DIRS = "1"' >> conf/local.conf
echo 'LICENSE_CREATE_PACKAGE = "1"' >> conf/local.conf Note:
When Yocto 3.4 (honister) was released in the past, some of the formatting changes were made to recipes and .conf files. For details, refer to the Yocto 3.4 release. Please note that web information related to Yocto may contain outdated information.
Yoctoproject.org "Release 3.4 (honister) - The Yocto Project ® 3.4 documentation"
In this example, the following specifications are mainly used.
・MACHINE: Specify the model to be the build target.
(For SoC FPGA, select from cyclone5 / arria5 / arria10 / stratix10 / agilex)
* If agilex is targeted in version 4.1 (langdale) or later, it is necessary to select and specify the model from multiple choices.
[For version 4.1 (langdale)]
- agilex_fm61 ... Agilex™ 7 FPGA F-Series Transceiver-SoC Development Kit (P-Tile and E-Tile)
- agilex_fm86 ... Agilex™ 7 FPGA F-Series Development Kit (2x F-Tile)
- agilex_fm87 ... Agilex™ 7 FPGA I-Series Transceiver-SoC Development Kit (4x F-Tile, Rev A)
[For version 4.2 (mickledore) or later]
- agilex7_dk_si_agf014ea/agf014eb ... Agilex™ 7 FPGA F-Series Transceiver-SoC Development Kit (P-Tile and E-Tile)
- agilex7_dk_si_agi027fa/agi027fb ... Agilex™ 7 FPGA I-Series Transceiver-SoC Development Kit (4x F-Tile, Rev A)
- agilex7_dk_dev_agf027f1es ... Agilex™ 7 FPGA F-Series Development Kit (2x F-Tile)
- agilex7_dv_dev_agf039fes ... Agilex™ 7 FPGA M-Series Development Kit - HBM2e Edition (3x F-Tile & 1x R-Tile)
* Agilex5 is also an option for version 5.0.5 (scarthgap) and later. Please refer to the following information to specify MACHINE. If you use a flow other than Yocto for boot loader and Linux build, you do not need to specify the details of the target board. (The Root File System can be used for other boards as long as the device family is the same.)
The string that can be specified for MACHINE is determined by the file name stored under conf/machine in the meta-intel-fpga layer. Please refer to the following link for the actual contents. You can also select the Yocto version from the pull-down menu and the switch button at the top right of the page.
Example: List of MACHINE definitions for version 5.2.4 (walnascar) (Quoted from https://git.yoctoproject.org)
・PREFERRED_PROVIDER_virtual/kernel, PREFERRED_VERSION_linux-socfpga-lts:
Specify Linux kernel version. (meta-intel-fpga/recipes-kernel Select the kernel version to build from the following recipes)
・DISTRO_FEATURES:append, VIRTUAL-RUNTIME_init_manager :
Specify to use "systemd" for Linux startup and system management.
・IMAGE_FSTYPES: Specify the format of the file system to be generated.
In the procedure for the new environment, "IMAGE_FSTYPES:remove = "multiubi"" is specified in local.conf so that UBIFS is not generated. The purpose of this change is to prevent errors due to UBIFS size overflow when the generated image size is large.
The following options are specified to organize the configuration under the working directory. (optional)
・DL_DIR : Specify the location of the files to be fetched (downloaded) during build execution.
・DEPLOY_DIR : Specifies where to store images generated as a result of build execution.
Other options are not mandatory, so if you are interested in them, please refer to the official Yocto documentation.
3-2. Extended settings: settings for bootloader build (optional for V series, mandatory for other families)
If you are targeting Arria® 10 FPGA / Stratix® 10 FPGA / Agilex™ 7 FPGA / Agilex™ 5 FPGA / Agilex™ 3 FPGA, you will also need to configure the following settings if you are targeting the V series and want Yocto to build the bootloader for you.
The required settings depend on the boot flow; if you are targeting the V-Series or Arria® 10 FPGA, only the settings for U-Boot are required. For Stratix® 10 FPGA / Agilex™ 7 FPGA / Agilex™ 5 FPGA / Agilex™ 3 FPGA, the Arm Trusted Firmware (ATF) version must be specified in addition to the U-Boot settings. This section describes how to specify the version of both U-Boot and ATF for all families.
In addition, where a device family is specified in the command such as 'require conf/machine/agilex5-*.conf', replace it with cyclone5 or arria10 depending on the target to be used.
echo 'PREFERRED_PROVIDER_virtual/bootloader = "u-boot-socfpga"' >> conf/local.conf
echo 'PREFERRED_VERSION_u-boot-socfpga = "v2025.07%"' >> conf/local.conf
echo 'PREFERRED_VERSION_arm-trusted-firmware = "v2.13"' >> conf/local.conf
echo 'require conf/machine/agilex5-gsrd.conf' >> conf/local.conf
# Set the UBOOT_CONFIG:xx from MACHINE-socdk-atf (ex. "stratix10-socdk-atf") or MACHINE-socdk (ex. "cyclone5-socdk").
# xx is MACHINE Name (ex. "agilex7_dk_si_agf014ea").
echo 'UBOOT_CONFIG:agilex5 = "agilex5-socdk-atf"' >> conf/local.conf
echo 'IMAGE_TYPE:agilex5 = "gsrd"' >> conf/local.confDepending on the target you select, you may need to specify pre-built FPGA configuration data (.rbf). Make the following settings as necessary.
This setting (RBO_RELEASE_VER) specifies the location of the rbf-source folder on the Rocketboards.org Release site. "2025.10" specifies the FPGA configuration data (.rbf) located at Index of /2025.10/rbf-source/ (rocketboards.org).
echo 'RBO_RELEASE_VER:agilex5 = "2025.10"' >> conf/local.confAs of February 2024, if you are using Yocto 4.3 (nanbield) to target Arria® 10 FPGA or Stratix® 10 FPGA, you must also set the following
echo 'EXTRA_IMAGEDEPENDS:remove:arria10 = "u-boot-socfpga-env"' >> conf/local.conf
echo 'EXTRA_IMAGEDEPENDS:remove:stratix10 = "u-boot-socfpga-env"' >> conf/local.conf
Here, the main specifications are as follows
・PREFERRED_PROVIDER_virtual/bootloader, PREFERRED_VERSION_u-boot-socfpga :
Specify the U-Boot version. (meta-intel-fpga/recipes-bsp/u-boot Select the U-Boot version to be built from the following recipes.)
・PREFERRED_VERSION_arm-trusted-firmware: Specify the ATF version.
(meta-intel-fpga/recipes-bsp/arm-trusted-firmware Select the ATF version to build from the following recipes.)
・require conf/machine/xxxx-extra.conf (xxxx-gsrd.conf):
Specify an extended config file containing boot loader-related settings.
・UBOOT_CONFIG: Used to select defconfig for U-Boot build.
(Select from "agilex5-socdk-atf", "agilex7_dk_si_agf014ea-socdk-atf", "stratix10-socdk-atf", "arria10-socdk", "cyclone5-socdk". (For other choices, please refer to the recipe description.)
・IMAGE_TYPE :
Specify "gsrd" for Golden System Reference Design.
(Normally, specify "gsrd". You may want to specify something other than "gsrd" when targeting other designs.)
4. Execution of build (bitbake)
Yocto uses a tool called bitbake to execute builds. Execute the bitbake command on the terminal where the setup script was executed in the previous step to start the build process. If you want to start a new terminal and run the build again under the Yocto environment that you have built before, please run the setup script (poky/oe-init-build-env) beforehand.
If you want to change options or recipes, please edit build/conf/local.conf and layers files with a text editor after running the setup script and before running bitbake.
cd ~/poky-socfpga
source poky/oe-init-build-env
bitbake <Specify target image>In the <Specify target image> section, specify the following according to the build target.
- U-Boot ................................ virtual/bootloader
- Linux Kernel ...................... virtual/kernel
- Linux Root Filesystem ... gsrd-console-image, console-image-minimal, etc.
(selected from recipes under recipes-images)
It is also possible to specify more than one as follows.
bitbake virtual/bootloader gsrd-console-imageWhen building the Linux Root Filesystem, you do not need to specify virtual/kernel because the Linux Kernel is also required. (The Linux Kernel will be built automatically.)
Then, wait for the build to complete. Depending on the machine specs and network speed, it may take more than 3 hours to complete the build of the complete GSRD environment including the Linux Root Filesystem.
In the event of an error, the terminal messages and log files will help you find the cause of the error. (The message will indicate which log file to refer to.) After correcting the cause, run bitbake again.
If the build succeeds to the end, you will see a message starting with "NOTE: Tasks Summary: " as shown below, followed by " all succeeded. " is displayed.
Screen at the time of successful build (bitbake gsrd-console-image)
5. Confirming the build result
If the build is successful, each image file is generated in the following location. (In the following, replace "agilex5" with "arria5" or "cyclone5" depending on the target device.)
~/poky-socfpga/deploy/images/agilex5/
The required files are shown below.
- Root Filesystem
gsrd-console-image-agilex5.rootfs.tar.gz ... Other files in jffs2 format will also be generated.
gsrd-console-image-agilex5.rootfs.manifest ... List of packages in Root Filesystem - Linux Kernel
Image, Image.lzma ... Other device families may use a different format, such as zImage. - Linux Module format drivers (.ko) are archived and output under the following names
modules-agilex5.tgz - Linux Device Tree (.dtb)
socfpga_agilex5_socdk.dtb etc. - Linux FIT (Flattened uImage Tree) Image ( required only if you use the boot method with FIT Image)
kernel.itb ... Image that combines the Kernel and device tree into a single file - Linux boot options file (required only if you use a boot loader that supports extlinux)
extlinux.conf
Now all that is left is to create a boot SD card image based on the above image file.
RocketBoards.org "Creating and Updating SD Card"
Macnica Altera FPGA Insights "How to Create SD Card Image for SoC FPGA Boot"
6. Summary
The steps described in this article can be followed to create a Linux image equivalent to GSRD. When building your original environment, understanding how to customize the Yocto environment is key, so please refer to the official Yocto documentation.
yoctoproject.org "Welcome to the Yocto Project Documentation - The Yocto Project ® dev documentation"