SlideShare a Scribd company logo
1 of 58
Download to read offline
Yocto Project ハンズオン 
Yocto Project 勉強会#2 
岩松信洋 
2014 年9 月27 日
スポンサー
スポンサー 
▶ 会場スポンサー: 株式会社豆蔵 
▶ ビルド用マシンスポンサー: 株式会社さくらインター 
ネット
自己紹介 
▶ 岩松信洋(いわまつのぶひろ)/ @iwamatsu 
▶ Yocto Project meta-renesas メンテナ(Renesas ARM 
SoCs) 
▶ U-Boot SH / Renesas ARM SoCs メンテナ 
▶ Debian Project Officail Developer
Agenda 
1. Yocto Project とは 
2. Poky とは 
3. ハンズオンについて 
4. ドキュメントの表記について 
5. 開発環境構築Poky ディレクトリレイアウト 
6. Linux OS イメージをビルドする 
7. Linux OS イメージを起動する 
8. カスタムイメージレシピを作成する 
9. カスタムイメージレシピをビルドし起動する 
10. 実機向けイメージをビルドする 
11. 付録: レシピの内容を見る
Yocto Projectとは
Yocto Project とは 
▶ Yocto Project(https://www.yoctoproject.org/)は 
The Linux Foundation が後援する組込みLinux に特化し 
たコラボレーション・プロジェクト。 
▶ プロジェクト名にあるYocto(ヤクト)は国際単位系 
(SI) における最小単位の一つで、1024 を意味する。 
▶ Linux ディストリビューション構築に必要なビルドツー 
ルやソフトウェアのビルドに必要な情報、操作用GUI 
などの異なった要素を持ったいくつかのプロジェクト 
によって開発プロセスを構成する形をとっている。 
▶ ユーザはPoky と呼ばれる各プロジェクトの成果がま 
とめられたツールを使ってユーザ自身でソフトウェア 
のビルドを行い、独自のLinux ディストリビューション 
を構築する。
Pokyとは
Poky とは 
▶ 組み込み向けLinux ディストリビューションビルド 
ツール。 
▶ eglibc, prelink, pseudo, swabber などのツールが含ま 
れる。 
▶ x86 (32bit と64 bit), ARM, MIPS, PPC のアーキテク 
チャをサポートしている。 
▶ ビルドシステムとコアとなるメタデータ(レシピ)を 
OpenEmbedded コミュニティと共に開発し、共有して 
いる。
Poky とは 
▶ Layer 構造を使うことによって、メタデータ(レシピ) 
の再利用を簡単にしている。 
▶ deb、ipk、rpm パッケージフォーマットをサポートして 
いる。 
▶ 6ヶ月毎のリリースサイクルを持っている。 
▶ 最新の安定板カーネル、ツールチェイン、ソフトウェ 
ア、ドキュメントを提供する。 
▶ Eclipse plugin, Application Development Toolkit (ADT) 
等を提供する。
ハンズオンについて
ハンズオンについて 
本ハンズオンではYocto Project で公開されているPoky を 
使ってLinux OS イメージを構築、起動、イメージの修正等 
を行う。Poky の基本的な使い方が理解できることを目的と 
する。 
本ハンズオンで利用する環境は以下の通り。 
▶ Poky: バージョン1.6.1 
▶ 利用するLinux ディストリビューション: Ubuntu 
12.04 LTS 
▶ ターゲットハードウェア: QEMU/ARM 
▶ ビルド用マシン: CPU 12 コア/ メモリ64GB / ディス 
ク100GB (さくらインターネットさん提供)
ハンズオンについて 
今回主催者側でビルド用マシンを用意しています。参加登 
録時にSSH 公開鍵の送付をお願いしています。各自その 
SSH 環境でビルド用マシンにログインしてください。端末 
としてGNU/Linux をお使いの方は以下のようにしてログイ 
ンできます。 
$ ssh ubuntu@ビルド用マシンのIP のアドレス
ドキュメントの表記につ 
いて
ドキュメントの表記について 
▶ コマンドの$ はユーザによる実行を意味する。 
▶ コマンドの# はroot による実行を意味する。 
▶ コマンドのn は続けて入力することを意味する。 
▶ テキストファイル変更方法は全てvi で統一していま 
す。emacs などを使いたい方は別途インストールする 
こと。 
$ sudo apt-get install emacs
開発環境構築
開発環境構築 
まず開発環境を構築します。Poky を利用する使ってビルド 
するために必要なソフトウェアをビルド用マシンにインス 
トールする。 
1. sudo apt-get update を実行する 
$ sudo apt-get update 
2. sudo apt-get upgrade を実行する 
$ sudo apt-get upgrade 
3. 開発環境に必要なパッケージをインストールする 
$ sudo apt-get install gawk wget git-core diffstat  
unzip texinfo gcc-multilib  
build-essential chrpath libsdl1.2-dev xterm
Pokyのダウンロード
Poky のダウンロード 
Yocto Project で提供されているリファレンスビルドシステ 
ム、Poky をダウンロードする。 
1. ホームディレクトリに移動する 
$ cd 
2. yocto ディレクトリを作成し、移動する 
$ mkdir yocto 
$ cd yocto 
3. Poky のGit リポジトリをクローンする 
$ git clone git://git.yoctoproject.org/poky
Poky のダウンロード 
4. poky ディレクトリに移動する 
$ cd poky 
5. yocto-1.6.1 タグをyocto-handson ローカルブランチと 
してチェックアウトする。 
$ git checkout -b yocto-handson yocto-1.6.1
Pokyディレクトリレイア 
ウト
Poky ディレクトリレイアウト 
Poky のディレクトリがどのようになっているのか確認する。 
$ ls 
LICENSE README.hardware documentation meta-selftest meta-yocto oe-init-build-env scripts 
README bitbake meta meta-skeleton meta-yocto-bsp oe-init-build-env-memres 
▶ LICENSE: Poky で提供されるレシピ等のライセンス 
▶ bitbake: BitBake ユーティリティ 
▶ documentation: ドキュメントソース 
▶ scripts: サポートスクリプト 
▶ meta/conf: 主要な設定ファイル群。bitbake の設定やリ 
ファレンスボード用の設定など。 
▶ meta/classes: BitBake クラスファイル群 
▶ meta/recipes-* : レシピ 
▶ meta-yocto : Yocto で管理されるレシピ等
Linux OS イメージをビルド 
する
Linux OS イメージをビルドする 
Poky で提供されるリファレンスイメージ 
▶ core-image-minimal 
Unix の基本的な操作ができるLinux OS イメージを提供 
するレシピ 
▶ core-image-sato 
matchbox をベースとしたLinux OS イメージを提供す 
るレシピ 
▶ core-image-x11 
x11 の基本部分を含んだLinux OS イメージを提供する 
レシピ 
▶ core-image-weston 
Wayland/Weston の基本部分を含んだLinux OS イメー 
ジを提供するレシピ 
▶ core-image-lsb 
Linux Standard Base に準拠したLinux OS イメージを提 
供するレシピ
Linux OS イメージをビルドする 
Poky で提供されるリファレンスイメージ 
▶ core-image-minimal 
Unix の基本的な操作ができるLinux OS イメージを提供 
するレシピ 
▶ core-image-sato 
matchbox をベースとしたLinux OS イメージを提供す 
るレシピ 
▶ core-image-x11 
x11 の基本部分を含んだLinux OS イメージを提供する 
レシピ 
▶ core-image-weston 
Wayland/Weston の基本部分を含んだLinux OS イメー 
ジを提供するレシピ 
▶ core-image-lsb 
Linux Standard Base に準拠したLinux OS イメージを提 
供するレシピ
BitBake が動作する環境の構築 
▶ Poky ではBitBake と呼ばれるビルドツールを使って 
Linux OS イメージをビルドする。 
▶ BitBake は専用の環境変数を設定しないと正しく動作し 
ない。 
▶ Poky にはこの環境変数を設定するためのツール 
oe-init-build-env が用意されているので、これを実行 
する。
BitBake が動作する環境の構築 
1. ~/yocto ディレクトリに移動する 
$ cd ~/yocto 
2. oe-init-build-env を実行する 
$ source poky/oe-init-build-env build_qemuarm 
3. pwd コマンドを実行し、カレントディレクトリを確認 
する 
$ pwd 
/home/ubuntu/yocto/build_qemuarm
BitBake が動作する環境の構築 
▶ oe-init-build-env 実行 
後、/home/ubuntu/yocto/build qemuarm ディレクトリ 
に移動していることを確認する。 
▶ build qemuarm ディレクトリにはconf ディレクトリが 
あり、この中にbblayers.conf とlocal.conf の2つのファ 
イルが作成されている。この2 つのファイルの内容を 
確認する。
conf/bblayers.conf の確認 
▶ bblayers.conf ではビルドに必要なレイヤーを指定する。 
▶ 指定されているレイヤーはビルド時に指定されている 
レイヤーで提供されているレシピが全て読み込まれ、 
ビルドに内容に反映される。 
LCONF_VERSION = 6 
BBPATH = ${TOPDIR} 
BBFILES ?=  
BBLAYERS ?=   
/home/ubuntu/yocto/poky/meta  
/home/ubuntu/yocto/poky/meta-yocto  
/home/ubuntu/yocto/poky/meta-yocto-bsp  
 
BBLAYERS_NON_REMOVABLE ?=   
/home/ubuntu/yocto/poky/meta  
/home/ubuntu/yocto/poky/meta-yocto
conf/local.conf の確認と編集 
▶ local.conf ではbitbake に与える変数を設定する。例え 
ば、ビルドターゲット、CPU アーキテクチャ、ソース 
コード格納ディレクトリ、ハードウェア機能など 
▶ 今回はqemuarm をターゲットとしてビルドする。 
▶ ターゲットはMACHINE という変数で指定する。デ 
フォルトではMACHINE ??= qemux86となってお 
り、qemux86 が指定されている。 
$ vi conf/local.conf 
...... 
MACHINE ?= qemuarm - 行頭の#を削除する
ビルド 
▶ ビルドするにはbitbake にビルドしたいレシピ名を指 
定する。 
▶ 今回はcore-image-minimal イメージをビルドするため、 
以下のように実行する。 
$ bitbake core-image-minimal
Linux OSイメージを起動する
Linux OSイメージを起動する 
▶ ビルドが完了したら、Linux OS イメージを起動する。 
$ runqemu qemuarm nographic 
▶ 実行するとsudo のパスワードを求められるので、パス 
ワードyoctohandson を入力する。 
Continuing with the following parameters: 
KERNEL: [/home/ubuntu/yocto/build_qemuarm/tmp/deploy/images/qemuarm/zImage-qemuarm.bin] 
ROOTFS: 
[/home/ubuntu/yocto/build_qemuarm/tmp/deploy/images/qemuarm/core-image-minimal- 
 
qemuarm-20140926010952.rootfs.ext3] 
FSTYPE: [ext3] 
Setting up tap interface under sudo 
[sudo] password for iwamatsu: 
..... 
random: dd urandom read with 86 bits of entropy available 
random: nonblocking pool is initialized 
Poky (Yocto Project Reference Distro) 1.6.1 qemuarm /dev/ttyAMA0 
qemuarm login:
Linux OSイメージを起動する 
▶ ログインユーザはroot、パスワードなしでログイン 
する。 
▶ 終了するには以下のコマンドを実行します。注意: 必ず 
QEMU 上で実行すること。 
# shutdown -h now 
▶ QEMU が終わらない場合はCtrl+A x (Ctrl とA を 
同時に押した後、x を押す)を押すと、QEMU が終了 
する。
カスタムイメージレシピを 
作成する
カスタムイメージレシピを作成する 
▶ core-image-minimal のレシピはpoky/meta/recipes- 
core/images/core-image-minimal.bb に 
ある。 
▶ ファイルを直接編集してカスタムイメージを作っても 
よいが、これでは変更内容をpoky 内で管理することに 
なる。 
▶ 正しい方法は変更内容を管理するレイヤーを作成し、 
このレイヤーでレシピの変更内容等を管理すること。 
▶ そのためにはまずレイヤーを作る必要がある。
カスタム用レイヤーを作成する 
▶ カスタム用レイヤーを作成する場合、エディタ等で設 
定ファイルを一から作成する。 
▶ めんどくさがりな人のためにレイヤーの雛形を作成し 
てくれるyocto-layer スクリプトがある。 
▶ 今回はyocto-layer を使った方法で説明。
カスタム用レイヤーを作成する 
1. ~/yocto ディレクトリに移動する 
$ cd ~/yocto 
2. yocto-layer を実行する 
yocto-layer にcreate オプションと作成したいレイヤー 
の名前を指定して実行する。完了するとレイヤー名に 
meta-というプレフィックスが付加されたディレクトリ 
が作成される。 
$ yocto-layer create handson 
Please enter the layer priority you'd like to use for the layer: [default: 6] 
Would you like to have an example recipe created? (y/n) [default: n] 
Would you like to have an example bbappend file created? (y/n) [default: n] 
New layer created in meta-handson. 
Don't forget to add it to your BBLAYERS (for details see meta-handson$$README).
カスタム用レイヤーを作成する 
3. meta-handson ディレクトリがあるか確認する 
$ ls 
build_qemuarm meta-handson poky
core-image-minimal レシピにパッケージを追加 
する 
▶ core-image-minimal イメージにパッケージを追加する。 
▶ 今回はdropbear (SSH サーバ) を追加. 
▶ パッケージを追加方法はいくつかある。 
▶ 今回はcore-image-minimal レシピに修正を加えるため 
のcore-image-minimal.bbappend ファイルを作成す 
る方法を使う。
core-image-minimal レシピにパッケージを追加 
する 
1. meta-handson ディレクトリに移動し、 
recipes-core/images ディレクトリを作成する 
$ cd meta-handson 
$ mkdir -p recipes-core/images 
2. エディタで 
recipes-core/images/core-image-minimal.bbappend ファ 
イルを開く 
$ vi recipes-core/images/core-image-minimal.bbappend 
3. 下記の内容を書き込み、エディタを終了する 
IMAGE_INSTALL += dropbear
カスタムイメージレシピを 
ビルドし起動する
カスタムイメージレシピをビルドし起動する 
先ほど作成したhandson レイヤーを使ったカスタムイメー 
ジレシピをビルドする。
作成したmeta-handson レイヤーをbblayers.conf 
に追加する 
▶ 今の状態ではmeta-handson レイヤーが利用できる状態 
ではない。 
▶ conf/bblayers.conf に追加する必要がある。 
1. ~/yocto/build qemuarm に移動する 
$ cd ~/yocto/build_qemuarm
作成したmeta-handson レイヤーをbblayers.conf 
に追加する 
2. conf/bblayers.conf をエディタで開き、meta-handson レ 
イヤーのパスを追加する。 
$ vi conf/bblayers.conf 
...... 
LCONF_VERSION = 6 
BBPATH = ${TOPDIR} 
BBFILES ?=  
BBLAYERS ?=   
/home/ubuntu/yocto/poky/meta  
/home/ubuntu/yocto/poky/meta-yocto  
/home/ubuntu/yocto/poky/meta-yocto-bsp  
/home/ubuntu/yocto/meta-handson  -handson レイヤーのパスを追加} 
 
