組込みLinuxの開発方法 - cybertrust.co.jp ·...

22
Copyright Cybertrust Japan Co., Ltd. All rights reserved. 公開 組込みLinuxの開発方法 ~BSPを使った組込みLinuxのビルド~ 2019/03/12 サイバートラスト株式会社 OSS技術本部 第一組込技術部 山根大典

Transcript of 組込みLinuxの開発方法 - cybertrust.co.jp ·...

Page 1: 組込みLinuxの開発方法 - cybertrust.co.jp · bitbake(ビルドエンジン)がレシピ(手順書)を元に処理を実行 レシピはレイヤー単位で提供 レイヤーを重ねることで既存のレシピの修正や置換が可能

Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開

組込みLinuxの開発方法~BSPを使った組込みLinuxのビルド~

2019/03/12サイバートラスト株式会社

OSS技術本部 第一組込技術部

山根大典

Page 2: 組込みLinuxの開発方法 - cybertrust.co.jp · bitbake(ビルドエンジン)がレシピ(手順書)を元に処理を実行 レシピはレイヤー単位で提供 レイヤーを重ねることで既存のレシピの修正や置換が可能

Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開

目次

● 目次

● Yocto Projectについて

● BSP(Board Support Package)を使った組込みLinuxのビルド○ 開発環境

○ 事前準備/BSPのダウンロード

○ プロプライエタリ・ソフトウェアの準備 / ビルド環境のセットアップ

○ 設定ファイルの編集

○ ビルド

○ 実機へインストール

● BSPのカスタマイズ(事例紹介)○ カスタムボードへの移植

● 参考文献

Page 3: 組込みLinuxの開発方法 - cybertrust.co.jp · bitbake(ビルドエンジン)がレシピ(手順書)を元に処理を実行 レシピはレイヤー単位で提供 レイヤーを重ねることで既存のレシピの修正や置換が可能

Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開

● 組み込み用カスタムLinuxOSを開発するためのオープンソースプロジェクト群○ https://www.yoctoproject.org/

● 組み込みLinuxをビルドするための環境を提供○ CPU非依存

○ ソースコードベース

○ クロスコンパイル環境(SDK)も提供

● Yocto Projectの共通要素○ poky: リファレンスビルドシステム

○ bitbake: ビルドエンジン

Yocto Project (YP)

Yocto Project® について

OpenEmbedded

Poky

meta-openembedded

metadatabitbake (build engine)

meta-pokymeta-yocto-bspDocumentation

YP Compatible BSPsYP compatible Layers

Page 4: 組込みLinuxの開発方法 - cybertrust.co.jp · bitbake(ビルドエンジン)がレシピ(手順書)を元に処理を実行 レシピはレイヤー単位で提供 レイヤーを重ねることで既存のレシピの修正や置換が可能

Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開

● ビルドエンジン(bitbake)がレシピ(手順書)を元に処理を実行

Yocto Project® について

ソースコードのダウンロード

ソースコードの展開

パッチの適用

ソフトウェアのコンパイル

生成物をパッケージ化

レシピ解析 レシピの依存関係やビルド手順を解析

git, svn, ssh, httpなどの形式を指定可能※ https://www.yoctoproject.org/docs/2.4.2/ref-manual/ref-manual.html#var-SRC_URI

ファイル名が*.patch, *.diffのパッチファイルがあれば自動的に適用※ https://www.yoctoproject.org/docs/2.4.2/ref-manual/ref-manual.html#ref-tasks-patch

Page 5: 組込みLinuxの開発方法 - cybertrust.co.jp · bitbake(ビルドエンジン)がレシピ(手順書)を元に処理を実行 レシピはレイヤー単位で提供 レイヤーを重ねることで既存のレシピの修正や置換が可能

Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開

● bitbake(ビルドエンジン)がレシピ(手順書)を元に処理を実行

● レシピはレイヤー単位で提供

Yocto Project® について

優先度: 高

優先度: 低poky/meta busybox linux-yocto

meta-poky busybox

