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 の動作
$ bitbake core-image-minimal bitbake
実行時にビルドするレシピを指定する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
レシピの中身 (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}
レシピの中身 (zlib)
bitbake の動作
bitbake
*.conf
レシピ イメージbitbake の動作
bitbake
*.conf
レシピ イメージcore-image-minimal
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
をサポートするメタデータ追加