OSAKA NDS Embedded Linux Cross Online Forum #11

超長期メンテナンスLinuxを支える
CIPのテスト基盤とコアパッケージ群
藤田 和寛
Civil Infrastructure Platform/ルネサス エレクトロニクス株式会社
10th July 2020

自己紹介
藤田 和寛
ルネサス エレクトロニクス株式会社
IoT・インフラ事業本部 ソフトウェア開発統括部
ソフトウェアプラットフォーム開発第二部
Linuxプラットフォーム第一課

2007年頃～組込みLinuxドライバ開発やkernel調査などを担当（前職）2018年よりRZ/G Linux Package開発を担当し、CIPの活動にも参加開始
2019年頃よりRZ/G2向けを中心にVerified Linux Package開発の全体リーダー
2020年現在、CIP Linuxをルネサスの産業向け製品全体に展開するべく活動中

https://www.renesas.com/jp/ja/products/rzg-linux-platform/rzg-marcketplace.html

2

アジェンダ■ CIPとは■ CIP Testing■ CIP Core

■ Q&A3

CIPとは4

この社会を実現する様々な産業/インフラ機器
Transport

EnergyOthersIndustry

Rail automation

Power Generation

Building automation

Industry automation

Vehicle control

Turbine Control

Broadcasting

CNC control

Automatic ticket gates

Turbine Control

Healthcare

Industrial communication

共通の課題産業グレードの品質の確保

長期間のメンテナンス

セキュリティの担保• Reliability• Functional Safety• Real-time
capabilities• Product life-cycles
of decades• Backwards
compatibility• Standards• Security &vulnerability
management• Firmware updates• Minimize risk ofregressions

CIPが解決Civil Infrastructure Platform（CIP）とは？
■ CIP Project•

産業用機器に共通した課題を解決するべく設立された、Linux FoundationのProject■ Open Source Base Layer（OSBL）の確立を目指す

産業機器が求める要件を満たすLinuxの提供– 高い信頼性・安定性・長期間のメンテナンス（同一バージョンソフトウェアの10年超メンテナンス）– Upstream Communityとの密な連携–

8

“Open Source Base Layer (OSBL)” とは?
■ OSBL ≠ 新ディストリビューション

•OSBLとは、関連するオープンソースプロジェクトを利用する（またそれらに影響を与える）産業機器向けLinuxディストリビューションの一階層
company-specific middleware andapplications

一般的なLinux Distributionのスコープ

additionalpackages(hundreds)
CIP Core packages(tens)

Base Layer

CIP kernel(10+ years maintenance, based on LTS kernels)
9

Development Models“Upstream First” ProjectUpstream●●“Own Community” ProjectProject

The project can share its results with the Upstreams
The project can fulfill longer time maintenance

Upstream●●ProjectThe project can develop their code very quickly
The project faces difficulties to backport Upstream
patches due to conflicts as time goes by10

CIPの活動はメンバー企業によって支えられている
RenesasCodethink

Budget¥€Siemens

Cybertrust

£

$

日立

MOXA

KernelCI

ぷらっとホームDevelopers,maintainers

オプション： 特定のプロジェクトへ
ファンディング

Open Source Projects (Upstream work)

東芝

RT-Linux

コントリビューション & 利用/インテグレーション

debianReproducible
BuildsEDGE XFOUNDRY11

CIPのスコープ
App container infrastructure

Kernel space

User space(mid-term)

Domain Specific communication(e.g. OPC UA)

App Framework(optionally, mid-term)

Shared config.
& loggingMultimedia

Middleware/Libraries

3CIP Core Packages

6

Safe & Secure
Update2

Real-time support

Monitoring

5 Security
Real-time /safe virtualization

Linux Kernel

1 Super Long Term Supported Kernel (STLS)
On-device software stack

Tools

Concepts

3 Build environment

Functional safetyarchitecture/strategy,(e.g. bitbake, dpkg)

4 Test automation
Tracing & reporting
tools
Configuration
management
Device management

including compliance w/standards(e.g.,NERC CIP, IEC61508)

support
1 Long-termStrategy:
3security patch
management

Standardization

collaborative effort with others(update, download)

License clearing

Application life-cycle
management

Export Control
Classification

Product development and maintenance12

CIPガバナンス構造とプロジェクト
Governing Board (GB)Technical Steering Committee (TSC)
本日のテーマ

1SLTSkernel✔
✔
✔

2 Real-time 3✔

CIP Core✔
✔
✔

4 Testing

5 Security
WG(*)

✔
✔
✔

✔
✔

Software (*): Workgroup
6 Update
WG✔
✔
✔