meta-vendor linux-yocto bootloader

Page 6: 組込みLinuxの開発方法 - cybertrust.co.jp · bitbake(ビルドエンジン)がレシピ(手順書)を元に処理を実行 レシピはレイヤー単位で提供 レイヤーを重ねることで既存のレシピの修正や置換が可能

Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開

● bitbake(ビルドエンジン)がレシピ(手順書)を元に処理を実行

● レシピはレイヤー単位で提供

● レイヤーを重ねることで既存のレシピの修正や置換が可能

Yocto Project® について

優先度: 高

優先度: 低poky/meta busybox linux-yocto

meta-poky busybox 修正

追記

meta-vendor linux-yocto bootloader

Page 7: 組込みLinuxの開発方法 - cybertrust.co.jp · bitbake(ビルドエンジン)がレシピ(手順書)を元に処理を実行 レシピはレイヤー単位で提供 レイヤーを重ねることで既存のレシピの修正や置換が可能

Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開

BSPを使った組込みLinuxのビルド

Page 8: 組込みLinuxの開発方法 - cybertrust.co.jp · bitbake(ビルドエンジン)がレシピ(手順書)を元に処理を実行 レシピはレイヤー単位で提供 レイヤーを重ねることで既存のレシピの修正や置換が可能

Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開

ホストPC: Ubuntu 16.04

ターゲット: Renesas Salvator-X board (with R-Car H3)

BSP: Yocto-BSP v3.9.0

poky: v2.4.2

開発環境

Page 9: 組込みLinuxの開発方法 - cybertrust.co.jp · bitbake(ビルドエンジン)がレシピ(手順書)を元に処理を実行 レシピはレイヤー単位で提供 レイヤーを重ねることで既存のレシピの修正や置換が可能

Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開

● 事前準備(環境構築)

https://elinux.org/R-Car/Boards/Yocto-Gen3#Preliminary_steps を参照

1. プロプラエタリ・ソフトウェアをインストール(グラフィックやMMPが必要な場合)

2. 必要なパッケージのインストール

BSPを使った組込みLinuxのビルド

Page 10: 組込みLinuxの開発方法 - cybertrust.co.jp · bitbake(ビルドエンジン)がレシピ(手順書)を元に処理を実行 レシピはレイヤー単位で提供 レイヤーを重ねることで既存のレシピの修正や置換が可能

Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開

● BSPのダウンロード

BSPを使った組込みLinuxのビルド

$ cd ${WORK}$ git clone git://git.yoctoproject.org/poky # poky本体$ git clone git://git.linaro.org/openembedded/meta-linaro.git # linaroのtoolchain用$ git clone git://git.openembedded.org/meta-openembedded # OE-coreを補足するレイヤー群$ git clone git://github.com/renesas-rcar/meta-renesas.git # BSP本体

$ cd $WORK/poky$ git checkout -b tmp 342fbd6a3e57021c8e28b124b3adb241936f3d9d$ cd $WORK/meta-openembedded$ git checkout -b tmp dacfa2b1920e285531bec55cd2f08743390aaf57$ cd $WORK/meta-linaro$ git checkout -b tmp 75dfb67bbb14a70cd47afda9726e2e1c76731885$ cd $WORK/meta-renesas$ git checkout -b tmp fd078b6ece537d986852cb827bd21e022a797b2f

Page 11: 組込みLinuxの開発方法 - cybertrust.co.jp · bitbake(ビルドエンジン)がレシピ(手順書)を元に処理を実行 レシピはレイヤー単位で提供 レイヤーを重ねることで既存のレシピの修正や置換が可能

Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開

● プロプライエタリ・ソフトウェアの準備(GUIやMMPが必要な場合)

BSPを使った組込みLinuxのビルド

$ cd ${WORK}/renesas-rcar$ ./meta-rcar-gen3/docs/sample/copyscript/copy_proprietary_softwares.sh ${PROPRIETARY_DIR}

