リネオブログ

Vigiles ファーストステップガイド 2 「Yocto 環境への Vigiles 導入手順」

2024 年 03 月 01 日   Vigiles サポート

概要

本ブログでは、「Vigiles ファーストステップガイド」として、Vigilesをご活用いただくための必要な情報を紹介いたします。

第二回は、「Yocto 環境への Vigiles 導入手順」として、Yocto 環境で Vigiles が利用できるようになるまでの導入手順について解説します。

Yocto Project での meta-timesys の導入手順

1. meta-timesys を Yocto 環境に組込む

meta-timesys レイヤについて

Timesys では Yocto ビルドシステムから SBOM へジェネレートするための manifest ファイルを生成する専用レイヤ(meta-timesys)を用意しています。
meta-timesys レイヤは github で提供されていて、Timesys の meta-timesys リポジトリを clone することで入手できます。

meta-timesys レポジトリ

このレイヤでは vigiles クラスを提供しており、このクラスを INHERIT することで、image ビルドの際に Vigiles へアップロードする manifest ファイルを作成するタスクや、CVE スキャンやその結果を表示するタスクが追加されます。

API Key ファイルのダウンロード

meta-timesys を利用する前に、前準備として linuxlink の API Key ファイルをダウンロードしておきます。

この API Key は、meta-timesys 使用時に CVE チェックの詳細表示をする、また、image ビルドの際に自動的に Vigiles へ Upload する、といった場合に必要になります。
manifest ファイルの作成や CVE チェックのサマリ表示については、API Key ファイルの設定がなくても実行可能です。

API Key は LinuxLink サイトから入手します。

LinuxLink サイト

LinuxLink サイトにログイン後、右上のユーザ名をクリックして表示されるメニュー内、Preferance からダウンロードします。
Preferance を選択し、こちらの Download key file を選択し Key ファイルをダウンロードして保存してください。

ダウンロードした Key ファイルは下記のいずれかを行うことで有効になります。

  • <ホーム/timesys>ディレクトリ下へlinuxlink_key という名前で配置
  • Yocto の local.conf ファイル内で指定
meta-timesys レイヤの追加

まず最初に github の meta-timesysリポジトリを clone します。
NXP imx BSP をご使用の場合、このレイヤはデフォルトで clone されていますので、clone の手順は不要となります。

Yocto のディレクトリへ移動して、meta-timesys を clone します。
この時ブランチ指定で使用している Yocto の Codename を指定したうえで clone してください。このサンプルで使用している Yocto は kirkstone を使用していますので、-b で kirkstone を指定します。

cd /opt/yocto-vigiles/yocto-kickstone/
cd poky
git clone https://github.com/TimesysGit/meta-timesys.git -b kirkstone
ls
cd ../

次に clone した meta-timesys レイヤ をレイヤ構成に追加します。

vi build-base/conf/bblayers.conf

以下を bblayers.comf に追記

BBLAYERS += "/opt/yocto-vigiles/yocto-kirkstone/poky/meta-timesys"
補足
  • <build-base> は build ディレクトリとなります。 ご自身の環境に合わせて適宜変更ください。
  • meta-timesys レイヤの追加時の PATH は実際に git clone したディレクトリを指定してください。

次に local.conf へ INHERIT の設定を追加して vigiles クラスを使用できるようにします。

vi build-base/conf/local.conf

local.confの一番最後に追加

INHERIT += "vigiles" 

つづいて今回 API Key ファイルは local.conf で指定する形としますので、VIGILES_KEY_FILE 変数に Key ファイルのパスを設定します。

VIGILES_KEY_FILE = "/opt/timesys-key/linuxlink_key_llsales"

以上で bitbake のイメージ構築の際に Vigiles クラスのタスクが実行されるようになります。

bitbake の実行

それでは実際に bitbake を実行してみましょう。

Vigiles クラスのタスクは イメージをビルドする際に実行されますので、最低 1 回は image ビルドを行う必要があります。
そのためサンプルの Yocto では、事前に一度 image ビルドを実行して正常に終了した、という状態となっています。

bitbake を実行するための環境設定を行います。

source poky/oe-init-build-env build-kirkstone

設定が終わったら bitbake でイメージのビルドを実行します。

bitbake core-image-base

