【yocto】bitbakeしたけど成果物はどこあるの？

# はじめに
- yoctoに初めて弄る方向け
- bitbakeしてみたが、どこに成果物があるのかよくわからんという方向け

# まずは、bitbakeしてみよう
- ★行のall succeededが出てれば、bitbakeは成功
~~~
takeshi@X250:~/yocto/poky$ source oe-init-build-env 
(略)
takeshi@X250:~/yocto/poky/build$ bitbake core-image-minimal
(略)
★NOTE: Tasks Summary: Attempted 2654 tasks of which 2644 didn't need to be rerun and all succeeded.

Summary: There was 1 WARNING message shown.
~~~

# 重要そうな成果物は`tmp/deploy`の下にある
~~~
takeshi@X250:~/yocto/poky/build$ ls tmp/deploy/
images  licenses  rpm
~~~
- images
    - rootfs(/下の全てのファイル)やlinuxカーネルが置いてある
    - あなたが今一番必要としているものはおそらくこれ
- licenses
    - bitbakeして作られたソフトに関するOSSライセンス情報が置かれている
    - ソフト出荷する際のOSSライセンス準拠のためには、おそらくこのディレクトリのもの参照することになる
- rpm
    - bitbakeして作られたソフトに関するパッケージが置かれている
    - 今回は触れない

# tmp/deploy/imagesの下はどのようになっているか？
- 様々なファイルがあるが、あなたが必要としているのはおそらく以下のファイル
    - core-image-minimal-qemux86-64.tar.bz2
        - tar.bz2形式のrootf
        - tarコマンド等で既存のrootfsに上書きするような際に使用する
    - core-image-minimal-qemux86-64.ext4
        - ext4形式のrootfs
        - ddコマンド等である領域にベタ書きするような際に使用する
    - bzImage
        - Linuxカーネル本体
        - 上記rootfsからカーネルイメージだけを取り出したもの
        - カーネルのみを書き換えたい際に使用する
~~~
takeshi@X250:~/yocto/poky/build/tmp/deploy/images/qemux86-64$ ls -al
合計 27848
drwxr-xr-x 2 takeshi takeshi     4096  6月 10 03:41 .
drwxrwxr-x 3 takeshi takeshi     4096  6月 10 03:18 ..
lrwxrwxrwx 2 takeshi takeshi       75  6月  3 01:25 bzImage -> bzImage--5.2.17+git0+b867b78b50_255a750d28-r0-qemux86-64-20220602143045.bin
-rw-r--r-- 2 takeshi takeshi  8106656  6月  3 01:25 bzImage--5.2.17+git0+b867b78b50_255a750d28-r0-qemux86-64-20220602143045.bin
lrwxrwxrwx 2 takeshi takeshi       75  6月  3 01:25 bzImage-qemux86-64.bin -> bzImage--5.2.17+git0+b867b78b50_255a750d28-r0-qemux86-64-20220602143045.bin
-rw-rw-r-- 2 takeshi takeshi     1292  6月 10 03:19 core-image-minimal-qemux86-64-20220609181733.qemuboot.conf
-rw-r--r-- 2 takeshi takeshi 12279808  6月 10 03:19 core-image-minimal-qemux86-64-20220609181733.rootfs.ext4
-rw-r--r-- 2 takeshi takeshi      833  6月 10 03:19 core-image-minimal-qemux86-64-20220609181733.rootfs.manifest
-rw-r--r-- 2 takeshi takeshi  3251838  6月 10 03:19 core-image-minimal-qemux86-64-20220609181733.rootfs.tar.bz2
-rw-r--r-- 2 takeshi takeshi   174877  6月 10 03:41 core-image-minimal-qemux86-64-20220609181733.testdata.json
lrwxrwxrwx 2 takeshi takeshi       56  6月 10 03:19 core-image-minimal-qemux86-64.ext4 -> core-image-minimal-qemux86-64-20220609181733.rootfs.ext4
lrwxrwxrwx 2 takeshi takeshi       60  6月 10 03:19 core-image-minimal-qemux86-64.manifest -> core-image-minimal-qemux86-64-20220609181733.rootfs.manifest
lrwxrwxrwx 2 takeshi takeshi       58  6月 10 03:19 core-image-minimal-qemux86-64.qemuboot.conf -> core-image-minimal-qemux86-64-20220609181733.qemuboot.conf
lrwxrwxrwx 2 takeshi takeshi       59  6月 10 03:19 core-image-minimal-qemux86-64.tar.bz2 -> core-image-minimal-qemux86-64-20220609181733.rootfs.tar.bz2
lrwxrwxrwx 2 takeshi takeshi       58  6月 10 03:19 core-image-minimal-qemux86-64.testdata.json -> core-image-minimal-qemux86-64-20220609181733.testdata.json
-rw-rw-r-- 2 takeshi takeshi  7487446  6月  3 01:25 modules--5.2.17+git0+b867b78b50_255a750d28-r0-qemux86-64-20220602143045.tgz
lrwxrwxrwx 2 takeshi takeshi       75  6月  3 01:25 modules-qemux86-64.tgz -> modules--5.2.17+git0+b867b78b50_255a750d28-r0-qemux86-64-20220602143045.tgz
~~~

# tmp/deploy/licensesの下はどのようになっているか？
- レシピ(.bb)ごとにディレクトリがある
~~~
takeshi@X250:~/yocto/poky/build$ ls tmp/deploy/licenses/
Display all 220 possibilities? (y or n)
acl/                                          json-c-native/                                nss-native/
alsa-lib-native/                              kern-tools-native/                            openssl/
(略)
~~~

- ディレクトリの中身には、ライセンスファイル等が置かれている
~~~
takeshi@X250:~/yocto/poky/build$ ls tmp/deploy/licenses/acl/
COPYING  COPYING.LGPL  generic_GPLv2  generic_LGPLv2.1  recipeinfo
~~~

- あなたが一番参照することになるのは、イメージ名(イメージ名-アーキテクチャ-日付)のディレクトリの中のlicense.manifestである。
    - 今回はcore-image-minimalがイメージ名
~~~
takeshi@X250:~/yocto/poky/build$ ls tmp/deploy/licenses/core-image-minimal-qemux86-64-20220609181733/
image_license.manifest  license.manifest  package.manifest
~~~

- license.manifestには、イメージに含まれるパッケージ名とレシピ名とライセンス情報がまとめて記載されている。
    - あなたは、この情報を参照して、OSSライセンスを準拠するために何が必要であるかをおそらく判断することになる。
~~~
takeshi@X250:~/yocto/poky/build$ cat tmp/deploy/licenses/core-image-minimal-qemux86-64-20220609181733/license.manifest 
PACKAGE NAME: base-files
PACKAGE VERSION: 3.0.14
RECIPE NAME: base-files
LICENSE: GPLv2

PACKAGE NAME: base-passwd
PACKAGE VERSION: 3.5.29
RECIPE NAME: base-passwd
LICENSE: GPLv2+
(略)
~~~