ossパッチ提供の舞台裏 - サイバートラスト株式会社 · 2019-10-17 · linux...

18
Copyright Cybertrust Japan Co., Ltd. All rights reserved. 公開 OSSパッチ提供の舞台裏 2019/06/21 サイバートラスト株式会社 豊岡

Upload: others

Post on 28-May-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: OSSパッチ提供の舞台裏 - サイバートラスト株式会社 · 2019-10-17 · Linux kernel Binutils GCC Yocto (ビルドシステム) 各OSS コミュニティ 機能追加

Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開

OSSパッチ提供の舞台裏

2019/06/21サイバートラスト株式会社

豊岡 拓

Page 2: OSSパッチ提供の舞台裏 - サイバートラスト株式会社 · 2019-10-17 · Linux kernel Binutils GCC Yocto (ビルドシステム) 各OSS コミュニティ 機能追加

Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開

Outline

● なぜOSSパッチ提供をするのか?● どうやってOSSパッチ投稿をしているのか?● まとめ

Page 3: OSSパッチ提供の舞台裏 - サイバートラスト株式会社 · 2019-10-17 · Linux kernel Binutils GCC Yocto (ビルドシステム) 各OSS コミュニティ 機能追加

社外秘Copyright Cybertrust Japan Co., Ltd. All rights reserved.

3

なぜOSSパッチ提供をするのか?

Page 4: OSSパッチ提供の舞台裏 - サイバートラスト株式会社 · 2019-10-17 · Linux kernel Binutils GCC Yocto (ビルドシステム) 各OSS コミュニティ 機能追加

Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開

ターゲット向けソフトウェア(クロス)ツールチェイン等

組込みLinuxにおけるOSS

BusyboxQemu

Glibc

Syslog

Init

Linux kernel

Binutils

GCC

Yocto (ビルドシステム)

各OSSコミュニティ

機能追加・修正

機能追加・修正

SoCベンダー提供BSP 最終製品

● 組込みLinuxを構成するOSSは、それぞれの「コミュニティ」で開発されている

● そこで開発されたものは「Upstream」と呼ばれる

● 最終製品に組み込まれる時には、いくつかの機能追加・修正をされることが多い

Page 5: OSSパッチ提供の舞台裏 - サイバートラスト株式会社 · 2019-10-17 · Linux kernel Binutils GCC Yocto (ビルドシステム) 各OSS コミュニティ 機能追加

Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開

ターゲット向けソフトウェア(クロス)ツールチェイン等

OSSパッチ提供とは

BusyboxQemu

Glibc

Syslog

Init

Linux kernel

Binutils

GCC

Yocto (ビルドシステム)

各OSSコミュニティ

機能追加・修正

機能追加・修正

● OSSの上流=Upstreamに対して独自の開発成果を持ち込む

● それがOSSパッチ提供○ upstream化、mainline化と

も呼ばれる

SoCベンダー提供BSP 最終製品

Page 6: OSSパッチ提供の舞台裏 - サイバートラスト株式会社 · 2019-10-17 · Linux kernel Binutils GCC Yocto (ビルドシステム) 各OSS コミュニティ 機能追加

Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開

● 例えば、2017年のLinuxカーネルの組織別パッチ貢献数を見ると...● 企業からの貢献がほとんど ⇒企業戦略と結びついている

誰がOSSパッチ提供をしているのか

順位 組織名 パッチ数

1 Intel 10833 (13.1%)

2 none 6819 (8.2%)

3 RedHat 5965 (7.2%)

4 Linaro 4636 (5.6%)

5 unknown 3408 (4.1%)

6 IBM 3359 (4.1%)

7 consultants 2743 (3.3%)

8 Samsung 2633 (3.2%)

9 SUSE 2481 (3.0%)

10 Google 2477 (3.0%)

順位 組織名 パッチ数

11 AMD 2215 (2.7%)

12 Renesas Electronics 1680 (2.0%)

13 Mellanox 1649 (2.0%)

14 Oracle 1402 (1.7%)

15 Huawei Technologies 1275 (1.5%)

16 Broadcom 1267 (1.5%)

17 ARM 1256 (1.5%)

