採用情報 お問い合わせ

BLOG

Linux の知識・学習 BLOG

Linux の知識・学習 BLOG

2025 年 10 月 31 日

CIP SLTS カーネルプロジェクト向け KernelCI 設定ファイル作成入門 その1

~KernelCI の設定と CIP プラットフォームの統合~

皆さん、こんにちは!

橘有栖(タチバナアリス)と申します。
現在 Gentoo カーネルチームのリーダーを務め、KernelCI kci-dev の開発者であり、KernelCI Infra WG のメンバーです。
本日は KernelCI の設定と、CIP プラットフォームとの統合についてお話しします。

KernelCI は主にアップストリームおよび開発中のカーネルツリーをテストするプロジェクトです。

CIP は SLTS(超長期サポートカーネル)を作成するプロジェクトであり、このカーネルは KernelCI でテストされます。

新規ボード追加には KernelCI 連携の lava ラボが必要です。lava ラボ環境の簡易構築には lava-docker の利用をおすすめします 。(https://github.com/BayLibre/lava-docker

lava-docker のインストール方法は、本シリーズの継続状況に応じて今後解説予定です 。

lava-docker をデプロイし、複数のデバイスを lava に接続したと仮定します。
以下のようなページが表示されます 。(https://lava.ciplatform.org/scheduler/device_types

lava-docker をデプロイし複数のデバイスを lava に接続した画面

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 情報は以下のページから入手可能です 。

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 でジョブを開始します

lava でジョブを開始した画面

次の章では、簡単なジョブの例を実行し、KernelCI の設定継承について説明します 。

本記事に関連するリンク
この記事の著者
 橘 有栖 (Tachibana Arisu)
橘 有栖 (Tachibana Arisu)

オタクに理解のあるギャル(Linux エコシステムで活動するオープンソース低レイヤーエンジニア)です。2014 から Gentoo 開発者、2017 年より Gentoo カーネルプロジェクトリーダー、2018〜2021 年は Gentoo GSoC 管理者。GKernelCI と kci-dev の作者、KernelCI infra WG メンバー、KernelCI core tools 副責任者。

AlamLinux OS サポートサービス ご相談・お問い合わせ
CentOS 7 延長サポートサービス
デジタルトランスフォーメーションのための電子認証基盤 iTrust
iTrust SSL/TLS サーバー証明書