BBLAYERS_NON_REMOVABLE ?=   
/home/ubuntu/yocto/poky/meta  
/home/ubuntu/yocto/poky/meta-yocto
meta-handson レイヤーが有効になっているか確 
認する 
▶ 作成したmeta-handson レイヤーが有効になっているか 
確認する。 
▶ 確認するにはbitbake-layers コマンドのshow-layers オプ 
ションを指定する。 
$ bitbake-layers show-layers 
layer path priority 
========================================================================== 
meta /home/ubuntu/yocto/poky/meta 5 
meta-yocto /home/ubuntu/yocto/poky/meta-yocto 5 
meta-yocto-bsp /home/ubuntu/yocto/poky/meta-yocto-bsp 5 
meta-handson /home/ubuntu/yocto/meta-handson 6
core-image-minimal.bbappend の適用を確認する 
▶ core-image-minimal レシピに修正を行う 
core-image-minimal.bbappend が適用されるか確認する。 
▶ 確認するにはbitbake-layers コマンドのshow-appends 
オプションを指定して実行する。 
$ bitbake-layers show-appends 
Parsing recipes..done. 
=== Appended recipes === 
中略 
core-image-minimal.bb: 
/home/ubuntu/yocto/meta-handson/recipes-core/images/core-image-minimal.bbappend 
省略
実際にcore-image-minimal.bbappend の内容が適 
用されるか確認する 
▶ bitbake コマンドに-e オプションを付けて実行すると 
指定したレシピの最終的な内容が出力される 
▶ core-image-minimal.bbappend ではIMAGE INSTALL 変 
数にdropbear を追加する修正を行っている。 
▶ よって最終的なレシピではこの変更が反映されている 
はず。 
▶ そのまま実行すると大量の出力が行われるため、grep 
を使ってIMAGE INSTALL を検索する。 
$ bitbake -e core-image-minimal | grep ^IMAGE_INSTALL= 
IMAGE_INSTALL=packagegroup-core-boot run-postinsts dropbear
core-image-minimal をビルドして起動する 
$ bitbake core-image-minimal 
$ runqemu qemuarm nographic
dropbear の動作確認 
▶ 起動したら、ログインしてdropbear が起動しているか 
確認する。 
▶ ps コマンドの結果をdropbear でgrep するのが簡単。 
root@qemuarm:~# ps | grep dropbear 
274 root 2300 S /usr/sbin/dropbear -r /etc/dropbear/dropbear_rsa_hos 
292 root 2252 S grep dropbear
dropbear の動作確認 
dropbear はSSH サーバとクライアントを提供しているの 
で、ビルドサーバから起動しているイメージにログインす 
ることもできる。 
1. 起動しているイメージに割り振られているIP アドレス 
を確認する 
ifcon
g コマンドで割り当てられているIP とアドレス 
を確認できる。 
root@qemuarm:~# ifconfig eth0 | grep inet addr - 起動しているイメージ上で実行 
inet addr:192.168.7.2 Bcast:192.168.7.255 Mask:255.255.255.0
dropbear の動作確認 
2. ビルド用マシンから起動しているイメージにSSH でロ 
グインする 
2.1 作業用PC で、もうひとつターミナルソフトウェアを立 
ち上げる。 
2.2 新しく立ち上げたターミナルソフトウェアからビルド 
用マシンにログインする。 
2.3 SSH でビルド用マシンから起動しているイメージにロ 
グインする。 
$ ssh root@192.168.7.2 - ビルド用マシンから実行
dropbear の動作確認 
終了するには以下のコマンドを実行します。 
注意: 必ずQEMU 上で実行すること。 
# shutdown -h now
実機向けイメージをビルド 
する
実機向けイメージをビルドする 
TBD
レシピの内容を見る
レシピの内容を見る 
▶ meta/recipes-core/zlib/zlib 1.2.8.bb 
▶ HOMEPAGE 
▶ SECTION 
▶ LICENSE 
▶ LIC FILES CHKSUM 
▶ SRC URI 
▶ SRC URI[md5sum] 
▶ SRC URI[sha256sum] 
▶ RDEPENDS 
▶ do con

