※ 最新リファレンス環境と同じバージョン(Yocto 5.2.4 walnascar)に対応した内容へ更新しました。(2025年10月) |
はじめに
この記事では、Altera® SoC FPGA のシステム・リファレンス環境(GSRD: Golden System Reference Design)に採用されている Yocto Poky リファレンス Linux 環境のビルド手順を日本語で解説します。
Linux のビルド作業には SoC FPGA エンベデッド開発スイート (SoC EDS) を必要としないため、SoC EDS のインストール有無やバージョンを気にする必要はありません。SoC EDS は v20.1 Standard Edition もしくは v20.1 Pro Edition が最新かつ最終バージョンとなりますが、以前の SoC EDS バージョンをご使用の場合でも本手順で Linux 環境をビルドすることができます。
公式のビルド手順は Rocketboards.org もしくは altera-fpga.github.io の各デバイスファミリー向け GSRD のページを参照ください。
- 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』
公式手順は大半がスクリプト化されているため詳細を理解するにはスクリプトの内容を読解する必要があります。この記事では、公式のスクリプトを使用せず、ビルドに必要なコマンドをターミナル上で直接実行する内容としていますので、Yocto のビルド手順を理解するための参考としてもご使用ください。
手順
1. ホストマシンの準備
2. Yocto 環境のセットアップ - レシピの取得(初回のみ)
3. スクリプト実行および環境設定(初回のみ)
4. ビルド(bitbake)実行
5. ビルド結果の確認
本手順は Agilex™ 5 FPGA をターゲットに記載していますが、SoC FPGA の各デバイスファミリー(Cyclone® V FPGA / Arria® V FPGA / Arria® 10 FPGA / Stratix® 10 FPGA / Agilex™ 7 FPGA / Agilex™ 5 FPGA / Agilex™ 3 FPGA)共通で使用できる手順となっています。
一通りの手順を実行すると、Linux 起動用の SD カードイメージの作成に必要なファイル一式が生成可能となっていますが、Preloader/U-Boot (ブートローダー) と Linux デバイスツリーについては、ボードや FPGA 側のデザインなど、ハードウェアの差分を考慮する必要があるため、別のフローで対応することをお勧めします。
それぞれ、以下のページを参考に対応ください。
【Preloader/U-Boot(ブートローダー)】
- RocketBoards.org 『Building Bootloader for Cyclone V and Arria 10』
- RocketBoards.org 『Building Bootloader for Stratix 10』
- RocketBoards.org 『Building Bootloader for Agilex 7』
- RocketBoards.org 『Building Bootloader for Agilex 5』
- アルティマカンパニー 技術コンテンツ『新しい U-Boot のハンドオフやデバイスツリーの構成』
【Linux デバイスツリー】
- アルティマカンパニー 技術コンテンツ『SoC FPGA 向け Linux デバイスツリーの作成および編集方法』
ポイント:
Agilex™ 5 FPGA 搭載の Sulfur Type-A Development Kit 向けには以下のページを参照ください。
- アルティマカンパニー 技術コンテンツ『ブートローダー/Linux カーネルのビルド方法:for Mpression Sulfur Type-A Development Kit』
なお、この記事で紹介している Linux ビルド手順では、 ビルドシステムに Yocto Project(以下 Yocto) が採用されています。Yocto を利用する際には、git プロトコルによる外部ネットワークへのアクセスが必要となるので、ご利用のネットワーク環境で git が利用可能であることをご確認の上でビルド手順をお試しください。
以下に Yocto のバージョンおよびステータスを一覧表を示します。
【表 1】 Yocto バージョンとコードネームの対応ならびにステータス(2025年10月 現在)
| バージョン | コードネーム | ステータス / 補足 |
| 5.3 | whinlatter | Active Development(開発中) |
| 5.2 | walnascar | Current Release (Stable until Nov 2025)/最新 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) |
| : | : | : |
ポイント:
ステータスが Previous Release (EOL) となっているバージョンは、メンテナンスおよびアップデートが終了していることを意味します。EOL 後も Yocto 環境のダウンロードは可能となっているのでビルドの実行に支障はありません。
Yocto の詳細情報および環境のカスタマイズ方法については Yocto の公式ドキュメントを参照してください。
- 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』
【図 1】 この記事の内容と GSRD ビルドフローの関係(RocketBoards.org から引用)
1. ホストマシンの準備
Linux ベースのホストマシンを用意します。仮想マシンでの構築も可能ですが、50 GByte 以上の空きディスク容量が要件となっている点に注意が必要です。ただし、実際のところは 100 GByte 以上は用意しておいた方が良いと思います。50 GByte では 1 種類のイメージをビルドするだけで空き容量に余裕がなくなります。メモリーの要件は記載がありません。当方では 8 GByte で正常に動作しています。
ホストマシンの Linux ディストリビューションは、Yocto Project の公式ドキュメントにリストされている環境から選択して準備ください。この記事に記載の手順は、Ubuntu 22.04 (LTS) で確認をおこなっています。
- yoctoproject.org 『Supported Linux Distributions』
なお、最近の Yocto バージョンでは Windows Subsystem for Linux(WSL)での対応も可能となっているようです。ただし、WSLv1 には非対応のようなので、試す場合には WSLv2 で環境構築する必要がある点に注意が必要です。また、WSL を使用した手順は、公式ドキュメントでも非公式の手順と明記されています(WSL での環境構築を試す場合は自己責任でトライしてみてください)。
- yoctoproject.org 『Setting Up to Use Windows Subsystem For Linux (WSLv2)』
ここからがホストマシンの準備に必要な手順となります(22.04 (LTS) 向け)。
注記:
手順として記載するコマンドはユーザー権限のターミナル上($ で始まるプロンプト)で実行する前提で記載しています。誤って root 権限のターミナル(# で始まるプロンプト)を使用しないように注意してください。
以下のコマンドを実行して、ビルドに必要なパッケージの更新および追加を行ってください。これらのパッケージはイメージをビルドするために最低限必要なパッケージとなっています。
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
以下もインストールしてください。これらはドキュメントの作成に必要なパッケージです。
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-xetex必要に応じて、以下のパッケージもインストールしてください。最後の「 g++-multilib 」は公式ドキュメントには記載されておりません。過去に dunfell (Yocto 3.1.7) を使用してビルドした場合に発生したエラーの対策として手順に加えました。その他は、過去のバージョンで Yocto 公式の要件に含まれていたパッケージなので、最新バージョンを使用する上では必要ありません。
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
注記:
Ubuntu を使用の場合、dpkg-reconfigure コマンドを使用して標準のシェル(/bin/sh)を bash に切り替えてください。Yocto の手順を dash のターミナル上で行うとエラーが発生する事があります。
以下のコマンドを実行すると dash をシステムシェルに適用するかを問う <Yes> / <No> プロンプトが表示されます。<No> を選択することで bash へ切り替わります。(<Yes> で dash )
sudo dpkg-reconfigure dash
Ubuntu 22.04 (LTS) の場合は、ここまでの手順でホストマシンの準備が完了します。
その他のディストリビューションを使用される場合は、公式ドキュメントに記載の必要パッケージを確認してください。
- yoctoproject.org 『Required Packages for the Build Host』
また、以下の各パッケージのバージョンにも注意してください。各パッケージが要件を満たしていることも確認してください。
- Git 1.8.3.1 またはそれ以降のバージョン
- tar 1.28 またはそれ以降のバージョン
-
Python 3.9.0 またはそれ以降のバージョン
(※ Yocto バージョン 4.1 (langdale) 以前は 3.6.0 or grater、5.1 (styhead) 以前は 3.8.0 or greator) -
GNU make 4.0 またはそれ以降のバージョン
(※ Yocto バージョン 4.1 (langdale) から追加された要件です) -
gcc 10.1 またはそれ以降のバージョン
(※ Yocto バージョン 4.1 (langdale) 以前は 7.5 or grater、5.1 (styhead) 以前は 8.0 or grater)
ポイント:
公式ドキュメントでは、上記を満たさないディストリビューションを使用するユーザー向けに要件に合ったバージョンのツール類を含む buildtools をインストールする手順も紹介されていますので、必要に応じて参照してください。
- yoctoproject.org 『Required Git, tar, Python and gcc Versions』
2. Yocto 環境のセットアップ - レシピの取得(初回のみ)
以下のコマンドを実行することで、Yocto パッケージ(ビルドツール類)とビルド手順の指示が記載されたレシピファイル(.bbclass .bb など)を含む meta レイヤー構造が、作業ディレクトリー "poky-socfpga" 直下の layers ディレクトリー以下に展開されます(作業ディレクトリー "poky-socfpga" は任意の名前で構いません)。
以下は 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 .. ポイント:
git clone コマンドの -b オプションに指定するブランチ名には Yocto バージョンの名称(styhead、scarthgap、kirkstone など)を指定します。最新版を指定したい場合には -b master を指定してください(上の例では、export で設定している環境変数 YOCTO_VER の指定変更にて対応できます)。
ポイント:
レシピが格納される meta-xxxx という名前のフォルダーは meta レイヤーと呼ばれます。各レイヤーには該当のレイヤーの情報を含む conf/layer.conf という設定ファイルが格納されています。layer.conf の中には LAYERSERIES_COMPAT_meta-xxxx という書式で該当のレイヤーが対応する Yocto バージョンが規定されているので、異なる Yocto バージョンを使用する場合には layer.conf の内容にも注意が必要になります。
例えば、meta-intel-fpga の場合は『 LAYERSERIES_COMPAT_meta-intel-fpga = "master honister" 』のような設定が記述されており、master(最新版)と honister(Yocto 3.4)に対応していることを意味します。複数の Yocto バージョンに対応しているレイヤーであれば、『 LAYERSERIES_COMPAT_meta-intel-fpga = "dunfell gatesgarth hardknott" 』のように異なる複数のバージョンを記述しているケースも存在します。
ヒント:
コマンド例では作業ディレクトリーを ~/poky-socfpga として記載しています。別のディレクトリーで作業することも可能ですが、その場合は ~/poky-socfpga で記載される作業ディレクトリーを別のパスへ差し替えて実行してください。
3. スクリプト実行および環境設定(初回のみ)
3-1. Linux ビルド用の設定(全デバイスファミリー共通)
以下のコマンドを実行することで、ビルド環境のセットアップをおこないます。
最初に poky 直下に格納されている oe-init-build-env というセットアップ・スクリプトを実行します。このスクリプトを実行すると、ビルドに必要な環境変数のセットアップなどがおこなわれ、カレント・ディレクトリーが poky-socfpga/build へ移動します。build/conf ディレクトリー以下には、bblayers.conf, local.conf と呼ばれる設定ファイルが生成されます。
cd ~/poky-socfpga
# Run script to initialize the build environment for bitbake
# Note: You will be redirect to "build" folder once you execute the command below
source poky/oe-init-build-env以下のコマンドにて、build/conf/bblayers.conf の設定を書き換えます。
ここでは、poky 以外に取得したレイヤー構造( meta-intel-fpga, meta-intel-fpga-refdes, meta-openembedded/meta-xxxx )をビルド対象に加えるための設定を追記しています。
# 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
以下のコマンドにて、build/conf/local.conf の設定を書き換えます。
local.conf には、ビルドに関する様々なオプションを指定するための各種変数が記述されています。
# 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 注記:
過去 Yoct 3.4(honister)のリリース時点で、レシピや .conf ファイルへの設定書式の一部に変更が入っています。詳細は Yocto 3.4 のリリース内容をご確認ください。Yocto に関連した Web 情報を参考にする場合に、古い書式の情報が含まれる場合があるのでご注意ください。
- yoctoproject.org 『 Release 3.4 (honister) — The Yocto Project® 3.4 documentation 』
ここでは、主に以下の指定をおこなっています。
-
MACHINE
ビルドターゲットとする機種を指定(SoC FPGA の場合は、cyclone5 / arria5 / arria10 / stratix10 / agilex から選択します)。
※ バージョン 4.1(langdale)以降で agilex をターゲットとする場合は、複数の選択肢から機種を選んで指定する必要があります。
【バージョン 4.1(langdale)向け】
【バージョン 4.2(mickledore)以降向け】
-
- 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_agm039fes
Agilex™ 7 FPGA M-Series Development Kit - HBM2e Edition (3x F-Tile & 1x R-Tile)
- agilex7_dk_si_agf014ea/agf014eb
※ バージョン 5.0.5(scarthgap)以降は agilex5 の選択肢も増えています。以下の情報を参考に MACHINE の指定を行ってください。尚、ブートローダーおよび Linux のビルドを Yocto 以外のフローで行う場合はターゲットボードの詳細は指定不要になります(Root File System については、デバイスファミリーが合っていれば他のボード向けに使い回すことも可能です)。
MACHINE に指定可能な文字列は meta-intel-fpga レイヤーの conf/machine 以下に格納されているファイル名で決まります。実際の内容は以下のリンク先を参照ください。ページ右上のプルダウンおよび switch ボタンより Yocto バージョンも選択できます。
machine « conf - meta-intel-fpga - Layer containing Intel SoCFPGA hardware support metadata (yoctoproject.org)
【図 2】 バージョン 5.2.4(walnascar)向け MACHINE 定義一覧の例(https://git.yoctoproject.org より引用)
-
PREFERRED_PROVIDER_virtual/kernel, PREFERRED_VERSION_linux-socfpga-lts
Linux カーネルバージョンの指定(meta-intel-fpga/recipes-kernel 以下のレシピからビルド対象のカーネルバージョンを選択します)。 -
DISTRO_FEATURES:append, VIRTUAL-RUNTIME_init_manager
Linux の起動・システム管理に "systemd" を使用するための指定。 -
IMAGE_FSTYPES
生成するファイルシステムの形式を指定。
※補足: 本手順では local.conf に「IMAGE_FSTYPES:remove = "multiubi"」を指定することで UBIFS を生成しないように変更しています。生成されるイメージサイズが大きい場合に UBIFS のサイズ超過によるエラーが発生することを抑止する目的で変更しているため、UBIFS を生成したい場合には該当の記述を削除してください。
以下のオプションは、作業ディレクトリー以下の構成を整理するために指定しています(指定は任意です)。
-
DL_DIR
ビルド実行時に Fetch (ダウンロード)されるファイルの格納先を指定。 -
DEPLOY_DIR
ビルド実行の結果、生成されるイメージの格納先を指定。
その他のオプションについても必須の内容ではないので、気になる場合は Yocto 公式ドキュメントを調べてみてください。
3-2. 拡張設定:ブートローダー・ビルド用の設定(V シリーズはオプション、他のファミリーは必須)
Arria® 10 FPGA / Stratix® 10 FPGA / Agilex™ 7 FPGA / Agilex™ 5 FPGA / Agilex™ 3 FPGA をターゲットとする場合には以下の設定も必要となります。V シリーズをターゲットにする場合でブートローダーのビルドも Yocto で実施したい場合にもこの設定をおこないます。
必要となる設定項目は、ブートフローにより異なります。V シリーズや Arria® 10 FPGA をターゲットする場合は、U-Boot 向けの設定のみ。Stratix® 10 FPGA / Agilex™ 7 FPGA / Agilex™ 5 FPGA / Agilex™ 3 FPGA の場合は、U-Boot 向けの設定に加えて Arm Trusted Firmware(ATF)のバージョン指定も必要となります。ここでは、全てのファミリー共通で U-Boot と ATF の両方に対してバージョンの指定をおこないます。
なお、'require conf/machine/agilex5-*.conf' など、コマンド内にデバイスファミリーの指定がある箇所は、使用するターゲットに応じて cyclone5 や arria10 に置き換えて実行してください。
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.conf選択するターゲットによってはビルド済みの FPGA コンフィグレーションデータ(.rbf)の指定が必要な場合があります。必要に応じて以下の設定もおこなってください。
この設定(RBO_RELEASE_VER)では、Rocketboards.org の Release サイトにある rbf-source フォルダーの所在を指定しています。"2025.10" の指定により Index of /2025.10/rbf-source/ (rocketboards.org) にある FPGA コンフィグレーションデータ(.rbf)が使用されます。
echo 'RBO_RELEASE_VER:agilex5 = "2025.10"' >> conf/local.conf2024年2月現在、Yocto 4.3(nanbield)を使用して Arria® 10 FPGA もしくは Stratix® 10 FPGA をターゲットにする場合は以下の設定もおこなってください。
echo 'EXTRA_IMAGEDEPENDS:remove:arria10 = "u-boot-socfpga-env"' >> conf/local.conf
echo 'EXTRA_IMAGEDEPENDS:remove:stratix10 = "u-boot-socfpga-env"' >> conf/local.conf
ここでは、主に以下の指定をおこなっています。
-
PREFERRED_PROVIDER_virtual/bootloader, PREFERRED_VERSION_u-boot-socfpga
U-Boot バージョンの指定(meta-intel-fpga/recipes-bsp/u-boot 以下のレシピからビルド対象の U-Boot バージョンを選択します)。 -
PREFERRED_VERSION_arm-trusted-firmware
ATF バージョンの指定(meta-intel-fpga/recipes-bsp/arm-trusted-firmware 以下のレシピからビルド対象の ATF バージョンを選択します)。 -
require conf/machine/xxxx-extra.conf(xxxx-gsrd.conf)
ブートローダー関連の設定を含む拡張コンフィグファイルを指定。 -
UBOOT_CONFIG
U-Boot ビルド時の defconfig の選択などに使用されます("agilex5-socdk-atf", "agilex7_dk_si_agf014ea-socdk-atf", "stratix10-socdk-atf", "arria10-socdk", "cyclone5-socdk" から選択します。その他の選択肢はレシピの記述を参照ください)。 -
IMAGE_TYPE
評価ボード用のリファレンスデザイン(Golden System Reference Design)向けには "gsrd" を指定(通常は "gsrd" を指定してください。その他のデザインをターゲットにする場合に "gsrd" 以外を指定する場合があります)。
4. ビルド(bitbake)実行
Yocto によるビルド実行は、bitbake というツールを利用します。前の手順でセットアップ・スクリプトを実行したターミナル上で、bitbake コマンドを実行することでビルド作業が開始します。新規でターミナルを起動し、以前に構築した Yocto 環境下で再度ビルドを実行する場合には、事前にセットアップ・スクリプト(poky/oe-init-build-env)を実行してください。
なお、オプションやレシピの変更をおこなう場合には、セットアップ・スクリプト実行の後、bitbake 実行前に build/conf/local.conf や layers 以下のファイルをテキストエディターにて編集してください。
cd ~/poky-socfpga
source poky/oe-init-build-env
bitbake <ターゲットイメージの指定><ターゲットイメージの指定>の部分には、ビルド対象に応じて以下の通りに指定してください。
- U-Boot ............................. virtual/bootloader
- Linux Kernel .................... virtual/kernel
- Linux Root Filesystem ... gsrd-console-image、console-image-minimal など(recipes-images 以下のレシピより選択)
以下のように複数指定することも可能です。
bitbake virtual/bootloader gsrd-console-imageLinux Root Filesystem をビルドする場合には、 Linux Kernel も必要となるため、virtual/kernel を指定する必要はありません(自動的に Linux Kernel もビルドされます)。
あとはビルド完了を待ちます。マシンスペックとネットワーク速度によりますが、Linux Root Filesystem を含む GSRD 環境一式のビルド作業が完了するまでには、3 時間以上を要します。
なお、エラーが発生した場合は、ターミナルのメッセージとログファイルを手がかりに原因を取り除きます(メッセージに参照すべきログファイルが示されます)。
原因を修正したら再度 bitbake を実行します。
最後までビルド成功した場合には、以下のように "NOTE: Tasks Summary: " から始まるメッセージに "all succeeded." と表示されます。
【図 3】 ビルド成功時の画面(bitbake gsrd-console-image)
5. ビルド結果の確認
ビルドが成功した場合は、以下の場所に各イメージファイルが生成されます(以下、agilex5 の部分はターゲットデバイスに応じて arria5 や cyclone5 に読み替えてください)。
| ~/poky-socfpga/deploy/images/agilex5/ |
必要となるファイルを以下に示します。
Root Filesystem
gsrd-console-image-agilex5.rootfs.tar.gz ... 他に jffs2 形式のファイルも生成されます
gsrd-console-image-agilex5.rootfs.manifest ... Root Filesystem に含まれるパッケージリストLinux Kernel
Image, Image.lzma ... 他のデバイスファミリーでは zImage など、異なる形式を使用する場合があります。Linux Module 形式のドライバー(.ko)
以下の名前にアーカイブされて出力されます。
modules-agilex5.tgzLinux デバイスツリー(.dtb)
socfpga_agilex5_socdk.dtb などLinux FIT (Flattened uImage Tree) Image
FIT Image を使用したブート方法を利用する場合に限り必要です。
kernel.itb ... Kernel やデバイスツリーを1つのファイルに結合したイメージLinux 起動オプションファイル :
extlinux 対応のブートローダーを使用する場合に限り必要です。
extlinux.conf
あとは、上記のイメージファイルを元にブート用 SD カードイメージを作成すれば完了です。
SD カードイメージの生成については下記のページを参照ください。
- RocketBoards.org 『Creating and Updating SD Card』
- アルティマカンパニー 技術コンテンツ『SoC FPGA ブート用 SD カードイメージの作り方』
まとめ
GSRD 相当の Linux イメージの作成までは、この記事に記載した手順を参考に進めることで実施可能です。オリジナルの環境を構築する際には、Yocto 環境のカスタマイズ方法を理解することが鍵になるので、Yocto 公式ドキュメントの内容を参照してご対応ください。
- yoctoproject.org 『Welcome to the Yocto Project Documentation — The Yocto Project ® dev documentation』