Page 12: 組込みLinuxの開発方法 - cybertrust.co.jp · bitbake(ビルドエンジン)がレシピ(手順書)を元に処理を実行 レシピはレイヤー単位で提供 レイヤーを重ねることで既存のレシピの修正や置換が可能

Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開

● ビルド環境のセットアップ

BSPを使った組込みLinuxのビルド

$ cd ${WORK}

# ビルド環境のセットアップ

$ source poky/oe-init-build-env

# 設定ファイルの準備 (BSPが提供するサンプルを使用)$ cp ${WORK}/meta-renesas/meta-rcar-gen3/docs/sample/conf/salvator-x/poky-gcc/bsp/*.conf \

./conf

$ ls -1 ./conf

bblayers.conf # 使用するレイヤを指定

local.conf # ビルド環境の設定ファイル

local-wayland.conf # weston込のビルド用の設定ファイル

Page 13: 組込みLinuxの開発方法 - cybertrust.co.jp · bitbake(ビルドエンジン)がレシピ(手順書)を元に処理を実行 レシピはレイヤー単位で提供 レイヤーを重ねることで既存のレシピの修正や置換が可能

Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開

BSPを使った組込みLinuxのビルド

● 設定ファイルの編集○ local.confを編集し、ターゲットのアーキテクチャやインストールするパッケージを設定

# U-boot/IPL option for H3 (SoC: r8a7795)# For H3 SiP DDR 4GiB (1GiB x 4ch)# H3_OPTION = "0"# For H3 SiP DDR 8GiB (2GiB x 4ch)H3_OPTION = "1"# For H3 SiP DDR 4GiB (2GiB x 2ch)#H3_OPTION = "2"

# U-boot/IPL option for H3 (SoC: r8a7795)# For H3 SiP DDR 4GiB (1GiB x 4ch)H3_OPTION = "0"# For H3 SiP DDR 8GiB (2GiB x 4ch)# H3_OPTION = "1"# For H3 SiP DDR 4GiB (2GiB x 2ch)#H3_OPTION = "2"

bootloaderのビルドオプションを変更

Page 14: 組込みLinuxの開発方法 - cybertrust.co.jp · bitbake(ビルドエンジン)がレシピ(手順書)を元に処理を実行 レシピはレイヤー単位で提供 レイヤーを重ねることで既存のレシピの修正や置換が可能

Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開

● ビルド

※ Renesas BSPが提供するイメージ

● core-image-minimal

○ 最低限の機能のみサポート

● core-image-weston

○ weston/waylandをサポート

● core-image-weston-sdk

○ クロス開発環境を提供するSDK(Software Development Kits)

BSPを使った組込みLinuxのビルド

$ bitbake core-image-minimal # 最小構成でビルド

Page 15: 組込みLinuxの開発方法 - cybertrust.co.jp · bitbake(ビルドエンジン)がレシピ(手順書)を元に処理を実行 レシピはレイヤー単位で提供 レイヤーを重ねることで既存のレシピの修正や置換が可能

Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開

● ビルド成果物

● Linuxの起動に必要なバイナリ

BSPを使った組込みLinuxのビルド

$ ls -1 tmp/deploy/images/salvator-x/bl2-salvator-x.binbl2-salvator-x.elfbl2-salvator-x.srecbl31-salvator-x.bin...(省略)...

Image カーネルイメージ (カーネル本体)

Image-r8a7795-salvator-x.dtb デバイスツリー (ハードウェア情報)

core-imge-minimal-salvator-x.tar.bz2 rootfs

*.srec or *.bin bootloader

Page 16: 組込みLinuxの開発方法 - cybertrust.co.jp · bitbake(ビルドエンジン)がレシピ(手順書)を元に処理を実行 レシピはレイヤー単位で提供 レイヤーを重ねることで既存のレシピの修正や置換が可能

Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開

● 実機へのインストール○ TFTP(Trivial File Transfer Protocol)経由のNFS (Network File System) ブート

■ https://elinux.org/R-Car/Boards/Yocto-Gen3#Running_Yocto_images 参照

○ eMMC/SDカードブート

