yocto2.4 以降は bitbake-layers create-layer meta-cve-check-json
# Yocto2.5 の場合、生成されたlayerのconf/layer.conf に
LAYERSERIES_COMPAT_meta-cve-check-json = "pyro rocko sumo"
の1行を付け加えないと、
WARNING: Layer meta-cve-check-json should set LAYERSERIES_COMPAT_meta-cve-check-
json in its conf/layer.conf file to list the core layer names it is compatible w
ith.
と表示されます。
yakuhito
2020/4/13 (月) 09:13
NISTが提供する脆弱性に関するデータの提供形式がxmlからjsonに変更になったことが原因です。
Yocto2.2 から追加されたcve-check.bbclass ですが、Yocto2.2からYocto2.5では
2019年10月以降使用できなくなっています。
理由は、cve-check.bbclass は NISTが提供するXML形式のデータベースを利用
していましたが、提供形式がjsonに変更となり、xmlでの参照ができなくなった
ためです。
2019年10月現在で、YoctoProjectでアップデートの対象であったYocto2.6,Yocto2.7Yoc
では、次のポイントリリースの際にはjson形式のデータベースを参照するように
Yocto3.0向けに開発されていたもののバックポートが行わており、pokyをアップデート
することで対応可能でしたが、既にEOLとなっていた2.5以前のバージョンは自力
で対応が必要となっています。
対応済のYocto2.6のcve-checkをクラス名(ファイル名)のみ変更したもので動作確認
を行ったところ
・Yocto2.5
・Yocto2.4
・Yocto2.3
では、動作することを確認しております。
残念ながらYocto2.2 ではYocto2.6のものは使えないことを確認しております。
以下対応した手順です。
1. 任意のディレクトリで、Yocto2.6 の最新版を入手します。
git clone -b thud git://git.yoctoproject.org/poky
2. 現在のprojectでの構築環境を設定します。
3. 追加レイヤーを作成するディレクトリに移動し、新規レイヤーを作成する
yocto2.3 は yocto-layer crete cve-chck-json
yocto2.4 以降は bitbake-layers create-layer meta-cve-check-json
# Yocto2.5 の場合、生成されたlayerのconf/layer.conf に
LAYERSERIES_COMPAT_meta-cve-check-json = "pyro rocko sumo"
の1行を付け加えないと、
WARNING: Layer meta-cve-check-json should set LAYERSERIES_COMPAT_meta-cve-check-
json in its conf/layer.conf file to list the core layer names it is compatible w
ith.
と表示されます。
4. Yocto2.6 の poky/meta/classes/cve-check.bbclass をコピー
生成したレイヤーに classes ディレクトリを作成し、Yocto2.6 の
poky/meta/classes/cve-check.bbclass を cve-check-json.bbclass
と名称を変更してコピーします。
5.Yocto2.6 の poky/meta/recipes-core/meta/cve-update-db-native.bb
をコピー
生成したレイヤーに recipes-core/meta ディレクトリを作成し、Yocto2.6
の poky/meta/recipes-core/meta/cve-update-db-native.bb をコピーします。
以下、作成したレイヤーのファイル構成
meta-cve-check-json/
|-- COPYING.MIT (自動生成)
|-- README (自動生成)
|-- classes 作成
| `-- cve-check-json.bbclass 名前を変えてコピー
|-- conf (自動生成)
| `-- layer.conf (自動生成)※必要に応じて編集
|-- recipes-core 作成
| `-- meta 作成
| `-- cve-update-db-native.bb コピー
`-- recipes-example (自動生成)
`-- example (自動生成)
`-- example_0.1.bb (自動生成)
6.生成したレイヤーを bitbake-layers add-layer を使用して conf/bblayers.conf
に追加します。
7.conf/local.conf に以下の一行を追加し、cve-check-json.bbclass で定義
されたタスクが実行できるように設定します。
INHERIT += "cve-check-json"
8.bitbake レシピ名 -c cve_check 等を実行して、当該レシピの脆弱性情報が
tmp/deploy/cve/[レシピ名]に出力されることを確認します。
なお、当該レシピに対して登録された脆弱性が無い場合には、ファイルは生成
されません。