Industrial
grade
Sustainability

Security

CIP Projects and its scopes
13

CIP Testing

14

CIP Testing Goals■ 中央での一元的コントロール＆分散テスト•

世界中のCIP開発者がCIPのリファレンスプラットフォームを、ヨーロッパ・インド・日本に構築された４つのテストラボで自由にテストすることができる■ Continuous Integration (CI) での自動テスト•

コスト最適化された、kernelの定期的長期リリースの維持■ 全CIPリファレンスプラットフォームのサポート•

リファレンスは現在７つ、追加あれば順次サポート

15

CIP Testing Teamlavadocker

LAVA

Upstream First 1

2

Use

lava.ciplatform.org

CIP Testing WG

lab-cip-cybertrustlab-cip-denx

lab-cip-mentor

lab-cip-renesas

3

Integrate

16

CIP Testing Teamlavadocker

LAVA

Fund to KernelCI

1

1

Upstream Code& Code Reviews

2

Build automatedtesting systems

lava.ciplatform.org

CIP Testing WG

lab-cip-cybertrustlab-cip-denx

lab-cip-mentor

lab-cip-renesas

3
Test rc versions
before kernel releases

17

LAVAとは■ Linaro Automated Validation Architecture•

https://git.lavasoftware.org/lava•

Linaroにより最初の版が2010年にリリースされ、現在も活発に開発が続いている•

OSを物理/仮想マシンにデプロイしテストを実行する
CI (continuous integration) システム（の一部）•Linaroが作成したものを始め、オープンソースの様々なテストケースを利用可能•

CIPでは、旧テスト環境のBoard at Deskの時代からLAVAをテスト環境として利用

https://docs.lavasoftware.org/lava/index.html

18

Testing Architecture Overview
SourceCIP Kernel

LTS-rc

GitLab runner @ k8s masterBuild
k8s pod (build)

k8s pod (build)

k8s pod (test)

k8s pod (test)クラウド

GitLab.com
AWS EC2

Artifact Storage

AWS S3

LAVA Master

Built Artifacts

AWS EC2
on-demand

Test
LAVA Worker

Local

LAVA Worker

CIP Reference Hardware

ローカル

19

LAVA Implementation

Ethernet
SwitchLAVA Master
Debian 9(Stretch)

LAVA Worker
Debian 9(Stretch)lava-docker1

lava-docker1

Amazon AWS

Embedded
Platforme.g. hihope-rzg2m

Embedded
Platform

USB Hub
Serial Consolee.g. ek874

Embedded
Platforme.g. iwg20m-g1m

Remote Power
Switch2

Embedded
Platforme.g. iwg22mRenesas Bourne End Office1https://gitlab.com/cip-project/cip-testing/lava-docker
2https://www.lindy.co.uk/networking-c5/ipower-switch-classic-8-power-management-over-ip-p4456/s4598

20

Testing Architecture Overview
SourceCIPsource
Kernel

LTS-rc
コミット
されたぞ

GitLab runner @ k8s master
Build
ビルド k8s pod (build)
k8s pod (build)

k8s pod (test)

時間が来たぞkernelArtifact Storage
Test

k8s pod (test)

クラウド

AWS EC2
指令がAWS S3LAVA Master
来たぞdeviceBuilt Artifacts
rootfstree

LAVA Worker

GitLab.com

AWS EC2
on-demand

テスト実行！
LAVA Worker

kerneldeviceCIP
Reference Hardware
tree rootfs

Localローカル21

CIP Reference Boards
CIP Reference Boards

Supported Kernels

PlatformArchitecture

SLTS v4.4

SLTS v4.4-rt

SLTS v4.19

SLTS v4.19-rt

AM335x Beaglebone Black

Armv7

YY1

Y

Y1

Cyclone V DE0-Nano-SoC Development Kit

Armv7

NN

Y

Y1

QEMU

x86_64

Y

Y1

Y

Y1

RZ/G1M iWave Qseven Development Kit

Armv7

Y

Y1,2

Y

Y1,2

RZ/G2M HopeRun HiHope

Armv8

NNY

Y1,2

SIMATIC IPC227E

x86-64NNY

Y1OpenBlocks IoT VX2x86-64

NNY

Y1

CIP Reference Board Candidate

Supported Kernels

Platform

Architecture

Zynq UltraScale+ MPSoC ZCU102 Evaluation Kit

Armv8

SLTS v4.4

SLTS v4.4-rt

SLTS v4.19

SLTS v4.19-rt

NNY

Y1

1 Tested with standard Kernel configuration (non-RT)
2 Tested with Real-Time enabled Kernel configuration

22

