Yocto Project 紹介
2018/12/11
サイバートラスト株式会社
アジェンダ
1. OSによる開発の違い
2. Yocto Project について
3. Poky について
4. レイヤー機能について
5. 質疑応答
1. ある OS の場合
2.
Linux OSの場合
ソフトウェア X が動作する環境を考える
● カーネル、GUI、基本ライブラリ等はOSベン
ダーから提供されたものを利用
● ライブラリA
○ ベンダーから購入して組み込み
● ライブラリB
○ フリーウェアを組み込み
● ソフトウェアX
○ ライブラリ
AとライブラリBを利用する自社
製ソフトウェア
ある OS の場合
カーネル
アプリケーション
ソフトウェア X
ライブラリ A
ライブラリ B
GUI
基本ライブラリ
ソフトウェア X が動作する環境を考える
● カーネル、ドライバ、基本ライブラリ等は
Linux ディストリビューター
から頒布されてい
るバイナリを使用、またはソースコードからコ
ンパイルして利用
● ライブラリA
○
OSSをコンパイルし、組み込む
● ライブラリB
○ ベンダーから購入して組み込み
● ソフトウェアX
○ ライブラリAとライブラリBを利用する自社
製ソフトウェア
Linux OS の場合
CPU
メモリ
デバイス
カーネル
アプリケーション
ソフトウェア X
ライブラリ A
ライブラリ B
デバイス
ドライバ
基本ライブラリ
●
Linuxディストリビューション
○ Linuxを利用者がインストールしたり、利用でき
る形にまとめ上げたもの。
○ 上記を頒布する団体・プロジェクトはディストリ
ビューター
● なぜディストリビューターがいるのか
○ 本来、LinuxはOSではなく、Linuxカーネルのみ
を指す
→カーネルだけではOSとして動作しない。
○ 基本ライブラリ(glibc)やコンパイラ(gcc, LLVM)
などの Linux OS を構成するソフトウェアは
Linux とは直接関係ない
OSS
(Open Source
Software)のプロジェクト。よってこれらを組み
Linux ディストリビューションと頒布方法
カーネル
アプリケーション
ソフトウェア X
ライブラリ A
ライブラリ B
デバイス
ドライバ
基本ライブラリ
● 頒布方法
○
Linuxディストリビューションによって異なる
■ バイナリベース
■ ソースコードベース
Linux ディストリビューションと頒布方法
コンパイル
バイナリ
ダウンロード
ソースコード
● Linux のディストリビューションのほとんどは
OSSで構成される
● 基本、OSSはソースと共にコンパイル方法と使
用方法のみが提供されている
● ユーザーは自身でソフトウェアをダウンロード、
コンパイル、インストールを行う必要がある
Linux ディストリビューションと頒布方法
● OSSでもOSSやその他のソフトウェアの依存関
係を元に動作する
● 使用したいソフトウェアをコンパイルするために
は、依存しているソフトウェアやライブラリをコン
パイルし、依存関係を解消する必要がある。
● これらの作業を簡略化したものを提供している
のがLinuxディストリビューター
● 提供されているものがLinuxディストリビューショ
ン
Linux ディストリビューションと頒布方法
コンパイル
バイナリ
ダウンロード
ソースコード
バイナリとインストール方法
をまとめたもの
ソースコード取得、コンパイ
ル、インストール方法をまと
めたもの
バイナリベース
ソースコードベース
Linux ディストリビューションと頒布方法
コンパイル
バイナリ
ダウンロード
インストール
ソースコード
ソースコードと、コンパイル
方法をまとめたもの
バイナリとインストール方法
をまとめたもの
ソースコード取得、コンパイ
ル、インストール方法をまと
めたもの
バイナリベース
ソースコードベース
● ディストリビューターが
コンパイル済み
のソフトウェアをパッケージとして頒布する。
● ソフトウェアの最適化やパッケージで提供される機能はディストリビューターが決め
る。
○ 例1 : FPU(浮動小数点演算ユニット)をサポートするバイナリを提供する・しない
○ 例2: ソフトウェアで提供される機能があるパッケージを提供する・しない
● この方法を取ってるディストリビューション例
○
Red Hat
○
CentOS
○
Debian
○
Ubuntu
バイナリベース
● メリット
○ コンパイル済みのソフトウェアを頒布するため、すぐに利用できる
○ ユーザーは同じバイナリを使用するため、ユーザー同士で問題を共有できる
○ 提供さえたバイナリのコンパイルできる手順が確立されている
● デメリット
○ 最適化が行われていない
■
CPU性能を最大限に生かせない
■ (一部のユーザーにとって)不要な機能やファイルが含まれる
バイナリベース
● ディストリビューターがソフトウェアの
コンパイル方法
を頒布する。コンパイル済みのバ
イナリは基本頒布しない。
● この方法を取っているディストリビューション例
○
gentoo
○
OpenEmbedded
ソースコードベース
● メリット
○ 細かい最適化ができる
■
CPUへの最適化、利用者が必要な機能のみの有効化など
○ ソフトウェアライセンスへの対応が柔軟にできる
■ 基本的にソフトウェアのバイナリ頒布を行わない
● デメリット
○ 多くのリソース(CPU、メモリ、HDD、ネットワーク)を必要とする
○ 利用者がコンパイルするため、利用できるまでに時間を必要とする
○ ユーザー同士で最適化の内容が異なるため、問題の共有が難しい
ソースコードベース
●
SoC・ボードベンダーが公開しているBSP・SDKをベースに開発することが多い
○
BSP (Board Support Package)、SDK(Software Development Kit)
● 課題
○
OSSによる開発は規模が大きくなるため、詳細が把握できない
○ 機能の過不足が判断しずらい
○
OSSに関する情報のキャッチアップが難しい
○
OSSの機能修正、追加が難しい
○
SoCベンダー毎に開発環境が異なる
○
BSP・SDKでソフトウェアのバージョンが異なる
組込みLinuxシステム開発の課題
● 組込み向けOS開発環境を構築する仕組みを提供するプロジェクト
○
https://www.yoctoproject.org
○
CPUアーキテクチャへの依存を最小限に
○ コンパイル環境(SDK)も構築・提供できる仕組み
○ エミュレーターによる実機以外のサポート
○ 目的に合わせたOSイメージのビルド(OS最小構成、GUIあり、Webサーバーのみ、
など)
○ ソースコードベース
Yocto Project
●
Linux Foundation プロジェクトの一つ
● 複数のプロジェクトが協力
○
Poky
リファレンスビルドシステム
○
OpenEmbedded
ソフトウェアのビルド手順が記載されたレシピと呼ば
れるファイル群とビルドエンジンである bitbakeを開発
○
matchbox
GUIライブラリ
○
Eclispe IDE Plug-in
IDE向け開発プラグイン
○
opkg
パッケージングシステム
○
Toaster
ビルドサポート用GUI
プロジェクト体制
● メンバー企業
○
Intel
○
Arm
○
Linaro
○
TEXAS INSTRUMENTS
○
NXP
○
XLILNX
○
RENESAS
○
open embedded
○
Mentor
○
○
DELL
プロジェクト体制
● 半年ごとにリリース
○ 現在のバージョン: 2.6
■ コードネーム: Thud、Poky 20.0.0
○ セキュリティ修正とレシピのバグによって更新
■ パッチによる更新
○ 約1年半のサポート
リリースポリシー
https://wiki.yoctoproject.org/wiki/Releases● サポートしているCPU
○
x86(32bit/64bit)、 ARM(32bit/64bit)、MIPS(32bit/64bit)、powerpc
●
SoCベンダー共通のビルドシステムとして利用可能
○
NXP、Xilinx、Renesas、Intel (旧Altera含む)、TIなど
●
SIer への移行・引き渡しがスムーズになる可能性も
○
Wind River、Mentor、Enea、などの組込みLinuxOSベンダーが Poky ベースのシス
テムも利用
●
Real Time patch が適用されたLinux カーネルもサポート
● 課題
○
OSSによる開発は規模が大きくなるため、詳細が把握できない
○ 機能の過不足が判断しずらい
○
OSSに関する情報のキャッチアップが難しい
○
OSSの機能修正、追加が難しい
○
SoCベンダー毎に開発環境が異なる
○
BSP・SDKでソフトウェアのバージョンが異なる
解決できる課題
● 課題
○
OSSによる開発は規模が大きくなるため、詳細が把握できない
○ 機能の過不足が判断しずらい
○
OSSに関する情報のキャッチアップが難しい
○
OSSの機能修正、追加が難しい
○
SoCベンダー毎に開発環境が異なる
○
BSP・SDKでソフトウェアのバージョンが異なる
解決できる課題
● 組込みLinux開発環境を構築する仕組みを提供するLinux Foundation傘下のプロ
ジェクト
● 複数のプロジェクトが協力
○
Poky
○
OpenEmbedded
○
matchbox
○
Eclispe IDE Plug-in
○
opkg
○
Toaster
● SoCベンダーから組込みLinux SIerまで利用しており、組込みLinux開発のスタン
ダードとなっている
● 組込みLinux開発環境を構築する仕組みを提供するLinux Foundation傘下のプロ
ジェクト
● 複数のプロジェクトが協力
○
Poky
○
OpenEmbedded
○
matchbox
○
Eclispe IDE Plug-in
○
opkg
○
Toaster
● SoCベンダーから組込みLinux SIerまで利用しており、組込みLinux開発のスタン
ダードとなっている
●
Linux Foundation プロジェクトの一つ
● 複数のプロジェクトが協力
○
Poky
リファレンスビルドシステム
○
OpenEmbedded
ソフトウェアのビルド手順が記載されたレシピと呼ば
れるファイル群とビルドエンジンである bitbakeを開発
○
matchbox
GUIライブラリ
○
Eclispe IDE Plug-in
IDE向け開発プラグイン
○
opkg
パッケージングシステム
● リファレンスビルドシステム
○ ディストリビューションではない
○ ディストリビューション作成をサポートするビルドシステム
○ 最小構成のLinuxディストリビューションを構築できる
■
ユーザーはPokyをベースにカスタマイズする
● 主な構成要素
○
bitbake
○ メタデータ
(レシピ、設定ファイル)
● 主な生成物
○
Linux カーネル
○ ブートローダー
○ ユーザーランド(rootfs)
○ クロスツールチェイン、SDK
Poky
Poky 構成図
Poky
bitbake
Poky
meta
meta-yocto-bsp
meta-poky
メタデータ
meta
recipe-foo
設定ファイル(*.conf) includeファイル (*.inc) レシピファイル (*.bb, *.bbappend)recipe-bar
レシピファイル (*.bb, *.bbappend) classファイル (*.bbclass)build
Poky 構成図
Poky
bitbake
Poky
meta
meta-yocto-bsp
meta-poky
メタデータ
meta
recipe-foo
設定ファイル(*.conf) includeファイル (*.inc) レシピファイル (*.bb, *.bbappend)recipe-bar
レシピファイル (*.bb, *.bbappend) classファイル (*.bbclass)build
rootfs
ブートローダー
SDK
メタデータはレイヤーという単位で管理される
linuxカーネル
Poky 構成図
Poky
bitbake
Poky
meta
meta-yocto-bsp
meta-poky
メタデータ
meta
recipe-foo
設定ファイル(*.conf) includeファイル (*.inc) レシピファイル (*.bb, *.bbappend)recipe-bar
レシピファイル (*.bb, *.bbappend) classファイル (*.bbclass)build
● 主な構成要素
○ レシピ(拡張子: .bb または .bbappend)
■ ソースコードの取得、ソフトウェアのコンパイル、パッケージングまでの動作を定義
■ シェルスクリプトとPythonで記述
■ レシピ同士の依存関係を設定
■
bbppaned ファイルは既存のbbファイルに内容を修正・追加する際に使用
○ 設定ファイル(拡張子: .conf)
■
CPUアーキテクチャなどのターゲットマシン毎の定義
■ ビルド環境などの独自設定
○
bitbake
■
Python で書かれたビルドツール
■ レシピを解析し、定義された動作を実行する
Poky
Poky 構成図
Poky
bitbake
Poky
meta
meta-yocto-bsp
meta-poky
メタデータ
meta
recipe-foo
設定ファイル(*.conf) includeファイル (*.inc) レシピファイル (*.bb, *.bbappend)recipe-bar
レシピファイル (*.bb, *.bbappend) classファイル (*.bbclass)build
Poky 構成図
Poky
bitbake
Poky
meta
meta-yocto-bsp
meta-poky
メタデータ
meta
recipe-foo
設定ファイル(*.conf) includeファイル (*.inc) レシピファイル (*.bb, *.bbappend)recipe-bar
レシピファイル (*.bb, *.bbappend) classファイル (*.bbclass)build
linux-kernel
rootfs
ブートローダー
SDK
● 主な構成要素
○ レシピ(拡張子: .bb または .bbappend)
■ ソースコードの取得、ソフトウェアのコンパイル、パッケージングまでの動作を定義
■ シェルスクリプトとPythonで記述
■ レシピ同士の依存関係を設定
■
bbppaned ファイルは既存のbbファイルに内容を修正・追加する際に使用
○ 設定ファイル(拡張子: .conf)
■
CPUアーキテクチャなどのターゲットマシン毎の定義
■ ビルド環境などの独自設定
○
bitbake
■
Python で書かれたビルドツール
■ レシピを解析し、定義された動作を実行する
Poky
$ bitbake core-image-minimal
$ bitbake core-image-minimal bitbake 実行時にビルドするレシピを指定する
$ bitbake core-image-minimal
bitbake の動作
レシピを解析
ソースコードのダウンロード
ソースコードの展開
パッチの適用
ソフトウェアのコンパイル
生成物をパッケージ化
$ bitbake core-image-minimal
bitbake の動作
レシピを解析
ソースコードのダウンロード
ソースコードの展開
パッチの適用
ソフトウェアのコンパイル
コンパイルするソフトウェアの情報
●
どこからダウンロードするのか
●
どのように展開するのか
●
どのようなパッチを適用するのか
コンパイル方法
●
どのようなオプションでコンパイルするのか
●
どのような機能を有効・無効にするのか
●
ソフトウェア同士の依存関係
$ bitbake core-image-minimal
bitbake の動作
レシピを解析
ソースコードのダウンロード
ソースコードの展開
パッチの適用
ソフトウェアのコンパイル
生成物をパッケージ化
コンパイルするソフトウェアの情報
●
どこからダウンロードするのか
●
どのように展開するのか
●
どのようなパッチを適用するのか
コンパイル方法
●
どのようなオプションでコンパイルするのか
●
どのような機能を有効・無効にするのか
●
ソフトウェア同士の依存関係
インストール・パッケージング方法
●
どのファイルをどこにインストールするのか
●
どのファイルをどのパッケージに入れるのか
これらを
タ
スク
呼び、
レシピ記述
する。
タスク
●
bitbake で実行される動作単位
● タスクを定義する際、do_タスク名 とする必要がある
例: do_fetch: ソースコードを取得するタスク
● レシピをビルドする際、1タスク1スレッドで実行される
● プログラミング言語に合わせたタスクが約70ほど定義されており、コンパイル方式、イ
ンストール方式などに合わせて利用する
● タスク同士は依存関係を持っており、依存関係に合わせて実行される
bitbake の動作
$ bitbake core-image-minimal
bitbake の動作
do_fetch
do_unpack
do_patch
do_configure
do_compile
do_install
do_package
これらを
タ
スク
呼び、
レシピ記述
する。
レシピを解析
ソースコードのダウンロード
ソースコードの展開
パッチの適用
ソフトウェアのコンパイル
生成物をパッケージ化
… SRC_URI = "${SOURCEFORGE_MIRROR}/libpng/${BPN}/${PV}/${BPN}-${PV}.tar.xz \ file://remove.ldconfig.call.patch \ file://Makefile-runtests.patch \ file://ldflags-tests.patch \ file://run-ptest \ " UPSTREAM_CHECK_URI = "http://zlib.net/" SRC_URI[md5sum] = "85adef240c5f370b308da8c938951a68" SRC_URI[sha256sum] = "4ff941449631ace0d4d203e3483be9dbc9da454084111f97ea0a2114e19bf066" CFLAGS += "-D_REENTRANT" RDEPENDS_${PN}-ptest += "make" inherit ptest do_configure() {
uname=GNU ./configure --prefix=${prefix} --shared --libdir=${libdir}
レシピの中身 (zlib)
… SRC_URI = "${SOURCEFORGE_MIRROR}/libpng/${BPN}/${PV}/${BPN}-${PV}.tar.xz \ file://remove.ldconfig.call.patch \ file://Makefile-runtests.patch \ file://ldflags-tests.patch \ file://run-ptest \ " UPSTREAM_CHECK_URI = "http://zlib.net/" SRC_URI[md5sum] = "85adef240c5f370b308da8c938951a68" SRC_URI[sha256sum] = "4ff941449631ace0d4d203e3483be9dbc9da454084111f97ea0a2114e19bf066" CFLAGS += "-D_REENTRANT" RDEPENDS_${PN}-ptest += "make" inherit ptest do_configure() {
uname=GNU ./configure --prefix=${prefix} --shared --libdir=${libdir} }
do_compile() {
oe_runmake shared
… SRC_URI = "${SOURCEFORGE_MIRROR}/libpng/${BPN}/${PV}/${BPN}-${PV}.tar.xz \ file://remove.ldconfig.call.patch \ file://Makefile-runtests.patch \ file://ldflags-tests.patch \ file://run-ptest \ " UPSTREAM_CHECK_URI = "http://zlib.net/" SRC_URI[md5sum] = "85adef240c5f370b308da8c938951a68" SRC_URI[sha256sum] = "4ff941449631ace0d4d203e3483be9dbc9da454084111f97ea0a2114e19bf066" CFLAGS += "-D_REENTRANT" RDEPENDS_${PN}-ptest += "make" inherit ptest do_configure() {
uname=GNU ./configure --prefix=${prefix} --shared --libdir=${libdir}
レシピの中身 (zlib)
bitbake の動作
bitbake
bitbake の動作
bitbake
*.conf
レシピ
イメージ
bitbake の動作
bitbake
*.conf
レシピ
イメージ
core-image-minimal
busybox
glibc
依存
……
bitbake の動作
bitbake
*.conf
レシピ
イメージ
core-image-minimal
busybox
glibc
gcc-cross
binutils-cross
依存
依存
……
……
bitbake の動作
bitbake
*.conf
レシピ
イメージ
core-image-minimal
busybox
glibc
gcc-cross
binutils-cross
gettext-native
zlib-native
依存
依存
依存
……
……
bitbake の動作
bitbake
*.conf
レシピ
イメージ
core-image-minimal
busybox
glibc
gcc-cross
binutils-cross
依存
依存
……
……
bitbake の動作
bitbake
*.conf
レシピ
イメージ
core-image-minimal
busybox
glibc
gcc-cross
binutils-cross
gettext-native
zlib-native
gcc-cross
binutils-cross
gettext-native
zlib-native
ビルド
ビルド
依存
依存
依存
……
……
……
ビルド依存
bitbake の動作
bitbake
*.conf
レシピ
イメージ
core-image-minimal
busybox
glibc
gcc-cross
binutils-cross
busybox
glibc
gcc-cross
binutils-cross
ビルド
ビルド
依存
依存
……
……
……
……
ビルド依存
bitbake の動作
bitbake
*.conf
レシピ
イメージ
core-image-minimal
busybox
glibc
gcc-cross
binutils-cross
gettext-native
zlib-native
core-image-minimal.bz2
zImage
busybox
glibc
gcc-cross
binutils-cross
gettext-native
zlib-native
インストール
ビルド
ビルド
ビルド
依存
依存
依存
……
……
……
……
ビルド依存
ビルド依存
ビルド依存
● 課題
○
OSSによる開発は規模が大きくなるため、詳細が把握できない
○ 機能の過不足が判断しずらい
○
OSSに関する情報のキャッチアップが難しい
○
OSSの機能修正、追加が難しい
○
SoCベンダー毎に開発環境が異なる
○
BSP・SDKでソフトウェアのバージョンが異なる
Poky で解決できる課題
● リファレンスビルドシステム
○ ディストリビューション作成をサポートするビルドシステム
○ 最小構成のLinuxディストリビューションを構築できる
● 主な構成要素
○
bitbake、メタデータ(レシピ、設定ファイル)
● ビルドする際には bitbake コマンドを使用する
○
bitbake はレシピファイルを解析し、ビルドに必要なアクションを実行する
○ レシピ同士の依存関係の解決、ソースコードの取得、パッチ適用、コンパイル、
パッケージ化など
● レシピにはソフトウェアのビルドに必要な処理を記述する。処理はタスクと呼ばれる。
● 主な生成物
○
Linux カーネル、ブートローダー、ユーザーランド(rootfs)、クロスツールチェイン、
SDK
Poky に関するまとめ
Poky 構成図
レイヤー機能について
bitbake
Poky
meta
meta-yocto-bsp
meta-poky
メタデータ
meta
recipe-foo
設定ファイル(*.conf) includeファイル (*.inc) レシピファイル (*.bb, *.bbappend)recipe-bar
レシピファイル (*.bb, *.bbappend) classファイル (*.bbclass)build
rootfs
ブートローダー
SDK
linuxカーネル
Poky 構成図
レイヤー機能について
bitbake
Poky
meta
meta-yocto-bsp
meta-poky
メタデータ
meta
recipe-foo
設定ファイル(*.conf) includeファイル (*.inc) レシピファイル (*.bb, *.bbappend)recipe-bar
レシピファイル (*.bb, *.bbappend) classファイル (*.bbclass)build
レイヤー機能について
bitbake
ビルドエンジン
meta-poky
Linux kernelやソフトウェアのレシピ
Poky ディストリビューションの情報
BSPの構成情報など
Poky
meta
meta-yocto-bsp
最小構成のLinuxディストリビューションを構築できる。
レイヤー機能について
bitbake
ビルドエンジン
meta-poky
Linux kernelやソフトウェアのレシピ
Poky ディストリビューションの情報
BSPの構成情報など
Poky
meta
meta-yocto-bsp
Xilinx社のMPSoC SoC
を使用したシステムを
構築したい…
レイヤー機能について
bitbake
ビルドエンジン
meta-poky
Linux kernelやソフトウェアのレシピ
Poky ディストリビューションの情報
BSPの構成情報など
Poky
meta
meta-yocto-bsp
meta-xilinx
Xilinx社のMPSoCをサポートするメタデータ
追加
レイヤー機能について
bitbake
ビルドエンジン
meta-poky
Linux kernelやソフトウェアのレシピ
Poky ディストリビューションの情報
BSPの構成情報など
Poky
meta
meta-yocto-bsp
meta-xilinx
Xilinx社のMPSoCをサポートするメタデータ
追加
conf/bblayers.conf:
BBLAYERS ?= " \
/home/user/work/poky/meta \
/home/user/work/poky/meta-poky \
レイヤー機能について
meta
busybox
linux-yocto
busybox
meta-poky
レイヤー機能について
meta
meta-xilinx
linux-yocto
busybox
linux-yocto
busybox
meta-poky
…
レイヤー機能について
meta
meta-xilinx
linux-yocto
busybox
linux-yocto
busybox
meta-poky
…
使用するボー
ドの設定等
レイヤー機能について
meta
meta-xilinx
linux-yocto
busybox
linux-yocto
busybox
meta-poky
…
Xilinx MPSoC
の設定有効
機能の追加
使用するボー
ドの設定等
レイヤー機能について
meta
meta-xilinx
最終的なレシピ
linux-yocto
busybox
linux-yocto
busybox
meta-poky
…
Xilinx MPSoC
の設定有効
busybox
linux-yocto
機能の追加
使用するボー
ドの設定等
レシピの解析
レイヤー機能について
meta
meta-xilinx
linux-yocto
busybox
linux-yocto
busybox
meta-poky
…
Xilinx MPSoC
の設定有効
機能の追加
使用するボー
ドの設定等
レシピの解析
poky/meta-yocto/recipes-core/busybox/
|-- busybox
| `-- poky-tiny
| `-- defconfig
`--
busybox_%.bbappend
poky/meta/recipes-core/busybox/
|-- busybox
| |-- …
| `-- 0001-Switch-to-POSIX-utmpx-API.patch
|-- busybox.inc
|-- busybox_1.23.2.bb
`-- files
|-- …
`-- umount.busybox
レイヤー機能について
poky/meta-yocto/recipes-core/busybox/
|-- busybox
| `-- poky-tiny
| `-- defconfig
`--
busybox_%.bbappend
poky/meta/recipes-core/busybox/
|-- busybox
| |-- …
| `-- 0001-Switch-to-POSIX-utmpx-API.patch
|-- busybox.inc
|-- busybox_1.23.2.bb
`-- files
|-- …
`-- umount.busybox
レイヤー機能について
recipes-core/busybox/busybox_%.bbappaned
recipes-core/busybox/busybox_1.23.2.bb
+
bbappendファイルで定義した内容が上書きまたは追
レイヤー機能
bitbake
ビルドエンジン
meta-poky
Linux kernelやソフトウェアのレシピ
Poky ディストリビューションの情報
BSPの構成情報など
Poky
meta
meta-yocto-bsp
meta-xilinx
Xilinx社のMPSoCをサポートするメタデータ
自社で作ったアプリ
ケーションをシステム
にインストールしたい
レイヤー機能について
bitbake
ビルドエンジン
meta-poky
Linux kernelやソフトウェアのレシピ
Poky ディストリビューションの情報
BSPの構成情報など
Poky
meta
meta-yocto-bsp
meta-xilinx
Xilinx社のMPSoCをサポートするメタデータ
meta-myapp
自社で作ったアプリケーション用レシピを含んだメタデータ
追加
conf/bblayers.conf:
BBLAYERS ?= " \
/home/user/work/poky/meta \
レイヤー機能について
meta
meta-xilinx
linux-yocto
busybox
linux-yocto
busybox
meta-poky
…
使用するボー
ドの設定等
レイヤー機能について
meta
meta-xilinx
linux-yocto
busybox
linux-yocto
busybox
meta-poky
…
使用するボー
ドの設定等
meta-myapp
myapp
myappに関す
る設定
レイヤー機能について
meta
meta-xilinx
最終的なレシピ
linux-yocto
busybox
linux-yocto
busybox
meta-poky
…
Xilinx MPSoC
の設定有効
busybox
linux-yocto
機能の追加
使用するボー
ドの設定等
レシピの解析
meta-myapp
myapp
myapp
myappに関す
る設定
● 課題
○
OSSによる開発は規模が大きくなるため、詳細が把握できない
○ 機能の過不足が判断しずらい
○
OSSに関する情報のキャッチアップが難しい
○
OSSの機能修正、追加が難しい
○
SoCベンダー毎に開発環境が異なる
○
BSP・SDKでソフトウェアのバージョンが異なる
レイヤー機能で解決できる課題
●
Pokyは最小構成のLinuxディストリビューションを構築するためのツールやメタデータを
提供する
● ユーザーが独自の実装を追加するには、レイヤー機能を使って追加する
● 各SoCの設定や、ボードの設定などもレイヤー単位で提供される
● レイヤーを使用することによって、他のレイヤーで提供されているレシピのファイルそ
のものを変更せずに、レシピの修正等ができるようになっている
レイヤー機能に関するまとめ
● Yocto Project
○
https://www.yoctoproject.org
○
https://www.yoctoproject.org/docs/2.6/mega-manual/mega-manual.html
● Yocto Project ハンズオン プレゼン用資料
○
https://www.slideshare.net/iwamatsu/yocto-project-40180199
● レシピの作り方入門
○
https://www.slideshare.net/iwamatsu/ss-31662659
参考文献
1.
https://1.bp.blogspot.com/-LHEZgJ6tpeA/UgSL_9y4KrI/AAAAAAAAW5s/DNRPJ4kSvpI/s400/food_curryruce.png
x2
2.
https://3.bp.blogspot.com/-N2OBmlrmp6I/UnyHSqHeW3I/AAAAAAAAahc/1XbLO4ZbaQg/s800/cooking_chef.png
x2
3.
https://4.bp.blogspot.com/-2t-ECy35d50/UPzH73UAg3I/AAAAAAAAKz4/OJZ0yCVaRbU/s1600/book.png
x2
4.
https://2.bp.blogspot.com/-kXpgJDSmOZI/VJ6XX867x9I/AAAAAAAAqJ4/yYWtYMdnE3A/s800/cooking10_kiru.png
x2
5.
https://2.bp.blogspot.com/-0_papKo8Qt4/VahRmEpGpUI/AAAAAAAAvtQ/QyU6EtxIhLc/s800/makimono_toranomaki.png
x2
6.
https://1.bp.blogspot.com/-etAOuOz8L7Y/W1a4rKcd5WI/AAAAAAABNhU/fB5zVLV7Mig1oPLUdf17QS7n15np1S3OACLcBGAs/s8
00/food_niku_pack.png
x2
7.
https://3.bp.blogspot.com/-QCe-ngfpbTg/UkJM8tkaq6I/AAAAAAAAYWM/U3pbo3YS9XA/s800/ninjin_carrot.png
x2
8.
https://3.bp.blogspot.com/-EiqKoF2kMTQ/UkJM5vVnb7I/AAAAAAAAYVU/tCuJxeQQiNE/s800/jagaimo_poteto.png
x2
9.
https://3.bp.blogspot.com/-TY2VUFySQZA/VJ6XYaf5BTI/AAAAAAAAqKA/PBSngtXpNpE/s800/cooking12_ajitsuke.png
x2
10.
https://4.bp.blogspot.com/-0pySHudh9OY/VMIvIn6zDGI/AAAAAAAAq4M/v-imllVrsxE/s800/pose_souzou_man.png
x2
いらすとや使用画像
信頼とともに
留意事項
本資料に記載されている会社名、製品名、サービス名は、当社または各社、各団体の商標もしくは登録商標です。
その他本資料に記載されているイラスト・ロゴ・写真・動画・ソフトウェア等は、当社または第三者が有する知的財産権やその他の権利により守られております。 お客様は、当社が著作権を有するコンテンツについて、特に定めた場合を除き、複製、改変、頒布などをすることはできません。