More Related Content

What's hot

Btrfsの基礎 part1 機能編
Btrfsの基礎 part1 機能編Btrfsの基礎 part1 機能編
Btrfsの基礎 part1 機能編fj_staoru_takeuchi
 
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)Mr. Vengineer
 
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Masahito Zembutsu
 
Dockerを支える技術
Dockerを支える技術Dockerを支える技術
Dockerを支える技術Etsuji Nakai
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Kohei Tokunaga
 
UEFI時代のブートローダ
UEFI時代のブートローダUEFI時代のブートローダ
UEFI時代のブートローダTakuya ASADA
 
“bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12
“bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12“bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12
“bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12Nobuto Murata
 
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応までDocker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応までMasahito Zembutsu
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Etsuji Nakai
 
Yoctoで綺麗なkernel configを作る
Yoctoで綺麗なkernel configを作るYoctoで綺麗なkernel configを作る
Yoctoで綺麗なkernel configを作るshimadah
 
「おうちクラウド」が今熱い!
「おうちクラウド」が今熱い!「おうちクラウド」が今熱い!
「おうちクラウド」が今熱い!Hirotaka Sato
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門Kohei Tokunaga
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドAkihiro Suda
 
Xenとzfsで作る家庭内VDIサーバ
Xenとzfsで作る家庭内VDIサーバXenとzfsで作る家庭内VDIサーバ
Xenとzfsで作る家庭内VDIサーバzgock
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較Akihiro Suda
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」Masahito Zembutsu
 
仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディング仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディングTakuya ASADA
 
Interrupt Affinityについて
Interrupt AffinityについてInterrupt Affinityについて
Interrupt AffinityについてTakuya ASADA
 
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~NTT Communications Technology Development
 
そろそろ知っておきたい!!コンテナ技術と Dockerのキホン
そろそろ知っておきたい!!コンテナ技術とDockerのキホンそろそろ知っておきたい!!コンテナ技術とDockerのキホン
そろそろ知っておきたい!!コンテナ技術と DockerのキホンNaoki Nagazumi
 

What's hot (20)

Btrfsの基礎 part1 機能編
Btrfsの基礎 part1 機能編Btrfsの基礎 part1 機能編
Btrfsの基礎 part1 機能編
 
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
 
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
 
Dockerを支える技術
Dockerを支える技術Dockerを支える技術
Dockerを支える技術
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
UEFI時代のブートローダ
UEFI時代のブートローダUEFI時代のブートローダ
UEFI時代のブートローダ
 
“bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12
“bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12“bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12
“bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12
 
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応までDocker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
 
Yoctoで綺麗なkernel configを作る
Yoctoで綺麗なkernel configを作るYoctoで綺麗なkernel configを作る
Yoctoで綺麗なkernel configを作る
 
「おうちクラウド」が今熱い!
「おうちクラウド」が今熱い!「おうちクラウド」が今熱い!
「おうちクラウド」が今熱い!
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
 
Xenとzfsで作る家庭内VDIサーバ
Xenとzfsで作る家庭内VDIサーバXenとzfsで作る家庭内VDIサーバ
Xenとzfsで作る家庭内VDIサーバ
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
 
仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディング仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディング
 
Interrupt Affinityについて
Interrupt AffinityについてInterrupt Affinityについて
Interrupt Affinityについて
 
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
 
そろそろ知っておきたい!!コンテナ技術と Dockerのキホン
そろそろ知っておきたい!!コンテナ技術とDockerのキホンそろそろ知っておきたい!!コンテナ技術とDockerのキホン
そろそろ知っておきたい!!コンテナ技術と Dockerのキホン
 

Similar to Yocto Project ハンズオン プレゼン用資料

Composer による依存管理 と Packagist によるライブラリの公開
Composer による依存管理 と Packagist によるライブラリの公開Composer による依存管理 と Packagist によるライブラリの公開
Composer による依存管理 と Packagist によるライブラリの公開Shogo Kawahara
 
3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfesTakeshi Komiya
 
LibreOffice を Windows 上でビルドする UPDATE
LibreOffice を Windows 上でビルドする UPDATELibreOffice を Windows 上でビルドする UPDATE
LibreOffice を Windows 上でビルドする UPDATETomofumi Yagi
 
dodaiのProvisioning周辺探訪 - dodai勉強会 #4
dodaiのProvisioning周辺探訪 - dodai勉強会 #4dodaiのProvisioning周辺探訪 - dodai勉強会 #4
dodaiのProvisioning周辺探訪 - dodai勉強会 #4Satoshi Yazawa
 
Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Takako Miyagawa
 
Docker実践入門
Docker実践入門Docker実践入門
Docker実践入門hiro nemu
 
