2025 年 10 月 31 日
CIP SLTS カーネルプロジェクト向け KernelCI 設定ファイル作成入門 その1
~KernelCI の設定と CIP プラットフォームの統合~
皆さん、こんにちは!
橘有栖(タチバナアリス)と申します。
現在 Gentoo カーネルチームのリーダーを務め、KernelCI kci-dev の開発者であり、KernelCI Infra WG のメンバーです。
本日は KernelCI の設定と、CIP プラットフォームとの統合についてお話しします。
KernelCI は主にアップストリームおよび開発中のカーネルツリーをテストするプロジェクトです。
CIP は SLTS(超長期サポートカーネル)を作成するプロジェクトであり、このカーネルは KernelCI でテストされます。
- KernelCI プロジェクトの詳細はこちらをご確認ください。
https://docs.kernelci.org/about/ - CIP プロジェクトの詳細についてはこちらをご覧ください。
https://www.cip-project.org/ - CIP は Linux カーネルのテストに KernelCI を利用しています。
https://www.cip-project.org/about/linux-kernel-core-packages
新規ボード追加には KernelCI 連携の lava ラボが必要です。lava ラボ環境の簡易構築には lava-docker の利用をおすすめします 。(https://github.com/BayLibre/lava-docker)
lava-docker のインストール方法は、本シリーズの継続状況に応じて今後解説予定です 。
lava-docker をデプロイし、複数のデバイスを lava に接続したと仮定します。
以下のようなページが表示されます 。(https://lava.ciplatform.org/scheduler/device_types)

zynqmp-zcu102 を KernelCI に接続したい場合を考えます
追加したいプラットフォームの情報を platforms.yaml ファイルに追加します
platforms:
# arm64 プラットフォーム
zynqmp-zcu102:
<<: *arm64-device
mach: zynqmp
dtb: dtbs/xilinx/zynqmp-zcu102-rev1.0.dtb
compatible: ['xlnx,zynqmp-zcu102-rev1.0', 'xlnx,zynqmp-zcu102', 'xlnx,zynqmp']
DTBS 情報は以下のページから入手可能です 。

互換性情報は tools/extract_compatible.py ツールから取得可能
$ git clone https://github.com/kernelci/kernelci-pipeline.git $ cd kernelci-pipeline $ python tools/extract_compatible.py config/platforms-cip.yaml zynqmp-zcu102: compatible: ['xlnx,zynqmp-zcu102-rev1.0', 'xlnx,zynqmp-zcu102', 'xlnx,zynqmp']
KernelCI にプラットフォームを追加した後、動作確認を開始できます 。
ボードのテストには、CIP の場合、scheduler-cip.yaml ファイルにシンプルなスケジューラを追加する必要があります 。
scheduler:
- job: job-gcc-12-arm64-cip
event:
<<: *kbuild-gcc-12-arm64-node-event
name: kbuild-gcc-12-arm64-cip
runtime:
type: lava
name: lava-cip
platforms:
- zynqmp-zcu102
- job: kbuild-gcc-12-arm64-cip
<<: *build-k8s-all
注記 :
<<: は yaml 継承 の一部です 。
スケジューラは kbuild イベントを開始し、その後ジョブ イベントを実行する必要があります 。
kbuild イベントはジョブで指定された設定でカーネルをビルドし、ファイルを KernelCI ファイルサーバーにプッシュします 。
ジョブはプラットフォームテストを実行します 。
以下はカーネルイメージと dts バイナリを作成する kbuild イベントです 。
kbuild-gcc-12-arm64-cip:
<<: *kbuild-gcc-12-arm64-job
params:
<<: *kbuild-gcc-12-arm64-params
defconfig:
- defconfig
fragments:
- 'CONFIG_ARCH_R8A774A1=y'
- 'CONFIG_ARCH_ZYNQMP=y'
- 'kselftest'
- 'lab-setup'
- 'cip://6.12.y-cip/arm64/cip_merged_defconfig'
rules:
tree:
- 'cip'
次に、スケジューラによって選択されたプラットフォームのブートテストを開始するジョブイベントがあります 。
job-gcc-12-arsm64-cip: *baeline-job
これは、以下の例のように、lava でジョブを開始します

次の章では、簡単なジョブの例を実行し、KernelCI の設定継承について説明します 。
本記事に関連するリンク
- IoT・組込み Linux 向け製品・サービス
- IoT・組込み開発向け 組込み Linux ディストリビューション 「EMLinux」
- An introduction to write KernelCI configuration settings for CIP SLTS Kernel project #01










