yocto project 紹介 - サイバートラスト株式会社 › iot › docs ›...
TRANSCRIPT
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
Yocto Project 紹介
2018/12/11サイバートラスト株式会社
OSS技術本部
岩松 信洋
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
アジェンダ
1. OSによる開発の違い
2. Yocto Project について
3. Poky について
4. レイヤー機能について
5. 質疑応答
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
OSによる開発の違い
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
1. ある OS の場合2. Linux OSの場合
OSによる開発の違い
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
ソフトウェア X が動作する環境を考える
● カーネル、GUI、基本ライブラリ等はOSベンダーから提供されたものを利用
● ライブラリA○ ベンダーから購入して組み込み
● ライブラリB○ フリーウェアを組み込み
● ソフトウェアX○ ライブラリAとライブラリBを利用する自社
製ソフトウェア
ある OS の場合
CPU メモリ デバイス
カーネル
アプリケーション
ソフトウェア X
ライブラリ A ライブラリ B
GUI 基本ライブラリ
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
ソフトウェア X が動作する環境を考える
● カーネル、ドライバ、基本ライブラリ等はLinux ディストリビューターから頒布されているバイナリを使用、またはソースコードからコンパイルして利用
● ライブラリA○ OSSをコンパイルし、組み込む
● ライブラリB○ ベンダーから購入して組み込み
● ソフトウェアX○ ライブラリAとライブラリBを利用する自社
製ソフトウェア
Linux OS の場合
CPU メモリ デバイス
カーネル
アプリケーション
ソフトウェア X
ライブラリ A ライブラリ B
デバイスドライバ
基本ライブラリ
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
● Linuxディストリビューション○ Linuxを利用者がインストールしたり、利用でき
る形にまとめ上げたもの。○ 上記を頒布する団体・プロジェクトはディストリ
ビューター● なぜディストリビューターがいるのか
○ 本来、LinuxはOSではなく、Linuxカーネルのみを指す→カーネルだけではOSとして動作しない。
○ 基本ライブラリ(glibc)やコンパイラ(gcc, LLVM)などの Linux OS を構成するソフトウェアは Linux とは直接関係ないOSS (Open Source Software)のプロジェクト。よってこれらを組み合わせて利用できるようにする必要がある
Linux ディストリビューションと頒布方法
CPU メモリ デバイス
カーネル
アプリケーション
ソフトウェア X
ライブラリ A ライブラリ B
デバイスドライバ
基本ライブラリ
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
● 頒布方法○ Linuxディストリビューションによって異なる
■ バイナリベース■ ソースコードベース
Linux ディストリビューションと頒布方法
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
Linux ディストリビューションと頒布方法
コンパイル
バイナリ
ダウンロード
インストール
ソースコード● Linux のディストリビューションのほとんどは
OSSで構成される● 基本、OSSはソースと共にコンパイル方法と使
用方法のみが提供されている● ユーザーは自身でソフトウェアをダウンロード、
コンパイル、インストールを行う必要がある
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
Linux ディストリビューションと頒布方法
→ソフトウェア同士の依存
● OSSでもOSSやその他のソフトウェアの依存関係を元に動作する
● 使用したいソフトウェアをコンパイルするためには、依存しているソフトウェアやライブラリをコンパイルし、依存関係を解消する必要がある。
● これらの作業を簡略化したものを提供しているのがLinuxディストリビューター
● 提供されているものがLinuxディストリビューション
使用したいソフトウェア 依存しているソフトウェア
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
Linux ディストリビューションと頒布方法
コンパイル
バイナリ
ダウンロード
インストール
ソースコード
バイナリとインストール方法をまとめたもの
ソースコード取得、コンパイル、インストール方法をまとめたもの
バイナリベース ソースコードベース
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
Linux ディストリビューションと頒布方法
コンパイル
バイナリ
ダウンロード
インストール
ソースコード
ソースコードと、コンパイル方法をまとめたもの
バイナリとインストール方法をまとめたもの
ソースコード取得、コンパイル、インストール方法をまとめたもの
バイナリベース ソースコードベース
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
● ディストリビューターがコンパイル済みのソフトウェアをパッケージとして頒布する。● ソフトウェアの最適化やパッケージで提供される機能はディストリビューターが決め
る。○ 例1 : FPU(浮動小数点演算ユニット)をサポートするバイナリを提供する・しない○ 例2: ソフトウェアで提供される機能があるパッケージを提供する・しない
● この方法を取ってるディストリビューション例○ Red Hat○ CentOS○ Debian○ Ubuntu
バイナリベース
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
● メリット○ コンパイル済みのソフトウェアを頒布するため、すぐに利用できる○ ユーザーは同じバイナリを使用するため、ユーザー同士で問題を共有できる○ 提供さえたバイナリのコンパイルできる手順が確立されている
● デメリット○ 最適化が行われていない
■ CPU性能を最大限に生かせない■ (一部のユーザーにとって)不要な機能やファイルが含まれる
バイナリベース
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
● ディストリビューターがソフトウェアのコンパイル方法を頒布する。コンパイル済みのバイナリは基本頒布しない。
● この方法を取っているディストリビューション例○ gentoo○ OpenEmbedded
ソースコードベース
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
● メリット○ 細かい最適化ができる
■ CPUへの最適化、利用者が必要な機能のみの有効化など
○ ソフトウェアライセンスへの対応が柔軟にできる■ 基本的にソフトウェアのバイナリ頒布を行わない
● デメリット○ 多くのリソース(CPU、メモリ、HDD、ネットワーク)を必要とする○ 利用者がコンパイルするため、利用できるまでに時間を必要とする○ ユーザー同士で最適化の内容が異なるため、問題の共有が難しい
ソースコードベース
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
● SoC・ボードベンダーが公開しているBSP・SDKをベースに開発することが多い○ BSP (Board Support Package)、SDK(Software Development Kit)
● 課題○ OSSによる開発は規模が大きくなるため、詳細が把握できない○ 機能の過不足が判断しずらい○ OSSに関する情報のキャッチアップが難しい○ OSSの機能修正、追加が難しい○ SoCベンダー毎に開発環境が異なる○ BSP・SDKでソフトウェアのバージョンが異なる
組込みLinuxシステム開発の課題
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
Yocto Projectについて
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
● 組込み向けOS開発環境を構築する仕組みを提供するプロジェクト○ https://www.yoctoproject.org○ CPUアーキテクチャへの依存を最小限に○ コンパイル環境(SDK)も構築・提供できる仕組み○ エミュレーターによる実機以外のサポート○ 目的に合わせたOSイメージのビルド(OS最小構成、GUIあり、Webサーバーのみ、
など)○ ソースコードベース
Yocto Project
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
● Linux Foundation プロジェクトの一つ● 複数のプロジェクトが協力
○ Pokyリファレンスビルドシステム
○ OpenEmbeddedソフトウェアのビルド手順が記載されたレシピと呼ばれるファイル群とビルドエンジンである bitbakeを開発
○ matchboxGUIライブラリ
○ Eclispe IDE Plug-inIDE向け開発プラグイン
○ opkgパッケージングシステム
○ Toasterビルドサポート用GUI
プロジェクト体制
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
● メンバー企業○ Intel○ Arm○ Linaro○ TEXAS INSTRUMENTS○ NXP○ XLILNX○ RENESAS○ open embedded○ Mentor○ Facebook○ DELL
プロジェクト体制
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
● 半年ごとにリリース○ 現在のバージョン: 2.6
■ コードネーム: Thud、Poky 20.0.0○ セキュリティ修正とレシピのバグによって更新
■ パッチによる更新
○ 約1年半のサポート
リリースポリシー
https://wiki.yoctoproject.org/wiki/Releases
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
● サポートしている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 カーネルもサポート
利用しているSoCベンダーやSIerなど
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
● 課題○ OSSによる開発は規模が大きくなるため、詳細が把握できない○ 機能の過不足が判断しずらい○ OSSに関する情報のキャッチアップが難しい○ OSSの機能修正、追加が難しい○ SoCベンダー毎に開発環境が異なる○ BSP・SDKでソフトウェアのバージョンが異なる
解決できる課題
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
● 課題○ OSSによる開発は規模が大きくなるため、詳細が把握できない○ 機能の過不足が判断しずらい○ OSSに関する情報のキャッチアップが難しい○ OSSの機能修正、追加が難しい○ SoCベンダー毎に開発環境が異なる○ BSP・SDKでソフトウェアのバージョンが異なる
解決できる課題
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
● 組込みLinux開発環境を構築する仕組みを提供するLinux Foundation傘下のプロ
ジェクト
● 複数のプロジェクトが協力○ Poky○ OpenEmbedded○ matchbox○ Eclispe IDE Plug-in○ opkg○ Toaster
● SoCベンダーから組込みLinux SIerまで利用しており、組込みLinux開発のスタン
ダードとなっている
Yocto Project まとめ
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
● 組込みLinux開発環境を構築する仕組みを提供するLinux Foundation傘下のプロ
ジェクト
● 複数のプロジェクトが協力○ Poky○ OpenEmbedded○ matchbox○ Eclispe IDE Plug-in○ opkg○ Toaster
● SoCベンダーから組込みLinux SIerまで利用しており、組込みLinux開発のスタン
ダードとなっている
Yocto Project まとめ
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
Pokyについて
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
● Linux Foundation プロジェクトの一つ● 複数のプロジェクトが協力
○ Pokyリファレンスビルドシステム
○ OpenEmbeddedソフトウェアのビルド手順が記載されたレシピと呼ばれるファイル群とビルドエンジンである bitbakeを開発
○ matchboxGUIライブラリ
○ Eclispe IDE Plug-inIDE向け開発プラグイン
○ opkgパッケージングシステム
○ Toasterビルドサポート用GUI
プロジェクト体制
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
● リファレンスビルドシステム○ ディストリビューションではない○ ディストリビューション作成をサポートするビルドシステム○ 最小構成のLinuxディストリビューションを構築できる
■ ユーザーはPokyをベースにカスタマイズする● 主な構成要素
○ bitbake○ メタデータ(レシピ、設定ファイル)
● 主な生成物○ Linux カーネル○ ブートローダー○ ユーザーランド(rootfs)○ クロスツールチェイン、SDK
Poky
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
Poky 構成図
Poky
bitbake
Pokymeta meta-pokymeta-yocto-bspメタデータ
meta
recipe-foo 設定ファイル(*.conf)
includeファイル(*.inc)
レシピファイル(*.bb, *.bbappend)
recipe-bar
レシピファイル(*.bb, *.bbappend)
classファイル(*.bbclass)
buildlinuxカーネル rootfs ブートローダー SDK
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
Poky 構成図
Poky
bitbake
Pokymeta meta-pokymeta-yocto-bspメタデータ
meta
recipe-foo 設定ファイル(*.conf)
includeファイル(*.inc)
レシピファイル(*.bb, *.bbappend)
recipe-bar
レシピファイル(*.bb, *.bbappend)
classファイル(*.bbclass)
buildrootfs ブートローダー SDK
メタデータはレイヤーという単位で管理される
linuxカーネル
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
Poky 構成図
Poky
bitbake
Pokymeta meta-pokymeta-yocto-bspメタデータ
meta
recipe-foo 設定ファイル(*.conf)
includeファイル(*.inc)
レシピファイル(*.bb, *.bbappend)
recipe-bar
レシピファイル(*.bb, *.bbappend)
classファイル(*.bbclass)
buildrootfs ブートローダー SDKlinuxカーネル
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
● 主な構成要素○ レシピ(拡張子: .bb または .bbappend)
■ ソースコードの取得、ソフトウェアのコンパイル、パッケージングまでの動作を定義■ シェルスクリプトとPythonで記述■ レシピ同士の依存関係を設定■ bbppaned ファイルは既存のbbファイルに内容を修正・追加する際に使用
○ 設定ファイル(拡張子: .conf)■ CPUアーキテクチャなどのターゲットマシン毎の定義■ ビルド環境などの独自設定
○ bitbake■ Python で書かれたビルドツール■ レシピを解析し、定義された動作を実行する
Poky
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
Poky 構成図
Poky
bitbake
Pokymeta meta-pokymeta-yocto-bspメタデータ
meta
recipe-foo 設定ファイル(*.conf)
includeファイル(*.inc)
レシピファイル(*.bb, *.bbappend)
recipe-bar
レシピファイル(*.bb, *.bbappend)
classファイル(*.bbclass)
buildrootfs ブートローダー SDKlinuxカーネル
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
Poky 構成図
Poky
bitbake
Pokymeta meta-pokymeta-yocto-bspメタデータ
meta
recipe-foo 設定ファイル(*.conf)
includeファイル(*.inc)
レシピファイル(*.bb, *.bbappend)
recipe-bar
レシピファイル(*.bb, *.bbappend)
classファイル(*.bbclass)
buildlinux-kernel rootfs ブートローダー SDK
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
● 主な構成要素○ レシピ(拡張子: .bb または .bbappend)
■ ソースコードの取得、ソフトウェアのコンパイル、パッケージングまでの動作を定義■ シェルスクリプトとPythonで記述■ レシピ同士の依存関係を設定■ bbppaned ファイルは既存のbbファイルに内容を修正・追加する際に使用
○ 設定ファイル(拡張子: .conf)■ CPUアーキテクチャなどのターゲットマシン毎の定義■ ビルド環境などの独自設定
○ bitbake■ Python で書かれたビルドツール■ レシピを解析し、定義された動作を実行する
Poky
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
$ bitbake core-image-minimal
bitbake の動作
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
$ bitbake core-image-minimal bitbake 実行時にビルドするレシピを指定する
bitbake の動作
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
$ bitbake core-image-minimal
bitbake の動作
レシピを解析
ソースコードのダウンロード
ソースコードの展開
パッチの適用
ソフトウェアのコンパイル
生成物をパッケージ化
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
$ bitbake core-image-minimal
bitbake の動作
レシピを解析
ソースコードのダウンロード
ソースコードの展開
パッチの適用
ソフトウェアのコンパイル
生成物をパッケージ化
コンパイルするソフトウェアの情報● どこからダウンロードするのか● どのように展開するのか● どのようなパッチを適用するのか
コンパイル方法● どのようなオプションでコンパイルするのか● どのような機能を有効・無効にするのか● ソフトウェア同士の依存関係
インストール・パッケージング方法● どのファイルをどこにインストールするのか● どのファイルをどのパッケージに入れるのか● パッケージング方式は何にするのか
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
$ bitbake core-image-minimal
bitbake の動作
レシピを解析
ソースコードのダウンロード
ソースコードの展開
パッチの適用
ソフトウェアのコンパイル
生成物をパッケージ化
コンパイルするソフトウェアの情報● どこからダウンロードするのか● どのように展開するのか● どのようなパッチを適用するのか
コンパイル方法● どのようなオプションでコンパイルするのか● どのような機能を有効・無効にするのか● ソフトウェア同士の依存関係
インストール・パッケージング方法● どのファイルをどこにインストールするのか● どのファイルをどのパッケージに入れるのか● パッケージング方式は何にするのか
これらを タスク 呼び、レシピ記述する。
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
タスク
● bitbake で実行される動作単位● タスクを定義する際、do_タスク名 とする必要がある
例: do_fetch: ソースコードを取得するタスク
● レシピをビルドする際、1タスク1スレッドで実行される● プログラミング言語に合わせたタスクが約70ほど定義されており、コンパイル方式、イ
ンストール方式などに合わせて利用する● タスク同士は依存関係を持っており、依存関係に合わせて実行される
bitbake の動作
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
$ bitbake core-image-minimal
bitbake の動作
do_fetch
do_unpack
do_patch
do_configuredo_compile
do_installdo_package
これらを タスク 呼び、レシピ記述する。
レシピを解析
ソースコードのダウンロード
ソースコードの展開
パッチの適用
ソフトウェアのコンパイル
生成物をパッケージ化
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
…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)
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
…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)
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
…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)
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
bitbake の動作
bitbake*.conf レシピ イメージ
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
bitbake の動作
bitbake*.conf レシピ イメージ
core-image-minimal
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
bitbake の動作
bitbake*.conf レシピ イメージ
core-image-minimal
busybox glibc
依存
……
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
bitbake の動作
bitbake*.conf レシピ イメージ
core-image-minimal
busybox glibc
gcc-cross binutils-cross
依存
依存
……
……
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
bitbake の動作
bitbake*.conf レシピ イメージ
core-image-minimal
busybox glibc
gcc-cross binutils-cross
gettext-native zlib-native
依存
依存
依存
……
……
……
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
bitbake の動作
bitbake*.conf レシピ イメージ
core-image-minimal
busybox glibc
gcc-cross binutils-cross
gettext-native zlib-native gettext-native zlib-nativeビルド
依存
依存
依存
……
……
…… ……
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
bitbake の動作
bitbake*.conf レシピ イメージ
core-image-minimal
busybox glibc
gcc-cross binutils-cross
gettext-native zlib-native
gcc-cross binutils-cross
gettext-native zlib-native
ビルド
ビルド
依存
依存
依存
……
……
…… ……
……ビルド依存
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
bitbake の動作
bitbake*.conf レシピ イメージ
core-image-minimal
busybox glibc
gcc-cross binutils-cross
gettext-native zlib-native
busybox glibc
gcc-cross binutils-cross
gettext-native zlib-native
ビルド
ビルド
ビルド
依存
依存
依存
……
……
…… ……
……
……ビルド依存
ビルド依存
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
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
インストール
ビルド
ビルド
ビルド
依存
依存
依存
……
……
…… ……
……
……
ビルド依存
ビルド依存
ビルド依存
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
● 課題○ OSSによる開発は規模が大きくなるため、詳細が把握できない○ 機能の過不足が判断しずらい○ OSSに関する情報のキャッチアップが難しい○ OSSの機能修正、追加が難しい○ SoCベンダー毎に開発環境が異なる○ BSP・SDKでソフトウェアのバージョンが異なる
Poky で解決できる課題
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
● リファレンスビルドシステム○ ディストリビューション作成をサポートするビルドシステム○ 最小構成のLinuxディストリビューションを構築できる
● 主な構成要素○ bitbake、メタデータ(レシピ、設定ファイル)
● ビルドする際には bitbake コマンドを使用する○ bitbake はレシピファイルを解析し、ビルドに必要なアクションを実行する○ レシピ同士の依存関係の解決、ソースコードの取得、パッチ適用、コンパイル、
パッケージ化など● レシピにはソフトウェアのビルドに必要な処理を記述する。処理はタスクと呼ばれる。● 主な生成物
○ Linux カーネル、ブートローダー、ユーザーランド(rootfs)、クロスツールチェイン、SDK
Poky に関するまとめ
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
レイヤー機能について
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
Poky 構成図
レイヤー機能について
bitbake
Pokymeta meta-pokymeta-yocto-bspメタデータ
meta
recipe-foo 設定ファイル(*.conf)
includeファイル(*.inc)
レシピファイル(*.bb, *.bbappend)
recipe-bar
レシピファイル(*.bb, *.bbappend)
classファイル(*.bbclass)
buildrootfs ブートローダー SDKlinuxカーネル
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
Poky 構成図
レイヤー機能について
bitbake
Pokymeta meta-pokymeta-yocto-bspメタデータ
meta
recipe-foo 設定ファイル(*.conf)
includeファイル(*.inc)
レシピファイル(*.bb, *.bbappend)
recipe-bar
レシピファイル(*.bb, *.bbappend)
classファイル(*.bbclass)
buildrootfs ブートローダー SDKlinuxカーネル
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
レイヤー機能について
bitbake ビルドエンジン
meta-poky
Linux kernelやソフトウェアのレシピ
Poky ディストリビューションの情報
BSPの構成情報など
Poky
meta
meta-yocto-bsp
最小構成のLinuxディストリビューションを構築できる。
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
レイヤー機能について
bitbake ビルドエンジン
meta-poky
Linux kernelやソフトウェアのレシピ
Poky ディストリビューションの情報
BSPの構成情報など
Poky
meta
meta-yocto-bsp Xilinx社のMPSoC SoCを使用したシステムを構築したい…
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
レイヤー機能について
bitbake ビルドエンジン
meta-poky
Linux kernelやソフトウェアのレシピ
Poky ディストリビューションの情報
BSPの構成情報など
Poky
meta
meta-yocto-bsp
meta-xilinx Xilinx社のMPSoCをサポートするメタデータ追加
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
レイヤー機能について
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 \ /home/user/work/poky/meta-yocto-bsp \ /home/user/work/meta-xilinx/meta-xilinx-bsp \ "
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
レイヤー機能について
meta linux-yoctobusybox
busyboxmeta-poky
…
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
レイヤー機能について
meta
meta-xilinx
linux-yoctobusybox
linux-yocto
busyboxmeta-poky
…
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
レイヤー機能について
meta
meta-xilinx
linux-yoctobusybox
linux-yocto
busyboxmeta-poky
…
使用するボードの設定等
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
レイヤー機能について
meta
meta-xilinx
linux-yoctobusybox
linux-yocto
busyboxmeta-poky
…
Xilinx MPSoCの設定有効
機能の追加
使用するボードの設定等
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
レイヤー機能について
meta
meta-xilinx
最終的なレシピ
linux-yoctobusybox
linux-yocto
busyboxmeta-poky
…
Xilinx MPSoCの設定有効
busybox linux-yocto
機能の追加
使用するボードの設定等
レシピの解析
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
レイヤー機能について
meta
meta-xilinx
最終的なレシピ
linux-yoctobusybox
linux-yocto
busyboxmeta-poky
…
Xilinx MPSoCの設定有効
busybox linux-yocto
機能の追加
使用するボードの設定等
レシピの解析
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
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
レイヤー機能について
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
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ファイルで定義した内容が上書きまたは追加されたbusybox_1.23.2.bb
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
レイヤー機能
bitbake ビルドエンジン
meta-poky
Linux kernelやソフトウェアのレシピ
Poky ディストリビューションの情報
BSPの構成情報など
Poky
meta
meta-yocto-bsp
meta-xilinx Xilinx社のMPSoCをサポートするメタデータ
自社で作ったアプリケーションをシステムにインストールしたい
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
レイヤー機能について
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 \ /home/user/work/poky/meta-poky \ /home/user/work/poky/meta-yocto-bsp \ /home/user/work/meta-xilinx/meta-xilinx-bsp \ /home/user/work/meta-myapp \ "
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
レイヤー機能について
meta
meta-xilinx
linux-yoctobusybox
linux-yocto
busyboxmeta-poky
…
使用するボードの設定等
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
レイヤー機能について
meta
meta-xilinx
linux-yoctobusybox
linux-yocto
busyboxmeta-poky
…
使用するボードの設定等
meta-myapp myappmyappに関する設定
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
レイヤー機能について
meta
meta-xilinx
最終的なレシピ
linux-yoctobusybox
linux-yocto
busyboxmeta-poky
…
Xilinx MPSoCの設定有効
busybox linux-yocto
機能の追加
使用するボードの設定等
レシピの解析
meta-myapp myapp
myapp
myappに関する設定
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
● 課題○ OSSによる開発は規模が大きくなるため、詳細が把握できない○ 機能の過不足が判断しずらい○ OSSに関する情報のキャッチアップが難しい○ OSSの機能修正、追加が難しい○ SoCベンダー毎に開発環境が異なる○ BSP・SDKでソフトウェアのバージョンが異なる
レイヤー機能で解決できる課題
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
● Pokyは最小構成のLinuxディストリビューションを構築するためのツールやメタデータを提供する
● ユーザーが独自の実装を追加するには、レイヤー機能を使って追加する● 各SoCの設定や、ボードの設定などもレイヤー単位で提供される● レイヤーを使用することによって、他のレイヤーで提供されているレシピのファイルそ
のものを変更せずに、レシピの修正等ができるようになっている
レイヤー機能に関するまとめ
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
質疑応答
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
参考文献
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
● 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
参考文献
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
1. https://1.bp.blogspot.com/-LHEZgJ6tpeA/UgSL_9y4KrI/AAAAAAAAW5s/DNRPJ4kSvpI/s400/food_curryruce.png x22. https://3.bp.blogspot.com/-N2OBmlrmp6I/UnyHSqHeW3I/AAAAAAAAahc/1XbLO4ZbaQg/s800/cooking_chef.png x23. https://4.bp.blogspot.com/-2t-ECy35d50/UPzH73UAg3I/AAAAAAAAKz4/OJZ0yCVaRbU/s1600/book.png x24. https://2.bp.blogspot.com/-kXpgJDSmOZI/VJ6XX867x9I/AAAAAAAAqJ4/yYWtYMdnE3A/s800/cooking10_kiru.png x25. https://2.bp.blogspot.com/-0_papKo8Qt4/VahRmEpGpUI/AAAAAAAAvtQ/QyU6EtxIhLc/s800/makimono_toranomaki.png x26. https://1.bp.blogspot.com/-etAOuOz8L7Y/W1a4rKcd5WI/AAAAAAABNhU/fB5zVLV7Mig1oPLUdf17QS7n15np1S3OACLcBGAs/s8
00/food_niku_pack.png x27. https://3.bp.blogspot.com/-QCe-ngfpbTg/UkJM8tkaq6I/AAAAAAAAYWM/U3pbo3YS9XA/s800/ninjin_carrot.png x28. https://3.bp.blogspot.com/-EiqKoF2kMTQ/UkJM5vVnb7I/AAAAAAAAYVU/tCuJxeQQiNE/s800/jagaimo_poteto.png x29. 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
いらすとや使用画像
Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開
信頼とともに
留意事項
本資料に記載されている会社名、製品名、サービス名は、当社または各社、各団体の商標もしくは登録商標です。その他本資料に記載されているイラスト・ロゴ・写真・動画・ソフトウェア等は、当社または第三者が有する知的財産権やその他の権利により守られております。お客様は、当社が著作権を有するコンテンツについて、特に定めた場合を除き、複製、改変、頒布などをすることはできません。本資料に記載されている情報は予告なしに変更されることがあります。また、時間の経過などにより記載内容が不正確となる場合がありますが、当社は、当該情報を更新する義務を負うものではありません。