18 Texas Instruments 1136 (1.4%)

19 Free Electrons 969 (1.2%)

20 NXP Semiconductors 839 (1.0%)2017 State of Linux Kernel Developmentより: https://www.linuxfoundation.org/2017-linux-kernel-report-landing-page/

Page 7: OSSパッチ提供の舞台裏 - サイバートラスト株式会社 · 2019-10-17 · Linux kernel Binutils GCC Yocto (ビルドシステム) 各OSS コミュニティ 機能追加

Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開

● 人、会社、それぞれの理由がある

● 企業: 自社の戦略を様々なレベルで実現するため○ 独自開発部分のメンテナンスコスト削減○ 自社技術の標準化○ 自社だけで不可能な技術開発の実現○ 同一業界内でのプラットフォーム共通化○ etc.

なぜOSSパッチ提供をするのか

Page 8: OSSパッチ提供の舞台裏 - サイバートラスト株式会社 · 2019-10-17 · Linux kernel Binutils GCC Yocto (ビルドシステム) 各OSS コミュニティ 機能追加

Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開

● IoT機器のセキュリティメンテナンス○ 課題

■ OSのセキュリティ修正を取り込みたい● IoTデバイスのセキュリティ対策は法規制の動きもある● Upstreamでは既知の脆弱性に対応しているが、製品出荷時のOSバージョンでは対応できていない...

■ 一方、OSをアップデートするためのコストが大きい● OSに独自改造を加えていたり、独自のデバイスドライバがあるため、バージョンアップの度に移植作

業が必要○ (Linuxカーネルでは独自ドライバ向けインタフェースの互換性は保証されない)

○ 解決■ 独自改造部分をUpstream化する■ コミュニティの中でメンテナンスすることで、OSアップデートをスムーズに行えるようになり、製品

をセキュアに保てる■ Upstream化で貢献し、一方で他の人たちによる成果物(セキュリティ修正)の恩恵を享受できる

なぜOSSパッチ提供をするのか

Page 9: OSSパッチ提供の舞台裏 - サイバートラスト株式会社 · 2019-10-17 · Linux kernel Binutils GCC Yocto (ビルドシステム) 各OSS コミュニティ 機能追加

Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開

● 「自社で独自に開発したコードを公開したら競争力がなくなってしまうのでは?」○ 最終製品のメーカーにとってOSは非競争領域○ 非競争領域で重視されること

■ 使いやすさ■ 標準的であること(↔ベンダーロックイン)■ 信頼性■ コスト

● 非競争領域はOSSを上手に活用して構築し、競争領域へ注力することが大事

競争領域と非競争領域

Page 10: OSSパッチ提供の舞台裏 - サイバートラスト株式会社 · 2019-10-17 · Linux kernel Binutils GCC Yocto (ビルドシステム) 各OSS コミュニティ 機能追加

社外秘Copyright Cybertrust Japan Co., Ltd. All rights reserved.

10

どうやってOSSパッチ投稿をしているのか?

Page 11: OSSパッチ提供の舞台裏 - サイバートラスト株式会社 · 2019-10-17 · Linux kernel Binutils GCC Yocto (ビルドシステム) 各OSS コミュニティ 機能追加

Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開

● 過去に実施したLinuxカーネルへのパッチ提供の流れをご紹介

● パッチの内容○ カーネルのトレース(動作履歴保存)サブシステムにスナップショット取得機能を追

加する、というパッチ

● 動機○ 高信頼性を求められる製品で独自に追加したRAS機能が多く、次世代製品での移

植コストが課題

➡パッチ提供でLinuxの標準機能化し、次世代製品でそのまま活用したい

実際のOSSパッチ提供の例

Page 12: OSSパッチ提供の舞台裏 - サイバートラスト株式会社 · 2019-10-17 · Linux kernel Binutils GCC Yocto (ビルドシステム) 各OSS コミュニティ 機能追加

Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開

● 独自機能をUpstreamに対するパッチ=差分として用意する○ パッチには、そのパッチが何であるか、どのような目的やメリットがあるかを説明し

たメッセージを付ける

● 投稿先を探す○ Linuxカーネルの場合、LKMLと呼ばれるメーリングリスト