DockerでWordPressサイトを開発してみよう
DockerでWordPressサイトを開発してみようDockerでWordPressサイトを開発してみよう
DockerでWordPressサイトを開発してみようmookjp
 
KinectとC#を用いた 実践的VRアプリ開発 第2回 2015/10/13 Github CLI編
KinectとC#を用いた実践的VRアプリ開発 第2回 2015/10/13 Github CLI編KinectとC#を用いた実践的VRアプリ開発 第2回 2015/10/13 Github CLI編
KinectとC#を用いた 実践的VRアプリ開発 第2回 2015/10/13 Github CLI編Akihiko Shirai
 
Dockerライフサイクルの基礎 地雷を踏み抜けろ!
Dockerライフサイクルの基礎 地雷を踏み抜けろ!Dockerライフサイクルの基礎 地雷を踏み抜けろ!
Dockerライフサイクルの基礎 地雷を踏み抜けろ!Masahito Zembutsu
 
CAMPHOR- day 2020 - Docker 超入門
CAMPHOR- day 2020 - Docker 超入門CAMPHOR- day 2020 - Docker 超入門
CAMPHOR- day 2020 - Docker 超入門KokiMakita1
 
Nseg20120929
Nseg20120929Nseg20120929
Nseg20120929hiro345
 
はじめてのコンテナーDocker & Windows & Linux
はじめてのコンテナーDocker & Windows & LinuxはじめてのコンテナーDocker & Windows & Linux
はじめてのコンテナーDocker & Windows & LinuxKazushi Kamegawa
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入Yu Nobuoka
 
Pro aspnetmvc3framework chap23
Pro aspnetmvc3framework chap23Pro aspnetmvc3framework chap23
Pro aspnetmvc3framework chap23Hideki Hashizume
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Masahito Zembutsu
 
Docker & Kubernetes基礎
Docker & Kubernetes基礎Docker & Kubernetes基礎
Docker & Kubernetes基礎Daisuke Hiraoka
 
Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクルDockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクルMasahito Zembutsu
 

Similar to Yocto Project ハンズオン プレゼン用資料 (20)

Composer による依存管理 と Packagist によるライブラリの公開
Composer による依存管理 と Packagist によるライブラリの公開Composer による依存管理 と Packagist によるライブラリの公開
Composer による依存管理 と Packagist によるライブラリの公開
 
3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes
 
LibreOffice を Windows 上でビルドする UPDATE
LibreOffice を Windows 上でビルドする UPDATELibreOffice を Windows 上でビルドする UPDATE
LibreOffice を Windows 上でビルドする UPDATE
 
dodaiのProvisioning周辺探訪 - dodai勉強会 #4
dodaiのProvisioning周辺探訪 - dodai勉強会 #4dodaiのProvisioning周辺探訪 - dodai勉強会 #4
dodaiのProvisioning周辺探訪 - dodai勉強会 #4
 
Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中
 
Docker実践入門
Docker実践入門Docker実践入門
Docker実践入門
 
DockerでWordPressサイトを開発してみよう
DockerでWordPressサイトを開発してみようDockerでWordPressサイトを開発してみよう
DockerでWordPressサイトを開発してみよう
 
KinectとC#を用いた 実践的VRアプリ開発 第2回 2015/10/13 Github CLI編
KinectとC#を用いた実践的VRアプリ開発 第2回 2015/10/13 Github CLI編KinectとC#を用いた実践的VRアプリ開発 第2回 2015/10/13 Github CLI編
KinectとC#を用いた 実践的VRアプリ開発 第2回 2015/10/13 Github CLI編
 
Dockerライフサイクルの基礎 地雷を踏み抜けろ!
Dockerライフサイクルの基礎 地雷を踏み抜けろ!Dockerライフサイクルの基礎 地雷を踏み抜けろ!
Dockerライフサイクルの基礎 地雷を踏み抜けろ!
 
CAMPHOR- day 2020 - Docker 超入門
CAMPHOR- day 2020 - Docker 超入門CAMPHOR- day 2020 - Docker 超入門
CAMPHOR- day 2020 - Docker 超入門
 
Nseg20120929
Nseg20120929Nseg20120929
Nseg20120929
 
はじめてのコンテナーDocker & Windows & Linux
はじめてのコンテナーDocker & Windows & LinuxはじめてのコンテナーDocker & Windows & Linux
はじめてのコンテナーDocker & Windows & Linux
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
 
Pro aspnetmvc3framework chap23
Pro aspnetmvc3framework chap23Pro aspnetmvc3framework chap23
Pro aspnetmvc3framework chap23
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
 
Docker & Kubernetes基礎
Docker & Kubernetes基礎Docker & Kubernetes基礎
Docker & Kubernetes基礎
 
Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクルDockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクル
 
Github入門2014
Github入門2014Github入門2014
Github入門2014
 
200527 ur
200527 ur200527 ur
200527 ur
 
Git 20100724
Git 20100724Git 20100724
Git 20100724
 

Recently uploaded

20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdfAyachika Kitazaki
 
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdfTaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdfMatsushita Laboratory
 
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~arts yokohama
 
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦Sadao Tokuyama
 
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor 2024 01 Virtual_Counselor
2024 01 Virtual_Counselor arts yokohama
 
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)ssuser539845
 
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法ssuser370dd7
 
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見Shumpei Kishi
 
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-LoopへTetsuya Nihonmatsu
 

Recently uploaded (12)

20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf
 
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdfTaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
 
2024 04 minnanoito
2024 04 minnanoito2024 04 minnanoito
2024 04 minnanoito
 
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
 
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
 
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor 2024 01 Virtual_Counselor
2024 01 Virtual_Counselor
 
2024 03 CTEA
2024 03 CTEA2024 03 CTEA
2024 03 CTEA
 
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
 
What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?
 
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
 
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
 
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
 

