Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
wata2ki
PPTX, PDF
14,274 views
YoctoをつかったDistroの作り方とハマり方
YoctoをつかったDistroの作り方とハマり方
Engineering
◦
Read more
6
Save
Share
Embed
Embed presentation
Download
Downloaded 66 times
1
/ 21
2
/ 21
3
/ 21
4
/ 21
5
/ 21
6
/ 21
7
/ 21
8
/ 21
9
/ 21
10
/ 21
11
/ 21
12
/ 21
Most read
13
/ 21
14
/ 21
15
/ 21
16
/ 21
Most read
17
/ 21
18
/ 21
19
/ 21
20
/ 21
21
/ 21
Most read
More Related Content
PDF
Yocto Project ハンズオン プレゼン用資料
by
Nobuhiro Iwamatsu
PDF
レシピの作り方入門
by
Nobuhiro Iwamatsu
PPTX
Yocto bspを作ってみた
by
wata2ki
PDF
ARM Trusted FirmwareのBL31を単体で使う!
by
Mr. Vengineer
PDF
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
by
モノビット エンジン
PDF
ネットワーク ゲームにおけるTCPとUDPの使い分け
by
モノビット エンジン
PDF
ゲーム開発者のための C++11/C++14
by
Ryo Suzuki
PDF
ARM CPUにおけるSIMDを用いた高速計算入門
by
Fixstars Corporation
Yocto Project ハンズオン プレゼン用資料
by
Nobuhiro Iwamatsu
レシピの作り方入門
by
Nobuhiro Iwamatsu
Yocto bspを作ってみた
by
wata2ki
ARM Trusted FirmwareのBL31を単体で使う!
by
Mr. Vengineer
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
by
モノビット エンジン
ネットワーク ゲームにおけるTCPとUDPの使い分け
by
モノビット エンジン
ゲーム開発者のための C++11/C++14
by
Ryo Suzuki
ARM CPUにおけるSIMDを用いた高速計算入門
by
Fixstars Corporation
What's hot
PDF
組み込み関数(intrinsic)によるSIMD入門
by
Norishige Fukushima
PDF
Ethernetの受信処理
by
Takuya ASADA
PDF
目grep入門 +解説
by
murachue
PDF
プログラムを高速化する話
by
京大 マイコンクラブ
PPTX
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
by
DeNA
PDF
BuildKitの概要と最近の機能
by
Kohei Tokunaga
PDF
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
by
Genya Murakami
PDF
何となく勉強した気分になれるパーサ入門
by
masayoshi takahashi
PDF
こわくない Git
by
Kota Saito
PDF
YoctoでLTSディストリを作るには
by
wata2ki
PDF
Docker Compose 徹底解説
by
Masahito Zembutsu
PDF
20分くらいでわかった気分になれるC++20コルーチン
by
yohhoy
PDF
ELFの動的リンク
by
7shi
PDF
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
by
Kuniyasu Suzaki
PPT
Glibc malloc internal
by
Motohiro KOSAKI
PDF
WebAssemblyのWeb以外のことぜんぶ話す
by
Takaya Saeki
PDF
12 分くらいで知るLuaVM
by
Yuki Tamura
PPTX
Unityネイティブプラグインマニアクス #denatechcon
by
DeNA
PDF
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
by
UnityTechnologiesJapan002
PPTX
Linuxのsemaphoreとmutexを見る
by
wata2ki
組み込み関数(intrinsic)によるSIMD入門
by
Norishige Fukushima
Ethernetの受信処理
by
Takuya ASADA
目grep入門 +解説
by
murachue
プログラムを高速化する話
by
京大 マイコンクラブ
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
by
DeNA
BuildKitの概要と最近の機能
by
Kohei Tokunaga
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
by
Genya Murakami
何となく勉強した気分になれるパーサ入門
by
masayoshi takahashi
こわくない Git
by
Kota Saito
YoctoでLTSディストリを作るには
by
wata2ki
Docker Compose 徹底解説
by
Masahito Zembutsu
20分くらいでわかった気分になれるC++20コルーチン
by
yohhoy
ELFの動的リンク
by
7shi
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
by
Kuniyasu Suzaki
Glibc malloc internal
by
Motohiro KOSAKI
WebAssemblyのWeb以外のことぜんぶ話す
by
Takaya Saeki
12 分くらいで知るLuaVM
by
Yuki Tamura
Unityネイティブプラグインマニアクス #denatechcon
by
DeNA
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
by
UnityTechnologiesJapan002
Linuxのsemaphoreとmutexを見る
by
wata2ki
More from wata2ki
PPTX
鹿児島らぐハイブリッド開催への道
by
wata2ki
PPTX
Linuxの2038年問題を調べてみた
by
wata2ki
PDF
YoctoLTSについて調べてみた
by
wata2ki
PPTX
しょしんしゃのためのhello world
by
wata2ki
PPTX
ARM LinuxのMMUはわかりにくい
by
wata2ki
PPTX
Fireduck
by
wata2ki
PPTX
パッチを投稿してみた話
by
wata2ki
PPTX
Linux kernelのbspとupstream
by
wata2ki
鹿児島らぐハイブリッド開催への道
by
wata2ki
Linuxの2038年問題を調べてみた
by
wata2ki
YoctoLTSについて調べてみた
by
wata2ki
しょしんしゃのためのhello world
by
wata2ki
ARM LinuxのMMUはわかりにくい
by
wata2ki
Fireduck
by
wata2ki
パッチを投稿してみた話
by
wata2ki
Linux kernelのbspとupstream
by
wata2ki
YoctoをつかったDistroの作り方とハマり方
1.
wata2ki
2.
名前: wata2ki
(watatuki) ◦ 元はハードウェアで画像処理をやっていましたが、現在は組 み込み屋をやっています ◦ 最近はJetson-TK1/TX1向けのアンオフィシャルYocto BSP を作り、そのうえでディスクトップ環境や別ボード向けのディス トロを動かして遊んでいます ◦ GitHub https://github.com/watatuki
3.
今日は、Yoctoを使ってディストロを作る方法と、それ を公開するときに突き当たった問題について発表しま す
4.
L.F.(Linux Foundation)のプロジェクトで、正式名称は Yocto
Project ◦ https://www.yoctoproject.org/ Linuxのディストリビューションを作るのに必要なツー ル・データを提供 ◦ 最終的にはpokyという名前のリファレンスディストロとして提 供される ◦ OpenEmbedded(http://www.openembedded.org/)コミュニティ 由来のプロジェクトで、ツールも共同開発している GentooLinuxがクロスビルドになったようなもの
5.
bitbake ◦ Yoctoの根幹となるツールで、クロスビルド環境を提供してくれる ◦
ディストリビューションの構成するソフトのコンフィグやバージョンを Recipeで管理する oe-core ◦ bitbakeで使うレシピのセットで、glibc, x.org, waylandからQtまで、様々 なOSSを標準でビルドできるようにしてくれる ◦ クロスビルド用のgccもoe-coreが提供してくれる リファレンスBSP ◦ pokyが標準でサポートしているボード向けのBSP Qemu, x86, x86-64, beagleboneなど LinuxのカーネルやU-boot, OpenGL(mesa)をそのボード向けの設定でビル ドできるようにするレシピの形で提供される リファレンスBSPに関しては、少なくともビルドが通ることが確認されている (はず。。。)
6.
Yoctoでは、自分の作りたいディストロをlayerを組み合 わせて構築する 自分の作りたいディストロ meta (oe-core
layer) meta-yocto (yocto layer) meta-jetson (BSP layer) meta-mydistro (my layer) 標準Layer meta-windowmng (layer) BSP Layer ターゲットボード用のカーネルや、ファーム ウェア等 さらに追加したいコンポーネントが入っ たLayerを積み上げる
7.
Layerはレシピの集合体 ◦ Qt5を提供するmata-qt5、自分専用レシピ集など、何らかの共通項 でLayerを作るが、最初はあまりこだわらなくても良い
Layerは優先度を持っている ◦ 異なるレイヤに同じレシピが存在した場合は、優先度が高いほうが 採用される ◦ 自分用Layerは、優先度を高くすると良い meta-xxx(layer) glibc(recipe) mesa(recipe) x.org(recipe) meta-xxx(layer) 優先度6 mesa(recipe) meta(layer) 優先度5 glibc(recipe) mesa(recipe) 自分の作りたいディストロ
8.
1つのレシピ(.bb)で1つのソフトコンポーネント ◦ gitリポジトリやtarのアーカイブ1個につき1レシピが基本 ◦
特定のバージョン/リビジョンを指定する ◦ レシピに追加で当てたいパッチファイルを書くことで、ビルド時に パッチをあてることも可能 ◦ configureオプションを指定することが可能 結構チェックが厳しいので、レシピを作るのは慣れるまでは苦労しま す。。。。 既存のレシピに追記することも可能(.bbappend) ◦ 既存のレシピ(たとえばmesa)のconfigureオプションを変えたい時な どに使う 例えば、pokyのmesaレシピはvmrgfx用のドライバが有効になっていない ので、有効にするオプションを追加
9.
クロスビルド用でないレシピ ◦ imageレシピ
最終的なrootfsイメージの構成を指定するレシピ 「ベースのX11が使えるimageにqtをインストールしたイメージを作る」 といった、最終的に自分の作りたい物を記述する クロスSDKやターゲットSDKも同じように作ることが可能 ◦ バイナリインストール用レシピ SOCベンダ提供のレシピによくあるタイプ OpenGLドライバがバイナリ提供なので、バイナリをダウンロードしてく れる
10.
qt5 Kernel OpenGL busybox glibc x.org bash qt5-dev OpenGL- dev glibc-dev x.org-dev bash-dev Packages(target) image Kernel OpenGL busybox glibc x.org bash meta meta-jetson meta-mydistro meta-qt5 myimage qt5 Kernel OpenGL busybox glibc x.org bash mySDK recipe/layers gcc Packages(host) gcc SDK image qt5 Kernel OpenGL busybox glibc x.org bash qt5-dev OpenGL- dev gcc glibc-dev x.org-dev bash-dev Yoctoを使うことで、recipe/layerからホスト用とターゲット用のパッケージ(rpm,ipk,debが選 択可能)をビルドでき、イメージレシピを使ってrootfsイメージにまとめることができる
12.
meta/ meta-yocto meta-linaro meta-miscellaneous meta-qt5 image qt5 Kernel OpenGL busybox glibc x.org recipe/layers gcc meta-jetson-tk1 jwm bootconf meta-lightwm glmark2 meta-jetson-tk1-distro Kernel Linaroのツールチェインを使う ために追加 X.OrgでGPUが使えるBSPレ イヤを追加 Qt5を使えるようにしよう 軽量のウインドウマネージャ を使いたい せっかくTegraK1なので、3D ベンチマークも動かしたい ディストロ専用のカーネルコン フィグでimageを作ろう jack2
13.
meta/ meta-yocto meta-linaro meta-miscellaneous meta-qt5 image qt5 Kernel OpenGL busybox glibc x.org recipe/layers gcc meta-jetson-tk1 jwm bootconf meta-lightwm glmark2 meta-jetson-tk1-distro Kernel Linaroのツールチェインを使う ために追加 X.OrgでGPUが使えるBSPレ イヤを追加 Qt5を使えるようにしよう 軽量のウインドウマネージャ を使いたい せっかくTegraK1なので、3D ベンチマークも動かしたい ディストロ専用のカーネルコン フィグでimageを作ろう jack2 Gitの特定のハッシュ まで戻さないとビルド が通らない!! Qt5おまえもか!! 世の中でYocto対応BSP出しているベ ンダーはどうやってるんだ???
14.
recipeは特に問題はない ◦ recipeはソースのバージョンに1:1対応する
recipeが指定するソースは勝手に変わることはない ◦ layerは通常git管理されているため、recipeの変更はlayerのリビジョンアップに なる Layer内の正しい組み合わせはgitのコミット単位でコントロールできる layerの組み合わせの正解がない! ◦ 一般にlayer単位でメンテするコミュニティが違う layer単位でリポジトリを持っている ユーザは自分が使うlayerをそれぞれのリポジトリからもってこないといけない コミュニティが使っているlayerの組み合わせと違う組み合わせにすると、元々ビルド できていたものができなくなる 複数人開発するためには、layerの組み合わせを共有しないといけな い!!
15.
meta meta-linaro busybox glibc x.org gcc gcc x.org busybox glibc recipeとソースが1:1対応しているの で、layerの構成管理で管理できる ディストロという単位でみ ると、別々のリポジトリを リンクする方法がない。
16.
某T●社のGLSDK ◦ シェルスクリプトを使って、git
clone & checkout リリース用ならいいけど、複数人の開発でこれはないな。。。 某R社のBSP ◦ リリースドキュメント(pdf)にgitコマンドが書いてある もっとひどい!! いっそ、全部同じgitリポジトリに放りこんでしまおうか。。。 →参照しているリポジトリの更新を取り込むのが大変なので却下
17.
repo ◦ Androidをビルドする人には見慣れたツール ◦
マニフェストファイル(xml)で、複数のgitリポジトリの組み合わ せを表現することができる <?xml version="1.0" encoding="UTF-8"?> <manifest> <remote name="yocto" fetch="git://git.yoctoproject.org/" /> <remote name="linaro" fetch="git://git.linaro.org/openembedded/" /> <remote name="qt5" fetch="https://github.com/meta-qt5/" /> <remote name="watatuki" fetch="https://github.com/watatuki/" /> <default revision="master" /> <!-- Yocto Layers --> <project path="poky" name="poky" remote="yocto" revision="b1f23d1254682866236bfaeb843c0d8aa332efc2" /> <project path="meta-linaro" name="meta-linaro.git" remote="linaro" revision="acf4f1f701e07670ec88435897a74f88dbe8ba87" /> <project path="meta-qt5" name="meta-qt5.git" remote="qt5" revision="37693b5357e790665bce4957cb7a8d5d2423390d" /> <project path="meta-jetson-tk1" name="meta-jetson-tk1.git" remote="watatuki" revision="jethro" /> <project path="meta-lightwm" name="meta-lightwm.git" remote="watatuki" revision="master" /> <project path="meta-miscellaneous" name="meta-miscellaneous.git" remote="watatuki" revision="15f549706a316333ba32c90f78df4d70f13cc601" /> <project path="meta-jetson-tk1-distro" name="meta-jetson-tk1-distro.git" remote="watatuki" revision="05b611871a231966d8b8c55b929824895895c926" /> <project path="jetson-tk1-distro" name="jetson-tk1-distro.git" remote="watatuki" /> </manifest> これだ!!
18.
meta meta-linaro busybox glibc x.org gcc gcc x.org busybox glibc recipeとソースが1:1対応しているの で、layerの構成管理で管理できる ディストロという単位でみ ると、別々のリポジトリを リンクする方法がない。
19.
meta meta-linaro busybox glibc x.org gcc gcc x.org busybox glibc recipeとソースが1:1対応しているの で、layerの構成管理で管理できる repoのマニフェストファイ ルで、異なるリポジトリ間 の連携をとることができる ようになった
20.
layerの更新を行いつつ、常にディストロがビルドできる状 態を維持できるワークフローを組めるようになった ◦ レシピを書いてlayerのリポジトリにコミット ◦
ディストロ全体ビルドの確認ができたらマニフェストを更新 レシピの更新 ローカルでのテスト リポジトリにコミット (push) OK NG レシピ開発 マニフェストの更新 テスト リポジトリにコミット (push) OK NG インテグレータ この時点で全員の共通環 境が初めて更新される この時点では構成管理に登録 されただけで使われない
21.
Yoctoは便利で強力な仕組みだが、抜けているところもある ◦ Yocto自身は中途半端にしか構成管理の仕組みを持っていないため、 外側でなんとかしないといけない
repoを使うことでYoctoの抜けているところを補完できる ◦ Yoctoとrepoをセットで使うといいよ! ◦ 実例はこちら参照 https://github.com/watatuki/jetson-tk1-yocto-distro https://github.com/watatuki/agl-jetson-tk1 でも一人開発なので、意味はあまりないのであった。。。
Download