Automated Testing■ Currently CIP are running the following tests:•Boot test
– uname -a••

Spectre/Meltdown checker
LTP– ltp-cve-tests, ltp-dio-tests, ltp-fs-tests, ltp-ipc-tests, ltp-math-tests, ltp-openposix-tests, ltp-sched-tests, ltp-syscalls-tests and ltp-timers-tests•Cyclictest+Hackbench– This test measures event latency in the Linux Kernel, with hackbench running in
the background to stress the system.

■ In Development:•Kselftest

23

LAVA Results■ 誰でもテスト定義や結果を見ることができます
https://lava.ciplatform.org/scheduler/alljobs

24

An Example of Test Definitions■ Boot test (uname –a)
https://lava.ciplatform.org/scheduler/job/20696/definition# ACTION_BLOCK
actions:- deploy:timeout:
minutes: 2
to: tftp
kernel:url: https://s3-us-west-2.amazonaws.com/.../Image
type: image
ramdisk:
url: https://s3-us-west-2.amazonaws.com/.../initramfs_64.cpio.gz
compression: gz
dtb:
url: https://s3-us-west-2.amazonaws.com/.../r8a774a1-...-ex.dtb
os: oe#BOOT_BLOCK- boot:timeout:
minutes: 5
method: u-bootcommands: ramdisk
prompts:- 'linaro-test'- 'root@debian:~#'- '/ #’# TEST_BLOCK- test:timeout:
minutes: 5
definitions:- repository:
metadata:
format: Lava-Test Test Definition 1.0
name: kernel-version-basicdescription: "check kernel version"os:- oescope:- functionalrun:steps:- lava-test-case uname --shell uname -a
from: inline
name: kernel-version-inline
path: inline/kernel-version-:basic.yaml

25

An Example of Test Definitions■ Boot test (uname –a)
https://lava.ciplatform.org/scheduler/job/20696

26

Collaboration with KernelCI■ Linux Foundation projectとなったKernelCIともコラボ開始

https://foundation.kernelci.org/■ KernelCIのスポンサー：Baylibre, CIP, Collabra, Foundries.io,

Google, Microsoft, Redhat■ LTPを皮切りに、KernelCIがサポートするテストを相互運用することでテスト範囲拡大＆品質向上■ 既に10以上のデバイスタイプで、KernelCIから直接CIPのテストラボにテストジョブを投入可能

27

PlansUse cip-core-tiny and cip-core-generic for all Kernel testing
Finish test support for all reference platforms
Improve Kernel test results front end• Setup and configure kernelci.ciplatform.org (or perhaps cip.kernelci.org?)• Integrate CIP’s GitLab based Kernel builds with KernelCI’s backend• Automatic test regression detection
Test case expansion• LTP for all reference boards• kSelftest
Add ‘small instance’ support to gitlab-cloud-ci for test jobs
Speed up build times / test times
Add monitoring for the various CI components (LAVA master, LAVA workers etc.)
Add support for the next SLTS Kernel
Add support for the next CIP Core versions
28

CIP Core29

CIP Coreとは■ ユーザー層のソフトウェアとツールにフォーカスした活動•••“CIP Core packages” を定義し、長期メンテナンスを実施“CIP Core packages” のリファレンス実装を提供
CIPのリファレンスハードウェアでテストを実施
company-specific middleware and applications

一般的なLinux Distributionのスコープ

additional packages(hundreds)
CIP Core packages(tens)
CIP kernel

Base Layer(10+ years maintenance, based on LTS kernels)

30

CIPによる超長期メンテナンスの進め方
Applications

Additionalpackages(hundreds)

CIP Corepackages(tens)

From
Debian(3 years)

From
DebianLTS(+2 years)

From
Debian ELTS

Work withDebiancommunity
TBD(+x years)

CIP Kernel

CIP support (10years + more)

out-of-tree
drivers

Depend on SOC vendors
5 years

TBD

10+ years

Support Term
31

CIP Core: Implementation■ 2つのProfile

Binarypackages

DebianGeneric

Tiny

Approach

Binary packages

Source packages

Build tool

ISAR

Deby (meta-debian)■ Debianがベース

Sourcepackages

Funding & Contribution
Build tools
ISAR

Metadata

Deby

Debian 8

Debian 9

Debian 10(jessie)(stretch)(buster)kernel 4.4

Tiny

Generic

N/A

kernel 4.19

N/A

Generic

Generic& Tiny

Contribution
Generic
profileCIP Core WG

ImplementTiny
profileCIP CoreCIP32

Deby (meta-debian) とは■ Yocto Project extension••