■ https://elinux.org/R-Car/Boards/Yocto-Gen3#How_to_prepare_and_boot_from_eMMC.2FSD_card 参照

BSPを使った組込みLinuxのビルド

Page 17: 組込みLinuxの開発方法 - cybertrust.co.jp · bitbake(ビルドエンジン)がレシピ(手順書)を元に処理を実行 レシピはレイヤー単位で提供 レイヤーを重ねることで既存のレシピの修正や置換が可能

Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開

BSPのカスタマイズ(事例紹介)

Page 18: 組込みLinuxの開発方法 - cybertrust.co.jp · bitbake(ビルドエンジン)がレシピ(手順書)を元に処理を実行 レシピはレイヤー単位で提供 レイヤーを重ねることで既存のレシピの修正や置換が可能

Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開

カスタムボードへの移植

1. BSPをベースにカスタムボード用のパッチ/ソースコードを作成

poky/meta

meta-poky

meta-vendor

busybox

busybox

linux-yocto bootloader

linux-yocto

既存のレイヤ

Page 19: 組込みLinuxの開発方法 - cybertrust.co.jp · bitbake(ビルドエンジン)がレシピ(手順書)を元に処理を実行 レシピはレイヤー単位で提供 レイヤーを重ねることで既存のレシピの修正や置換が可能

Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開

1. BSPをベースにカスタムボード用のパッチ/ソースコードを作成2. 新しいレイヤを定義し、レシピを追加

カスタムボードへの移植

poky/meta

meta-poky

meta-vendor

busybox

busybox

linux-yocto bootloader

linux-yocto

meta-custom applicationbootloaderlinux-yocto

既存のレイヤ

カスタムボード用のパッチ

アプリの追加

設定ファイル+

Page 20: 組込みLinuxの開発方法 - cybertrust.co.jp · bitbake(ビルドエンジン)がレシピ(手順書)を元に処理を実行 レシピはレイヤー単位で提供 レイヤーを重ねることで既存のレシピの修正や置換が可能

Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開

1. BSPをベースにカスタムボード用のパッチ/ソースコードを作成2. 新しいレイヤを定義し、レシピを追加3. パッチ/ソースコードとカスタムレイヤをリリース

カスタムボードへの移植

poky/meta

meta-poky

meta-vendor

busybox

busybox

linux-yocto bootloader

linux-yocto

meta-custom applicationbootloaerlinux-yocto

リリース

設定ファイル+

Page 21: 組込みLinuxの開発方法 - cybertrust.co.jp · bitbake(ビルドエンジン)がレシピ(手順書)を元に処理を実行 レシピはレイヤー単位で提供 レイヤーを重ねることで既存のレシピの修正や置換が可能

Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開

● Yocto Project Software Overview

○ https://www.yoctoproject.org/software-overview

● Yocto Project Poky Reference Manual

○ https://www.yoctoproject.org/docs/2.4.2/mega-manual/mega-manual.html

● Bitbake User Manual

○ https://www.yoctoproject.org/docs/2.4.2/bitbake-user-manual/bitbake-user-manual.html

● R-Car Wiki

○ https://elinux.org/R-Car

参考URL

Page 22: 組込みLinuxの開発方法 - cybertrust.co.jp · bitbake(ビルドエンジン)がレシピ(手順書)を元に処理を実行 レシピはレイヤー単位で提供 レイヤーを重ねることで既存のレシピの修正や置換が可能

Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開

信頼とともに

留意事項

本資料に記載されている会社名、製品名、サービス名は、当社または各社、各団体の商標もしくは登録商標です。その他本資料に記載されているイラスト・ロゴ・写真・動画・ソフトウェア等は、当社または第三者が有する知的財産権やその他の権利により守られております。お客様は、当社が著作権を有するコンテンツについて、特に定めた場合を除き、複製、改変、頒布などをすることはできません。本資料に記載されている情報は予告なしに変更されることがあります。また、時間の経過などにより記載内容が不正確となる場合がありますが、当社は、当該情報を更新する義務を負うものではありません。