現在位置 : ホーム  > PIXELA Technical Expertise  > Petalinux  > Petalinux をビルドする

Petalinuxを動かしてみる
Petalinux をビルドする

公開日:2023年1月5日

前記事では Petalinux 開発環境を整えました。Ubuntu 上で以下、各種 Petalinux コマンドが利用可能になっていると思います。

$ petalinux-
petalinux-boot     petalinux-config   petalinux-devtool  petalinux-upgrade
petalinux-build    petalinux-create   petalinux-package  petalinux-util

本記事では、それらを使って Zybo Z7-20 上で動作させる Petalinux をビルドします。

ハードウェアを構築する

まず、Zybo Z7-20 用の簡単なハードウェア構築を Vivado を用いて行います。

以下、簡単に手順を記載します。
手順の詳細についてはVivado について解説している記事をご覧ください。

  1. Vivado で新規プロジェクトを作成する
  2. Vivado でブロックデザインを作成する
    1. ZYNQ7 Prosessing System を追加し、[Run Block Automation] をクリックする
    2. FCLK_CLK0 と M_AXI_GP0_ACLK を接続する
      以下のようになっていれば作成完了です。
  3. Create HDL Wrapper を行う
  4. Generate Bitstream を行う
  5. File -> Export -> [Export Hardware...] を選択し、Output にて、[Include bitstream] をチェックしてハードウェア構築を完了する
    生成される XSA ファイルの名前や出力先を変更出来ますが、本記事ではそのままとします

完了するとプロジェクト作成時に指定したディレクトリに design_1_wrapper.xsa が生成されます。

Petalinux プロジェクト作成

それでは Petalinux コマンドを利用してビルド作業を行っていきます。

まずは Petalinux プロジェクトを作成します。
プロジェクトはどこに作ることも可能ですが、対応するハードウェアがはっきりするように、先ほど作成した Vivado のプロジェクトディレクトリの中に作成します。

// Vivado プロジェクトディレクトリに移動
$ cd /home/username/workspace/petalinux1

// peta_project という名前の Petalinux プロジェクト名で作成(名前は任意)
$ petalinux-create --type project --template zynq --name peta_project
NFO: Create project: peta_project
INFO: New project successfully created in /home/username/workspace/petalinux1/peta_project

Vivado での成果物 design_1_wrapper.xsa を含め、以下のようなディレクトリ構成になっていると思います。

$ ls
design_1_wrapper.xsa  petalinux1.cache  petalinux1.hw             petalinux1.runs  petalinux1.srcs
peta_project          petalinux1.gen    petalinux1.ip_user_files  petalinux1.sim   petalinux1.xpr

Petalinux システムコンフィグレーション

次に Vivado で作成したハードウェア構成で Petalinux プロジェクトを初期化します。

// 作成した Petalinux プロジェクトディレクトリに移動
$ cd peta_project

// Vivado で作成した XSA ファイルを指定してシステムコンフィグレーション実施
$ petalinux-config --get-hw-description=../design_1_wrapper.xsa
[INFO] Sourcing buildtools
INFO: Getting hardware description...
INFO: Renaming design_1_wrapper.xsa to system.xsa
[INFO] Generating Kconfig for project
[INFO] Menuconfig project

petalinux-config を実行すると以下のようなメニューが表示されます。

UIイメージ

[Image Packaging Configuration --->] を選択し、先頭の [ Root filesystem type (xxxx) --->] の部分を確認してください。括弧内が EXT4 (SD/eMMC/SATA/USB) になっていなければ、変更してください。

UIイメージ

[Save] -> [Ok] -> [Exit] を選択して設定を保存し、さらに [Exit] を2回選択してメニューを閉じてください。

*** End of the configuration.
*** Execute 'make' to start the build or try 'make help'.

[INFO] Extracting yocto SDK to components/yocto. This may take time!
[INFO] Sourcing build environment
[INFO] Generating kconfig for Rootfs
[INFO] Silentconfig rootfs
[INFO] Generating plnxtool conf
[INFO] Adding user layers
[INFO] Generating workspace directory

Petalinux ビルド

最後に Petalinux をビルドします。

ビルド時に複数の ftp, git サーバーなどへのアクセスが行われるため、ネットワークに接続した状態でビルドしてください。
ビルドには数分かかります。ネットワーク回線が細かったり障害が起こると、ビルドにさらに時間がかかったり途中で止まる可能性もありますのでご注意ください。

$ petalinux-build
[INFO] Sourcing buildtools
[INFO] Building project
[INFO] Sourcing build environment
[INFO] Generating workspace directory
INFO: bitbake petalinux-image-minimal
NOTE: Started PRServer with DBfile: /home/username/workspace/petalinux1/peta_project/build/cache/prserv.sqlite3, Address: 127.0.0.1:44629, PID: 18569
Loading cache: 100% |                                                                                                                                                                      | ETA:  --:--:--
Loaded 0 entries from dependency cache.
Parsing recipes: 100% |#####################################################################################################################################################################| Time: 0:00:55
Parsing of 3592 .bb files complete (0 cached, 3592 parsed). 5394 targets, 554 skipped, 0 masked, 0 errors.
NOTE: Resolving any missing task queue dependencies
NOTE: Fetching uninative binary shim file:///home/username/workspace/petalinux1/peta_project/components/yocto/downloads/uninative/126f4f7f6f21084ee140dac3eb4c536b963837826b7c38599db0b512c3377ba2/x86_64-nativesdk-libc-3.4.tar.xz;sha256sum=126f4f7f6f21084ee140dac3eb4c536b963837826b7c38599db0b512c3377ba2 (will check PREMIRRORS first)
Initialising tasks: 100% |##################################################################################################################################################################| Time: 0:00:05
Checking sstate mirror object availability: 100% |##########################################################################################################################################| Time: 0:00:18
Sstate summary: Wanted 1577 Local 0 Network 1358 Missed 219 Current 0 (86% match, 0% complete)
NOTE: Executing Tasks