Yocto Project ハンズオン プレゼン用資料

  • 1. Yocto Project ハンズオン Yocto Project 勉強会#2 岩松信洋 2014 年9 月27 日
  • 3. スポンサー ▶ 会場スポンサー: 株式会社豆蔵 ▶ ビルド用マシンスポンサー: 株式会社さくらインター ネット
  • 4. 自己紹介 ▶ 岩松信洋(いわまつのぶひろ)/ @iwamatsu ▶ Yocto Project meta-renesas メンテナ(Renesas ARM SoCs) ▶ U-Boot SH / Renesas ARM SoCs メンテナ ▶ Debian Project Officail Developer
  • 5. Agenda 1. Yocto Project とは 2. Poky とは 3. ハンズオンについて 4. ドキュメントの表記について 5. 開発環境構築Poky ディレクトリレイアウト 6. Linux OS イメージをビルドする 7. Linux OS イメージを起動する 8. カスタムイメージレシピを作成する 9. カスタムイメージレシピをビルドし起動する 10. 実機向けイメージをビルドする 11. 付録: レシピの内容を見る
  • 7. Yocto Project とは ▶ Yocto Project(https://www.yoctoproject.org/)は The Linux Foundation が後援する組込みLinux に特化し たコラボレーション・プロジェクト。 ▶ プロジェクト名にあるYocto(ヤクト)は国際単位系 (SI) における最小単位の一つで、1024 を意味する。 ▶ Linux ディストリビューション構築に必要なビルドツー ルやソフトウェアのビルドに必要な情報、操作用GUI などの異なった要素を持ったいくつかのプロジェクト によって開発プロセスを構成する形をとっている。 ▶ ユーザはPoky と呼ばれる各プロジェクトの成果がま とめられたツールを使ってユーザ自身でソフトウェア のビルドを行い、独自のLinux ディストリビューション を構築する。
  • 9. Poky とは ▶ 組み込み向けLinux ディストリビューションビルド ツール。 ▶ eglibc, prelink, pseudo, swabber などのツールが含ま れる。 ▶ x86 (32bit と64 bit), ARM, MIPS, PPC のアーキテク チャをサポートしている。 ▶ ビルドシステムとコアとなるメタデータ(レシピ)を OpenEmbedded コミュニティと共に開発し、共有して いる。
  • 10. Poky とは ▶ Layer 構造を使うことによって、メタデータ(レシピ) の再利用を簡単にしている。 ▶ deb、ipk、rpm パッケージフォーマットをサポートして いる。 ▶ 6ヶ月毎のリリースサイクルを持っている。 ▶ 最新の安定板カーネル、ツールチェイン、ソフトウェ ア、ドキュメントを提供する。 ▶ Eclipse plugin, Application Development Toolkit (ADT) 等を提供する。
  • 12. ハンズオンについて 本ハンズオンではYocto Project で公開されているPoky を 使ってLinux OS イメージを構築、起動、イメージの修正等 を行う。Poky の基本的な使い方が理解できることを目的と する。 本ハンズオンで利用する環境は以下の通り。 ▶ Poky: バージョン1.6.1 ▶ 利用するLinux ディストリビューション: Ubuntu 12.04 LTS ▶ ターゲットハードウェア: QEMU/ARM ▶ ビルド用マシン: CPU 12 コア/ メモリ64GB / ディス ク100GB (さくらインターネットさん提供)
  • 13. ハンズオンについて 今回主催者側でビルド用マシンを用意しています。参加登 録時にSSH 公開鍵の送付をお願いしています。各自その SSH 環境でビルド用マシンにログインしてください。端末 としてGNU/Linux をお使いの方は以下のようにしてログイ ンできます。 $ ssh ubuntu@ビルド用マシンのIP のアドレス
  • 15. ドキュメントの表記について ▶ コマンドの$ はユーザによる実行を意味する。 ▶ コマンドの# はroot による実行を意味する。 ▶ コマンドのn は続けて入力することを意味する。 ▶ テキストファイル変更方法は全てvi で統一していま す。emacs などを使いたい方は別途インストールする こと。 $ sudo apt-get install emacs
  • 17. 開発環境構築 まず開発環境を構築します。Poky を利用する使ってビルド するために必要なソフトウェアをビルド用マシンにインス トールする。 1. sudo apt-get update を実行する $ sudo apt-get update 2. sudo apt-get upgrade を実行する $ sudo apt-get upgrade 3. 開発環境に必要なパッケージをインストールする $ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath libsdl1.2-dev xterm
  • 19. Poky のダウンロード Yocto Project で提供されているリファレンスビルドシステ ム、Poky をダウンロードする。 1. ホームディレクトリに移動する $ cd 2. yocto ディレクトリを作成し、移動する $ mkdir yocto $ cd yocto 3. Poky のGit リポジトリをクローンする $ git clone git://git.yoctoproject.org/poky
  • 20. Poky のダウンロード 4. poky ディレクトリに移動する $ cd poky 5. yocto-1.6.1 タグをyocto-handson ローカルブランチと してチェックアウトする。 $ git checkout -b yocto-handson yocto-1.6.1
  • 22. Poky ディレクトリレイアウト Poky のディレクトリがどのようになっているのか確認する。 $ ls LICENSE README.hardware documentation meta-selftest meta-yocto oe-init-build-env scripts README bitbake meta meta-skeleton meta-yocto-bsp oe-init-build-env-memres ▶ LICENSE: Poky で提供されるレシピ等のライセンス ▶ bitbake: BitBake ユーティリティ ▶ documentation: ドキュメントソース ▶ scripts: サポートスクリプト ▶ meta/conf: 主要な設定ファイル群。bitbake の設定やリ ファレンスボード用の設定など。 ▶ meta/classes: BitBake クラスファイル群 ▶ meta/recipes-* : レシピ ▶ meta-yocto : Yocto で管理されるレシピ等
  • 24. Linux OS イメージをビルドする Poky で提供されるリファレンスイメージ ▶ core-image-minimal Unix の基本的な操作ができるLinux OS イメージを提供 するレシピ ▶ core-image-sato matchbox をベースとしたLinux OS イメージを提供す るレシピ ▶ core-image-x11 x11 の基本部分を含んだLinux OS イメージを提供する レシピ ▶ core-image-weston Wayland/Weston の基本部分を含んだLinux OS イメー ジを提供するレシピ ▶ core-image-lsb Linux Standard Base に準拠したLinux OS イメージを提 供するレシピ
  • 25. Linux OS イメージをビルドする Poky で提供されるリファレンスイメージ ▶ core-image-minimal Unix の基本的な操作ができるLinux OS イメージを提供 するレシピ ▶ core-image-sato matchbox をベースとしたLinux OS イメージを提供す るレシピ ▶ core-image-x11 x11 の基本部分を含んだLinux OS イメージを提供する レシピ ▶ core-image-weston Wayland/Weston の基本部分を含んだLinux OS イメー ジを提供するレシピ ▶ core-image-lsb Linux Standard Base に準拠したLinux OS イメージを提 供するレシピ
  • 26. BitBake が動作する環境の構築 ▶ Poky ではBitBake と呼ばれるビルドツールを使って Linux OS イメージをビルドする。 ▶ BitBake は専用の環境変数を設定しないと正しく動作し ない。 ▶ Poky にはこの環境変数を設定するためのツール oe-init-build-env が用意されているので、これを実行 する。
  • 27. BitBake が動作する環境の構築 1. ~/yocto ディレクトリに移動する $ cd ~/yocto 2. oe-init-build-env を実行する $ source poky/oe-init-build-env build_qemuarm 3. pwd コマンドを実行し、カレントディレクトリを確認 する $ pwd /home/ubuntu/yocto/build_qemuarm
  • 28. BitBake が動作する環境の構築 ▶ oe-init-build-env 実行 後、/home/ubuntu/yocto/build qemuarm ディレクトリ に移動していることを確認する。 ▶ build qemuarm ディレクトリにはconf ディレクトリが あり、この中にbblayers.conf とlocal.conf の2つのファ イルが作成されている。この2 つのファイルの内容を 確認する。
  • 29. conf/bblayers.conf の確認 ▶ bblayers.conf ではビルドに必要なレイヤーを指定する。 ▶ 指定されているレイヤーはビルド時に指定されている レイヤーで提供されているレシピが全て読み込まれ、 ビルドに内容に反映される。 LCONF_VERSION = 6 BBPATH = ${TOPDIR} BBFILES ?= BBLAYERS ?= /home/ubuntu/yocto/poky/meta /home/ubuntu/yocto/poky/meta-yocto /home/ubuntu/yocto/poky/meta-yocto-bsp BBLAYERS_NON_REMOVABLE ?= /home/ubuntu/yocto/poky/meta /home/ubuntu/yocto/poky/meta-yocto
  • 30. conf/local.conf の確認と編集 ▶ local.conf ではbitbake に与える変数を設定する。例え ば、ビルドターゲット、CPU アーキテクチャ、ソース コード格納ディレクトリ、ハードウェア機能など ▶ 今回はqemuarm をターゲットとしてビルドする。 ▶ ターゲットはMACHINE という変数で指定する。デ フォルトではMACHINE ??= qemux86となってお り、qemux86 が指定されている。 $ vi conf/local.conf ...... MACHINE ?= qemuarm - 行頭の#を削除する
  • 31. ビルド ▶ ビルドするにはbitbake にビルドしたいレシピ名を指 定する。 ▶ 今回はcore-image-minimal イメージをビルドするため、 以下のように実行する。 $ bitbake core-image-minimal
  • 33. Linux OSイメージを起動する ▶ ビルドが完了したら、Linux OS イメージを起動する。 $ runqemu qemuarm nographic ▶ 実行するとsudo のパスワードを求められるので、パス ワードyoctohandson を入力する。 Continuing with the following parameters: KERNEL: [/home/ubuntu/yocto/build_qemuarm/tmp/deploy/images/qemuarm/zImage-qemuarm.bin] ROOTFS: [/home/ubuntu/yocto/build_qemuarm/tmp/deploy/images/qemuarm/core-image-minimal- qemuarm-20140926010952.rootfs.ext3] FSTYPE: [ext3] Setting up tap interface under sudo [sudo] password for iwamatsu: ..... random: dd urandom read with 86 bits of entropy available random: nonblocking pool is initialized Poky (Yocto Project Reference Distro) 1.6.1 qemuarm /dev/ttyAMA0 qemuarm login:
  • 34. Linux OSイメージを起動する ▶ ログインユーザはroot、パスワードなしでログイン する。 ▶ 終了するには以下のコマンドを実行します。注意: 必ず QEMU 上で実行すること。 # shutdown -h now ▶ QEMU が終わらない場合はCtrl+A x (Ctrl とA を 同時に押した後、x を押す)を押すと、QEMU が終了 する。
  • 36. カスタムイメージレシピを作成する ▶ core-image-minimal のレシピはpoky/meta/recipes- core/images/core-image-minimal.bb に ある。 ▶ ファイルを直接編集してカスタムイメージを作っても よいが、これでは変更内容をpoky 内で管理することに なる。 ▶ 正しい方法は変更内容を管理するレイヤーを作成し、 このレイヤーでレシピの変更内容等を管理すること。 ▶ そのためにはまずレイヤーを作る必要がある。
  • 37. カスタム用レイヤーを作成する ▶ カスタム用レイヤーを作成する場合、エディタ等で設 定ファイルを一から作成する。 ▶ めんどくさがりな人のためにレイヤーの雛形を作成し てくれるyocto-layer スクリプトがある。 ▶ 今回はyocto-layer を使った方法で説明。
  • 38. カスタム用レイヤーを作成する 1. ~/yocto ディレクトリに移動する $ cd ~/yocto 2. yocto-layer を実行する yocto-layer にcreate オプションと作成したいレイヤー の名前を指定して実行する。完了するとレイヤー名に meta-というプレフィックスが付加されたディレクトリ が作成される。 $ yocto-layer create handson Please enter the layer priority you'd like to use for the layer: [default: 6] Would you like to have an example recipe created? (y/n) [default: n] Would you like to have an example bbappend file created? (y/n) [default: n] New layer created in meta-handson. Don't forget to add it to your BBLAYERS (for details see meta-handson$$README).
  • 39. カスタム用レイヤーを作成する 3. meta-handson ディレクトリがあるか確認する $ ls build_qemuarm meta-handson poky
  • 40. core-image-minimal レシピにパッケージを追加 する ▶ core-image-minimal イメージにパッケージを追加する。 ▶ 今回はdropbear (SSH サーバ) を追加. ▶ パッケージを追加方法はいくつかある。 ▶ 今回はcore-image-minimal レシピに修正を加えるため のcore-image-minimal.bbappend ファイルを作成す る方法を使う。
  • 41. core-image-minimal レシピにパッケージを追加 する 1. meta-handson ディレクトリに移動し、 recipes-core/images ディレクトリを作成する $ cd meta-handson $ mkdir -p recipes-core/images 2. エディタで recipes-core/images/core-image-minimal.bbappend ファ イルを開く $ vi recipes-core/images/core-image-minimal.bbappend 3. 下記の内容を書き込み、エディタを終了する IMAGE_INSTALL += dropbear
  • 44. 作成したmeta-handson レイヤーをbblayers.conf に追加する ▶ 今の状態ではmeta-handson レイヤーが利用できる状態 ではない。 ▶ conf/bblayers.conf に追加する必要がある。 1. ~/yocto/build qemuarm に移動する $ cd ~/yocto/build_qemuarm
  • 45. 作成したmeta-handson レイヤーをbblayers.conf に追加する 2. conf/bblayers.conf をエディタで開き、meta-handson レ イヤーのパスを追加する。 $ vi conf/bblayers.conf ...... LCONF_VERSION = 6 BBPATH = ${TOPDIR} BBFILES ?= BBLAYERS ?= /home/ubuntu/yocto/poky/meta /home/ubuntu/yocto/poky/meta-yocto /home/ubuntu/yocto/poky/meta-yocto-bsp /home/ubuntu/yocto/meta-handson -handson レイヤーのパスを追加} BBLAYERS_NON_REMOVABLE ?= /home/ubuntu/yocto/poky/meta /home/ubuntu/yocto/poky/meta-yocto
  • 46. meta-handson レイヤーが有効になっているか確 認する ▶ 作成したmeta-handson レイヤーが有効になっているか 確認する。 ▶ 確認するにはbitbake-layers コマンドのshow-layers オプ ションを指定する。 $ bitbake-layers show-layers layer path priority ========================================================================== meta /home/ubuntu/yocto/poky/meta 5 meta-yocto /home/ubuntu/yocto/poky/meta-yocto 5 meta-yocto-bsp /home/ubuntu/yocto/poky/meta-yocto-bsp 5 meta-handson /home/ubuntu/yocto/meta-handson 6
  • 47. core-image-minimal.bbappend の適用を確認する ▶ core-image-minimal レシピに修正を行う core-image-minimal.bbappend が適用されるか確認する。 ▶ 確認するにはbitbake-layers コマンドのshow-appends オプションを指定して実行する。 $ bitbake-layers show-appends Parsing recipes..done. === Appended recipes === 中略 core-image-minimal.bb: /home/ubuntu/yocto/meta-handson/recipes-core/images/core-image-minimal.bbappend 省略
  • 48. 実際にcore-image-minimal.bbappend の内容が適 用されるか確認する ▶ bitbake コマンドに-e オプションを付けて実行すると 指定したレシピの最終的な内容が出力される ▶ core-image-minimal.bbappend ではIMAGE INSTALL 変 数にdropbear を追加する修正を行っている。 ▶ よって最終的なレシピではこの変更が反映されている はず。 ▶ そのまま実行すると大量の出力が行われるため、grep を使ってIMAGE INSTALL を検索する。 $ bitbake -e core-image-minimal | grep ^IMAGE_INSTALL= IMAGE_INSTALL=packagegroup-core-boot run-postinsts dropbear
  • 49. core-image-minimal をビルドして起動する $ bitbake core-image-minimal $ runqemu qemuarm nographic
  • 50. dropbear の動作確認 ▶ 起動したら、ログインしてdropbear が起動しているか 確認する。 ▶ ps コマンドの結果をdropbear でgrep するのが簡単。 root@qemuarm:~# ps | grep dropbear 274 root 2300 S /usr/sbin/dropbear -r /etc/dropbear/dropbear_rsa_hos 292 root 2252 S grep dropbear
  • 51. dropbear の動作確認 dropbear はSSH サーバとクライアントを提供しているの で、ビルドサーバから起動しているイメージにログインす ることもできる。 1. 起動しているイメージに割り振られているIP アドレス を確認する ifcon
  • 52. g コマンドで割り当てられているIP とアドレス を確認できる。 root@qemuarm:~# ifconfig eth0 | grep inet addr - 起動しているイメージ上で実行 inet addr:192.168.7.2 Bcast:192.168.7.255 Mask:255.255.255.0
  • 53. dropbear の動作確認 2. ビルド用マシンから起動しているイメージにSSH でロ グインする 2.1 作業用PC で、もうひとつターミナルソフトウェアを立 ち上げる。 2.2 新しく立ち上げたターミナルソフトウェアからビルド 用マシンにログインする。 2.3 SSH でビルド用マシンから起動しているイメージにロ グインする。 $ ssh root@192.168.7.2 - ビルド用マシンから実行
  • 54. dropbear の動作確認 終了するには以下のコマンドを実行します。 注意: 必ずQEMU 上で実行すること。 # shutdown -h now
  • 58. レシピの内容を見る ▶ meta/recipes-core/zlib/zlib 1.2.8.bb ▶ HOMEPAGE ▶ SECTION ▶ LICENSE ▶ LIC FILES CHKSUM ▶ SRC URI ▶ SRC URI[md5sum] ▶ SRC URI[sha256sum] ▶ RDEPENDS ▶ do con
  • 59. gure ▶ do compile ▶ do install
  • 60. レシピの内容を見る ▶ meta/recipes-core/coreutils/coreutils 8.22.bb ▶ SUMMARY ▶ DESCRIPTION ▶ HOMEPAGE ▶ BUGTRACKER ▶ DEPENDS ▶ EXTRA OECONF ▶ PACKAGECONFIG ▶ do compile prepend ▶ do install append