実行が終わると、CVE スキャンの結果情報が表示されます。
また、ビルドディレクトリ下に vigils というディレクトリが作成され、その下に manifest ファイルやフィルタに使用されている kernel や u-boot のconfig ファイルなどが置かれます。

2. Vigiles サイト上に manifest ファイルをアップロードする

manifest ファイル

vigiles ディレクトリ下には image名-cve.json というリンクファイルが作成され、このファイルのリンク先が最新の manifest ファイルとなります。
リンク先は、イメージディレクトリ/イメージ名-日時-cve.json となります。

manifest ファイルの手動アップロード

作成された json 形式の manifest ファイルを Vigiles へ登録することで、その後 SBOM としての管理や GUI での CVE レポート CVEDashBoard が利用できるようになります。 手動での登録手順は、Vigiles ファーストステップガイド「サンプル Yocto Manifest ファイルの登録手順」の「4. Yocto Manifest ファイルの登録」以降をご確認ください。

manifest ファイルの自動アップロード

Vigiles クラスのタスク実行時に 有効なAPI Key ファイルが認識されると、自動的に manifest ファイルが Vigiles へ Upload されます。
Upload先はlocal.conf 内で指定することによって、任意のプロダクト、サブフォルダへUpload することも可能です。

また、WHITELIST 指定する CVE の設定等、他にも local.conf 内で指定できる変数がありますので、指定できる変数の詳細等については meta-timesys レイヤ内の README を参照ください。

以上がyoctoへのVigiles専用レイヤ、meta-timesysレイヤの導入方法、となります。

Yocto Project 公式実践講座 7 月 ~ 9 月 開催分 受講お申込み受付中!
Vigiles サポート
Yocto Project よもやま話
Yocto よもやま話 第 14 回 「Yocto 4.3 Nanbield リリース」
Yocto よもやま話 第 14 回 「Yocto 4.3 Nanbield リリース」

2024 年 03 月 26 日 Yocto Project よもやま話

Yocto よもやま話 第 13 回 「Yocto Project の最新動向 2023 夏」
Yocto よもやま話 第 13 回 「Yocto Project の最新動向 2023 夏」

2023 年 07 月 25 日 Yocto Project よもやま話

Yocto よもやま話 第 12 回 「Yocto Project 始めます その 2」
Yocto よもやま話 第 12 回 「Yocto Project 始めます その 2」

2023 年 06 月 20 日 Yocto Project よもやま話

Linux 技術ネタ
RISC-Vについて学ぶ-後編
RISC-Vについて学ぶ-後編

2024 年 01 月 10 日 Linux 技術ネタ

RISC-Vについて学ぶ-前編
RISC-Vについて学ぶ-前編

2023 年 12 月 12 日 Linux 技術ネタ

イベントレポート
EdgeTech+ 2023 出展レポート
EdgeTech+ 2023 出展レポート

2023 年 12 月 14 日 イベントレポート

EdgeTech+ West 2023 出展レポート
EdgeTech+ West 2023 出展レポート

2023 年 08 月 09 日 イベントレポート

リクルート
新卒採用、絶賛募集中!
新卒採用、絶賛募集中!

2023 年 05 月 30 日 リクルート

国立大学オンライン研修レポート 2022
国立大学オンライン研修レポート 2022

2022 年 09 月 27 日 リクルート

北小野通信
北小野通信 桜の季節、珍客来訪?
北小野通信 桜の季節、珍客来訪?

2023 年 05 月 11 日 北小野通信

ソリューション統括部
シリコンバレー探検記 2019 ~番外編~
シリコンバレー探検記 2019 ~番外編~

2019 年 12 月 10 日 ソリューション統括部

シリコンバレー探検記 2019 ~後編~
シリコンバレー探検記 2019 ~後編~

2019 年 12 月 10 日 ソリューション統括部

シリコンバレー探検記 2019 ~前編~
シリコンバレー探検記 2019 ~前編~

2019 年 12 月 10 日 ソリューション統括部

マーケティング統括部
大成功決起大会!!(ET2019)
大成功決起大会!!(ET2019)

2019 年 12 月 13 日 マーケティング統括部

ESEC 2019 決起大会
ESEC 2019 決起大会

2019 年 04 月 25 日 マーケティング統括部

シリコンバレー探検記 その 2
シリコンバレー探検記 その 2

2018 年 12 月 18 日 マーケティング統括部