● メンテナーを探す○ Linuxカーネルは非常に大きなOSSのため、Linus Torvalds氏が全部の面倒を見て

いるわけではない。各サブシステムごとに「メンテナー」が存在する○ Linuxのトレース・サブシステムの場合はSteven Rostedt氏→宛先に必ず入れる

● 準備ができたら、メールにパッチを含めて、メーリングリストに投稿する

パッチの準備、投稿

Page 13: OSSパッチ提供の舞台裏 - サイバートラスト株式会社 · 2019-10-17 · Linux kernel Binutils GCC Yocto (ビルドシステム) 各OSS コミュニティ 機能追加

Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開

実際に投稿したメール(パッチ)

Page 14: OSSパッチ提供の舞台裏 - サイバートラスト株式会社 · 2019-10-17 · Linux kernel Binutils GCC Yocto (ビルドシステム) 各OSS コミュニティ 機能追加

Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開

● 1ヶ月くらいして返事が来た(すぐに返事が来るとは限らない)

● パッチをレビューしてもらい、いくつかの指摘事項をもらった

● コードの内容だけでなく「この機能はそもそもこうあるべきではないのか」という指摘ももらえた

レビュー

Page 15: OSSパッチ提供の舞台裏 - サイバートラスト株式会社 · 2019-10-17 · Linux kernel Binutils GCC Yocto (ビルドシステム) 各OSS コミュニティ 機能追加

Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開

● 指摘を反映し、4つのパッチに分割したv2パッチシリーズとして再投稿。○ 1つ目のパッチはすぐにaccept○ 2つ目以降はレビューで指摘を受け、再々投稿

■ 途中で既存コードのリファクタリングをお願いされることもある

● 最終的にv4で全部acceptされた○ メンテナーのツリーから最終的にLinusのツリー(upstream)へと取り込まれる

再投稿

Subject: [PATCH v2 -tip 0/4] tracing: make a snapshot feature available from userspace

Hiraku Toyooka (4): tracing: add description of snapshot to Documentation/trace/ftrace.txt tracing: make a snapshot feature available from userspace tracing: add a resize function for making one buffer equivalent to the other buffer tracing: change tracer's integer flags to bool

Page 16: OSSパッチ提供の舞台裏 - サイバートラスト株式会社 · 2019-10-17 · Linux kernel Binutils GCC Yocto (ビルドシステム) 各OSS コミュニティ 機能追加

Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開

● 例1: 仕様だけ出してコードを出さない● 例2: 全くテストされていないパッチを出す● 例3: 要求された変更に(理由なく)対応せずにパッチを出し直す● 例4: パッチを取り込んでもらった後、その変更部分に関する問合せを無視する

注意点(やるべきでないこと)

Page 17: OSSパッチ提供の舞台裏 - サイバートラスト株式会社 · 2019-10-17 · Linux kernel Binutils GCC Yocto (ビルドシステム) 各OSS コミュニティ 機能追加

Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開

● なぜOSSパッチ提供をするのか

➡企業の場合、自社の戦略を様々なレベルで実現するため

● どうやってOSSパッチ提供をしているのか➡コミュニティへパッチの原案を投稿し、レビュープロセスにより改善されたものがUpstreamに取り込まれる

まとめ

Page 18: OSSパッチ提供の舞台裏 - サイバートラスト株式会社 · 2019-10-17 · Linux kernel Binutils GCC Yocto (ビルドシステム) 各OSS コミュニティ 機能追加

Copyright Cybertrust Japan Co., Ltd. All rights reserved.公開

信頼とともに

留意事項

本資料に記載されている会社名、製品名、サービス名は、当社または各社、各団体の商標もしくは登録商標です。その他本資料に記載されているイラスト・ロゴ・写真・動画・ソフトウェア等は、当社または第三者が有する知的財産権やその他の権利により守られております。お客様は、当社が著作権を有するコンテンツについて、特に定めた場合を除き、複製、改変、頒布などをすることはできません。本資料に記載されている情報は予告なしに変更されることがあります。また、時間の経過などにより記載内容が不正確となる場合がありますが、当社は、当該情報を更新する義務を負うものではありません。