...

途中でエラーが発生してビルドに失敗する場合があります。その場合はもう一度続けてビルドしてみてください。

// ビルド途中でエラーが発生
WARNING: base-files-soc-2022.1-r0 do_package_qa_setscene: Failed to fetch URL file://78/9e/sstate:base-files-soc:zynq-7z-xilinx-linux-gnueabi:2022.1:r0:zynq-7z:7:789e357513ef1fb7126affed8b1bd732a4a0afec0783b03391ac8f89cdd1e509_package_qa.tgz;downloadfilename=78/9e/sstate:base-files-soc:zynq-7z-xilinx-linux-gnueabi:2022.1:r0:zynq-7z:7:789e357513ef1fb7126affed8b1bd732a4a0afec0783b03391ac8f89cdd1e509_package_qa.tgz, attempting MIRRORS if available
ERROR: base-files-soc-2022.1-r0 do_package_qa_setscene: Fetcher failure: Unable to find file file://78/9e/sstate:base-files-soc:zynq-7z-xilinx-linux-gnueabi:2022.1:r0:zynq-7z:7:789e357513ef1fb7126affed8b1bd732a4a0afec0783b03391ac8f89cdd1e509_package_qa.tgz;downloadfilename=78/9e/sstate:base-files-soc:zynq-7z-xilinx-linux-gnueabi:2022.1:r0:zynq-7z:7:789e357513ef1fb7126affed8b1bd732a4a0afec0783b03391ac8f89cdd1e509_package_qa.tgz anywhere. The paths that were searched were:
    /home/username/workspace/petalinux1/peta_project/build/sstate-cache
    /home/username/workspace/petalinux1/peta_project/build/sstate-cache
WARNING: base-files-soc-2022.1-r0 do_package_qa_setscene: No sstate archive obtainable, will run full task instead.
ERROR: Logfile of failure stored in: /home/username/workspace/petalinux1/peta_project/build/tmp/work/zynq-7z-xilinx-linux-gnueabi/base-files-soc/2022.1-r0/temp/log.do_package_qa_setscene.26824
WARNING: Setscene task (/home/username/workspace/petalinux1/peta_project/components/yocto/layers/meta-petalinux/recipes-core/base-files/base-files-soc.bb:do_package_qa_setscene) failed with exit code '1' - real task will be run instead
NOTE: Tasks Summary: Attempted 4216 tasks of which 3727 didn't need to be rerun and all succeeded.

Summary: There were 2 WARNING messages shown.
Summary: There was 1 ERROR message shown, returning a non-zero exit code.
ERROR: Failed to build project. Check the /home/username/workspace/petalinux1/peta_project/build/build.log file for more details...
// 再度ビルドする
$ petalinux-build
[INFO] Sourcing buildtools
[INFO] Building project
[INFO] Sourcing build environment
[INFO] Generating workspace directory
INFO: bitbake petalinux-image-minimal
NOTE: Started PRServer with DBfile: /home/username/workspace/petalinux1/peta_project/build/cache/prserv.sqlite3, Address: 127.0.0.1:36647, PID: 136488
Loading cache: 100% |#######################################################################################################################################################################| Time: 0:00:00
Loaded 5392 entries from dependency cache.
Parsing recipes: 100% |#####################################################################################################################################################################| Time: 0:00:00
Parsing of 3592 .bb files complete (3590 cached, 2 parsed). 5394 targets, 554 skipped, 0 masked, 0 errors.
NOTE: Resolving any missing task queue dependencies
Initialising tasks: 100% |##################################################################################################################################################################| Time: 0:00:03
Checking sstate mirror object availability: 100% |##########################################################################################################################################| Time: 0:00:06
Sstate summary: Wanted 466 Local 17 Network 304 Missed 145 Current 1111 (68% match, 90% complete)
NOTE: Executing Tasks
NOTE: Tasks Summary: Attempted 4216 tasks of which 4212 didn't need to be rerun and all succeeded.
INFO: Failed to copy built images to tftp dir: /tftpboot
[INFO] Successfully built project

最後に [INFO] Successfully built project と出力されるとビルド完了です。
前記事同様、TFTP server は利用しないため、ここでは無視します。

images/linux にビルド結果が生成されます。

$ ls images/linux/
boot.scr      rootfs.cpio.gz         rootfs.tar.gz   u-boot.bin  zynq_fsbl.elf
config        rootfs.cpio.gz.u-boot  system.bit      u-boot.elf
image.ub      rootfs.ext4            system.dtb      uImage
pxelinux.cfg  rootfs.jffs2           u-boot-dtb.bin  vmlinux
rootfs.cpio   rootfs.manifest        u-boot-dtb.elf  zImage

文中に記載されている各種名称、会社名、商品名などは各社の商標もしくは登録商標です。

PIXELA Technical Expertise

当社が技術学習するための情報を体系的に整理したものです。多くのエンジニアの一助になればと考え公開しています。

Petalinux 記事一覧

Petalinuxを動かしてみる

PetalinuxでWavファイルを再生する(1)

PetalinuxでWavファイルを再生する(2)

応用編