Debianのソースコードを
Yocto Project の Build systemで扱うためのレイヤー
https://github.com/metadebian/meta-debian

Sourcecodes

Upstream

Debianmeta-custom

etc.
app.bb

pkgB.bbappend

meta-debianpkgB.bbpkgC.bb

debian-package.bbclass■ CIP Core Tiny Profileで使用•••

poky + meta-debian の組み合わせでビルド
https://gitlab.com/cip-project/cipcore/deby
Target poky branch:warrior (Yocto Project 2.7)

meta-xxx

pokymetapkgA.bb.conf

meta-yyy.bbclassbitbake

Bootable images
33

CIP Core Package List
■ Initial package list for Debian 10 (Buster)• https://gitlab.com/cip-project/cip-core/cip-pkglist/-/blob/master/pkglist_buster.yml– Debianのminimum base system相当 (debootstrap --variant=minbase) の58パッケージが承認済み– IEC-62443-4-2 の要求を満たすための下記12パッケージも長期メンテナンス対象として追加される見込み
aide, chrony, fail2ban, nftables, openssh, openssl, pam-pkcs11, sudo, syslog-ng, tpm2-abrmd,tpm2-tools, tpm2-tss■ Package Decision Process (PDP)• https://gitlab.com/cip-project/cip-core/cip-pkglist/-/blob/master/doc/pdp.md• CIP member company (のみ) が必要な情報とともに propose– 追加理由, パッケージ名 (source, binary), 対応するDebian version, 依存関係リスト, 過去のCVE数, ... 等– 依存関係を自動検査する、提案書 (yml形式) 作成ヘルパースクリプトあり• レビュー期間後、50%以上のレビュアーの合意を得て TSC により承認

34

PlansTest CIP Core (isar-cip-core and deby) on LAVA
• Security tests• Other tests
Merge security layer into CIP Core (isar-cip-core and deby)

Future topics:• SDK• Reproducible builds

35

まとめ36

まとめ■ CIPプロジェクトは••••Linux kernelだけではなく、CIP Core packageとしてユーザー層も超長期にメンテナンス（10年超）カーネル層とユーザー層を組合わせ、リファレンスハードウェア上で自動テストの実行を継続

この社会に必要な産業グレードOSBLを提供
Open Sourceで連携し、各企業の共通課題を協力して解決

37

興味を持たれたら■ 是非使ってみてください••••

CIP web site:– CIP project portal: https://www.cip-project.org
CIP source code
– CIP GitLab: https://gitlab.com/cip-project– CIP kernel: git://git.kernel.org/pub/scm/linux/kernel/git/cip/linux-cip.git
CIP LAVA Lab– 現在のScheduler Status: https://lava.ciplatform.org/scheduler/– CIPのLAVA環境: https://gitlab.com/cip-project/cip-testing/lava-docker
CIP Core– Package list: https://gitlab.com/cip-project/cip-core/cip-pkglist■ もっと重要：CIPに加入しませんか？！

38

Events■ CIP Mini Summit @ Open Source Summit North America 2020•

July 2, 2020 Virtual Experience– State of Civil Infrastructure Platform– CIP Kernel Team Activities towards Super Long Term Support– Status update for testing within CIP– CIP Security towards achieving industrial grade security■ CIP Mini Summit @ Open Source Summit Europe 2019
•October 31, 2019 Lyon Convention Centre– State of Civil Infrastructure Platform– CIP SLTS kernel development(e.g. Patch management for collaboration with stable kernel team)– Security in industrial systems and its future– Safe software update for industrial IoT devices– Use cases of CIP open source base layer
録音やスライドもあります: https://wiki.linuxfoundation.org/civilinfrastructureplatform/cipconferences
39

References
CIP Blog: https://www.cip-project.org/blog
CIP news: https://www.cip-project.org/news/in-the-news
CIP wiki: https://wiki.linuxfoundation.org/civilinfrastructureplatform/
CIP Testing overview:https://wiki.linuxfoundation.org/civilinfrastructureplatform/ciptesting/centalisedtesting/cioverview
Twitter: @cip_project
CIP Mailing list: cip-dev@lists.cip-project.org
Linaroによるテスト定義: https://github.com/Linaro/test-definitions/tree/master/automated/linux
いまさら聞けないCIP入門:
https://monoist.atmarkit.co.jp/mn/articles/1909/24/news015.html
過去のEmbedded Linux Cross Forumでの講演資料もご覧ください。
https://www.nds-osk.co.jp/forum/onlcf7.html
https://www.nds-osk.co.jp/forum/onlcf8.html
https://www.nds-osk.co.jp/forum/onlcf9.html

40

Questions?

41

Thank you!

42