• 検索結果がありません。

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

をサポートするメタデータ

追加

conf/bblayers.conf:

関連したドキュメント